Skip to content

Commit e1722b4

Browse files
committed
Simplify CMake configuration based on RFC feedback
1 parent 0e6a025 commit e1722b4

File tree

7 files changed

+10
-41
lines changed

7 files changed

+10
-41
lines changed

compiler-rt/CMakeLists.txt

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,8 @@ option(COMPILER_RT_USE_BUILTINS_LIBRARY
309309

310310
option(COMPILER_RT_USE_ATOMIC_LIBRARY "Use compiler-rt atomic instead of libatomic" OFF)
311311

312-
option(COMPILER_RT_EXECUTE_ONLY_CODE "Compile compiler-rt as execute-only" OFF)
313-
if (COMPILER_RT_EXECUTE_ONLY_CODE AND NOT LLVM_RUNTIMES_BUILD)
314-
message(SEND_ERROR "COMPILER_RT_EXECUTE_ONLY_CODE is only supported "
312+
if (LLVM_EXECUTE_ONLY_CODE AND NOT LLVM_RUNTIMES_BUILD)
313+
message(SEND_ERROR "LLVM_EXECUTE_ONLY_CODE is only supported "
315314
"for runtimes build of compiler-rt.")
316315
endif()
317316

@@ -611,19 +610,9 @@ string(REGEX REPLACE "-stdlib=[a-zA-Z+]*" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}
611610
list(APPEND COMPILER_RT_COMMON_CFLAGS ${stdlib_flag})
612611
list(APPEND COMPILER_RT_COMMON_LINK_FLAGS ${stdlib_flag})
613612

614-
# Add flags for execute-only code generation.
615-
# We need to add to both COMPILER_RT_COMMON_CFLAGS and CMAKE_<LANG>_FLAGS.
616-
if (COMPILER_RT_HAS_MEXECUTE_ONLY_FLAG)
617-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE -mexecute-only COMPILER_RT_COMMON_CFLAGS)
618-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE -DCOMPILER_RT_EXECUTE_ONLY_CODE COMPILER_RT_COMMON_CFLAGS)
619-
append_string_if(COMPILER_RT_EXECUTE_ONLY_CODE -mexecute-only CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
620-
append_string_if(COMPILER_RT_EXECUTE_ONLY_CODE -DCOMPILER_RT_EXECUTE_ONLY_CODE CMAKE_ASM_FLAGS)
621-
elseif (COMPILER_RT_HAS_MPURE_CODE_FLAG)
622-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE -mpure-code COMPILER_RT_COMMON_CFLAGS)
623-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE -DCOMPILER_RT_EXECUTE_ONLY_CODE COMPILER_RT_COMMON_CFLAGS)
624-
append_string_if(COMPILER_RT_EXECUTE_ONLY_CODE -mpure-code CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
625-
append_string_if(COMPILER_RT_EXECUTE_ONLY_CODE -DCOMPILER_RT_EXECUTE_ONLY_CODE CMAKE_ASM_FLAGS)
626-
endif()
613+
# Add assembler flags for execute-only code generation. C and C++ flags should have already
614+
# been added to CMAKE_C_FLAGS and CMAKE_CXX_FLAGS.
615+
append_string_if(LLVM_EXECUTE_ONLY_CODE -DCOMPILER_RT_EXECUTE_ONLY_CODE CMAKE_ASM_FLAGS)
627616

628617
# TODO: There's a lot of duplication across lib/*/tests/CMakeLists.txt files,
629618
# move some of the common flags to COMPILER_RT_UNITTEST_CFLAGS.

compiler-rt/cmake/builtin-config-ix.cmake

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ builtin_check_c_compiler_flag(-Wbuiltin-declaration-mismatch COMPILER_RT_HAS_WBU
2727
builtin_check_c_compiler_flag(/Zl COMPILER_RT_HAS_ZL_FLAG)
2828
builtin_check_c_compiler_flag(-fcf-protection=full COMPILER_RT_HAS_FCF_PROTECTION_FLAG)
2929
builtin_check_c_compiler_flag(-nostdinc++ COMPILER_RT_HAS_NOSTDINCXX_FLAG)
30-
builtin_check_c_compiler_flag(-mexecute-only COMPILER_RT_HAS_MEXECUTE_ONLY_FLAG)
31-
builtin_check_c_compiler_flag(-mpure-code COMPILER_RT_HAS_MPURE_CODE_FLAG)
3230

3331
builtin_check_c_compiler_source(COMPILER_RT_HAS_ATOMIC_KEYWORD
3432
"

compiler-rt/cmake/config-ix.cmake

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,6 @@ check_cxx_compiler_flag(--sysroot=. COMPILER_RT_HAS_SYSROOT_FLAG)
115115
check_cxx_compiler_flag("-Werror -mcrc" COMPILER_RT_HAS_MCRC_FLAG)
116116
check_cxx_compiler_flag(-fno-partial-inlining COMPILER_RT_HAS_FNO_PARTIAL_INLINING_FLAG)
117117
check_cxx_compiler_flag("-Werror -ftrivial-auto-var-init=pattern" COMPILER_RT_HAS_TRIVIAL_AUTO_INIT)
118-
check_cxx_compiler_flag(-mexecute-only COMPILER_RT_HAS_MEXECUTE_ONLY_FLAG)
119-
check_cxx_compiler_flag(-mpure-code COMPILER_RT_HAS_MPURE_CODE_FLAG)
120118

121119
if(NOT WIN32 AND NOT CYGWIN)
122120
# MinGW warns if -fvisibility-inlines-hidden is used.

compiler-rt/lib/builtins/CMakeLists.txt

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -913,7 +913,6 @@ else ()
913913
cmake_push_check_state()
914914
# TODO: we should probably make most of the checks in builtin-config depend on the target flags.
915915
set(BUILTIN_CFLAGS_${arch} ${BUILTIN_CFLAGS})
916-
set(BUILTIN_DEFS_${arch} ${BUILTIN_DEFS})
917916
# CMAKE_REQUIRED_FLAGS must be a space separated string
918917
# Join BUILTIN_CFLAGS_${arch} and TARGET_${arch}_CFLAGS as a
919918
# space-separated string.
@@ -951,13 +950,6 @@ else ()
951950
if(COMPILER_RT_HAS_${arch}_BFLOAT16)
952951
list(APPEND ${arch}_SOURCES ${BF16_SOURCES})
953952
endif()
954-
if (COMPILER_RT_HAS_MEXECUTE_ONLY_FLAG)
955-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE -mexecute-only BUILTIN_CFLAGS_${arch})
956-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE COMPILER_RT_EXECUTE_ONLY_CODE BUILTIN_DEFS_${arch})
957-
elseif (COMPILER_RT_HAS_MPURE_CODE_FLAG)
958-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE -mpure-code BUILTIN_CFLAGS_${arch})
959-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE COMPILER_RT_EXECUTE_ONLY_CODE BUILTIN_DEFS_${arch})
960-
endif()
961953

