Skip to content

Commit c13f25a

Browse files
committed
fixup! fixup! [ATFE] Add controls for layered runtime payloads
1. Moved the Layering specific build/install commands into a small argument list and now use a single shared ExternalProject_Add call for llvmlibc 2. Changed the help text to avoid the vague word “core”. 3. ENABLE_COMPILER_RT_LIBS also enables the install step for compiler-rt, so the description should say “Build and install” for consistency.
1 parent bb47c6f commit c13f25a

1 file changed

Lines changed: 42 additions & 70 deletions

File tree

arm-software/embedded/arm-runtimes/CMakeLists.txt

Lines changed: 42 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,13 @@ set(LIBRARY_BUILD_TYPE ${LIBRARY_BUILD_TYPE_def} CACHE STRING "Build type to use
102102
set_property(CACHE LIBRARY_BUILD_TYPE PROPERTY STRINGS ${SUPPORTED_LIBRARY_BUILD_TYPES})
103103

104104
set(ENABLE_CXX_LIBS ${ENABLE_CXX_LIBS_def} CACHE BOOL "Build CXX libs")
105-
set(ENABLE_COMPILER_RT_LIBS ${ENABLE_COMPILER_RT_LIBS_def} CACHE BOOL "Build compiler-rt libraries.")
105+
set(ENABLE_COMPILER_RT_LIBS ${ENABLE_COMPILER_RT_LIBS_def} CACHE BOOL "Build and install the compiler-rt libraries.")
106106
set(ENABLE_LIBC_TESTS ${ENABLE_LIBC_TESTS_def} CACHE BOOL "Enable libc tests (picolibc, newlib, newlib-nano or llvm-libc).")
107107
set(ENABLE_COMPILER_RT_TESTS ${ENABLE_COMPILER_RT_TESTS_def} CACHE BOOL "Enable compiler-rt tests.")
108108
set(ENABLE_LIBCXX_TESTS ${ENABLE_LIBCXX_TESTS_def} CACHE BOOL "Enable libcxx tests.")
109109
set(ENABLE_LLVMLIBC_MINOR_VARIANT ${ENABLE_LLVMLIBC_MINOR_VARIANT_def} CACHE BOOL "Install only the llvm-libc minor variant payload for this variant.")
110110
set(LLVMLIBC_SUBARCHIVE_NAME ${LLVMLIBC_SUBARCHIVE_NAME_def} CACHE STRING "llvm-libc subarchive to install when ENABLE_LLVMLIBC_MINOR_VARIANT is enabled.")
111-
set(ENABLE_LLVMLIBC_CORE_LIBS ${ENABLE_LLVMLIBC_CORE_LIBS_def} CACHE BOOL "Build and install the core llvm-libc library archives.")
111+
set(ENABLE_LLVMLIBC_CORE_LIBS ${ENABLE_LLVMLIBC_CORE_LIBS_def} CACHE BOOL "Build and install the library archives from the llvm-libc build.")
112112
set(ENABLE_LLVMLIBC_SUPPORT_LIBS ${ENABLE_LLVMLIBC_SUPPORT_LIBS_def} CACHE BOOL "Build and install llvmlibc support libraries such as crt0 and semihost.")
113113
set(LLVM_BINARY_DIR "" CACHE PATH "Path to LLVM toolchain root to build libraries with")
114114
option(LLVM_USE_RELATIVE_PATHS_IN_MACROS "Use relative paths in macro expansions" ON)
@@ -860,41 +860,9 @@ if(C_LIBRARY STREQUAL llvmlibc)
860860
-DLLVM_LIBC_SUBARCHIVE_NAME=${LLVMLIBC_SUBARCHIVE_NAME}
861861
)
862862

