summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Desaulniers <nickdesaulniers@users.noreply.github.com>2024-01-05 13:31:35 -0800
committerGitHub <noreply@github.com>2024-01-05 13:31:35 -0800
commitdcdb4a36ae3549fb1852b2c0089247a8d477eaf3 (patch)
tree3439d9654b070d127acff5d2cd182ed83d5cda36
parent365fbbfbcfefb8766f7716109b9c3767b58e6058 (diff)
[libc][cmake] append per obj compile options instead of prepending (#77126)
This allows individual object files to override the common compile commands in their local CMakeLists' add_object_library call. For example, the common compile commands contain -Wall and -Wextra. Before this patch, the per object COMPILE_OPTIONS were prepended to these, so that builds of individual object files could not individually disable specific diagnostics from those groups explicitly. After this patch, the per-object file compile objects are appended to the list of compiler flags, enabling this use case. ARGN is a bit of cmake magic; let's be explicit in the APPEND that we're appending the compile options. Link: #77007
-rw-r--r--libc/cmake/modules/LLVMLibCObjectRules.cmake16
1 files changed, 5 insertions, 11 deletions
diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake
index 5fbbfd58db2d..c3e3fa2dccfe 100644
--- a/libc/cmake/modules/LLVMLibCObjectRules.cmake
+++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake
@@ -26,7 +26,7 @@ function(_get_common_compile_options output_var flags)
set(ADD_PREFER_GENERIC_FLAG TRUE)
endif()
- set(compile_options ${LIBC_COMPILE_OPTIONS_DEFAULT} ${ARGN})
+ set(compile_options ${LIBC_COMPILE_OPTIONS_DEFAULT})
if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
list(APPEND compile_options "-fpie")
@@ -357,11 +357,8 @@ function(create_object_library fq_target_name)
set(internal_target_name ${fq_target_name})
endif()
- _get_common_compile_options(
- compile_options
- "${ADD_OBJECT_FLAGS}"
- ${ADD_OBJECT_COMPILE_OPTIONS}
- )
+ _get_common_compile_options(compile_options "${ADD_OBJECT_FLAGS}")
+ list(APPEND compile_options ${ADD_OBJECT_COMPILE_OPTIONS})
# GPU builds require special handling for the objects because we want to
# export several different targets at once, e.g. for both Nvidia and AMD.
@@ -640,11 +637,8 @@ function(create_entrypoint_object fq_target_name)
set(ADD_ENTRYPOINT_OBJ_CXX_STANDARD ${CMAKE_CXX_STANDARD})
endif()
- _get_common_compile_options(
- common_compile_options
- "${ADD_ENTRYPOINT_OBJ_FLAGS}"
- ${ADD_ENTRYPOINT_OBJ_COMPILE_OPTIONS}
- )
+ _get_common_compile_options(common_compile_options "${ADD_ENTRYPOINT_OBJ_FLAGS}")
+ list(APPEND common_compile_options ${ADD_ENTRYPOINT_OBJ_COMPILE_OPTIONS})
get_fq_deps_list(fq_deps_list ${ADD_ENTRYPOINT_OBJ_DEPENDS})
set(full_deps_list ${fq_deps_list} libc.src.__support.common)