compiler_rt/cmake: Align compiler-rt/Make.defs

1. Remove unnecessary compilation options
2. Use * instead of examples one by one

Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
This commit is contained in:
wangmingrong1 2024-11-11 18:18:06 +08:00 committed by Xiang Xiao
parent 4232a717f2
commit 9facfade90

View file

@ -18,11 +18,11 @@
#
# ##############################################################################
if(CONFIG_BUILTIN_COMPILER_RT)
if(CONFIG_LIB_COMPILER_RT)
if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/compiler-rt)
set(COMPILER_RT_VERSION ${CONFIG_COMPILER_RT_VERSION})
set(COMPILER_RT_VERSION ${CONFIG_LIB_COMPILER_RT_VERSION})
FetchContent_Declare(
compiler-rt
@ -52,427 +52,75 @@ if(CONFIG_BUILTIN_COMPILER_RT)
endif()
nuttx_add_system_library(compiler-rt)
if(CONFIG_ARCH_ARM)
set(ARCH arm)
elseif(CONFIG_ARCH_RISCV)
set(ARCH riscv)
elseif(CONFIG_ARCH_X86_64)
set(ARCH x86_64)
elseif(CONFIG_ARCH_ARM64)
set(ARCH aarch64)
endif()
list(APPEND INCDIR ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/include)
list(APPEND INCDIR ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins)
# Arithmetic operations
set(RT_BUILTIN_SRCS
absvdi2.c
absvsi2.c
absvti2.c
adddf3.c
addtf3.c
addvdi3.c
addvsi3.c
addvti3.c
muldc3.c
muldf3.c
muldi3.c
mulodi4.c
mulosi4.c
muloti4.c
mulsc3.c
mulsf3.c
multc3.c
multf3.c
multi3.c
mulvdi3.c
mulvsi3.c
mulvti3.c
mulxc3.c
negdf2.c
negdi2.c
negsf2.c
negti2.c
negvdi2.c
negvsi2.c
negvti2.c
subdf3.c
subsf3.c
subtf3.c
subvdi3.c
subvsi3.c
subvti3.c)
if(CONFIG_BUILTIN_COMPILER_RT)
# Floating point operations
list(
APPEND
RT_BUILTIN_SRCS
floatdidf.c
floatdisf.c
floatditf.c
floatdixf.c
floatsidf.c
floatsisf.c
floatsitf.c
floattidf.c
floattisf.c
floattitf.c
floattixf.c
floatundidf.c
floatundisf.c
floatunditf.c
floatundixf.c
floatunsidf.c
floatunsisf.c
floatunsitf.c
floatuntidf.c
floatuntisf.c
floatuntitf.c
floatuntixf.c)
# Conversion and expansion operations
list(
APPEND
RT_BUILTIN_SRCS
fixtfdi.c
fixtfsi.c
fixtfti.c
fixunsdfdi.c
fixunsdfsi.c
fixunsdfti.c
fixunssfdi.c
fixunssfsi.c
fixunssfti.c
fixunstfdi.c
fixunstfsi.c
fixunstfti.c
fixunsxfdi.c
fixunsxfsi.c
fixunsxfti.c
fixxfdi.c
fixxfti.c
extenddftf2.c
extendhfsf2.c
extendhftf2.c
extendsfdf2.c
extendsftf2.c
truncdfhf2.c
truncdfsf2.c
truncsfhf2.c
trunctfdf2.c
trunctfhf2.c
trunctfsf2.c)
# Bit manipulation operations
list(
APPEND
RT_BUILTIN_SRCS
ashldi3.c
ashlti3.c
ashrdi3.c
ashrti3.c
clzti2.c
ctzdi2.c
ctzsi2.c
ctzti2.c
lshrdi3.c
lshrti3.c
popcountdi2.c
popcountsi2.c
popcountti2.c
paritydi2.c
paritysi2.c
parityti2.c)
# Division and modulo operations
list(
APPEND
RT_BUILTIN_SRCS
divdc3.c
divdf3.c
divdi3.c
divmoddi4.c
divmodti4.c
divsc3.c
divsf3.c
divtc3.c
divtf3.c
divti3.c
divxc3.c
moddi3.c
modti3.c
udivdi3.c
udivmoddi4.c
udivmodti4.c
udivti3.c
umoddi3.c
umodti3.c)
# Atomic operations
list(
APPEND
RT_BUILTIN_SRCS
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)
# Other function related files
list(
APPEND
RT_BUILTIN_SRCS
apple_versioning.c
clear_cache.c
cmpdi2.c
cmpti2.c
comparedf2.c
comparetf2.c
cpu_model.c
emutls.c
enable_execute_stack.c
eprintf.c
fp_mode.c
gcc_personality_v0.c
int_util.c
os_version_check.c
trampoline_setup.c
ucmpdi2.c
ucmpti2.c
powidf2.c
powisf2.c
powitf2.c
powixf2.c)
set(RT_BUILTIN_ARCH_SRCS)
# ARM-specific assembly files
if(CONFIG_ARCH_ARM)
set(RT_BUILTIN_ARCH arm)
list(
APPEND
RT_BUILTIN_ARCH_SRCS
adddf3vfp.S
addsf3.S
addsf3vfp.S
divmodsi4.S
divsi3.S
modsi3.S
subdf3vfp.S
subsf3vfp.S
muldf3vfp.S
mulsf3vfp.S
negdf2vfp.S
negsf2vfp.S)
# Floating-Point Operations
list(
APPEND
RT_BUILTIN_ARCH_SRCS
comparesf2.S
eqdf2vfp.S
eqsf2vfp.S
extendsfdf2vfp.S
fixdfsivfp.S
fixsfsivfp.S
fixunsdfsivfp.S
fixunssfsivfp.S
floatsidfvfp.S
floatsisfvfp.S
floatunssidfvfp.S
floatunssisfvfp.S
gedf2vfp.S
gesf2vfp.S
gtdf2vfp.S
gtsf2vfp.S
ledf2vfp.S
lesf2vfp.S
ltdf2vfp.S
ltsf2vfp.S
nedf2vfp.S
nesf2vfp.S
truncdfsf2vfp.S
unorddf2vfp.S
unordsf2vfp.S)
# Synchronization operations
list(
APPEND
RT_BUILTIN_ARCH_SRCS
sync_fetch_and_add_4.S
sync_fetch_and_add_8.S
sync_fetch_and_and_4.S
sync_fetch_and_and_8.S
sync_fetch_and_max_4.S
sync_fetch_and_max_8.S
sync_fetch_and_min_4.S
sync_fetch_and_min_8.S
sync_fetch_and_nand_4.S
sync_fetch_and_nand_8.S
sync_fetch_and_or_4.S
sync_fetch_and_or_8.S
sync_fetch_and_sub_4.S
sync_fetch_and_sub_8.S
sync_fetch_and_umax_4.S
sync_fetch_and_umax_8.S
sync_fetch_and_umin_4.S
sync_fetch_and_umin_8.S
sync_fetch_and_xor_4.S
sync_fetch_and_xor_8.S
sync_synchronize.S)
# Memory operations
list(
APPEND
RT_BUILTIN_ARCH_SRCS
aeabi_memcmp.S
aeabi_memcpy.S
aeabi_memmove.S
aeabi_memset.S
restore_vfp_d8_d15_regs.S
save_vfp_d8_d15_regs.S)
# Division and Modulus Operations
list(
APPEND
RT_BUILTIN_ARCH_SRCS
aeabi_idivmod.S
aeabi_ldivmod.S
aeabi_uidivmod.S
aeabi_uldivmod.S
udivmodsi4.S
udivsi3.S
umodsi3.S)
# Bitwise and Other Operations
list(
APPEND
RT_BUILTIN_ARCH_SRCS
bswapdi2.S
bswapsi2.S
chkstk.S
clzdi2.S
clzsi2.S)
# Branch and Control Flow
list(APPEND RT_BUILTIN_ARCH_SRCS switch16.S switch32.S switch8.S switchu8.S)
else()
# Other architectures
list(
APPEND
RT_BUILTIN_SRCS
addsf3.c
divsi3.c
modsi3.c
bswapdi2.c
bswapsi2.c
clzdi2.c
clzsi2.c
divmodsi4.c
udivmodsi4.c
udivsi3.c
umodsi3.c
comparesf2.c)
endif()
if(CONFIG_ARCH_ARM64)
set(ARCH "aarch64")
list(APPEND RT_BUILTIN_ARCH_SRCS chkstk.S lse.S fp_mode.c)
elseif(CONFIG_ARCH_RISCV)
set(ARCH "riscv")
list(
APPEND
RT_BUILTIN_ARCH_SRCS
muldi3.S
mulsi3.S
restore.S
save.S
fp_mode.c)
else()
list(APPEND RT_BUILTIN_SRCS muldi3.c)
endif()
if(CONFIG_ARCH_X86_64)
set(ARCH "x86_64")
list(
APPEND
RT_BUILTIN_ARCH_SRCS
chkstk2.S
chkstk.S
floatundidf.S
floatundisf.S
floatundixf.S
floatdidf.c
floatdisf.c
floatdixf.c)
else()
list(APPEND RT_BUILTIN_SRCS floatundidf.c floatundisf.c floatundixf.c)
endif()
if(CONFIG_COMPILER_RT_PROFILE)
nuttx_add_system_library(rt.buitlins)
target_include_directories(
compiler-rt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile)
rt.buitlins PRIVATE ${INCDIR}
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins)
target_compile_options(
compiler-rt
PRIVATE -DCOMPILER_RT_HAS_UNAME
-Wno-cleardeprecated-pragma
-Wno-deprecated-pragma
-Wno-incompatible-pointer-types
-Wno-shadow
-Wno-strict-prototypes
-Wno-undef
-Wno-unknown-warning-option)
target_compile_options(rt.buitlins PRIVATE -Wno-undef -Wno-macro-redefined)
set(RT_PROFILE_SRCS
GCDAProfiling.c
InstrProfiling.c
InstrProfilingBuffer.c
InstrProfilingFile.c
InstrProfilingInternal.c
InstrProfilingMerge.c
InstrProfilingMergeFile.c
InstrProfilingNameVar.c
InstrProfilingUtil.c
InstrProfilingValue.c
InstrProfilingVersionVar.c
InstrProfilingWriter.c
InstrProfilingRuntime.cpp)
set(SRCSTMP)
set(RT_BUILTINS_SRCS)
file(GLOB RT_BUILTINS_SRCS
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/*.c)
foreach(src ${RT_PROFILE_SRCS})
string(PREPEND src ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile/)
list(APPEND COMPILER_RT_SRCS ${src})
endforeach()
file(GLOB SRCSTMP
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${ARCH}/*.S)
list(APPEND RT_BUILTINS_SRCS ${SRCSTMP})
list(APPEND COMPILER_RT_SRCS InstrProfilingPlatform.c)
file(GLOB SRCSTMP
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${ARCH}/*.c)
list(APPEND RT_BUILTINS_SRCS ${SRCSTMP})
if(NOT CONFIG_LIB_COMPILER_RT_HAS_BFLOAT16)
set(RT_BUILTINS_BFLOAT16_SRCS
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/truncdfbf2.c
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/truncsfbf2.c)
list(REMOVE_ITEM RT_BUILTINS_SRCS ${RT_BUILTINS_BFLOAT16_SRCS})
endif()
target_sources(rt.buitlins PRIVATE ${RT_BUILTINS_SRCS})
endif()
list(APPEND INCDIR
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${RT_BUILTIN_ARCH})
if(CONFIG_COVERAGE_COMPILER_RT)
foreach(src ${RT_BUILTIN_SRCS})
string(PREPEND src ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/)
list(APPEND COMPILER_RT_SRCS ${src})
endforeach()
nuttx_add_system_library(rt.profile)
foreach(src ${RT_BUILTIN_ARCH_SRCS})
string(
PREPEND src
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${RT_BUILTIN_ARCH}/)
list(APPEND COMPILER_RT_SRCS ${src})
endforeach()
target_include_directories(
rt.profile PRIVATE ${INCDIR}
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile)
# Add the sources to the target
target_sources(compiler-rt PRIVATE ${COMPILER_RT_SRCS})
target_compile_options(
rt.profile PRIVATE -DCOMPILER_RT_HAS_UNAME -Wno-undef
-Wno-strict-prototypes -Wno-shadow)
target_compile_options(
compiler-rt
PRIVATE -Wno-shift-count-negative
-Wno-constant-conversion
-Wshift-count-overflow
-Wno-undef
-Wno-incompatible-pointer-types
-Wno-visibility
-Wno-macro-redefined)
set(SRCSTMP)
set(RT_PROFILE_SRCS InstrProfilingPlatform.c)
file(GLOB SRCSTMP ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile/*.c)
list(APPEND RT_PROFILE_SRCS ${SRCSTMP})
file(GLOB SRCSTMP ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile/*.cpp)
list(APPEND RT_PROFILE_SRCS ${SRCSTMP})
target_sources(rt.profile PRIVATE ${RT_PROFILE_SRCS})
endif()
target_include_directories(compiler-rt PRIVATE ${INCDIR})
endif()