Import Geant4 11.0.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2021-06-25 16:12:29 +02:00
parent c968e26a39
commit 6399a014b6
4200 changed files with 207479 additions and 237366 deletions
+40 -1
View File
@@ -13,7 +13,9 @@ include(Compilers)
include(MacroUtilities)
ptl_add_interface_library(ptl-compile-options)
ptl_add_interface_library(ptl-public-options)
ptl_add_interface_library(ptl-external-libraries)
ptl_add_interface_library(ptl-sanitizer-options)
# ---------------------------------------------------------------------------- #
#
@@ -25,7 +27,7 @@ ptl_add_interface_library(ptl-external-libraries)
if("${CMAKE_PROJECT_NAME}" STREQUAL "${PROJECT_NAME}")
set(_BIN_DIR ${PROJECT_BINARY_DIR})
if(WIN32)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${_BIN_DIR}/outputs/Runtime)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${_BIN_DIR}/outputs/runtime)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${_BIN_DIR}/outputs/library)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_BIN_DIR}/outputs/archive)
else()
@@ -45,3 +47,40 @@ else()
target_compile_definitions(ptl-compile-options INTERFACE NDEBUG)
endif()
if(PTL_USE_LOCKS)
target_compile_definitions(ptl-public-options INTERFACE PTL_USE_LOCKS)
endif()
if(PTL_USE_COVERAGE)
target_compile_options(ptl-public-options INTERFACE
$<BUILD_INTERFACE:-fprofile-arcs>
$<BUILD_INTERFACE:-ftest-coverage>)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(ptl-public-options INTERFACE
$<BUILD_INTERFACE:-fprofile-abs-path>
$<BUILD_INTERFACE:--coverage>)
set_target_properties(ptl-public-options PROPERTIES
INTERFACE_LINK_OPTIONS
$<BUILD_INTERFACE:--coverage>)
else()
set_target_properties(ptl-public-options PROPERTIES
INTERFACE_LINK_OPTIONS
$<BUILD_INTERFACE:-fprofile-arcs>)
endif()
endif()
if(PTL_USE_SANITIZER AND PTL_SANITIZER_TYPE)
if("${PTL_SANITIZER_TYPE}" STREQUAL "thread")
target_compile_options(ptl-sanitizer-options INTERFACE
-fsanitize=${PTL_SANITIZER_TYPE})
else()
target_compile_options(ptl-sanitizer-options INTERFACE
-fsanitize=${PTL_SANITIZER_TYPE}
-fno-optimize-sibling-calls
-fno-omit-frame-pointer
-fno-inline-functions)
endif()
target_link_options(ptl-sanitizer-options INTERFACE
-fsanitize=${PTL_SANITIZER_TYPE})
endif()
+8 -23
View File
@@ -6,35 +6,20 @@
find_program(CLANG_FORMATTER
NAMES
clang-format-8.0
clang-format-7.0
clang-format-6
clang-format-6.0
clang-format-mp-6.0 # macports
clang-format)
if(CLANG_FORMATTER)
set(_Source_DIR ${PROJECT_SOURCE_DIR})
set(_Example_DIR ${PROJECT_SOURCE_DIR}/examples)
set(_Header_DIR ${_Source_DIR}/PTL)
set(_Basic_DIR ${_Example_DIR}/basic)
set(_Common_DIR ${_Example_DIR}/common)
set(_Extended_DIR ${_Example_DIR}/extended/rotation)
set(_Gpu_DIR ${_Example_DIR}/gpu)
set(_Source_DIR ${PROJECT_SOURCE_DIR}/src)
set(_Header_DIR ${PROJECT_SOURCE_DIR}/include)
file(GLOB headers
${_Header_DIR}/*.hh ${_Header_DIR}/*.icc
${_Basic_DIR}/*.hh ${_Common_DIR}/*.hh
${_Gpu_DIR}/*.h ${_Gpu_DIR}/*.hh
${_Extended_DIR}/*.h ${_Extended_DIR}/*.hh)
${_Header_DIR}/*.hh ${_Header_DIR}/*.icc)
file(GLOB sources
${_Source_DIR}/*.cc ${_Extended_DIR}/*.cc
${_Basic_DIR}/*.cc ${_Common_DIR}/*.cc
${_Gpu_DIR}/*.cc ${_Gpu_DIR}/*.cu
${_Extended_DIR}/*.cc)
file(GLOB_RECURSE extended
${_Extended_DIR}/*.hh ${_Extended_DIR}/*.cc)
${_Source_DIR}/*.cc)
# avoid conflicting format targets
set(FORMAT_NAME format)
@@ -43,9 +28,9 @@ if(CLANG_FORMATTER)
endif()
add_custom_target(${FORMAT_NAME}
COMMAND ${CLANG_FORMATTER} -i ${headers} ${sources} ${extended}
COMMAND ${CLANG_FORMATTER} -i ${headers} ${sources}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Running '${CLANG_FORMATTER}' on '${_Source_DIR}' and '${_Example_DIR}..."
COMMENT "Running '${CLANG_FORMATTER}' on '${_Source_DIR}'..."
SOURCES ${headers} ${sources})
endif()
+3
View File
@@ -23,6 +23,9 @@
# - MSVC
#
# include guard
include_guard(DIRECTORY)
include(CheckLanguage)
include(CheckCCompilerFlag)
+9 -19
View File
@@ -127,27 +127,17 @@ FIND_LIBRARY(TBB_LIBRARY_DEBUG
PATH_SUFFIXES ${_TBB_POSSIBLE_LIB_SUFFIXES}
DOC "TBB debug library")
IF(TBB_LIBRARY_RELEASE AND TBB_LIBRARY_DEBUG)
IF(TBB_LIBRARY_DEBUG AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
IF(NOT TBB_LIBRARY)
SET(TBB_LIBRARY optimized ${TBB_LIBRARY_RELEASE} debug ${TBB_LIBRARY_DEBUG}
CACHE DOC "TBB library" FORCE)
SET(TBB_LIBRARY ${TBB_LIBRARY_DEBUG} CACHE FILEPATH "TBB library" FORCE)
ENDIF(NOT TBB_LIBRARY)
LIST(APPEND _TBB_ALL_LIBS optimized ${TBB_LIBRARY_RELEASE} debug ${TBB_LIBRARY_DEBUG})
ELSE()
IF(TBB_LIBRARY_DEBUG)
IF(NOT TBB_LIBRARY)
SET(TBB_LIBRARY ${TBB_LIBRARY_DEBUG} CACHE FILEPATH "TBB library" FORCE)
ENDIF(NOT TBB_LIBRARY)
LIST(APPEND _TBB_ALL_LIBS ${TBB_LIBRARY_DEBUG})
ENDIF(TBB_LIBRARY_DEBUG)
IF(TBB_LIBRARY_RELEASE)
IF(NOT TBB_LIBRARY)
SET(TBB_LIBRARY ${TBB_LIBRARY_RELEASE} CACHE FILEPATH "TBB library" FORCE)
ENDIF(NOT TBB_LIBRARY)
LIST(APPEND _TBB_ALL_LIBS ${TBB_LIBRARY_RELEASE})
ENDIF()
ENDIF(TBB_LIBRARY_RELEASE AND TBB_LIBRARY_DEBUG)
LIST(APPEND _TBB_ALL_LIBS ${TBB_LIBRARY_DEBUG})
ELSEIF(TBB_LIBRARY_RELEASE)
IF(NOT TBB_LIBRARY)
SET(TBB_LIBRARY ${TBB_LIBRARY_RELEASE} CACHE FILEPATH "TBB library" FORCE)
ENDIF(NOT TBB_LIBRARY)
LIST(APPEND _TBB_ALL_LIBS ${TBB_LIBRARY_RELEASE})
ENDIF()
#------------------------------------------------------------------------------#
+76 -62
View File
@@ -35,6 +35,9 @@
#
#
# - Include guard
include_guard(DIRECTORY)
cmake_policy(PUSH)
if(NOT CMAKE_VERSION VERSION_LESS 3.1)
cmake_policy(SET CMP0054 NEW)
@@ -49,7 +52,7 @@ include(CMakeParseArguments)
# macro set_ifnot(<var> <value>)
# If variable var is not set, set its value to that provided
#
macro(set_ifnot _var _value)
macro(ptl_set_ifnot _var _value)
if(NOT DEFINED ${_var})
set(${_var} ${_value} ${ARGN})
endif()
@@ -59,7 +62,7 @@ endmacro()
# macro safe_remove_duplicates(<list>)
# ensures remove_duplicates is only called if list has values
#
macro(safe_remove_duplicates _list)
macro(ptl_safe_remove_duplicates _list)
if(NOT "${${_list}}" STREQUAL "")
list(REMOVE_DUPLICATES ${_list})
endif(NOT "${${_list}}" STREQUAL "")
@@ -71,7 +74,7 @@ endmacro()
# capitalize("SHARED" CShared)
# message(STATUS "-- CShared is \"${CShared}\"")
# $ -- CShared is "Shared"
function(capitalize str var)
function(ptl_capitalize str var)
# make string lower
string(TOLOWER "${str}" str)
string(SUBSTRING "${str}" 0 1 _first)
@@ -89,7 +92,7 @@ endfunction()
# macro set_ifnot_match(<var> <value>)
# If variable var is not set, set its value to that provided
#
macro(SET_IFNOT_MATCH VAR APPEND)
macro(PTL_SET_IFNOT_MATCH VAR APPEND)
if(NOT "${APPEND}" STREQUAL "")
STRING(REGEX MATCH "${APPEND}" _MATCH "${${VAR}}")
if(NOT "${_MATCH}" STREQUAL "")
@@ -102,7 +105,7 @@ endmacro()
# macro cache_ifnot(<var> <value>)
# If variable var is not set, set its value to that provided and cache it
#
macro(cache_ifnot _var _value _type _doc)
macro(ptl_cache_ifnot _var _value _type _doc)
if(NOT ${_var} OR NOT ${CACHE_VARIABLES} MATCHES ${_var})
set(${_var} ${_value} CACHE ${_type} "${_doc}")
endif()
@@ -126,7 +129,7 @@ endmacro()
# checks of the value of <option> against the allowed values
# will ignore the case when performing string comparison.
#
function(enum_option _var)
function(ptl_enum_option _var)
set(options CASE_INSENSITIVE)
set(oneValueArgs DOC TYPE DEFAULT)
set(multiValueArgs VALUES)
@@ -181,14 +184,14 @@ endfunction()
# when "make distclean" is run
#
# Prototype:
# ADD_TO_DISTCLEAN(file)
# PTL_ADD_TO_DISTCLEAN(file)
# Parameters:
# file A file or dir
#
MACRO(ADD_TO_DISTCLEAN TARGET_TO_DELETE)
MACRO(PTL_ADD_TO_DISTCLEAN TARGET_TO_DELETE)
SET( FILES_TO_DELETE ${FILES_TO_DELETE} ${TARGET_TO_DELETE} )
ENDMACRO(ADD_TO_DISTCLEAN)
ENDMACRO(PTL_ADD_TO_DISTCLEAN)
#-----------------------------------------------------------------------
# from
@@ -203,31 +206,31 @@ ENDMACRO(ADD_TO_DISTCLEAN)
# (none)
#
MACRO(GENERATE_DISTCLEAN_TARGET)
MACRO(PTL_GENERATE_DISTCLEAN_TARGET)
IF( EXISTS ${PROJECT_BINARY_DIR}/distclean_manifest.txt )
FILE( REMOVE ${PROJECT_BINARY_DIR}/distclean_manifest.txt )
ENDIF( EXISTS ${PROJECT_BINARY_DIR}/distclean_manifest.txt )
IF(MSVC)
SET( FILES_TO_DELETE ${FILES_TO_DELETE} ${PROJECT_BINARY_DIR}/*.dir )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/*.vcproj )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/*.vcproj.cmake )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.sln )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/*.vcproj )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/*.vcproj.cmake )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.sln )
ENDIF(MSVC)
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/distclean.dir )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/CMakeCache.txt )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/install_manifest.txt )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/CPackConfig.cmake )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/CPackSourceConfig.cmake )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/_CPack_Packages )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/PACKAGE.dir )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/cmake_install.cmake )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/distclean.dir )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/CMakeCache.txt )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/install_manifest.txt )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/CPackConfig.cmake )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/CPackSourceConfig.cmake )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/_CPack_Packages )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/PACKAGE.dir )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/cmake_install.cmake )
# This code does not work yet. I don't know why CPACK_GENERATOR is null.
IF(CPACK_GENERATOR)
FOREACH(gen ${CPACK_GENERATOR})
MESSAGE("Adding file ${PROJECT_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.${gen} to distclean")
ADD_TO_DISTCLEAN(${PROJECT_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.${gen} )
PTL_ADD_TO_DISTCLEAN(${PROJECT_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.${gen} )
ENDFOREACH(gen)
ELSE(CPACK_GENERATOR)
MESSAGE("CPACK_GENERATOR was not defined (value: ${CPACK_GENERATOR})")
@@ -236,14 +239,14 @@ MACRO(GENERATE_DISTCLEAN_TARGET)
IF(EXECUTABLE_OUTPUT_PATH)
ADD_TO_DISTCLEAN( ${EXECUTABLE_OUTPUT_PATH} )
PTL_ADD_TO_DISTCLEAN( ${EXECUTABLE_OUTPUT_PATH} )
ENDIF(EXECUTABLE_OUTPUT_PATH)
IF(LIBRARY_OUTPUT_PATH)
ADD_TO_DISTCLEAN( ${LIBRARY_OUTPUT_PATH} )
PTL_ADD_TO_DISTCLEAN( ${LIBRARY_OUTPUT_PATH} )
ENDIF(LIBRARY_OUTPUT_PATH)
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY} )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/Makefile )
ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/distclean_manifest.txt )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY} )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/Makefile )
PTL_ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/distclean_manifest.txt )
FOREACH(f ${FILES_TO_DELETE})
FILE(TO_NATIVE_PATH ${f} ff)
@@ -277,14 +280,14 @@ MACRO(GENERATE_DISTCLEAN_TARGET)
generated files...
)
ENDIF(WIN32)
ENDMACRO(GENERATE_DISTCLEAN_TARGET)
ENDMACRO()
#-----------------------------------------------------------------------
# Determine if two paths are the same
#
#-----------------------------------------------------------------------
function(equal_paths VAR PATH1 PATH2)
function(ptl_equal_paths VAR PATH1 PATH2)
get_filename_component(PATH1 ${PATH1} ABSOLUTE)
get_filename_component(PATH2 ${PATH2} ABSOLUTE)
@@ -293,7 +296,7 @@ function(equal_paths VAR PATH1 PATH2)
else()
set(${VAR} OFF PARENT_SCOPE)
endif()
endfunction(equal_paths VAR PATH1 PATH2)
endfunction()
#-----------------------------------------------------------------------
@@ -301,7 +304,7 @@ endfunction(equal_paths VAR PATH1 PATH2)
# in CMAKE_PREFIX_PATH
#
#-----------------------------------------------------------------------
function(clean_prefix_path)
function(ptl_clean_prefix_path)
set(_prefix_path )
foreach(_path ${CMAKE_PREFIX_PATH})
get_filename_component(_path ${_path} REALPATH)
@@ -351,7 +354,7 @@ function(subConfigureRootSearchPath _package_name _search_other)
# if ROOT not already defined and ENV variable defines it
if(NOT ${_package_name}_ROOT_DIR AND
NOT "$ENV{${_package_name}_ROOT}" STREQUAL "")
cache_ifnot(${_package_name}_ROOT_DIR $ENV{${_package_name}_ROOT}
ptl_cache_ifnot(${_package_name}_ROOT_DIR $ENV{${_package_name}_ROOT}
FILEPATH "ROOT search path for ${_package_name}")
endif()
@@ -361,7 +364,7 @@ function(subConfigureRootSearchPath _package_name _search_other)
if(_search_other)
string(TOUPPER "${_package_name}" ALT_PACKAGE_NAME)
if("${ALT_PACKAGE_NAME}" STREQUAL "${_package_name}")
capitalize("${_package_name}" ALT_PACKAGE_NAME)
ptl_capitalize("${_package_name}" ALT_PACKAGE_NAME)
subConfigureRootSearchPath(${ALT_PACKAGE_NAME} OFF)
else()
subConfigureRootSearchPath(${ALT_PACKAGE_NAME} OFF)
@@ -384,7 +387,7 @@ function(subConfigureRootSearchPath _package_name _search_other)
# store previous root to see if it changed
set(PREVIOUS_${_package_name}_ROOT_DIR ${${_package_name}_ROOT_DIR}
CACHE FILEPATH "Previous root search path for ${_package_name}" FORCE)
clean_prefix_path()
ptl_clean_prefix_path()
else()
message(WARNING "${_package_name}_ROOT_DIR specified an invalid directory")
unset(${_package_name}_ROOT_DIR CACHE)
@@ -469,7 +472,7 @@ endmacro()
# existence of the variable <NAME>, to the list of enabled/disabled
# features, plus a docstring describing the feature
#
FUNCTION(ADD_FEATURE _var _description)
FUNCTION(PTL_ADD_FEATURE _var _description)
set(EXTRA_DESC "")
foreach(currentArg ${ARGN})
if(NOT "${currentArg}" STREQUAL "${_var}" AND
@@ -490,7 +493,7 @@ ENDFUNCTION()
# existence of the variable <NAME>, to the list of enabled/disabled
# features, plus a docstring describing the feature
#
FUNCTION(ADD_SUBFEATURE _root _var _description)
FUNCTION(PTL_ADD_SUBFEATURE _root _var _description)
set(EXTRA_DESC "")
foreach(currentArg ${ARGN})
if(NOT "${currentArg}" STREQUAL "${_var}" AND
@@ -507,15 +510,21 @@ ENDFUNCTION()
# function add_option(<OPTION_NAME> <DOCSRING> <DEFAULT_SETTING> [NO_FEATURE])
# Add an option and add as a feature if NO_FEATURE is not provided
#
FUNCTION(ADD_OPTION _NAME _MESSAGE _DEFAULT)
FUNCTION(PTL_ADD_OPTION _NAME _MESSAGE _DEFAULT)
SET(__FEATURE ${ARGN})
OPTION(${_NAME} "${_MESSAGE}" ${_DEFAULT})
IF(NOT "${__FEATURE}" STREQUAL "NO_FEATURE")
ADD_FEATURE(${_NAME} "${_MESSAGE}")
IF(PTL_MASTER_PROJECT)
OPTION(${_NAME} "${_MESSAGE}" ${_DEFAULT})
IF(NOT "${__FEATURE}" STREQUAL "NO_FEATURE")
PTL_ADD_FEATURE(${_NAME} "${_MESSAGE}")
ELSE()
MARK_AS_ADVANCED(${_NAME})
ENDIF()
ELSE()
MARK_AS_ADVANCED(${_NAME})
IF(NOT DEFINED ${_NAME})
SET(${_NAME} ${_DEFAULT})
ENDIF()
ENDIF()
ENDFUNCTION(ADD_OPTION _NAME _MESSAGE _DEFAULT)
ENDFUNCTION(PTL_ADD_OPTION _NAME _MESSAGE _DEFAULT)
#------------------------------------------------------------------------------#
@@ -524,7 +533,7 @@ ENDFUNCTION(ADD_OPTION _NAME _MESSAGE _DEFAULT)
# <DEFAULT_SETTING> [NO_FEATURE])
# Add an option and add as a feature if NO_FEATURE is not provided
#
FUNCTION(ADD_DEPENDENT_OPTION _NAME _MESSAGE _COND_SETTING _COND _DEFAULT)
FUNCTION(PTL_ADD_DEPENDENT_OPTION _NAME _MESSAGE _COND_SETTING _COND _DEFAULT)
SET(_FEATURE ${ARGN})
IF(DEFINED ${_NAME} AND NOT ${_COND})
OPTION(${_NAME} "${_MESSAGE}" ${_DEFAULT})
@@ -538,14 +547,14 @@ FUNCTION(ADD_DEPENDENT_OPTION _NAME _MESSAGE _COND_SETTING _COND _DEFAULT)
ELSE()
MARK_AS_ADVANCED(${_NAME})
ENDIF()
ENDFUNCTION(ADD_DEPENDENT_OPTION _NAME _MESSAGE _DEFAULT _COND _COND_SETTING)
ENDFUNCTION(PTL_ADD_DEPENDENT_OPTION _NAME _MESSAGE _DEFAULT _COND _COND_SETTING)
#------------------------------------------------------------------------------#
# function print_enabled_features()
# Print enabled features plus their docstrings.
#
function(print_enabled_features)
function(ptl_print_enabled_features)
set(_basemsg "The following features are defined/enabled (+):")
set(_currentFeatureText "${_basemsg}")
get_property(_features GLOBAL PROPERTY PROJECT_FEATURES)
@@ -567,7 +576,7 @@ function(print_enabled_features)
else()
string(REGEX REPLACE "^USE_" "" _feature_tmp "${_feature}")
string(TOLOWER "${_feature_tmp}" _feature_tmp_l)
capitalize("${_feature_tmp}" _feature_tmp_c)
ptl_capitalize("${_feature_tmp}" _feature_tmp_c)
foreach(_var _feature_tmp _feature_tmp_l _feature_tmp_c)
set(_ver "${${${_var}}_VERSION}")
if(NOT "${_ver}" STREQUAL "")
@@ -644,7 +653,7 @@ endfunction()
# function print_disabled_features()
# Print disabled features plus their docstrings.
#
function(print_disabled_features)
function(ptl_print_disabled_features)
set(_basemsg "The following features are NOT defined/enabled (-):")
set(_currentFeatureText "${_basemsg}")
get_property(_features GLOBAL PROPERTY PROJECT_FEATURES)
@@ -674,15 +683,15 @@ endfunction()
# function print_features()
# Print all features plus their docstrings.
#
function(print_features)
function(ptl_print_features)
message(STATUS "")
print_enabled_features()
print_disabled_features()
ptl_print_enabled_features()
ptl_print_disabled_features()
endfunction()
#------------------------------------------------------------------------------#
macro(DETERMINE_LIBDIR_DEFAULT VAR)
macro(PTL_DETERMINE_LIBDIR_DEFAULT VAR)
set(_LIBDIR_DEFAULT "lib")
# Override this default 'lib' with 'lib64' iff:
# - we are on Linux system but NOT cross-compiling
@@ -742,6 +751,7 @@ macro(DETERMINE_LIBDIR_DEFAULT VAR)
set(LIBDIR_DEFAULT "${_LIBDIR_DEFAULT}" CACHE PATH "Object code libraries (${_LIBDIR_DEFAULT})" FORCE)
elseif(DEFINED __LAST_LIBDIR_DEFAULT
AND "${__LAST_LIBDIR_DEFAULT}" STREQUAL "${LIBDIR_DEFAULT}")
set(LIBDIR_DEFAULT "${_LIBDIR_DEFAULT}" CACHE STRING "")
set_property(CACHE LIBDIR_DEFAULT PROPERTY VALUE "${_LIBDIR_DEFAULT}")
endif()
endmacro()
@@ -752,7 +762,7 @@ endmacro()
# Provide a list of variables that will be stored in the cache
# as {variable_name}_REF for later reference
# This version does not force the cache to be updated
macro(CACHE_VARIABLES_FOR_REFERENCE)
macro(PTL_CACHE_VARIABLES_FOR_REFERENCE)
foreach(_var ${ARGN})
set(${_var}_REF ${${_var}} CACHE STRING
"Cached reference of ${_var} under ${_var}_REF for later comparison")
@@ -765,7 +775,7 @@ endmacro()
# Provide a list of variables that will be stored in the cache
# as {variable_name}_REF for later reference
# This version forces the cache to be updated
macro(UPDATE_REFERENCE_CACHE_VARIABLES)
macro(PTL_UPDATE_REFERENCE_CACHE_VARIABLES)
foreach(_var ${ARGN})
set(${_var}_REF ${${_var}} CACHE STRING
"Cached reference of ${_var} under ${_var}_REF for later comparison"
@@ -800,7 +810,7 @@ endfunction(GET_HOSTNAME VAR)
# TEST_FILE (one value) -- file to check for (default: CMakeLists.txt)
# ADDITIONAL_CMDS (many value) -- any addition commands to pass
#
macro(CHECKOUT_GIT_SUBMODULE)
macro(PTL_CHECKOUT_GIT_SUBMODULE)
# parse args
cmake_parse_arguments(
@@ -858,13 +868,13 @@ macro(CHECKOUT_GIT_SUBMODULE)
endif(NOT EXISTS "${_TEST_FILE}")
endmacro(CHECKOUT_GIT_SUBMODULE)
endmacro()
#----------------------------------------------------------------------------
# Macro for building library
#
macro(BUILD_LIBRARY)
macro(PTL_BUILD_LIBRARY)
cmake_parse_arguments(LIB
"VERSION" "TYPE;TARGET_NAME;OUTPUT_NAME;EXTENSION" "LINK_LIBRARIES;SOURCES;EXTRA_ARGS"
${ARGN})
@@ -879,6 +889,7 @@ macro(BUILD_LIBRARY)
setifnot(LIB_OUTPUT_NAME ${LIB_TARGET_NAME})
add_library(${LIB_TARGET_NAME} ${LIB_TYPE} ${LIB_SOURCES})
add_library(${PROJECT_NAME}::${LIB_TARGET_NAME} ALIAS ${LIB_TARGET_NAME})
if(LIB_VERSION)
list(APPEND LIB_EXTRA_ARGS VERSION ${${PROJECT_NAME}_VERSION}
@@ -886,8 +897,7 @@ macro(BUILD_LIBRARY)
endif()
target_link_libraries(${LIB_TARGET_NAME} PUBLIC
${EXTERNAL_LIBRARIES} ${LIB_LINK_LIBRARIES}
PRIVATE ${PRIVATE_EXTERNAL_LIBRARIES})
ptl-external-packages ${LIB_LINK_LIBRARIES})
set_target_properties(${LIB_TARGET_NAME}
PROPERTIES
@@ -897,11 +907,15 @@ macro(BUILD_LIBRARY)
POSITION_INDEPENDENT_CODE ON
${LIB_EXTRA_ARGS})
if(WIN32)
set_target_properties(${LIB_TARGET_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()
target_compile_definitions(${LIB_TARGET_NAME} PUBLIC
${${PROJECT_NAME}_DEFINITIONS})
target_compile_features(${LIB_TARGET_NAME}
PUBLIC cxx_std_${GEANT4_BUILD_CXXSTD})
PUBLIC cxx_std_${CMAKE_CXX_STANDARD})
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
@@ -916,8 +930,7 @@ macro(BUILD_LIBRARY)
$<$<COMPILE_LANGUAGE:CXX>:${${PROJECT_NAME}_CXX_FLAGS} ${LIB_CXXFLAGS}>)
endif()
list(APPEND INSTALL_LIBRARIES ${TARGET_NAME})
endmacro(BUILD_LIBRARY)
endmacro()
#-----------------------------------------------------------------------
# function add_enabled_interface(<NAME>)
@@ -946,6 +959,7 @@ ENDFUNCTION()
FUNCTION(PTL_ADD_INTERFACE_LIBRARY _TARGET)
if(NOT TARGET ${_TARGET})
add_library(${_TARGET} INTERFACE ${ARGN})
add_library(${PROJECT_NAME}::${_TARGET} ALIAS ${_TARGET})
set_property(GLOBAL APPEND PROPERTY ${PROJECT_NAME}_INTERFACE_LIBRARIES ${_TARGET})
ptl_add_enabled_interface(${_TARGET})
install(TARGETS ${_TARGET}
@@ -967,7 +981,7 @@ ENDFUNCTION()
#------------------------------------------------------------------------------#
# always determine the default lib directory
DETERMINE_LIBDIR_DEFAULT(LIBDIR_DEFAULT)
PTL_DETERMINE_LIBDIR_DEFAULT(LIBDIR_DEFAULT)
#------------------------------------------------------------------------------#
+38 -32
View File
@@ -6,43 +6,49 @@
################################################################################
include(MacroUtilities)
include(Compilers)
set(_FEATURE )
if(NOT PTL_MASTER_PROJECT)
set(_FEATURE NO_FEATURE)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON CACHE BOOL "Require the C++ standard" FORCE)
set(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL "Disable GNU extensions")
#set(CMAKE_CXX_STANDARD_REQUIRED ON CACHE BOOL "Require the C++ standard" FORCE)
#set(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL "Disable GNU extensions")
# features
add_feature(CMAKE_BUILD_TYPE "Build type (Debug, Release, RelWithDebInfo, MinSizeRel)")
add_feature(CMAKE_INSTALL_PREFIX "Installation prefix")
add_feature(CMAKE_CXX_STANDARD "C++11 STL standard")
add_feature(${PROJECT_NAME}_C_FLAGS "C flags for project")
add_feature(${PROJECT_NAME}_CXX_FLAGS "C++ flags for project")
ptl_add_feature(CMAKE_BUILD_TYPE "Build type (Debug, Release, RelWithDebInfo, MinSizeRel)")
ptl_add_feature(CMAKE_INSTALL_PREFIX "Installation prefix")
ptl_add_feature(CMAKE_CXX_STANDARD "C++11 STL standard")
ptl_add_feature(${PROJECT_NAME}_C_FLAGS "C flags for project")
ptl_add_feature(${PROJECT_NAME}_CXX_FLAGS "C++ flags for project")
# options (always available)
add_option(BUILD_STATIC_LIBS "Build static library" ON ${_FEATURE})
add_option(BUILD_SHARED_LIBS "Build shared library" ON ${_FEATURE})
add_option(PTL_BUILD_EXAMPLES "Build examples" OFF ${_FEATURE})
add_option(PTL_BUILD_DOCS "Build documentation with Doxygen" OFF ${_FEATURE})
add_option(PTL_DEVELOPER_INSTALL "Install headers, cmake export, and shared libs" ON ${_FEATURE})
ptl_add_option(BUILD_STATIC_LIBS "Build static library" ON ${_FEATURE})
ptl_add_option(BUILD_SHARED_LIBS "Build shared library" ON ${_FEATURE})
ptl_add_option(PTL_BUILD_EXAMPLES "Build examples" OFF ${_FEATURE})
ptl_add_option(PTL_BUILD_DOCS "Build documentation with Doxygen" OFF ${_FEATURE})
ptl_add_option(PTL_DEVELOPER_INSTALL "Install headers, cmake export, and shared libs" ON ${_FEATURE})
add_option(PTL_USE_TBB "Enable TBB" ON ${_FEATURE})
add_option(PTL_USE_GPU "Enable GPU preprocessor" OFF ${_FEATURE})
add_option(PTL_USE_SANITIZER "Enable -fsanitize=<type>" OFF ${_FEATURE})
add_option(PTL_USE_CLANG_TIDY "Enable running clang-tidy on" OFF ${_FEATURE})
add_option(PTL_USE_COVERAGE "Enable code coverage" OFF ${_FEATURE})
add_option(PTL_USE_PROFILE "Enable profiling" OFF ${_FEATURE})
ptl_add_option(PTL_USE_TBB "Enable TBB" ON ${_FEATURE})
ptl_add_option(PTL_USE_GPU "Enable GPU preprocessor" OFF ${_FEATURE})
ptl_add_option(PTL_USE_SANITIZER "Enable -fsanitize=<type>" OFF ${_FEATURE})
ptl_add_option(PTL_USE_CLANG_TIDY "Enable running clang-tidy on" OFF ${_FEATURE})
ptl_add_option(PTL_USE_COVERAGE "Enable code coverage" OFF ${_FEATURE})
ptl_add_option(PTL_USE_LOCKS "Enable mutex locking in task subqueues for extra safety" OFF ${_FEATURE})
# add_option(PTL_USE_PROFILE "Enable profiling" OFF ${_FEATURE})
if(PTL_USE_ARCH)
add_option(PTL_USE_AVX512 "Enable AVX-512 flags (if available)" OFF ${_FEATURE})
ptl_add_option(PTL_USE_AVX512 "Enable AVX-512 flags (if available)" OFF ${_FEATURE})
endif()
if(PTL_USE_COVERAGE)
set(CMAKE_BUILD_TYPE Debug)
endif()
if(PTL_USE_SANITIZER)
add_feature(PTL_SANITIZER_TYPE "Sanitizer type (-fsanitize=<type>)")
set(PTL_SANITIZER_TYPE leak CACHE STRING "Sanitizer type (-fsanitize=<type>)")
ptl_add_feature(PTL_SANITIZER_TYPE "Sanitizer type (i.e. -fsanitize=<type>)")
#set(PTL_SANITIZER_TYPE thread CACHE STRING "Sanitizer type (i.e. -fsanitize=<type>)")
endif()
if(PTL_USE_GPU)
@@ -63,30 +69,30 @@ if(PTL_USE_GPU)
if(_USE_CUDA)
list(APPEND ${PROJECT_NAME}_DEFINITIONS PTL_USE_GPU)
add_option(PTL_USE_CUDA "Enable CUDA option for GPU execution" ${_USE_CUDA} ${_FEATURE})
add_option(PTL_USE_NVTX "Enable NVTX for Nsight" ${_USE_CUDA} ${_FEATURE})
ptl_add_option(PTL_USE_CUDA "Enable CUDA option for GPU execution" ${_USE_CUDA} ${_FEATURE})
ptl_add_option(PTL_USE_NVTX "Enable NVTX for Nsight" ${_USE_CUDA} ${_FEATURE})
set(CUDA_ARCH "sm_35" CACHE STRING "CUDA architecture flag")
if(_FEATURE)
add_feature(CUDA_ARCH "CUDA architecture (e.g. sm_35)")
add_feature(CUDA_GENERATED_OUTPUT_DIR "CUDA output directory for generated files")
ptl_add_feature(CUDA_ARCH "CUDA architecture (e.g. sm_35)")
ptl_add_feature(CUDA_GENERATED_OUTPUT_DIR "CUDA output directory for generated files")
endif()
endif()
endif()
# RPATH settings
set(_RPATH_LINK OFF)
if(APPLE)
set(_RPATH_LINK ON)
endif()
add_option(CMAKE_INSTALL_RPATH_USE_LINK_PATH "Hardcode installation rpath based on link path" ${_RPATH_LINK} ${_FEATURE})
unset(_RPATH_LINK)
#set(_RPATH_LINK OFF)
#if(APPLE)
# set(_RPATH_LINK ON)
#endif()
#ptl_add_option(CMAKE_INSTALL_RPATH_USE_LINK_PATH "Hardcode installation rpath based on link path" ${_RPATH_LINK} ${_FEATURE})
#unset(_RPATH_LINK)
# clang-tidy
if(PTL_USE_CLANG_TIDY)
find_program(CLANG_TIDY_COMMAND NAMES clang-tidy)
add_feature(CLANG_TIDY_COMMAND "Path to clang-tidy command")
ptl_add_feature(CLANG_TIDY_COMMAND "Path to clang-tidy command")
if(NOT CLANG_TIDY_COMMAND)
message(WARNING "PTL_USE_CLANG_TIDY is ON but clang-tidy is not found!")
set(PTL_USE_CLANG_TIDY OFF)
+7 -2
View File
@@ -34,13 +34,18 @@ endif()
################################################################################
if(PTL_USE_TBB)
find_package(TBB)
find_package(TBB 2017)
if(TBB_FOUND)
target_compile_definitions(ptl-tbb INTERFACE PTL_USE_TBB)
target_include_directories(ptl-tbb SYSTEM INTERFACE ${TBB_INCLUDE_DIRS})
target_link_libraries(ptl-tbb INTERFACE ${TBB_LIBRARIES})
target_link_libraries(ptl-external-packages INTERFACE ptl-tbb)
else()
set(PTL_USE_TBB OFF)
ptl_add_disabled_interface(ptl-tbb)
endif()
else()
set(PTL_USE_TBB OFF)
ptl_add_disabled_interface(ptl-tbb)
endif()
+12 -4
View File
@@ -6,8 +6,8 @@
string(TOUPPER "${CMAKE_BUILD_TYPE}" _CONFIG)
add_feature(CMAKE_C_FLAGS_${_CONFIG} "C compiler build-specific flags")
add_feature(CMAKE_CXX_FLAGS_${_CONFIG} "C++ compiler build-specific flags")
ptl_add_feature(CMAKE_C_FLAGS_${_CONFIG} "C compiler build-specific flags")
ptl_add_feature(CMAKE_CXX_FLAGS_${_CONFIG} "C++ compiler build-specific flags")
################################################################################
#
@@ -22,7 +22,7 @@ endif()
# create the full path version and generic path versions
foreach(_TYPE in DATAROOT CMAKE INCLUDE LIB BIN MAN DOC)
foreach(_TYPE DATAROOT CONFIG INCLUDE LIB BIN MAN DOC)
# set the absolute versions
if(NOT IS_ABSOLUTE "${CMAKE_INSTALL_${_TYPE}DIR}")
set(CMAKE_INSTALL_FULL_${_TYPE}DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${_TYPE}DIR})
@@ -34,4 +34,12 @@ foreach(_TYPE in DATAROOT CMAKE INCLUDE LIB BIN MAN DOC)
set(PROJECT_INSTALL_${_TYPE}DIR ${CMAKE_INSTALL_${TYPE}DIR})
set(PROJECT_INSTALL_FULL_${_TYPE}DIR ${CMAKE_INSTALL_FULL_${TYPE}DIR})
endforeach(_TYPE in DATAROOT CMAKE INCLUDE LIB BIN MAN DOC)
if(NOT DEFINED PTL_INSTALL_${_TYPE}DIR)
set(PTL_INSTALL_${_TYPE}DIR "${CMAKE_INSTALL_${_TYPE}DIR}")
endif()
if(PTL_MASTER_PROJECT)
set(PTL_INSTALL_${_TYPE}DIR "${CMAKE_INSTALL_${_TYPE}DIR}" CACHE STRING
"${_TYPE} Installation Path")
endif()
endforeach()