962954
# Remove a generic C builtin when an arch-specific builtin is specified.
963955
filter_builtin_sources(${arch}_SOURCES ${arch})
@@ -979,7 +971,7 @@ else ()
979971
ARCHS ${arch}
980972
DEPS ${deps_${arch}}
981973
SOURCES ${${arch}_SOURCES}
982-
DEFS ${BUILTIN_DEFS_${arch}}
974+
DEFS ${BUILTIN_DEFS}
983975
CFLAGS ${BUILTIN_CFLAGS_${arch}}
984976
C_STANDARD 11
985977
CXX_STANDARD 17
@@ -1053,11 +1045,6 @@ if (COMPILER_RT_BUILD_CRT)
10531045
if (COMPILER_RT_HAS_FCF_PROTECTION_FLAG)
10541046
append_list_if(COMPILER_RT_ENABLE_CET -fcf-protection=full CRT_CFLAGS)
10551047
endif()
1056-
if (COMPILER_RT_HAS_MEXECUTE_ONLY_FLAG)
1057-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE -mexecute-only CRT_CFLAGS)
1058-
elseif (COMPILER_RT_HAS_MPURE_CODE_FLAG)
1059-
append_list_if(COMPILER_RT_EXECUTE_ONLY_CODE -mpure-code CRT_CFLAGS)
1060-
endif()
10611048

