diff options
author | thegeorg <thegeorg@yandex-team.com> | 2025-01-28 20:03:48 +0300 |
---|---|---|
committer | thegeorg <thegeorg@yandex-team.com> | 2025-01-28 21:27:46 +0300 |
commit | 5f5666024a522818c15d1fd4aa99298c9bf3831f (patch) | |
tree | b7cfdcb04181eef6eef37c986dac8ca17af12107 /contrib | |
parent | b3cf241b6aad444ce89c8ceba34b8e2f3f9807a1 (diff) | |
download | ydb-5f5666024a522818c15d1fd4aa99298c9bf3831f.tar.gz |
Build cxxsupp/builtins on armv7a and i686
Also: add cxxsupp/builtins to autocheck/common_targets.inc
commit_hash:e50ebb7511ed61fb1000e84b2caca0634e65a338
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym | 41 | ||||
-rw-r--r-- | contrib/libs/cxxsupp/builtins/ya.make | 55 |
2 files changed, 65 insertions, 31 deletions
diff --git a/contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym b/contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym index ac76bc2e97..55fe016a3e 100644 --- a/contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym +++ b/contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym @@ -93,13 +93,15 @@ other_not_emscripten = frozenset([ 'emutls', 'enable_execute_stack', 'eprintf', - 'truncdfbf2', - 'truncsfbf2', ]) def it_srcs(): for x in common: n = name(x) + + if n.startswith("atomic_") or n.endswith("bf2") or n == "extendbfsf2": + # these are handled explicitly below + continue if n in scrt: continue if arch != 'x86_64_not_win' and n in x86_not_win: @@ -120,18 +122,51 @@ EOF ls *.c > common +cat << EOF +IF (OS_DARWIN OR OS_IOS) + SRCS( + atomic_flag_clear.c + atomic_flag_clear_explicit.c + atomic_flag_test_and_set.c + atomic_flag_test_and_set_explicit.c + atomic_signal_fence.c + atomic_thread_fence.c + ) +ENDIF() + +IF (ARCH_ARM64 OR ARCH_X86_64) + # As of r25b, clang-for-android does not have bf16 support. + # These can be built using r27 and above. + IF (NOT OS_ANDROID) + SRCS( + # NB: sources that were commented out were added in llvm-20 + extendbfsf2.c + truncdfbf2.c + # truncxfbf2.c + truncsfbf2.c + # trunctfbf2.c + ) + ENDIF() +ENDIF() +EOF + echo 'IF (ARCH_AARCH64)' echo 'SRCS(' ls aarch64/*.c cpu_model/aarch64.*c aarch64/*.S > special python3 join.py common special aarch echo ')' + echo 'IF(NOT OS_DARWIN) SRCS(aarch64/sme-libc-routines.c) ENDIF()' echo 'ELSEIF (ARCH_X86_64)' echo 'SRCS(' ls x86_64/*.c cpu_model/x86.*c x86_64/*.S > special python3 join.py common special x86_64 echo ')' -echo 'IF(NOT OS_WINDOWS) SRCS(x86_64/floatdixf.c' + +# As llvm/compiler-rt/lib/builtins says: +# Implement extended-precision builtins, assuming long double is 80 bits. +# long double is not 80 bits on Android or MSVC. +echo 'IF(NOT OS_WINDOWS AND NOT OS_ANDROID) SRCS(x86_64/floatdixf.c' echo '' > special python3 join.py common special x86_64_not_win echo ') ENDIF()' diff --git a/contrib/libs/cxxsupp/builtins/ya.make b/contrib/libs/cxxsupp/builtins/ya.make index b6d7a872ab..46976f6b35 100644 --- a/contrib/libs/cxxsupp/builtins/ya.make +++ b/contrib/libs/cxxsupp/builtins/ya.make @@ -60,6 +60,32 @@ IF (GCC OR CLANG) NO_LTO() ENDIF() +IF (OS_DARWIN OR OS_IOS) + SRCS( + atomic_flag_clear.c + atomic_flag_clear_explicit.c + atomic_flag_test_and_set.c + atomic_flag_test_and_set_explicit.c + atomic_signal_fence.c + atomic_thread_fence.c + ) +ENDIF() + +IF (ARCH_ARM64 OR ARCH_X86_64) + # As of r25b, clang-for-android does not have bf16 support. + # These can be built using r27 and above. + IF (NOT OS_ANDROID) + SRCS( + # NB: sources that were commented out were added in llvm-20 + extendbfsf2.c + truncdfbf2.c + # truncxfbf2.c + truncsfbf2.c + # trunctfbf2.c + ) + ENDIF() +ENDIF() + IF (ARCH_AARCH64) SRCS( aarch64/chkstk.S @@ -83,12 +109,6 @@ IF (ARCH_AARCH64) ashrdi3.c ashrti3.c atomic.c - atomic_flag_clear.c - atomic_flag_clear_explicit.c - atomic_flag_test_and_set.c - atomic_flag_test_and_set_explicit.c - atomic_signal_fence.c - atomic_thread_fence.c bswapdi2.c bswapsi2.c clear_cache.c @@ -119,7 +139,6 @@ IF (ARCH_AARCH64) emutls.c enable_execute_stack.c eprintf.c - extendbfsf2.c extenddftf2.c extendhfsf2.c extendhftf2.c @@ -209,10 +228,8 @@ IF (ARCH_AARCH64) subvsi3.c subvti3.c trampoline_setup.c - truncdfbf2.c truncdfhf2.c truncdfsf2.c - truncsfbf2.c truncsfhf2.c trunctfdf2.c trunctfhf2.c @@ -251,12 +268,6 @@ ELSEIF (ARCH_X86_64) ashrdi3.c ashrti3.c atomic.c - atomic_flag_clear.c - atomic_flag_clear_explicit.c - atomic_flag_test_and_set.c - atomic_flag_test_and_set_explicit.c - atomic_signal_fence.c - atomic_thread_fence.c bswapdi2.c bswapsi2.c clear_cache.c @@ -287,7 +298,6 @@ ELSEIF (ARCH_X86_64) emutls.c enable_execute_stack.c eprintf.c - extendbfsf2.c extenddftf2.c extendhfsf2.c extendhftf2.c @@ -374,10 +384,8 @@ ELSEIF (ARCH_X86_64) subvsi3.c subvti3.c trampoline_setup.c - truncdfbf2.c truncdfhf2.c truncdfsf2.c - truncsfbf2.c truncsfhf2.c trunctfdf2.c trunctfhf2.c @@ -400,7 +408,7 @@ ELSEIF (ARCH_X86_64) x86_64/floatundisf.S x86_64/floatundixf.S ) - IF (NOT OS_WINDOWS) + IF (NOT OS_WINDOWS AND NOT OS_ANDROID) SRCS( x86_64/floatdixf.c divxc3.c @@ -434,12 +442,6 @@ ELSE() ashrdi3.c ashrti3.c atomic.c - atomic_flag_clear.c - atomic_flag_clear_explicit.c - atomic_flag_test_and_set.c - atomic_flag_test_and_set_explicit.c - atomic_signal_fence.c - atomic_thread_fence.c bswapdi2.c bswapsi2.c clzdi2.c @@ -465,7 +467,6 @@ ELSE() divtc3.c divtf3.c divti3.c - extendbfsf2.c extenddftf2.c extendhfsf2.c extendhftf2.c @@ -580,8 +581,6 @@ ELSE() emutls.c enable_execute_stack.c eprintf.c - truncdfbf2.c - truncsfbf2.c ) ENDIF() ENDIF() |