| ... | @@ -23,16 +23,19 @@ enum NativeArch { | ... | @@ -23,16 +23,19 @@ enum NativeArch { |
| 23 | NativeArchArm, | 23 | NativeArchArm, |
| 24 | NativeArchi386, | 24 | NativeArchi386, |
| 25 | NativeArchx86_64, | 25 | NativeArchx86_64, |
| | 26 | NativeArchAarch64, |
| 26 | }; | 27 | }; |
| 27 | | 28 | |
| 28 | #if defined(_M_ARM) || defined(__arm_) | 29 | #if defined(_M_ARM) || defined(__arm_) |
| 29 | static const NativeArch native_arch = NativeArchArm; | 30 | static const NativeArch native_arch = NativeArchArm; |
| 30 | #endif | 31 | #elif defined(_M_IX86) || defined(__i386__) |
| 31 | #if defined(_M_IX86) || defined(__i386__) | | |
| 32 | static const NativeArch native_arch = NativeArchi386; | 32 | static const NativeArch native_arch = NativeArchi386; |
| 33 | #endif | 33 | #elif defined(_M_X64) || defined(__x86_64__) |
| 34 | #if defined(_M_X64) || defined(__x86_64__) | | |
| 35 | static const NativeArch native_arch = NativeArchx86_64; | 34 | static const NativeArch native_arch = NativeArchx86_64; |
| | 35 | #elif defined(_M_ARM64) || defined(__aarch64__) |
| | 36 | static const NativeArch native_arch = NativeArchAarch64; |
| | 37 | #else |
| | 38 | #error unsupported architecture |
| 36 | #endif | 39 | #endif |
| 37 | | 40 | |
| 38 | void zig_free_windows_sdk(struct ZigWindowsSDK *sdk) { | 41 | void zig_free_windows_sdk(struct ZigWindowsSDK *sdk) { |
| ... | @@ -116,6 +119,9 @@ static ZigFindWindowsSdkError find_msvc_lib_dir(ZigWindowsSDKPrivate *priv) { | ... | @@ -116,6 +119,9 @@ static ZigFindWindowsSdkError find_msvc_lib_dir(ZigWindowsSDKPrivate *priv) { |
| 116 | case NativeArchArm: | 119 | case NativeArchArm: |
| 117 | out_append_ptr += sprintf(out_append_ptr, "arm\\"); | 120 | out_append_ptr += sprintf(out_append_ptr, "arm\\"); |
| 118 | break; | 121 | break; |
| | 122 | case NativeArchAarch64: |
| | 123 | out_append_ptr += sprintf(out_append_ptr, "arm64\\"); |
| | 124 | break; |
| 119 | } | 125 | } |
| 120 | sprintf(tmp_buf, "%s%s", output_path, "vcruntime.lib"); | 126 | sprintf(tmp_buf, "%s%s", output_path, "vcruntime.lib"); |
| 121 | | 127 | |
| ... | @@ -161,6 +167,9 @@ com_done:; | ... | @@ -161,6 +167,9 @@ com_done:; |
| 161 | case NativeArchArm: | 167 | case NativeArchArm: |
| 162 | tmp_buf_append_ptr += sprintf(tmp_buf_append_ptr, "arm\\"); | 168 | tmp_buf_append_ptr += sprintf(tmp_buf_append_ptr, "arm\\"); |
| 163 | break; | 169 | break; |
| | 170 | case NativeArchAarch64: |
| | 171 | tmp_buf_append_ptr += sprintf(tmp_buf_append_ptr, "arm64\\"); |
| | 172 | break; |
| 164 | } | 173 | } |
| 165 | | 174 | |
| 166 | char *output_path = strdup(tmp_buf); | 175 | char *output_path = strdup(tmp_buf); |
| ... | @@ -204,6 +213,9 @@ static ZigFindWindowsSdkError find_10_version(ZigWindowsSDKPrivate *priv) { | ... | @@ -204,6 +213,9 @@ static ZigFindWindowsSdkError find_10_version(ZigWindowsSDKPrivate *priv) { |
| 204 | 	case NativeArchArm: | 213 | 	case NativeArchArm: |
| 205 | 		option_name = "OptionId.DesktopCPParm"; | 214 | 		option_name = "OptionId.DesktopCPParm"; |
| 206 | 		break; | 215 | 		break; |
| | 216 | 	case NativeArchAarch64: |
| | 217 | 		option_name = "OptionId.DesktopCPParm64"; |
| | 218 | 		break; |
| 207 | 	case NativeArchx86_64: | 219 | 	case NativeArchx86_64: |
| 208 | 		option_name = "OptionId.DesktopCPPx64"; | 220 | 		option_name = "OptionId.DesktopCPPx64"; |
| 209 | 		break; | 221 | 		break; |