10621049
foreach(arch ${BUILTIN_SUPPORTED_ARCH})
10631050
add_compiler_rt_runtime(clang_rt.crtbegin

compiler-rt/lib/fuzzer/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,10 @@ if(OS_NAME MATCHES "Android|Linux|Fuchsia" AND
162162
CFLAGS ${TARGET_CFLAGS}
163163
CMAKE_ARGS -DCMAKE_CXX_COMPILER_WORKS=ON
164164
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
165+
-DLLVM_EXECUTE_ONLY_CODE=${LLVM_EXECUTE_ONLY_CODE}
165166
-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF
166-
-DLIBCXXABI_EXECUTE_ONLY_CODE=${COMPILER_RT_EXECUTE_ONLY_CODE}
167167
-DLIBCXX_ABI_NAMESPACE=__Fuzzer
168-
-DLIBCXX_ENABLE_EXCEPTIONS=OFF
169-
-DLIBCXX_EXECUTE_ONLY_CODE=${COMPILER_RT_EXECUTE_ONLY_CODE})
168+
-DLIBCXX_ENABLE_EXCEPTIONS=OFF)
170169
target_compile_options(RTfuzzer.${arch} PRIVATE -isystem ${LIBCXX_${arch}_PREFIX}/include/c++/v1)
171170
add_dependencies(RTfuzzer.${arch} libcxx_fuzzer_${arch}-install-cmake326-workaround)
172171
target_compile_options(RTfuzzer_main.${arch} PRIVATE -isystem ${LIBCXX_${arch}_PREFIX}/include/c++/v1)

compiler-rt/lib/msan/tests/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS AND
139139
add_custom_libcxx(libcxx_msan_${arch} ${LIBCXX_PREFIX}
140140
DEPS ${MSAN_RUNTIME_LIBRARIES}
141141
CFLAGS ${MSAN_LIBCXX_CFLAGS} ${TARGET_CFLAGS}
142-
CMAKE_ARGS -DLIBCXX_EXECUTE_ONLY_CODE=${COMPILER_RT_EXECUTE_ONLY_CODE}
143-
-DLIBCXXABI_EXECUTE_ONLY_CODE=${COMPILER_RT_EXECUTE_ONLY_CODE}
142+
CMAKE_ARGS -DLLVM_EXECUTE_ONLY_CODE=${LLVM_EXECUTE_ONLY_CODE}
144143
USE_TOOLCHAIN)
145144
set(MSAN_LIBCXX_DIR ${LIBCXX_PREFIX}/lib/)
146145

compiler-rt/lib/tsan/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ if(COMPILER_RT_LIBCXX_PATH AND
3030
add_custom_libcxx(libcxx_tsan_${arch} ${LIBCXX_PREFIX}
3131
DEPS ${TSAN_RUNTIME_LIBRARIES}
3232
CFLAGS ${TARGET_CFLAGS} -fsanitize=thread
33-
CMAKE_ARGS -DLIBCXX_EXECUTE_ONLY_CODE=${COMPILER_RT_EXECUTE_ONLY_CODE}
34-
-DLIBCXXABI_EXECUTE_ONLY_CODE=${COMPILER_RT_EXECUTE_ONLY_CODE}
33+
CMAKE_ARGS -DLLVM_EXECUTE_ONLY_CODE=${LLVM_EXECUTE_ONLY_CODE}
3534
USE_TOOLCHAIN)
3635
list(APPEND libcxx_tsan_deps libcxx_tsan_${arch}-install-cmake326-workaround)
3736
endforeach()

0 commit comments

Comments
 (0)