| author | |
| committer | |
| log | 78eb3c561746a4dd86a67f927d244a3e8f46ad00 |
| tree | 74030f8599dd7d134935a3cd610e0ebd74a34ff1 |
| parent | 8ae92fd17ee9a3d46e4f441864a8544b440c0b2d |
* `CMakeLists.txt`: support the weird `uname -m` output.
* `CMakeLists.txt`: detect and use the C compiler's default arm mode.
* cbe: support gcc with both `f128` and `u128` emulated.
* std.os.linux.thumb: fix incorrectly passed asm inputs.5 files changed, 33 insertions(+), 45 deletions(-)
CMakeLists.txt+22-11| ... | @@ -689,17 +689,28 @@ target_link_libraries(zigcpp LINK_PUBLIC | ... | @@ -689,17 +689,28 @@ target_link_libraries(zigcpp LINK_PUBLIC |
| 689 | ${CMAKE_THREAD_LIBS_INIT} | 689 | ${CMAKE_THREAD_LIBS_INIT} |
| 690 | ) | 690 | ) |
| 691 | 691 | ||
| 692 | string(TOLOWER "${CMAKE_HOST_SYSTEM_PROCESSOR}" HOST_TARGET_ARCH) | 692 | string(TOLOWER "${CMAKE_HOST_SYSTEM_PROCESSOR}" ZIG_HOST_TARGET_ARCH) |
| 693 | if(HOST_TARGET_ARCH STREQUAL "amd64") | 693 | if(ZIG_HOST_TARGET_ARCH STREQUAL "amd64") |
| 694 | set(HOST_TARGET_ARCH "x86_64") | 694 | set(ZIG_HOST_TARGET_ARCH "x86_64") |
| 695 | elseif(HOST_TARGET_ARCH STREQUAL "arm64") | 695 | elseif(ZIG_HOST_TARGET_ARCH STREQUAL "arm64") |
| 696 | set(HOST_TARGET_ARCH "aarch64") | 696 | set(ZIG_HOST_TARGET_ARCH "aarch64") |
| 697 | elseif(ZIG_HOST_TARGET_ARCH STREQUAL "armv7l") | ||
| 698 | set(ZIG_HOST_TARGET_ARCH "arm") | ||
| 699 | elseif(ZIG_HOST_TARGET_ARCH STREQUAL "armv7b") | ||
| 700 | set(ZIG_HOST_TARGET_ARCH "armeb") | ||
| 697 | endif() | 701 | endif() |
| 698 | string(TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" HOST_TARGET_OS) | 702 | if(ZIG_HOST_TARGET_ARCH MATCHES "^arm(eb)?$") |
| 699 | if(HOST_TARGET_OS STREQUAL "darwin") | 703 | include(CheckSymbolExists) |
| 700 | set(HOST_TARGET_OS "macos") | 704 | check_symbol_exists(__thumb__ "" ZIG_HOST_TARGET_DEFAULTS_TO_THUMB) |
| 705 | if(ZIG_HOST_TARGET_DEFAULTS_TO_THUMB) | ||
| 706 | string(REGEX REPLACE "^arm" "thumb" ZIG_HOST_TARGET_ARCH "${ZIG_HOST_TARGET_ARCH}") | ||
| 707 | endif() | ||
| 708 | endif() | ||
| 709 | string(TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" ZIG_HOST_TARGET_OS) | ||
| 710 | if(ZIG_HOST_TARGET_OS STREQUAL "darwin") | ||
| 711 | set(ZIG_HOST_TARGET_OS "macos") | ||
| 701 | endif() | 712 | endif() |
| 702 | set(HOST_TARGET_TRIPLE "${HOST_TARGET_ARCH}-${HOST_TARGET_OS}") | 713 | set(ZIG_HOST_TARGET_TRIPLE "${ZIG_HOST_TARGET_ARCH}-${ZIG_HOST_TARGET_OS}" CACHE STRING "Host zig target triple.") |
| 703 | 714 | ||
| 704 | if(MSVC) | 715 | if(MSVC) |
| 705 | set(ZIG_WASM2C_COMPILE_FLAGS "") | 716 | set(ZIG_WASM2C_COMPILE_FLAGS "") |
| ... | @@ -749,7 +760,7 @@ set(BUILD_ZIG2_ARGS | ... | @@ -749,7 +760,7 @@ set(BUILD_ZIG2_ARGS |
| 749 | --name zig2 -femit-bin="${ZIG2_C_SOURCE}" | 760 | --name zig2 -femit-bin="${ZIG2_C_SOURCE}" |
| 750 | --mod "build_options::${ZIG_CONFIG_ZIG_OUT}" | 761 | --mod "build_options::${ZIG_CONFIG_ZIG_OUT}" |
| 751 | --deps build_options | 762 | --deps build_options |
| 752 | -target "${HOST_TARGET_TRIPLE}" | 763 | -target "${ZIG_HOST_TARGET_TRIPLE}" |
| 753 | ) | 764 | ) |
| 754 | 765 | ||
| 755 | add_custom_command( | 766 | add_custom_command( |
| ... | @@ -767,7 +778,7 @@ set(BUILD_COMPILER_RT_ARGS | ... | @@ -767,7 +778,7 @@ set(BUILD_COMPILER_RT_ARGS |
| 767 | --name compiler_rt -femit-bin="${ZIG_COMPILER_RT_C_SOURCE}" | 778 | --name compiler_rt -femit-bin="${ZIG_COMPILER_RT_C_SOURCE}" |
| 768 | --mod "build_options::${ZIG_CONFIG_ZIG_OUT}" | 779 | --mod "build_options::${ZIG_CONFIG_ZIG_OUT}" |
| 769 | --deps build_options | 780 | --deps build_options |
| 770 | -target "${HOST_TARGET_TRIPLE}" | 781 | -target "${ZIG_HOST_TARGET_TRIPLE}" |
| 771 | ) | 782 | ) |
| 772 | 783 | ||
| 773 | add_custom_command( | 784 | add_custom_command( |
lib/std/os/linux/thumb.zig+7-7| ... | @@ -17,7 +17,7 @@ pub fn syscall0(number: SYS) usize { | ... | @@ -17,7 +17,7 @@ pub fn syscall0(number: SYS) usize { |
| 17 | \\ svc #0 | 17 | \\ svc #0 |
| 18 | \\ ldr r7, [%[tmp], #4] | 18 | \\ ldr r7, [%[tmp], #4] |
| 19 | : [ret] "={r0}" (-> usize), | 19 | : [ret] "={r0}" (-> usize), |
| 20 | : [tmp] "{r1}" (buf), | 20 | : [tmp] "{r1}" (&buf), |
| 21 | : "memory" | 21 | : "memory" |
| 22 | ); | 22 | ); |
| 23 | } | 23 | } |
| ... | @@ -32,7 +32,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { | ... | @@ -32,7 +32,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { |
| 32 | \\ svc #0 | 32 | \\ svc #0 |
| 33 | \\ ldr r7, [%[tmp], #4] | 33 | \\ ldr r7, [%[tmp], #4] |
| 34 | : [ret] "={r0}" (-> usize), | 34 | : [ret] "={r0}" (-> usize), |
| 35 | : [tmp] "{r1}" (buf), | 35 | : [tmp] "{r1}" (&buf), |
| 36 | [arg1] "{r0}" (arg1), | 36 | [arg1] "{r0}" (arg1), |
| 37 | : "memory" | 37 | : "memory" |
| 38 | ); | 38 | ); |
| ... | @@ -48,7 +48,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { | ... | @@ -48,7 +48,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { |
| 48 | \\ svc #0 | 48 | \\ svc #0 |
| 49 | \\ ldr r7, [%[tmp], #4] | 49 | \\ ldr r7, [%[tmp], #4] |
| 50 | : [ret] "={r0}" (-> usize), | 50 | : [ret] "={r0}" (-> usize), |
| 51 | : [tmp] "{r2}" (buf), | 51 | : [tmp] "{r2}" (&buf), |
| 52 | [arg1] "{r0}" (arg1), | 52 | [arg1] "{r0}" (arg1), |
| 53 | [arg2] "{r1}" (arg2), | 53 | [arg2] "{r1}" (arg2), |
| 54 | : "memory" | 54 | : "memory" |
| ... | @@ -65,7 +65,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { | ... | @@ -65,7 +65,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { |
| 65 | \\ svc #0 | 65 | \\ svc #0 |
| 66 | \\ ldr r7, [%[tmp], #4] | 66 | \\ ldr r7, [%[tmp], #4] |
| 67 | : [ret] "={r0}" (-> usize), | 67 | : [ret] "={r0}" (-> usize), |
| 68 | : [tmp] "{r3}" (buf), | 68 | : [tmp] "{r3}" (&buf), |
| 69 | [arg1] "{r0}" (arg1), | 69 | [arg1] "{r0}" (arg1), |
| 70 | [arg2] "{r1}" (arg2), | 70 | [arg2] "{r1}" (arg2), |
| 71 | [arg3] "{r2}" (arg3), | 71 | [arg3] "{r2}" (arg3), |
| ... | @@ -83,7 +83,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) | ... | @@ -83,7 +83,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) |
| 83 | \\ svc #0 | 83 | \\ svc #0 |
| 84 | \\ ldr r7, [%[tmp], #4] | 84 | \\ ldr r7, [%[tmp], #4] |
| 85 | : [ret] "={r0}" (-> usize), | 85 | : [ret] "={r0}" (-> usize), |
| 86 | : [tmp] "{r4}" (buf), | 86 | : [tmp] "{r4}" (&buf), |
| 87 | [arg1] "{r0}" (arg1), | 87 | [arg1] "{r0}" (arg1), |
| 88 | [arg2] "{r1}" (arg2), | 88 | [arg2] "{r1}" (arg2), |
| 89 | [arg3] "{r2}" (arg3), | 89 | [arg3] "{r2}" (arg3), |
| ... | @@ -102,7 +102,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, | ... | @@ -102,7 +102,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, |
| 102 | \\ svc #0 | 102 | \\ svc #0 |
| 103 | \\ ldr r7, [%[tmp], #4] | 103 | \\ ldr r7, [%[tmp], #4] |
| 104 | : [ret] "={r0}" (-> usize), | 104 | : [ret] "={r0}" (-> usize), |
| 105 | : [tmp] "{r5}" (buf), | 105 | : [tmp] "{r5}" (&buf), |
| 106 | [arg1] "{r0}" (arg1), | 106 | [arg1] "{r0}" (arg1), |
| 107 | [arg2] "{r1}" (arg2), | 107 | [arg2] "{r1}" (arg2), |
| 108 | [arg3] "{r2}" (arg3), | 108 | [arg3] "{r2}" (arg3), |
| ... | @@ -130,7 +130,7 @@ pub fn syscall6( | ... | @@ -130,7 +130,7 @@ pub fn syscall6( |
| 130 | \\ svc #0 | 130 | \\ svc #0 |
| 131 | \\ ldr r7, [%[tmp], #4] | 131 | \\ ldr r7, [%[tmp], #4] |
| 132 | : [ret] "={r0}" (-> usize), | 132 | : [ret] "={r0}" (-> usize), |
| 133 | : [tmp] "{r6}" (buf), | 133 | : [tmp] "{r6}" (&buf), |
| 134 | [arg1] "{r0}" (arg1), | 134 | [arg1] "{r0}" (arg1), |
| 135 | [arg2] "{r1}" (arg2), | 135 | [arg2] "{r1}" (arg2), |
| 136 | [arg3] "{r2}" (arg3), | 136 | [arg3] "{r2}" (arg3), |
lib/zig.h-12| ... | @@ -3178,18 +3178,6 @@ zig_bitCast_float(f64, uint64_t) | ... | @@ -3178,18 +3178,6 @@ zig_bitCast_float(f64, uint64_t) |
| 3178 | zig_bitCast_float(f80, zig_u128) | 3178 | zig_bitCast_float(f80, zig_u128) |
| 3179 | zig_bitCast_float(f128, zig_u128) | 3179 | zig_bitCast_float(f128, zig_u128) |
| 3180 | 3180 | ||
| 3181 | #define zig_cast_f16 (zig_f16) | ||
| 3182 | #define zig_cast_f32 (zig_f32) | ||
| 3183 | #define zig_cast_f64 (zig_f64) | ||
| 3184 | |||
| 3185 | #if _MSC_VER && !zig_has_f128 | ||
| 3186 | #define zig_cast_f80 | ||
| 3187 | #define zig_cast_f128 | ||
| 3188 | #else | ||
| 3189 | #define zig_cast_f80 (zig_f80) | ||
| 3190 | #define zig_cast_f128 (zig_f128) | ||
| 3191 | #endif | ||
| 3192 | |||
| 3193 | #define zig_convert_builtin(ExternResType, ResType, operation, ExternArgType, ArgType, version) \ | 3181 | #define zig_convert_builtin(ExternResType, ResType, operation, ExternArgType, ArgType, version) \ |
| 3194 | zig_extern ExternResType zig_expand_concat(zig_expand_concat(zig_expand_concat(__##operation, \ | 3182 | zig_extern ExternResType zig_expand_concat(zig_expand_concat(zig_expand_concat(__##operation, \ |
| 3195 | zig_compiler_rt_abbrev_##ArgType), zig_compiler_rt_abbrev_##ResType), version)(ExternArgType); \ | 3183 | zig_compiler_rt_abbrev_##ArgType), zig_compiler_rt_abbrev_##ResType), version)(ExternArgType); \ |
src/codegen/c.zig+1-6| ... | @@ -732,9 +732,7 @@ pub const DeclGen = struct { | ... | @@ -732,9 +732,7 @@ pub const DeclGen = struct { |
| 732 | // All unsigned ints matching float types are pre-allocated. | 732 | // All unsigned ints matching float types are pre-allocated. |
| 733 | const repr_ty = mod.intType(.unsigned, bits) catch unreachable; | 733 | const repr_ty = mod.intType(.unsigned, bits) catch unreachable; |
| 734 | 734 | ||
| 735 | try writer.writeAll("zig_cast_"); | 735 | try writer.writeAll("zig_make_"); |
| 736 | try dg.renderTypeForBuiltinFnName(writer, ty); | ||
| 737 | try writer.writeAll(" zig_make_"); | ||
| 738 | try dg.renderTypeForBuiltinFnName(writer, ty); | 736 | try dg.renderTypeForBuiltinFnName(writer, ty); |
| 739 | try writer.writeByte('('); | 737 | try writer.writeByte('('); |
| 740 | switch (bits) { | 738 | switch (bits) { |
| ... | @@ -1049,9 +1047,6 @@ pub const DeclGen = struct { | ... | @@ -1049,9 +1047,6 @@ pub const DeclGen = struct { |
| 1049 | 1047 | ||
| 1050 | const repr_val = try mod.intValue_big(repr_ty, repr_val_big.toConst()); | 1048 | const repr_val = try mod.intValue_big(repr_ty, repr_val_big.toConst()); |
| 1051 | 1049 | ||
| 1052 | try writer.writeAll("zig_cast_"); | ||
| 1053 | try dg.renderTypeForBuiltinFnName(writer, ty); | ||
| 1054 | try writer.writeByte(' '); | ||
| 1055 | var empty = true; | 1050 | var empty = true; |
| 1056 | if (std.math.isFinite(f128_val)) { | 1051 | if (std.math.isFinite(f128_val)) { |
| 1057 | try writer.writeAll("zig_make_"); | 1052 | try writer.writeAll("zig_make_"); |
stage1/zig.h+3-9| ... | @@ -3178,17 +3178,11 @@ zig_bitCast_float(f64, uint64_t) | ... | @@ -3178,17 +3178,11 @@ zig_bitCast_float(f64, uint64_t) |
| 3178 | zig_bitCast_float(f80, zig_u128) | 3178 | zig_bitCast_float(f80, zig_u128) |
| 3179 | zig_bitCast_float(f128, zig_u128) | 3179 | zig_bitCast_float(f128, zig_u128) |
| 3180 | 3180 | ||
| 3181 | #define zig_cast_f16 (zig_f16) | 3181 | #define zig_cast_f16 |
| 3182 | #define zig_cast_f32 (zig_f32) | 3182 | #define zig_cast_f32 |
| 3183 | #define zig_cast_f64 (zig_f64) | 3183 | #define zig_cast_f64 |
| 3184 | |||
| 3185 | #if _MSC_VER && !zig_has_f128 | ||
| 3186 | #define zig_cast_f80 | 3184 | #define zig_cast_f80 |
| 3187 | #define zig_cast_f128 | 3185 | #define zig_cast_f128 |
| 3188 | #else | ||
| 3189 | #define zig_cast_f80 (zig_f80) | ||
| 3190 | #define zig_cast_f128 (zig_f128) | ||
| 3191 | #endif | ||
| 3192 | 3186 | ||
| 3193 | #define zig_convert_builtin(ExternResType, ResType, operation, ExternArgType, ArgType, version) \ | 3187 | #define zig_convert_builtin(ExternResType, ResType, operation, ExternArgType, ArgType, version) \ |
| 3194 | zig_extern ExternResType zig_expand_concat(zig_expand_concat(zig_expand_concat(__##operation, \ | 3188 | zig_extern ExternResType zig_expand_concat(zig_expand_concat(zig_expand_concat(__##operation, \ |