From 6fe8c5063ff35b7ef0a9ba00967e907077955b25 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 9 Jun 2021 14:10:24 +0200 Subject: [PATCH] Add more precompiled headers --- CMakeLists.txt | 331 ++++++++++-------------- init/CMakeLists.txt | 4 + libs/core/config/include/hpx/config.hpp | 7 - wrap/CMakeLists.txt | 4 + 4 files changed, 149 insertions(+), 197 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 490d5b468406..346369609b4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -322,69 +322,95 @@ hpx_option( if(HPX_WITH_PRECOMPILED_HEADERS) set(HPX_WITH_PRECOMPILED_HEADERS_INTERNAL ON) + set(system_precompiled_headers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) + + if(HPX_WITH_CXX17_FILESYSTEM) + list(APPEND system_precompiled_headers ) + endif() + + set(system_precompiled_headers_dependencies + hpx_dependencies_boost hpx_private_flags hpx_public_flags + ASIO::standalone_asio + ) + add_library(hpx_precompiled_headers OBJECT libs/src/dummy.cpp) target_link_libraries( - hpx_precompiled_headers PRIVATE hpx_public_flags hpx_private_flags - hpx_base_libraries + hpx_precompiled_headers + PRIVATE hpx_public_flags hpx_private_flags hpx_base_libraries + ${system_precompiled_headers_dependencies} ) target_precompile_headers( - hpx_precompiled_headers - PRIVATE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + hpx_precompiled_headers PRIVATE ${system_precompiled_headers} ) set_target_properties(hpx_precompiled_headers PROPERTIES FOLDER "Core") @@ -502,31 +528,11 @@ if(NOT HPX_WITH_TESTS) VALUE OFF FORCE ) - hpx_set_option( - HPX_WITH_TESTS_REGRESSIONS - VALUE OFF - FORCE - ) - hpx_set_option( - HPX_WITH_TESTS_UNIT - VALUE OFF - FORCE - ) - hpx_set_option( - HPX_WITH_TESTS_HEADERS - VALUE OFF - FORCE - ) - hpx_set_option( - HPX_WITH_TESTS_EXTERNAL_BUILD - VALUE OFF - FORCE - ) - hpx_set_option( - HPX_WITH_TESTS_EXAMPLES - VALUE OFF - FORCE - ) + hpx_set_option(HPX_WITH_TESTS_REGRESSIONS VALUE OFF FORCE) + hpx_set_option(HPX_WITH_TESTS_UNIT VALUE OFF FORCE) + hpx_set_option(HPX_WITH_TESTS_HEADERS VALUE OFF FORCE) + hpx_set_option(HPX_WITH_TESTS_EXTERNAL_BUILD VALUE OFF FORCE) + hpx_set_option(HPX_WITH_TESTS_EXAMPLES VALUE OFF FORCE) endif() hpx_option( @@ -534,8 +540,7 @@ hpx_option( BOOL "Enable the distributed runtime (default: ON). Turning off the distributed runtime completely disallows the creation and use of components and actions. Turning this option off is experimental!" ON - CATEGORY "Build Targets" - ADVANCED + CATEGORY "Build Targets" ADVANCED ) if(HPX_WITH_DISTRIBUTED_RUNTIME) @@ -757,8 +762,7 @@ hpx_option( STRING "HPX applications will not use more that this number of OS-Threads (empty string means dynamic) (default: ${HPX_MAX_CPU_COUNT_DEFAULT})" "${HPX_MAX_CPU_COUNT_DEFAULT}" - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_MAX_CPU_COUNT) hpx_add_config_define(HPX_HAVE_MAX_CPU_COUNT ${HPX_WITH_MAX_CPU_COUNT}) @@ -773,8 +777,7 @@ hpx_option( STRING "HPX applications will not run on machines with more NUMA domains (default: ${HPX_MAX_NUMA_DOMAIN_COUNT_DEFAULT})" ${HPX_MAX_NUMA_DOMAIN_COUNT_DEFAULT} - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) hpx_add_config_define( HPX_HAVE_MAX_NUMA_DOMAIN_COUNT ${HPX_WITH_MAX_NUMA_DOMAIN_COUNT} @@ -783,30 +786,24 @@ hpx_add_config_define( hpx_option( HPX_WITH_THREAD_STACK_MMAP BOOL "Use mmap for stack allocation on appropriate platforms" ON - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) hpx_option( HPX_WITH_THREAD_MANAGER_IDLE_BACKOFF BOOL "HPX scheduler threads do exponential backoff on idle queues (default: ON)" ON - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) hpx_option( HPX_WITH_STACKTRACES BOOL "Attach backtraces to HPX exceptions (default: ON)" - ON - CATEGORY "Thread Manager" - ADVANCED + ON CATEGORY "Thread Manager" ADVANCED ) hpx_option( HPX_WITH_THREAD_BACKTRACE_ON_SUSPENSION BOOL "Enable thread stack back trace being captured on suspension (default: OFF)" - OFF - CATEGORY "Thread Manager" - ADVANCED + OFF CATEGORY "Thread Manager" ADVANCED ) # We create a target to contain libraries like rt, dl etc. in order to remove @@ -827,8 +824,7 @@ if(HPX_WITH_STACKTRACES OR HPX_WITH_THREAD_BACKTRACE_ON_SUSPENSION) hpx_option( HPX_WITH_THREAD_BACKTRACE_DEPTH STRING "Thread stack back trace depth being captured (default: 20)" "20" - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) hpx_add_config_define( HPX_HAVE_THREAD_BACKTRACE_DEPTH ${HPX_WITH_THREAD_BACKTRACE_DEPTH} @@ -844,8 +840,7 @@ if(HPX_WITH_STACKTRACES OR HPX_WITH_THREAD_BACKTRACE_ON_SUSPENSION) hpx_option( HPX_WITH_STACKTRACES_STATIC_SYMBOLS BOOL "Thread stack back trace will resolve static symbols (default: OFF)" OFF - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) hpx_add_config_define( HPX_HAVE_STACKTRACES_STATIC_SYMBOLS @@ -856,8 +851,7 @@ if(HPX_WITH_STACKTRACES OR HPX_WITH_THREAD_BACKTRACE_ON_SUSPENSION) hpx_option( HPX_WITH_STACKTRACES_DEMANGLE_SYMBOLS BOOL "Thread stack back trace symbols will be demangled (default: ON)" ON - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_STACKTRACES_DEMANGLE_SYMBOLS) hpx_add_config_define(HPX_HAVE_STACKTRACES_DEMANGLE_SYMBOLS) @@ -871,9 +865,7 @@ if(HPX_WITH_THREAD_BACKTRACE_ON_SUSPENSION) hpx_option( HPX_WITH_THREAD_FULLBACKTRACE_ON_SUSPENSION BOOL "Enable thread stack back trace being captured on suspension (default: OFF)" - OFF - CATEGORY "Thread Manager" - ADVANCED + OFF CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_THREAD_FULLBACKTRACE_ON_SUSPENSION) hpx_add_config_define(HPX_HAVE_THREAD_FULLBACKTRACE_ON_SUSPENSION) @@ -883,9 +875,7 @@ endif() hpx_option( HPX_WITH_THREAD_TARGET_ADDRESS BOOL "Enable storing target address in thread for NUMA awareness (default: OFF)" - OFF - CATEGORY "Thread Manager" - ADVANCED + OFF CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_THREAD_TARGET_ADDRESS) @@ -895,8 +885,7 @@ endif() hpx_option( HPX_WITH_THREAD_QUEUE_WAITTIME BOOL "Enable collecting queue wait times for threads (default: OFF)" OFF - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_THREAD_QUEUE_WAITTIME) @@ -908,15 +897,13 @@ hpx_option( BOOL "Enable measuring the percentage of overhead times spent in the scheduler (default: OFF)" OFF - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) hpx_option( HPX_WITH_THREAD_CREATION_AND_CLEANUP_RATES BOOL "Enable measuring thread creation and cleanup times (default: OFF)" OFF - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_THREAD_IDLE_RATES) @@ -931,8 +918,7 @@ hpx_option( BOOL "Enable keeping track of cumulative thread counts in the schedulers (default: ON)" ON - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_THREAD_CUMULATIVE_COUNTS) @@ -944,8 +930,7 @@ hpx_option( BOOL "Enable keeping track of counts of thread stealing incidents in the schedulers (default: OFF)" OFF - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_THREAD_STEALING_COUNTS) @@ -955,9 +940,7 @@ endif() hpx_option( HPX_WITH_COROUTINE_COUNTERS BOOL "Enable keeping track of coroutine creation and rebind counts (default: OFF)" - OFF - CATEGORY "Thread Manager" - ADVANCED + OFF CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_COROUTINE_COUNTERS) hpx_add_config_define(HPX_HAVE_COROUTINE_COUNTERS) @@ -966,8 +949,7 @@ endif() hpx_option( HPX_WITH_THREAD_LOCAL_STORAGE BOOL "Enable thread local storage for all HPX threads (default: OFF)" OFF - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_THREAD_LOCAL_STORAGE) @@ -977,8 +959,7 @@ endif() hpx_option( HPX_WITH_SCHEDULER_LOCAL_STORAGE BOOL "Enable scheduler local storage for all HPX schedulers (default: OFF)" OFF - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_SCHEDULER_LOCAL_STORAGE) @@ -988,8 +969,7 @@ endif() hpx_option( HPX_WITH_SPINLOCK_POOL_NUM STRING "Number of elements a spinlock pool manages (default: 128)" 128 - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) hpx_add_config_define(HPX_HAVE_SPINLOCK_POOL_NUM ${HPX_WITH_SPINLOCK_POOL_NUM}) @@ -1000,8 +980,7 @@ hpx_option( STRING "[Deprecated] Maximum number of terminated threads collected before those are cleaned up (default: 100)" "0" - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_SCHEDULER_MAX_TERMINATED_THREADS GREATER 0) @@ -1017,8 +996,7 @@ endif() hpx_option( HPX_WITH_SPINLOCK_DEADLOCK_DETECTION BOOL "Enable spinlock deadlock detection (default: OFF)" OFF - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_SPINLOCK_DEADLOCK_DETECTION) @@ -1048,13 +1026,11 @@ hpx_option( BOOL "Use FetchContent to fetch Asio. By default an installed Asio will be used. (default: OFF)" OFF - CATEGORY "Build Targets" - ADVANCED + CATEGORY "Build Targets" ADVANCED ) hpx_option( HPX_WITH_ASIO_TAG STRING "Asio repository tag or branch" "asio-1-18-2" - CATEGORY "Build Targets" - ADVANCED + CATEGORY "Build Targets" ADVANCED ) # cmake-format: off @@ -1119,8 +1095,7 @@ hpx_option( BOOL "Disable internal IO thread pool, do not change if not absolutely necessary (default: ON)" ON - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_IO_POOL) hpx_add_config_define(HPX_HAVE_IO_POOL) @@ -1131,8 +1106,7 @@ hpx_option( BOOL "Disable internal timer thread pool, do not change if not absolutely necessary (default: ON)" ON - CATEGORY "Thread Manager" - ADVANCED + CATEGORY "Thread Manager" ADVANCED ) if(HPX_WITH_TIMER_POOL) hpx_add_config_define(HPX_HAVE_TIMER_POOL) @@ -1142,8 +1116,7 @@ endif() hpx_option( HPX_WITH_AGAS_DUMP_REFCNT_ENTRIES BOOL "Enable dumps of the AGAS refcnt tables to logs (default: OFF)" OFF - CATEGORY "AGAS" - ADVANCED + CATEGORY "AGAS" ADVANCED ) if(HPX_WITH_AGAS_DUMP_REFCNT_ENTRIES) hpx_add_config_define(HPX_HAVE_AGAS_DUMP_REFCNT_ENTRIES) @@ -1175,9 +1148,7 @@ if(HPX_WITH_NETWORKING) hpx_option( HPX_WITH_PARCEL_PROFILING BOOL "Enable profiling data for parcels" - ${_parcel_profiling_default} - CATEGORY "Parcelport" - ADVANCED + ${_parcel_profiling_default} CATEGORY "Parcelport" ADVANCED ) if(HPX_WITH_PARCEL_PROFILING) @@ -1190,8 +1161,7 @@ if(HPX_WITH_NETWORKING) BOOL "Enable the libfabric based parcelport. This is currently an experimental feature" OFF - CATEGORY "Parcelport" - ADVANCED + CATEGORY "Parcelport" ADVANCED ) if(HPX_WITH_PARCELPORT_LIBFABRIC) hpx_add_config_define(HPX_HAVE_PARCELPORT_LIBFABRIC) @@ -1250,8 +1220,7 @@ if((HPX_WITH_NETWORKING AND HPX_WITH_PARCELPORT_MPI) OR HPX_WITH_ASYNC_MPI) STRING "List of environment variables checked to detect MPI (default: MV2_COMM_WORLD_RANK;PMI_RANK;OMPI_COMM_WORLD_SIZE;ALPS_APP_PE;PMIX_RANK)." "MV2_COMM_WORLD_RANK;PMI_RANK;OMPI_COMM_WORLD_SIZE;ALPS_APP_PE;PMIX_RANK" - CATEGORY "Parcelport" - ADVANCED + CATEGORY "Parcelport" ADVANCED ) # This list is to detect whether we run inside an mpi environment. If one of @@ -1269,9 +1238,8 @@ if((HPX_WITH_NETWORKING AND HPX_WITH_PARCELPORT_MPI) OR HPX_WITH_ASYNC_MPI) hpx_option( HPX_WITH_PARCELPORT_MPI_MULTITHREADED BOOL - "Turn on MPI multithreading support (default: ON)." ON - CATEGORY "Parcelport" - ADVANCED + "Turn on MPI multithreading support (default: ON)." ON CATEGORY "Parcelport" + ADVANCED ) if(HPX_WITH_PARCELPORT_MPI_MULTITHREADED) hpx_add_config_define(HPX_HAVE_PARCELPORT_MPI_MULTITHREADED) @@ -1289,8 +1257,7 @@ endif() hpx_option( HPX_WITH_EXAMPLES_OPENMP BOOL "Enable examples requiring OpenMP support (default: OFF)." OFF - CATEGORY "Build Targets" - ADVANCED + CATEGORY "Build Targets" ADVANCED ) if(HPX_WITH_EXAMPLES_OPENMP) find_package(OpenMP) @@ -1301,8 +1268,7 @@ endif() hpx_option( HPX_WITH_EXAMPLES_TBB BOOL "Enable examples requiring TBB support (default: OFF)." OFF - CATEGORY "Build Targets" - ADVANCED + CATEGORY "Build Targets" ADVANCED ) if(HPX_WITH_EXAMPLES_TBB) find_package(TBB) @@ -1313,8 +1279,7 @@ endif() hpx_option( HPX_WITH_EXAMPLES_QTHREADS BOOL "Enable examples requiring QThreads support (default: OFF)." OFF - CATEGORY "Build Targets" - ADVANCED + CATEGORY "Build Targets" ADVANCED ) if(HPX_WITH_EXAMPLES_QTHREADS) find_package(QThreads) @@ -1325,8 +1290,7 @@ endif() hpx_option( HPX_WITH_EXAMPLES_HDF5 BOOL "Enable examples requiring HDF5 support (default: OFF)." OFF - CATEGORY "Build Targets" - ADVANCED + CATEGORY "Build Targets" ADVANCED ) if(HPX_WITH_EXAMPLES_HDF5) find_package(HDF5 COMPONENTS CXX) @@ -1340,8 +1304,7 @@ if(NOT "${HPX_PLATFORM_UC}" STREQUAL "BLUEGENEQ") hpx_option( HPX_WITH_EXAMPLES_QT4 BOOL "Enable examples requiring Qt4 support (default: OFF)." OFF - CATEGORY "Build Targets" - ADVANCED + CATEGORY "Build Targets" ADVANCED ) if(HPX_WITH_EXAMPLES_QT4) find_package(Qt4) @@ -1367,37 +1330,32 @@ hpx_option( BOOL "Enable lock verification code (default: OFF, implicitly enabled in debug builds)" OFF - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) hpx_option( HPX_WITH_VERIFY_LOCKS_GLOBALLY BOOL "Enable global lock verification code (default: OFF, implicitly enabled in debug builds)" OFF - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) hpx_option( HPX_WITH_VERIFY_LOCKS_BACKTRACE BOOL "Enable thread stack back trace being captured on lock registration (to be used in combination with HPX_WITH_VERIFY_LOCKS=ON, default: OFF)" OFF - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) hpx_option( HPX_WITH_THREAD_DEBUG_INFO BOOL "Enable thread debugging information (default: OFF, implicitly enabled in debug builds)" OFF - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) hpx_option( HPX_WITH_THREAD_GUARD_PAGE BOOL "Enable thread guard page (default: ON)" ON - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) if(HPX_WITH_VERIFY_LOCKS) @@ -1426,15 +1384,13 @@ endif() hpx_option( HPX_WITH_THREAD_DESCRIPTION_FULL BOOL "Use function address for thread description (default: OFF)" OFF - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) hpx_option( HPX_WITH_ATTACH_DEBUGGER_ON_TEST_FAILURE BOOL "Break the debugger if a test has failed (default: OFF)" OFF - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) if(HPX_WITH_ATTACH_DEBUGGER_ON_TEST_FAILURE) hpx_add_config_define(HPX_HAVE_ATTACH_DEBUGGER_ON_TEST_FAILURE) @@ -1443,15 +1399,13 @@ endif() hpx_option( HPX_WITH_TESTS_DEBUG_LOG BOOL "Turn on debug logs (--hpx:debug-hpx-log) for tests (default: OFF)" OFF - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) hpx_option( HPX_WITH_TESTS_DEBUG_LOG_DESTINATION STRING - "Destination for test debug logs (default: cout)" "cout" - CATEGORY "Debugging" - ADVANCED + "Destination for test debug logs (default: cout)" "cout" CATEGORY "Debugging" + ADVANCED ) hpx_option( @@ -1459,8 +1413,7 @@ hpx_option( STRING "Maximum number of threads to use for tests (default: 0, use the number of threads specified by the test)" 0 - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) hpx_option( @@ -1468,8 +1421,7 @@ hpx_option( BOOL "Pass --hpx:bind=none to tests that may run in parallel (cmake -j flag) (default: OFF)" OFF - CATEGORY "Debugging" - ADVANCED + CATEGORY "Debugging" ADVANCED ) # If APEX is defined, the action timers need thread debug info. @@ -1560,8 +1512,7 @@ hpx_option( BOOL "Enable swapping of rvalue tuples (needed for parallel::sort_by_key, default: ON)." ON - CATEGORY "Utility" - ADVANCED + CATEGORY "Utility" ADVANCED ) if(HPX_WITH_TUPLE_RVALUE_SWAP) hpx_add_config_define(HPX_HAVE_TUPLE_RVALUE_SWAP) diff --git a/init/CMakeLists.txt b/init/CMakeLists.txt index e1b3aef149b7..356df22f712f 100644 --- a/init/CMakeLists.txt +++ b/init/CMakeLists.txt @@ -111,3 +111,7 @@ endif() hpx_export_internal_targets(hpx_init) add_hpx_pseudo_dependencies(core hpx_init) + +if(HPX_WITH_PRECOMPILED_HEADERS) + target_precompile_headers(hpx_init REUSE_FROM hpx_precompiled_headers) +endif() diff --git a/libs/core/config/include/hpx/config.hpp b/libs/core/config/include/hpx/config.hpp index c6dd9ab068e1..81524ee5d569 100644 --- a/libs/core/config/include/hpx/config.hpp +++ b/libs/core/config/include/hpx/config.hpp @@ -7,13 +7,6 @@ #pragma once -// We need to detect if user code include boost/config.hpp before -// including hpx/config.hpp -// Everything else might lead to hard compile errors and possible very subtle bugs. -#if defined(BOOST_CONFIG_HPP) -#error Boost.Config was included before the hpx config header. This might lead to subtle failures and compile errors. Please include before any other boost header -#endif - #include #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) diff --git a/wrap/CMakeLists.txt b/wrap/CMakeLists.txt index 729d207d335d..8c138b25db2d 100644 --- a/wrap/CMakeLists.txt +++ b/wrap/CMakeLists.txt @@ -91,3 +91,7 @@ install( hpx_export_internal_targets(hpx_wrap) add_hpx_pseudo_dependencies(core hpx_wrap) + +if(HPX_WITH_PRECOMPILED_HEADERS) + target_precompile_headers(hpx_wrap REUSE_FROM hpx_precompiled_headers) +endif()