diff options
author | Nick Desaulniers <nickdesaulniers@users.noreply.github.com> | 2024-01-05 13:31:35 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-05 13:31:35 -0800 |
commit | dcdb4a36ae3549fb1852b2c0089247a8d477eaf3 (patch) | |
tree | 3439d9654b070d127acff5d2cd182ed83d5cda36 | |
parent | 365fbbfbcfefb8766f7716109b9c3767b58e6058 (diff) | |
download | llvm-dcdb4a36ae3549fb1852b2c0089247a8d477eaf3.zip llvm-dcdb4a36ae3549fb1852b2c0089247a8d477eaf3.tar.gz llvm-dcdb4a36ae3549fb1852b2c0089247a8d477eaf3.tar.bz2 |
[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.cmake | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake index 5fbbfd5..c3e3fa2 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) |