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) 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( FetchContent_Declare(
compiler-rt compiler-rt
@ -52,427 +52,75 @@ if(CONFIG_BUILTIN_COMPILER_RT)
endif() 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/include)
list(APPEND INCDIR ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins)
# Arithmetic operations if(CONFIG_BUILTIN_COMPILER_RT)
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)
# Floating point operations nuttx_add_system_library(rt.buitlins)
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)
target_include_directories( 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( target_compile_options(rt.buitlins PRIVATE -Wno-undef -Wno-macro-redefined)
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)
set(RT_PROFILE_SRCS set(SRCSTMP)
GCDAProfiling.c set(RT_BUILTINS_SRCS)
InstrProfiling.c file(GLOB RT_BUILTINS_SRCS
InstrProfilingBuffer.c ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/*.c)
InstrProfilingFile.c
InstrProfilingInternal.c
InstrProfilingMerge.c
InstrProfilingMergeFile.c
InstrProfilingNameVar.c
InstrProfilingUtil.c
InstrProfilingValue.c
InstrProfilingVersionVar.c
InstrProfilingWriter.c
InstrProfilingRuntime.cpp)
foreach(src ${RT_PROFILE_SRCS}) file(GLOB SRCSTMP
string(PREPEND src ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile/) ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${ARCH}/*.S)
list(APPEND COMPILER_RT_SRCS ${src}) list(APPEND RT_BUILTINS_SRCS ${SRCSTMP})
endforeach()
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() endif()
list(APPEND INCDIR if(CONFIG_COVERAGE_COMPILER_RT)
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${RT_BUILTIN_ARCH})
foreach(src ${RT_BUILTIN_SRCS}) nuttx_add_system_library(rt.profile)
string(PREPEND src ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/)
list(APPEND COMPILER_RT_SRCS ${src})
endforeach()
foreach(src ${RT_BUILTIN_ARCH_SRCS}) target_include_directories(
string( rt.profile PRIVATE ${INCDIR}
PREPEND src ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile)
${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${RT_BUILTIN_ARCH}/)
list(APPEND COMPILER_RT_SRCS ${src})
endforeach()
# Add the sources to the target target_compile_options(
target_sources(compiler-rt PRIVATE ${COMPILER_RT_SRCS}) rt.profile PRIVATE -DCOMPILER_RT_HAS_UNAME -Wno-undef
-Wno-strict-prototypes -Wno-shadow)
target_compile_options( set(SRCSTMP)
compiler-rt set(RT_PROFILE_SRCS InstrProfilingPlatform.c)
PRIVATE -Wno-shift-count-negative
-Wno-constant-conversion file(GLOB SRCSTMP ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile/*.c)
-Wshift-count-overflow list(APPEND RT_PROFILE_SRCS ${SRCSTMP})
-Wno-undef
-Wno-incompatible-pointer-types file(GLOB SRCSTMP ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile/*.cpp)
-Wno-visibility list(APPEND RT_PROFILE_SRCS ${SRCSTMP})
-Wno-macro-redefined)
target_sources(rt.profile PRIVATE ${RT_PROFILE_SRCS})
endif()
target_include_directories(compiler-rt PRIVATE ${INCDIR})
endif() endif()