aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorthegeorg <thegeorg@yandex-team.com>2025-01-28 20:03:48 +0300
committerthegeorg <thegeorg@yandex-team.com>2025-01-28 21:27:46 +0300
commit5f5666024a522818c15d1fd4aa99298c9bf3831f (patch)
treeb7cfdcb04181eef6eef37c986dac8ca17af12107 /contrib
parentb3cf241b6aad444ce89c8ceba34b8e2f3f9807a1 (diff)
downloadydb-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.ym41
-rw-r--r--contrib/libs/cxxsupp/builtins/ya.make55
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()