mirror of
https://github.com/apache/nuttx.git
synced 2025-01-13 12:08:36 +08:00
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:
parent
4232a717f2
commit
9facfade90
1 changed files with 55 additions and 407 deletions
|
@ -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()
|
||||||
|
|
Loading…
Reference in a new issue