From c4fca09b78056925d30288e032ed30d23a5e163b Mon Sep 17 00:00:00 2001 From: wangmingrong1 Date: Mon, 11 Nov 2024 18:18:06 +0800 Subject: [PATCH] compiler_rt/cmake: Align compiler-rt/Make.defs --- libs/libbuiltin/compiler-rt/CMakeLists.txt | 448 +++------------------ 1 file changed, 48 insertions(+), 400 deletions(-) diff --git a/libs/libbuiltin/compiler-rt/CMakeLists.txt b/libs/libbuiltin/compiler-rt/CMakeLists.txt index 58fef0ae45f..cb66e68dae5 100644 --- a/libs/libbuiltin/compiler-rt/CMakeLists.txt +++ b/libs/libbuiltin/compiler-rt/CMakeLists.txt @@ -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) - - # 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) + if(CONFIG_BUILTIN_COMPILER_RT) - # 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) + nuttx_add_system_library(rt.buitlins) - # 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) + target_include_directories( + rt.buitlins PRIVATE ${INCDIR} + ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins) - # 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) + target_compile_options(rt.buitlins PRIVATE -Wno-undef -Wno-macro-redefined) - # Bitwise and Other Operations - list( - APPEND - RT_BUILTIN_ARCH_SRCS - bswapdi2.S - bswapsi2.S - chkstk.S - clzdi2.S - clzsi2.S) + set(SRCSTMP) + set(RT_BUILTINS_SRCS) + file(GLOB RT_BUILTINS_SRCS + ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/*.c) - # Branch and Control Flow - list(APPEND RT_BUILTIN_ARCH_SRCS switch16.S switch32.S switch8.S switchu8.S) + file(GLOB SRCSTMP + ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${ARCH}/*.S) + list(APPEND RT_BUILTINS_SRCS ${SRCSTMP}) - else() + file(GLOB SRCSTMP + ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${ARCH}/*.c) + list(APPEND RT_BUILTINS_SRCS ${SRCSTMP}) - # 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) + 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() - endif() + target_sources(rt.buitlins PRIVATE ${RT_BUILTINS_SRCS}) - 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_COVERAGE_COMPILER_RT) - if(CONFIG_COMPILER_RT_PROFILE) + nuttx_add_system_library(rt.profile) target_include_directories( - compiler-rt PRIVATE ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile) + rt.profile PRIVATE ${INCDIR} + ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile) 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) + rt.profile PRIVATE -DCOMPILER_RT_HAS_UNAME -Wno-undef + -Wno-strict-prototypes -Wno-shadow) - 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_PROFILE_SRCS InstrProfilingPlatform.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/profile/*.c) + list(APPEND RT_PROFILE_SRCS ${SRCSTMP}) - list(APPEND COMPILER_RT_SRCS InstrProfilingPlatform.c) + file(GLOB SRCSTMP ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/profile/*.cpp) + list(APPEND RT_PROFILE_SRCS ${SRCSTMP}) - endif() - - list(APPEND INCDIR - ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/${RT_BUILTIN_ARCH}) - - foreach(src ${RT_BUILTIN_SRCS}) - string(PREPEND src ${CMAKE_CURRENT_LIST_DIR}/compiler-rt/lib/builtins/) - list(APPEND COMPILER_RT_SRCS ${src}) - endforeach() + target_sources(rt.profile PRIVATE ${RT_PROFILE_SRCS}) - 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() - - # Add the sources to the target - target_sources(compiler-rt PRIVATE ${COMPILER_RT_SRCS}) - - 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) + endif() - target_include_directories(compiler-rt PRIVATE ${INCDIR}) endif()