diff options
author | Louis Dionne <ldionne@apple.com> | 2019-08-08 12:43:04 +0000 |
---|---|---|
committer | Louis Dionne <ldionne@apple.com> | 2019-08-08 12:43:04 +0000 |
commit | bf4808439f10d270b34cdb82765b74cecc1be191 (patch) | |
tree | f9227919883f59ff8fee5b02ea61aa30be615c30 /pstl | |
parent | bdc022a695e0f09638219e1be6ebcce793cb9d2b (diff) | |
download | llvm-bf4808439f10d270b34cdb82765b74cecc1be191.zip llvm-bf4808439f10d270b34cdb82765b74cecc1be191.tar.gz llvm-bf4808439f10d270b34cdb82765b74cecc1be191.tar.bz2 |
[pstl] Add a __pstl_config_site header to record the CMake configuration
This commit adds a __pstl_config_site header that contains the value of
macros specified at CMake configuration time. It works similarly to
libc++'s __config_site header, except we always include it as a separate
file instead of concatenating it to the main configuration header.
It is necessary to thread the includes for that header into libc++'s
lit configuration, otherwise we'd be requiring an installation step
prior to running the test suite.
llvm-svn: 368284
Diffstat (limited to 'pstl')
-rw-r--r-- | pstl/CMakeLists.txt | 13 | ||||
-rw-r--r-- | pstl/include/__pstl_config_site.in | 15 | ||||
-rw-r--r-- | pstl/include/pstl/internal/pstl_config.h | 2 |
3 files changed, 28 insertions, 2 deletions
diff --git a/pstl/CMakeLists.txt b/pstl/CMakeLists.txt index 24845df..dd024c7c 100644 --- a/pstl/CMakeLists.txt +++ b/pstl/CMakeLists.txt @@ -35,19 +35,26 @@ target_compile_features(ParallelSTL INTERFACE cxx_std_17) if (PARALLELSTL_BACKEND STREQUAL "serial") message(STATUS "Parallel STL uses the serial backend") - target_compile_definitions(ParallelSTL INTERFACE -D_PSTL_PAR_BACKEND_SERIAL) + set(_PSTL_PAR_BACKEND_SERIAL ON) elseif (PARALLELSTL_BACKEND STREQUAL "tbb") find_package(TBB 2018 REQUIRED tbb OPTIONAL_COMPONENTS tbbmalloc) message(STATUS "Parallel STL uses TBB ${TBB_VERSION} (interface version: ${TBB_INTERFACE_VERSION})") target_link_libraries(ParallelSTL INTERFACE TBB::tbb) - target_compile_definitions(ParallelSTL INTERFACE -D_PSTL_PAR_BACKEND_TBB) + set(_PSTL_PAR_BACKEND_TBB ON) else() message(FATAL_ERROR "Requested unknown Parallel STL backend '${PARALLELSTL_BACKEND}'.") endif() +set(PSTL_GENERATED_HEADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated_headers") +set(PSTL_CONFIG_SITE_PATH "${PSTL_GENERATED_HEADERS_DIR}/__pstl_config_site") +configure_file("include/__pstl_config_site.in" + "${PSTL_CONFIG_SITE_PATH}" + @ONLY) + target_include_directories(ParallelSTL INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + $<BUILD_INTERFACE:${PSTL_GENERATED_HEADERS_DIR}> $<INSTALL_INTERFACE:include>) ############################################################################### @@ -78,6 +85,8 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfig.cmake" DESTINATION lib/cmake/ParallelSTL) install(DIRECTORY include/ DESTINATION include) +install(FILES "${PSTL_CONFIG_SITE_PATH}" + DESTINATION include) add_custom_target(install-pstl COMMAND "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake_install.cmake" -DCOMPONENT=ParallelSTL) diff --git a/pstl/include/__pstl_config_site.in b/pstl/include/__pstl_config_site.in new file mode 100644 index 0000000..f92c695 --- /dev/null +++ b/pstl/include/__pstl_config_site.in @@ -0,0 +1,15 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef __PSTL_CONFIG_SITE +#define __PSTL_CONFIG_SITE + +#cmakedefine _PSTL_PAR_BACKEND_SERIAL +#cmakedefine _PSTL_PAR_BACKEND_TBB + +#endif // __PSTL_CONFIG_SITE diff --git a/pstl/include/pstl/internal/pstl_config.h b/pstl/include/pstl/internal/pstl_config.h index ba96491..ba0bc14 100644 --- a/pstl/include/pstl/internal/pstl_config.h +++ b/pstl/include/pstl/internal/pstl_config.h @@ -10,6 +10,8 @@ #ifndef _PSTL_CONFIG_H #define _PSTL_CONFIG_H +#include <__pstl_config_site> + // The version is XYYZ, where X is major, YY is minor, and Z is patch (i.e. X.YY.Z) #define _PSTL_VERSION 10000 #define _PSTL_VERSION_MAJOR (_PSTL_VERSION / 1000) |