mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-10-07 10:54:01 +00:00
[libc][cmake] Tidy compiler includes (#66783)
We want to activate `llvm-header-guard` (#66477) but the current CMake configuration includes paths that should be `isystem`. This PR restricts the number of `-I` passed to the clang command line and correctly marks the llvm libc include path as `isystem`.
This commit is contained in:
parent
be8c2df2b1
commit
a35a3b75b2
@ -7,6 +7,11 @@ endif()
|
|||||||
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
|
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
|
||||||
NO_POLICY_SCOPE)
|
NO_POLICY_SCOPE)
|
||||||
|
|
||||||
|
# `llvm-project/llvm/CMakeLists.txt` adds the following directive
|
||||||
|
# `include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})`
|
||||||
|
# We undo it to be able to precisely control what is getting included.
|
||||||
|
set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES "")
|
||||||
|
|
||||||
# Default to C++17
|
# Default to C++17
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
|
@ -151,7 +151,6 @@ function(_build_gpu_objects fq_target_name internal_target_name)
|
|||||||
${ARGN}
|
${ARGN}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(include_dirs ${LIBC_SOURCE_DIR} ${LIBC_INCLUDE_DIR})
|
|
||||||
set(common_compile_options ${ADD_GPU_OBJ_COMPILE_OPTIONS})
|
set(common_compile_options ${ADD_GPU_OBJ_COMPILE_OPTIONS})
|
||||||
if(NOT ADD_GPU_OBJ_CXX_STANDARD)
|
if(NOT ADD_GPU_OBJ_CXX_STANDARD)
|
||||||
set(ADD_GPU_OBJ_CXX_STANDARD ${CMAKE_CXX_STANDARD})
|
set(ADD_GPU_OBJ_CXX_STANDARD ${CMAKE_CXX_STANDARD})
|
||||||
@ -189,13 +188,10 @@ function(_build_gpu_objects fq_target_name internal_target_name)
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_compile_options(${gpu_target_name} PRIVATE ${compile_options})
|
target_compile_options(${gpu_target_name} PRIVATE ${compile_options})
|
||||||
target_include_directories(${gpu_target_name} PRIVATE ${include_dirs})
|
target_include_directories(${gpu_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
|
target_include_directories(${gpu_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
target_compile_definitions(${gpu_target_name} PRIVATE LIBC_COPT_PUBLIC_PACKAGING)
|
target_compile_definitions(${gpu_target_name} PRIVATE LIBC_COPT_PUBLIC_PACKAGING)
|
||||||
set_target_properties(
|
set_target_properties(${gpu_target_name} PROPERTIES CXX_STANDARD ${ADD_GPU_OBJ_CXX_STANDARD})
|
||||||
${gpu_target_name}
|
|
||||||
PROPERTIES
|
|
||||||
CXX_STANDARD ${ADD_GPU_OBJ_CXX_STANDARD}
|
|
||||||
)
|
|
||||||
if(ADD_GPU_OBJ_DEPENDS)
|
if(ADD_GPU_OBJ_DEPENDS)
|
||||||
add_dependencies(${gpu_target_name} ${ADD_GPU_OBJ_DEPENDS})
|
add_dependencies(${gpu_target_name} ${ADD_GPU_OBJ_DEPENDS})
|
||||||
endif()
|
endif()
|
||||||
@ -261,7 +257,8 @@ function(_build_gpu_objects fq_target_name internal_target_name)
|
|||||||
target_compile_options(${fq_target_name} PRIVATE
|
target_compile_options(${fq_target_name} PRIVATE
|
||||||
"SHELL:-Xclang -fembed-offload-object=${packaged_gpu_binary}")
|
"SHELL:-Xclang -fembed-offload-object=${packaged_gpu_binary}")
|
||||||
endforeach()
|
endforeach()
|
||||||
target_include_directories(${fq_target_name} PRIVATE ${include_dirs})
|
target_include_directories(${fq_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
|
target_include_directories(${fq_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
add_dependencies(${fq_target_name}
|
add_dependencies(${fq_target_name}
|
||||||
${full_deps_list} ${packaged_gpu_names} ${stub_target_name})
|
${full_deps_list} ${packaged_gpu_names} ${stub_target_name})
|
||||||
|
|
||||||
@ -285,7 +282,8 @@ function(_build_gpu_objects fq_target_name internal_target_name)
|
|||||||
get_nvptx_compile_options(nvptx_options ${LIBC_GPU_TARGET_ARCHITECTURE})
|
get_nvptx_compile_options(nvptx_options ${LIBC_GPU_TARGET_ARCHITECTURE})
|
||||||
target_compile_options(${internal_target_name} PRIVATE ${nvptx_options})
|
target_compile_options(${internal_target_name} PRIVATE ${nvptx_options})
|
||||||
endif()
|
endif()
|
||||||
target_include_directories(${internal_target_name} PRIVATE ${include_dirs})
|
target_include_directories(${internal_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
|
target_include_directories(${internal_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
if(full_deps_list)
|
if(full_deps_list)
|
||||||
add_dependencies(${internal_target_name} ${full_deps_list})
|
add_dependencies(${internal_target_name} ${full_deps_list})
|
||||||
endif()
|
endif()
|
||||||
@ -369,12 +367,8 @@ function(create_object_library fq_target_name)
|
|||||||
${ADD_OBJECT_SRCS}
|
${ADD_OBJECT_SRCS}
|
||||||
${ADD_OBJECT_HDRS}
|
${ADD_OBJECT_HDRS}
|
||||||
)
|
)
|
||||||
target_include_directories(
|
target_include_directories(${fq_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
${fq_target_name}
|
target_include_directories(${fq_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
PRIVATE
|
|
||||||
${LIBC_SOURCE_DIR}
|
|
||||||
${LIBC_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
target_compile_options(${fq_target_name} PRIVATE ${compile_options})
|
target_compile_options(${fq_target_name} PRIVATE ${compile_options})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -633,7 +627,6 @@ function(create_entrypoint_object fq_target_name)
|
|||||||
"${ADD_ENTRYPOINT_OBJ_FLAGS}"
|
"${ADD_ENTRYPOINT_OBJ_FLAGS}"
|
||||||
${ADD_ENTRYPOINT_OBJ_COMPILE_OPTIONS}
|
${ADD_ENTRYPOINT_OBJ_COMPILE_OPTIONS}
|
||||||
)
|
)
|
||||||
set(include_dirs ${LIBC_SOURCE_DIR} ${LIBC_INCLUDE_DIR})
|
|
||||||
get_fq_deps_list(fq_deps_list ${ADD_ENTRYPOINT_OBJ_DEPENDS})
|
get_fq_deps_list(fq_deps_list ${ADD_ENTRYPOINT_OBJ_DEPENDS})
|
||||||
set(full_deps_list ${fq_deps_list} libc.src.__support.common)
|
set(full_deps_list ${fq_deps_list} libc.src.__support.common)
|
||||||
|
|
||||||
@ -670,7 +663,8 @@ function(create_entrypoint_object fq_target_name)
|
|||||||
${ADD_ENTRYPOINT_OBJ_HDRS}
|
${ADD_ENTRYPOINT_OBJ_HDRS}
|
||||||
)
|
)
|
||||||
target_compile_options(${internal_target_name} BEFORE PRIVATE ${common_compile_options})
|
target_compile_options(${internal_target_name} BEFORE PRIVATE ${common_compile_options})
|
||||||
target_include_directories(${internal_target_name} PRIVATE ${include_dirs})
|
target_include_directories(${internal_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
|
target_include_directories(${internal_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
add_dependencies(${internal_target_name} ${full_deps_list})
|
add_dependencies(${internal_target_name} ${full_deps_list})
|
||||||
target_link_libraries(${internal_target_name} ${full_deps_list})
|
target_link_libraries(${internal_target_name} ${full_deps_list})
|
||||||
|
|
||||||
@ -684,7 +678,8 @@ function(create_entrypoint_object fq_target_name)
|
|||||||
${ADD_ENTRYPOINT_OBJ_HDRS}
|
${ADD_ENTRYPOINT_OBJ_HDRS}
|
||||||
)
|
)
|
||||||
target_compile_options(${fq_target_name} BEFORE PRIVATE ${common_compile_options} -DLIBC_COPT_PUBLIC_PACKAGING)
|
target_compile_options(${fq_target_name} BEFORE PRIVATE ${common_compile_options} -DLIBC_COPT_PUBLIC_PACKAGING)
|
||||||
target_include_directories(${fq_target_name} PRIVATE ${include_dirs})
|
target_include_directories(${fq_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
|
target_include_directories(${fq_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
add_dependencies(${fq_target_name} ${full_deps_list})
|
add_dependencies(${fq_target_name} ${full_deps_list})
|
||||||
target_link_libraries(${fq_target_name} ${full_deps_list})
|
target_link_libraries(${fq_target_name} ${full_deps_list})
|
||||||
endif()
|
endif()
|
||||||
|
@ -148,12 +148,8 @@ function(create_libc_unittest fq_target_name)
|
|||||||
${LIBC_UNITTEST_SRCS}
|
${LIBC_UNITTEST_SRCS}
|
||||||
${LIBC_UNITTEST_HDRS}
|
${LIBC_UNITTEST_HDRS}
|
||||||
)
|
)
|
||||||
target_include_directories(
|
target_include_directories(${fq_build_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
${fq_build_target_name}
|
target_include_directories(${fq_build_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
PRIVATE
|
|
||||||
${LIBC_SOURCE_DIR}
|
|
||||||
${LIBC_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
target_compile_options(
|
target_compile_options(
|
||||||
${fq_build_target_name}
|
${fq_build_target_name}
|
||||||
PRIVATE -fpie ${LIBC_COMPILE_OPTIONS_DEFAULT}
|
PRIVATE -fpie ${LIBC_COMPILE_OPTIONS_DEFAULT}
|
||||||
@ -386,12 +382,8 @@ function(add_libc_fuzzer target_name)
|
|||||||
${LIBC_FUZZER_SRCS}
|
${LIBC_FUZZER_SRCS}
|
||||||
${LIBC_FUZZER_HDRS}
|
${LIBC_FUZZER_HDRS}
|
||||||
)
|
)
|
||||||
target_include_directories(
|
target_include_directories(${fq_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
${fq_target_name}
|
target_include_directories(${fq_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
PRIVATE
|
|
||||||
${LIBC_SOURCE_DIR}
|
|
||||||
${LIBC_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(${fq_target_name} PRIVATE
|
target_link_libraries(${fq_target_name} PRIVATE
|
||||||
${link_object_files}
|
${link_object_files}
|
||||||
@ -516,12 +508,8 @@ function(add_integration_test test_name)
|
|||||||
)
|
)
|
||||||
set_target_properties(${fq_build_target_name}
|
set_target_properties(${fq_build_target_name}
|
||||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
target_include_directories(
|
target_include_directories(${fq_build_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
${fq_build_target_name}
|
target_include_directories(${fq_build_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
PRIVATE
|
|
||||||
${LIBC_SOURCE_DIR}
|
|
||||||
${LIBC_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
target_compile_options(${fq_build_target_name}
|
target_compile_options(${fq_build_target_name}
|
||||||
PRIVATE -fpie -ffreestanding -fno-exceptions -fno-rtti ${INTEGRATION_TEST_COMPILE_OPTIONS})
|
PRIVATE -fpie -ffreestanding -fno-exceptions -fno-rtti ${INTEGRATION_TEST_COMPILE_OPTIONS})
|
||||||
# The GPU build requires overriding the default CMake triple and architecture.
|
# The GPU build requires overriding the default CMake triple and architecture.
|
||||||
@ -683,12 +671,8 @@ function(add_libc_hermetic_test test_name)
|
|||||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
#OUTPUT_NAME ${fq_target_name}
|
#OUTPUT_NAME ${fq_target_name}
|
||||||
)
|
)
|
||||||
target_include_directories(
|
target_include_directories(${fq_build_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
|
||||||
${fq_build_target_name}
|
target_include_directories(${fq_build_target_name} PRIVATE ${LIBC_SOURCE_DIR})
|
||||||
PRIVATE
|
|
||||||
${LIBC_SOURCE_DIR}
|
|
||||||
${LIBC_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
target_compile_options(${fq_build_target_name}
|
target_compile_options(${fq_build_target_name}
|
||||||
PRIVATE ${LIBC_HERMETIC_TEST_COMPILE_OPTIONS} ${HERMETIC_TEST_COMPILE_OPTIONS})
|
PRIVATE ${LIBC_HERMETIC_TEST_COMPILE_OPTIONS} ${HERMETIC_TEST_COMPILE_OPTIONS})
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ add_tablegen(libc-hdrgen LIBC
|
|||||||
PublicAPICommand.h
|
PublicAPICommand.h
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(libc-hdrgen PRIVATE ${LIBC_SOURCE_DIR})
|
target_include_directories(libc-hdrgen PRIVATE ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})
|
||||||
target_link_libraries(libc-hdrgen PRIVATE LibcTableGenUtil)
|
target_link_libraries(libc-hdrgen PRIVATE LibcTableGenUtil)
|
||||||
|
|
||||||
add_subdirectory(PrototypeTestGen)
|
add_subdirectory(PrototypeTestGen)
|
||||||
|
@ -6,3 +6,4 @@ add_llvm_library(
|
|||||||
LINK_COMPONENTS Support TableGen
|
LINK_COMPONENTS Support TableGen
|
||||||
)
|
)
|
||||||
target_include_directories(LibcTableGenUtil PUBLIC ${LIBC_SOURCE_DIR})
|
target_include_directories(LibcTableGenUtil PUBLIC ${LIBC_SOURCE_DIR})
|
||||||
|
target_include_directories(LibcTableGenUtil PRIVATE ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})
|
||||||
|
Loading…
Reference in New Issue
Block a user