863+
set(llvmlibc_build_install_args)
863864
if(ENABLE_LLVMLIBC_CORE_LIBS OR ENABLE_LLVMLIBC_MINOR_VARIANT)
864-
ExternalProject_Add(
865-
llvmlibc
866-
STAMP_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/stamp
867-
BINARY_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/build
868-
DOWNLOAD_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/dl
869-
TMP_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/tmp
870-
SOURCE_DIR ${llvmproject_src_dir}/runtimes
871-
INSTALL_DIR llvmlibc/install
872-
CMAKE_ARGS
873-
${compiler_launcher_cmake_args}
874-
${common_llvmlibc_cmake_args}
875-
-DLIBC_TARGET_TRIPLE=${target_triple}
876-
-DLIBC_CONF_TIME_64BIT=ON
877-
-DLIBC_CONF_ERRNO_MODE=LIBC_ERRNO_MODE_SHARED
878-
-DLIBC_CONF_PRINTF_DISABLE_FLOAT=OFF
879-
-DLIBC_CONF_PRINTF_FLOAT_TO_STR_USE_FLOAT320=ON
880-
-DLIBC_CONF_PRINTF_MODULAR=ON
881-
-DLLVM_CMAKE_DIR=${LLVM_BINARY_DIR}/lib/cmake/llvm
882-
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
883-
-DLLVM_ENABLE_RUNTIMES=libc
884-
-DLLVM_LIBC_ALL_HEADERS=ON
885-
-DLLVM_LIBC_FULL_BUILD=ON
886-
-DLIBC_TEST_COMPILE_OPTIONS_DEFAULT=${llvmlibc_test_compile_options_default}
887-
-DLIBC_TEST_LINK_OPTIONS_DEFAULT=${llvmlibc_test_link_options_default}
888-
-DLIBC_TEST_CMD=${test_cmd}
889-
-DLIBC_TEST_HERMETIC_ONLY=ON
890-
-DLLVM_EXTERNAL_LIT=${external_lit_path}
891-
-DLLVM_LIT_ARGS=${llvmlibc_lit_args}
892-
STEP_TARGETS configure build install
893-
USES_TERMINAL_CONFIGURE TRUE
894-
USES_TERMINAL_BUILD TRUE
895-
USES_TERMINAL_INSTALL TRUE
896-
LIST_SEPARATOR ,
897-
CONFIGURE_HANDLED_BY_BUILD TRUE
865+
list(APPEND llvmlibc_build_install_args
898866
INSTALL_COMMAND ${CMAKE_COMMAND} --install .
899867
COMMAND
900868
${CMAKE_COMMAND}
@@ -908,40 +876,7 @@ if(C_LIBRARY STREQUAL llvmlibc)
908876
"${TEMP_LIB_DIR}/include"
909877
)
910878
else()
911-
ExternalProject_Add(
912-
llvmlibc
913-
STAMP_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/stamp
914-
BINARY_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/build
915-
DOWNLOAD_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/dl
916-
TMP_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/tmp
917-
SOURCE_DIR ${llvmproject_src_dir}/runtimes
918-
INSTALL_DIR llvmlibc/install
919-
CMAKE_ARGS
920-
${compiler_launcher_cmake_args}
921-
${common_llvmlibc_cmake_args}
922-
-DLIBC_TARGET_TRIPLE=${target_triple}
923-
-DLIBC_CONF_TIME_64BIT=ON
924-
-DLIBC_CONF_ERRNO_MODE=LIBC_ERRNO_MODE_SHARED
925-
-DLIBC_CONF_PRINTF_DISABLE_FLOAT=OFF
926-
-DLIBC_CONF_PRINTF_FLOAT_TO_STR_USE_FLOAT320=ON
927-
-DLIBC_CONF_PRINTF_MODULAR=ON
928-
-DLLVM_CMAKE_DIR=${LLVM_BINARY_DIR}/lib/cmake/llvm
929-
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
930-
-DLLVM_ENABLE_RUNTIMES=libc
931-
-DLLVM_LIBC_ALL_HEADERS=ON
932-
-DLLVM_LIBC_FULL_BUILD=ON
933-
-DLIBC_TEST_COMPILE_OPTIONS_DEFAULT=${llvmlibc_test_compile_options_default}
934-
-DLIBC_TEST_LINK_OPTIONS_DEFAULT=${llvmlibc_test_link_options_default}
935-
-DLIBC_TEST_CMD=${test_cmd}
936-
-DLIBC_TEST_HERMETIC_ONLY=ON
937-
-DLLVM_EXTERNAL_LIT=${external_lit_path}
938-
-DLLVM_LIT_ARGS=${llvmlibc_lit_args}
939-
STEP_TARGETS configure build install
940-
USES_TERMINAL_CONFIGURE TRUE
941-
USES_TERMINAL_BUILD TRUE
942-
USES_TERMINAL_INSTALL TRUE
943-
LIST_SEPARATOR ,
944-
CONFIGURE_HANDLED_BY_BUILD TRUE
879+
list(APPEND llvmlibc_build_install_args
945880
BUILD_COMMAND
946881
${CMAKE_COMMAND}
947882
--build <BINARY_DIR>
@@ -954,6 +889,43 @@ if(C_LIBRARY STREQUAL llvmlibc)
954889
)
955890
endif()
956891

892+
ExternalProject_Add(
893+
llvmlibc
894+
STAMP_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/stamp
895+
BINARY_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/build
896+
DOWNLOAD_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/dl
897+
TMP_DIR ${PROJECT_PREFIX}/llvmlibc/${VARIANT_BUILD_ID}/tmp
898+
SOURCE_DIR ${llvmproject_src_dir}/runtimes
899+
INSTALL_DIR llvmlibc/install
900+
CMAKE_ARGS
901+
${compiler_launcher_cmake_args}
902+
${common_llvmlibc_cmake_args}
903+
-DLIBC_TARGET_TRIPLE=${target_triple}
904+
-DLIBC_CONF_TIME_64BIT=ON
905+
-DLIBC_CONF_ERRNO_MODE=LIBC_ERRNO_MODE_SHARED
906+
-DLIBC_CONF_PRINTF_DISABLE_FLOAT=OFF
907+
-DLIBC_CONF_PRINTF_FLOAT_TO_STR_USE_FLOAT320=ON
908+
-DLIBC_CONF_PRINTF_MODULAR=ON
909+
-DLLVM_CMAKE_DIR=${LLVM_BINARY_DIR}/lib/cmake/llvm
910+
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
911+
-DLLVM_ENABLE_RUNTIMES=libc
912+
-DLLVM_LIBC_ALL_HEADERS=ON
913+
-DLLVM_LIBC_FULL_BUILD=ON
914+
-DLIBC_TEST_COMPILE_OPTIONS_DEFAULT=${llvmlibc_test_compile_options_default}
915+
-DLIBC_TEST_LINK_OPTIONS_DEFAULT=${llvmlibc_test_link_options_default}
916+
-DLIBC_TEST_CMD=${test_cmd}
917+
-DLIBC_TEST_HERMETIC_ONLY=ON
918+
-DLLVM_EXTERNAL_LIT=${external_lit_path}
919+
-DLLVM_LIT_ARGS=${llvmlibc_lit_args}
920+
STEP_TARGETS configure build install
921+
USES_TERMINAL_CONFIGURE TRUE
922+
USES_TERMINAL_BUILD TRUE
923+
USES_TERMINAL_INSTALL TRUE
924+
LIST_SEPARATOR ,
925+
CONFIGURE_HANDLED_BY_BUILD TRUE
926+
${llvmlibc_build_install_args}
927+
)
928+
957929
if(ENABLE_LLVMLIBC_SUPPORT_LIBS)
958930
ExternalProject_Add(
959931
llvmlibc-support

0 commit comments

Comments
 (0)