summaryrefslogtreecommitdiffstats
path: root/libcxx/include/CMakeLists.txt
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2018-03-10 01:20:11 +0000
committerPetr Hosek <phosek@chromium.org>2018-03-10 01:20:11 +0000
commitaaabea0636eb5177b4b26f9d932268dc7f677b08 (patch)
treee67f7f7fb2b6e2e0ac682641cfcc299ed8d2332d /libcxx/include/CMakeLists.txt
parent3cd29bcfe245bfe260d7a59b5cd836209d79802a (diff)
downloadbcm5719-llvm-aaabea0636eb5177b4b26f9d932268dc7f677b08.tar.gz
bcm5719-llvm-aaabea0636eb5177b4b26f9d932268dc7f677b08.zip
[CMake] Copy the generated __config header into build directory
When the generated __config file is being used, it is currently only copied during installation process. However, that means that the file that gets copied into LLVM build directory is the vanilla __config file, and any parts of the build that depend on the just built toolchain like sanitizers will get that instead of the generated version. To avoid this issue, we need to copy the generated header into the LLVM build directory as well. Differential Revision: https://reviews.llvm.org/D43797 llvm-svn: 327194
Diffstat (limited to 'libcxx/include/CMakeLists.txt')
-rw-r--r--libcxx/include/CMakeLists.txt40
1 files changed, 26 insertions, 14 deletions
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index b98e09260ca..5bf92f016b6 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -2,6 +2,23 @@ if (NOT LIBCXX_INSTALL_SUPPORT_HEADERS)
set(LIBCXX_SUPPORT_HEADER_PATTERN PATTERN "support" EXCLUDE)
endif()
+if (LIBCXX_NEEDS_SITE_CONFIG)
+ # Generate a custom __config header. The new header is created
+ # by prepending __config_site to the current __config header.
+ add_custom_command(OUTPUT ${LIBCXX_BINARY_DIR}/__generated_config
+ COMMAND ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/cat_files.py
+ ${LIBCXX_BINARY_DIR}/__config_site
+ ${LIBCXX_SOURCE_DIR}/include/__config
+ -o ${LIBCXX_BINARY_DIR}/__generated_config
+ DEPENDS ${LIBCXX_SOURCE_DIR}/include/__config
+ ${LIBCXX_BINARY_DIR}/__config_site
+ )
+ # Add a target that executes the generation commands.
+ add_custom_target(generate_config_header ALL
+ DEPENDS ${LIBCXX_BINARY_DIR}/__generated_config)
+ set(generated_config_deps generate_config_header)
+endif()
+
set(LIBCXX_HEADER_PATTERN
PATTERN "*"
PATTERN "CMakeLists.txt" EXCLUDE
@@ -16,6 +33,15 @@ if(NOT LIBCXX_USING_INSTALLED_LLVM AND LLVM_BINARY_DIR)
FILES_MATCHING
${LIBCXX_HEADER_PATTERN}
)
+
+ if (LIBCXX_NEEDS_SITE_CONFIG)
+ # Copy the generated header as __config into build directory.
+ add_custom_command(
+ TARGET generate_config_header POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy
+ ${LIBCXX_BINARY_DIR}/__generated_config
+ ${LLVM_BINARY_DIR}/include/c++/v1/__config)
+ endif()
endif()
if (LIBCXX_INSTALL_HEADERS)
@@ -28,20 +54,6 @@ if (LIBCXX_INSTALL_HEADERS)
)
if (LIBCXX_NEEDS_SITE_CONFIG)
- # Generate and install a custom __config header. The new header is created
- # by prepending __config_site to the current __config header.
- add_custom_command(OUTPUT ${LIBCXX_BINARY_DIR}/__generated_config
- COMMAND ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/cat_files.py
- ${LIBCXX_BINARY_DIR}/__config_site
- ${LIBCXX_SOURCE_DIR}/include/__config
- -o ${LIBCXX_BINARY_DIR}/__generated_config
- DEPENDS ${LIBCXX_SOURCE_DIR}/include/__config
- ${LIBCXX_BINARY_DIR}/__config_site
- )
- # Add a target that executes the generation commands.
- add_custom_target(generate_config_header ALL
- DEPENDS ${LIBCXX_BINARY_DIR}/__generated_config)
- set(generated_config_deps generate_config_header)
# Install the generated header as __config.
install(FILES ${LIBCXX_BINARY_DIR}/__generated_config
DESTINATION ${LIBCXX_INSTALL_PREFIX}include/c++/v1
OpenPOWER on IntegriCloud