Import Geant4 11.4.0 source tree
This commit is contained in:
@@ -6,6 +6,57 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
# 2025-11-17 Ben Morgan (cmake-V11-03-17)
|
||||
- Bump PhotonEvaporation dataset definition to v6.1.2
|
||||
- Provides fixes for Bugzilla 2685 (z75.a187).
|
||||
- See request in Issue #266.
|
||||
|
||||
# 2025-11-10 Ben Morgan (cmake-V11-03-16)
|
||||
- Bump PhotonEvaporation dataset definition to v6.1.1
|
||||
- Provides fixes for Bugzilla 2682 (z94.a239), 2577 (z5.a11),
|
||||
2170 (z91.a234).
|
||||
- See request in Issue #265.
|
||||
|
||||
## 2025-11-07 John Allison (cmake-V11-03-15)
|
||||
- Remove all references to HepRep:
|
||||
- cmake/Templates/Geant4Config.cmake.in
|
||||
- cmake/Templates/geant4-config.in
|
||||
|
||||
## 2025-11-03 John Allison (cmake-V11-03-14)
|
||||
- Remove all references to Qt3D:
|
||||
- cmake/Templates/Geant4Config.cmake.in
|
||||
- cmake/Templates/geant4-config.in
|
||||
- cmake/Modules/G4InterfaceOptions.cmake
|
||||
- cmake/Modules/G4ConfigurePkgConfigHelpers.cmake
|
||||
|
||||
## 2024-10-29 Ben Morgan (cmake-V11-03-13)
|
||||
- Bump G4PARTICLEXS dataset definition to 4.2
|
||||
- See request in Issue #263
|
||||
|
||||
## 2025-10-24 Ben Morgan (cmake-V11-03-12)
|
||||
- Bump G4CHANELLING dataset definition to 2.0
|
||||
- See request in Issue #262
|
||||
|
||||
## 2025-10-20 Ben Morgan (cmake-V11-03-11)
|
||||
- Remove obsolete G4ClangFormat module
|
||||
- Use of clang-format will be through IDEs or pre-commit rather than build
|
||||
system going forward.
|
||||
|
||||
## 2025-10-18 Ben Morgan (cmake-V11-03-10)
|
||||
- Bump G4EMLOW dataset to version 8.8 (Issue #261)
|
||||
|
||||
## 2025-10-02 Ben Morgan (cmake-V11-03-09)
|
||||
- Bump G4INCL dataset to version 1.3 (Issue #259)
|
||||
|
||||
## 2025-08-28 Ben Morgan (cmake-V11-03-08)
|
||||
- Support creation of categories that are just an interface to other categories.
|
||||
- Needed to support splitting of libraries whilst retaining old target names
|
||||
for backward link/build compatibility.
|
||||
|
||||
## 2025-08-04 Ben Morgan (cmake-V11-03-07)
|
||||
- Add option to add shorten-64-to-32 warning to command line macOS build
|
||||
flags to match Xcode.
|
||||
|
||||
## 2025-06-10 Ben Morgan (cmake-V11-03-06)
|
||||
- Include external categories (G4zlib etc) in link resolution for unit test
|
||||
executables
|
||||
|
||||
@@ -284,6 +284,25 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|.*Clang")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#.rst:
|
||||
# - ``GEANT4_BUILD_XCODE_WARNINGS``
|
||||
# - Build libraries on macOS command line with extended warnings from Xcode
|
||||
if(APPLE AND
|
||||
(NOT CMAKE_GENERATOR STREQUAL "Xcode") AND
|
||||
(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang"))
|
||||
|
||||
set(__geant4_appleclang_additional "-Wshorten-64-to-32")
|
||||
|
||||
option(GEANT4_BUILD_XCODE_WARNINGS "Enable additional warnings used by Xcode when building with Command Line Tools")
|
||||
geant4_add_feature(GEANT4_BUILD_XCODE_WARNINGS "Compiling Geant4 with additional warnings '${__geant4_appleclang_additional}'")
|
||||
mark_as_advanced(GEANT4_BUILD_XCODE_WARNINGS)
|
||||
|
||||
|
||||
if(GEANT4_BUILD_XCODE_WARNINGS)
|
||||
string(APPEND CMAKE_CXX_FLAGS " ${__geant4_appleclang_additional}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#.rst:
|
||||
# - ``GEANT4_BUILD_ENABLE_ASSERTIONS``
|
||||
# - Build libraries with assertions enabled even in release build types (Release, RelWithDebInfo, MinSizeRel)
|
||||
|
||||
@@ -1,158 +0,0 @@
|
||||
#.rst
|
||||
# G4ClangFormat
|
||||
# =============
|
||||
#
|
||||
# Functions and helper targets for formatting sources of a target using
|
||||
# clang-format
|
||||
|
||||
# - Include guard
|
||||
include_guard(DIRECTORY)
|
||||
|
||||
# Default logging directory
|
||||
set(G4FORMAT_LOGDIR ${PROJECT_BINARY_DIR}/format CACHE PATH
|
||||
"Output folder of files that are formatted")
|
||||
|
||||
# Find clang-format (optional)
|
||||
find_program(CLANG_FORMATTER NAMES
|
||||
clang-format-6 # prefer clang-format version 6.0
|
||||
clang-format-6.0
|
||||
clang-format-mp-6.0 # Apple macports version
|
||||
clang-format)
|
||||
|
||||
function(exclude_from_format)
|
||||
cmake_parse_arguments(ARG "" "" "HEADERS;SOURCES;FILES" ${ARGN})
|
||||
|
||||
function(_add_labels _path)
|
||||
foreach(_FILE ${ARGN})
|
||||
if(NOT IS_ABSOLUTE ${_FILE})
|
||||
set(_FILE ${CMAKE_CURRENT_LIST_DIR}${_path}/${_FILE})
|
||||
endif()
|
||||
set(_LABELS "EXCLUDE_FORMAT")
|
||||
get_source_file_property(_EXISTING_LABELS ${_FILE} LABELS)
|
||||
if(_EXISTING_LABELS)
|
||||
list(APPEND _LABELS ${_EXISTING_LABELS})
|
||||
endif()
|
||||
set_source_files_properties(${_FILE} PROPERTIES LABELS "${_LABELS}")
|
||||
get_source_file_property(_EXISTING_LABELS ${_FILE} LABELS)
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
_add_labels("/include" ${ARG_HEADERS})
|
||||
_add_labels("/src" ${ARG_SOURCES})
|
||||
_add_labels("" ${ARG_FILES})
|
||||
endfunction()
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
|
||||
function(create_format_directory)
|
||||
if(NOT EXISTS ${G4FORMAT_LOGDIR})
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${G4FORMAT_LOGDIR})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
|
||||
function(geant4_format_target)
|
||||
if(NOT CLANG_FORMATTER)
|
||||
return()
|
||||
endif()
|
||||
|
||||
cmake_parse_arguments(G4FMTTARGET "" "NAME" "SOURCES" ${ARGN})
|
||||
string(REGEX REPLACE "-format$" "" G4TARGET_NAME "${G4FMTTARGET_NAME}")
|
||||
|
||||
# ensure not empty list
|
||||
if("${G4FMTTARGET_SOURCES}" STREQUAL "")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# create output directory
|
||||
create_format_directory()
|
||||
set(SOURCES ) # list of sources
|
||||
set(FILELOG ) # string of sources (for log)
|
||||
foreach(_SOURCE ${G4FMTTARGET_SOURCES})
|
||||
# files in binary directory are almost always generated files
|
||||
string(FIND "${_SOURCE}" "${PROJECT_BINARY_DIR}" IN_BINARY_DIR)
|
||||
# ignore generated files
|
||||
if(IN_BINARY_DIR GREATER -1)
|
||||
continue()
|
||||
endif()
|
||||
# check if exists (valid full path)
|
||||
if(EXISTS "${_SOURCE}")
|
||||
# do nothing -- absolute path was specified
|
||||
elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${_SOURCE}")
|
||||
# a relative path was specified
|
||||
set(_SOURCE ${CMAKE_CURRENT_LIST_DIR}/${_SOURCE})
|
||||
else()
|
||||
# neither relative nor absolute
|
||||
message(STATUS "[format] file not found: '${_SOURCE}'")
|
||||
continue()
|
||||
endif()
|
||||
#string(REPLACE "${PROJECT_SOURCE_DIR}/" "" _SOURCE ${_SOURCE})
|
||||
get_source_file_property(SOURCE_LABELS ${_SOURCE} LABELS)
|
||||
list(FIND SOURCE_LABELS "EXCLUDE_FORMAT" EXCLUDE_FORMAT)
|
||||
if(EXCLUDE_FORMAT GREATER -1)
|
||||
continue()
|
||||
endif()
|
||||
# append to log
|
||||
set(FILELOG "${FILELOG}${_SOURCE}\n")
|
||||
# add to list to be processed
|
||||
list(APPEND SOURCES ${_SOURCE})
|
||||
endforeach()
|
||||
|
||||
# write format file
|
||||
set(FMTLOG_OUT ${G4FORMAT_LOGDIR}/${G4TARGET_NAME}.txt)
|
||||
file(WRITE ${FMTLOG_OUT} "${FILELOG}")
|
||||
file(RELATIVE_PATH FMTLOG_RELATIVE_OUT ${PROJECT_BINARY_DIR} ${FMTLOG_OUT})
|
||||
# get the number of source files
|
||||
list(LENGTH SOURCES NUM_SOURCES)
|
||||
# if there are too many source files (arguments), command will fail
|
||||
# so process no more than 500 at a time
|
||||
if(NUM_SOURCES GREATER 500)
|
||||
# function to generate indices
|
||||
function(generate_indices VAR NUM)
|
||||
set(INDICES )
|
||||
set(N 0)
|
||||
while(N LESS NUM)
|
||||
list(APPEND INDICES ${N})
|
||||
math(EXPR N "${N}+1")
|
||||
endwhile()
|
||||
set(${VAR} ${INDICES} PARENT_SCOPE)
|
||||
endfunction()
|
||||
# generate 500 indices
|
||||
generate_indices(INDICES 500)
|
||||
set(FORMAT_COMMANDS )
|
||||
# while there are still sources in list
|
||||
while(NUM_SOURCES GREATER 0)
|
||||
# if below 500, re-generate indices
|
||||
if(NUM_SOURCES LESS 500)
|
||||
generate_indices(INDICES ${NUM_SOURCES})
|
||||
endif()
|
||||
# get the subset of first 500
|
||||
list(GET SOURCES ${INDICES} SOURCES_SUBSET)
|
||||
# add the target for block of 500
|
||||
list(APPEND FORMAT_COMMANDS COMMAND ${CLANG_FORMATTER} -i ${SOURCES_SUBSET})
|
||||
# remove 500 we just processed
|
||||
list(REMOVE_AT SOURCES ${INDICES})
|
||||
# update the number of sources remaining
|
||||
list(LENGTH SOURCES NUM_SOURCES)
|
||||
endwhile()
|
||||
# add the custom command
|
||||
list(LENGTH FORMAT_COMMANDS NUM_COMMANDS)
|
||||
if(NUM_COMMANDS GREATER 0)
|
||||
add_custom_target(${G4FMTTARGET_NAME}
|
||||
${FORMAT_COMMANDS}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
COMMENT "Running '${CLANG_FORMATTER}' on source files in '${G4TARGET_NAME}' target (see ${FMTLOG_RELATIVE_OUT})...")
|
||||
endif()
|
||||
else()
|
||||
list(LENGTH SOURCES NUM_SOURCES)
|
||||
if(NUM_SOURCES GREATER 0)
|
||||
# if less than 500 source files, add all in one target
|
||||
add_custom_target(${G4FMTTARGET_NAME}
|
||||
COMMAND ${CLANG_FORMATTER} -i ${SOURCES}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
COMMENT
|
||||
"Running '${CLANG_FORMATTER}' on source files in '${G4TARGET_NAME}' target (see ${FMTLOG_RELATIVE_OUT})...")
|
||||
endif()
|
||||
endif(NUM_SOURCES GREATER 500)
|
||||
endfunction()
|
||||
@@ -269,13 +269,6 @@ if(NOT GEANT4_BUILD_GRANULAR_LIBS)
|
||||
set(G4_BUILTWITH_QT "no")
|
||||
endif()
|
||||
|
||||
# - QT3D
|
||||
if(GEANT4_USE_QT3D)
|
||||
set(G4_BUILTWITH_QT3D "yes")
|
||||
else()
|
||||
set(G4_BUILTWITH_QT3D "no")
|
||||
endif()
|
||||
|
||||
# - Motif
|
||||
if(GEANT4_USE_XM)
|
||||
set(G4_BUILTWITH_MOTIF "yes")
|
||||
|
||||
@@ -18,21 +18,21 @@ geant4_add_dataset(
|
||||
# - Low energy electromagnetics
|
||||
geant4_add_dataset(
|
||||
NAME G4EMLOW
|
||||
VERSION 8.7
|
||||
VERSION 8.8
|
||||
FILENAME G4EMLOW
|
||||
EXTENSION tar.gz
|
||||
ENVVAR G4LEDATA
|
||||
MD5SUM 949c9422ae668208562be1b991750df1
|
||||
MD5SUM 328330009df633f7e9b3a9f445745298
|
||||
)
|
||||
|
||||
# - Photon evaporation
|
||||
geant4_add_dataset(
|
||||
NAME PhotonEvaporation
|
||||
VERSION 6.1
|
||||
VERSION 6.1.2
|
||||
FILENAME G4PhotonEvaporation
|
||||
EXTENSION tar.gz
|
||||
ENVVAR G4LEVELGAMMADATA
|
||||
MD5SUM 92d68b937cdad0fd49892a66878863de
|
||||
MD5SUM d80ba9bdefcf9e23487a26adfa273304
|
||||
)
|
||||
|
||||
# - Radioisotopes
|
||||
@@ -48,11 +48,11 @@ geant4_add_dataset(
|
||||
# - Particle XS - replaces Neutron XS
|
||||
geant4_add_dataset(
|
||||
NAME G4PARTICLEXS
|
||||
VERSION 4.1
|
||||
VERSION 4.2
|
||||
FILENAME G4PARTICLEXS
|
||||
EXTENSION tar.gz
|
||||
ENVVAR G4PARTICLEXSDATA
|
||||
MD5SUM 878252a464ba6b38f085741840f053e6
|
||||
MD5SUM b63341cc97a472b04ff607b094493174
|
||||
)
|
||||
|
||||
# - PII
|
||||
@@ -99,11 +99,11 @@ geant4_add_dataset(
|
||||
# - INCL
|
||||
geant4_add_dataset(
|
||||
NAME G4INCL
|
||||
VERSION 1.2
|
||||
VERSION 1.3
|
||||
FILENAME G4INCL
|
||||
EXTENSION tar.gz
|
||||
ENVVAR G4INCLDATA
|
||||
MD5SUM 0a76df936839bb557dae7254117eb58e
|
||||
MD5SUM 72c3ff5f7f1e6f727f2ebf3b11ce784f
|
||||
)
|
||||
|
||||
# - ENSDFSTATE
|
||||
@@ -119,11 +119,11 @@ geant4_add_dataset(
|
||||
# - Channeling
|
||||
geant4_add_dataset(
|
||||
NAME G4CHANNELING
|
||||
VERSION 1.0
|
||||
VERSION 2.0
|
||||
FILENAME G4CHANNELING
|
||||
EXTENSION tar.gz
|
||||
ENVVAR G4CHANNELINGDATA
|
||||
MD5SUM b2f692ec7109418c6354ea1ecbc62da7
|
||||
MD5SUM e853fbcba1e8640f7c3a437253955482
|
||||
)
|
||||
|
||||
# - TENDL
|
||||
|
||||
@@ -497,10 +497,11 @@ endfunction()
|
||||
#
|
||||
# .. code-block:: cmake
|
||||
#
|
||||
# geant4_add_category(<name> MODULES <module> [<module> ...])
|
||||
# geant4_add_category(<name> [INTERFACE] [MODULES <module> [<module> ...]])
|
||||
#
|
||||
# Add a Geant4 category ``<name>`` to the project, composed of the modules
|
||||
# supplied in the ``MODULES`` list.
|
||||
# Add a Geant4 category ``<name>`` to the project. It can be composed from modules
|
||||
# supplied in the ``MODULES`` list, or the ``INTERFACE`` option can be used
|
||||
# to create an alias to one or more other categories.
|
||||
#
|
||||
# Calling this function does not create an actual CMake library target.
|
||||
# Because modules declare dependencies on modules rather than libraries, we
|
||||
@@ -512,12 +513,23 @@ function(geant4_add_category _name)
|
||||
__geant4_category_assert_not_exists(${_name})
|
||||
set_property(GLOBAL APPEND PROPERTY GEANT4_DEFINED_CATEGORIES ${_name})
|
||||
cmake_parse_arguments(G4ADDCAT
|
||||
""
|
||||
"INTERFACE"
|
||||
""
|
||||
"MODULES"
|
||||
${ARGN}
|
||||
)
|
||||
# - Modules must not be empty (Could also just be ARGN)
|
||||
# INTERFACE/MODULES are mutually exclusive
|
||||
if(G4ADDCAT_INTERFACE AND G4ADDCAT_MODULES)
|
||||
message(FATAL_ERROR "geant4_add_category: INTERFACE and MODULES arguments are mutually exclusive")
|
||||
endif()
|
||||
|
||||
if(G4ADDCAT_INTERFACE)
|
||||
geant4_set_category_property(${_name} PROPERTY IS_ALIAS TRUE)
|
||||
geant4_set_category_property(${_name} PROPERTY CATEGORIES)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# - Modules must not be empty (Could also just be ARGN)
|
||||
if(NOT G4ADDCAT_MODULES)
|
||||
message(FATAL_ERROR "geant4_add_category: Missing/empty 'MODULES' argument")
|
||||
endif()
|
||||
@@ -532,6 +544,23 @@ function(geant4_add_category _name)
|
||||
geant4_set_category_property(${_name} PROPERTY CMAKE_LIST_FILE "${CMAKE_CURRENT_LIST_FILE}")
|
||||
endfunction()
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
#.rst:
|
||||
# .. cmake:command:: geant4_category_is_alias
|
||||
#
|
||||
# .. code-block:: cmake
|
||||
#
|
||||
# geant4_category_is_alias(<category> <outputvar>)
|
||||
#
|
||||
# Set ``outputvar`` to ``TRUE`` if ``<category>`` is an alias to one or
|
||||
# more others.
|
||||
#
|
||||
function(geant4_category_is_alias _outvar _name)
|
||||
__geant4_category_assert_exists(${_name})
|
||||
geant4_get_category_property(_result ${_name} IS_ALIAS)
|
||||
set(${_outvar} ${_result} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
#.rst:
|
||||
# .. cmake:command:: geant4_category_modules
|
||||
@@ -544,6 +573,11 @@ endfunction()
|
||||
#
|
||||
function(geant4_category_modules _name)
|
||||
__geant4_category_assert_exists(${_name})
|
||||
geant4_category_is_alias(check ${_name})
|
||||
if(check)
|
||||
message(FATAL_ERROR "geant4_category_modules: Trying to add modules to ALIAS-type category '${_name}'")
|
||||
endif()
|
||||
|
||||
# ARGN must not be empty
|
||||
if(NOT ARGN)
|
||||
message(FATAL_ERROR "no modules given to add to to category '${_name}'")
|
||||
@@ -575,6 +609,34 @@ function(geant4_category_modules _name)
|
||||
geant4_set_category_property(${_name} PROPERTY IS_INTERFACE ${__cat_is_interface})
|
||||
endfunction()
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
#.rst:
|
||||
# .. cmake:command:: geant4_category_interfaces
|
||||
#
|
||||
# .. code-block:: cmake
|
||||
#
|
||||
# geant4_category_interfaces(<category> <cat> [<mat> ...]))
|
||||
#
|
||||
# Add categories to alias category ``<category>``
|
||||
#
|
||||
function(geant4_category_interfaces _name)
|
||||
__geant4_category_assert_exists(${_name})
|
||||
geant4_category_is_alias(check ${_name})
|
||||
if(NOT check)
|
||||
message(FATAL_ERROR "geant4_category_modules: Trying to add categories to non-ALIAS category '${_name}'")
|
||||
endif()
|
||||
|
||||
# ARGN must not be empty
|
||||
if(NOT ARGN)
|
||||
message(FATAL_ERROR "no categories given to add to to category '${_name}'")
|
||||
endif()
|
||||
|
||||
foreach(iface ${ARGN})
|
||||
__geant4_category_assert_exists(${iface})
|
||||
geant4_set_category_property(${_name} APPEND PROPERTY CATEGORIES ${iface})
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
#.rst:
|
||||
# .. cmake:command:: geant4_get_categories
|
||||
@@ -627,6 +689,8 @@ endfunction()
|
||||
# * ``IS_INTERFACE``
|
||||
# * ``MODULES``
|
||||
# * ``PUBLIC_HEADERS``
|
||||
# * ``IS_ALIAS``
|
||||
# * ``CATEGORIES``
|
||||
#
|
||||
# The properties of a category may be queried and set using the following
|
||||
# commands.
|
||||
@@ -1190,7 +1254,7 @@ endmacro()
|
||||
# This is used internally by the property get/set functions.
|
||||
#
|
||||
function(__geant4_category_validate_property _property)
|
||||
if(NOT (${_property} MATCHES "CMAKE_LIST_FILE|IS_INTERFACE|MODULES|PUBLIC_HEADERS"))
|
||||
if(NOT (${_property} MATCHES "CMAKE_LIST_FILE|IS_INTERFACE|MODULES|PUBLIC_HEADERS|DEFINE_SYMBOL|IS_ALIAS|CATEGORIES"))
|
||||
message(FATAL_ERROR "Undefined property '${_property}'")
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -1216,7 +1280,7 @@ function(__geant4_category_reset)
|
||||
# Reset category properties, then categories
|
||||
geant4_get_categories(__all_categories)
|
||||
foreach(__cat ${__all_categories})
|
||||
foreach(_prop CMAKE_LIST_FILE IS_INTERFACE MODULES PUBLIC_HEADERS)
|
||||
foreach(_prop CMAKE_LIST_FILE IS_INTERFACE MODULES PUBLIC_HEADERS DEFINE_SYMBOL IS_ALIAS CATEGORIES)
|
||||
geant4_set_category_property(${__cat} PROPERTY ${_prop})
|
||||
endforeach()
|
||||
endforeach()
|
||||
@@ -1277,10 +1341,11 @@ function(__geant4_add_library _name _type)
|
||||
message(FATAL_ERROR "Invalid library type '${_type}'")
|
||||
endif()
|
||||
|
||||
# Check if the overall library is binary or header-only
|
||||
# Check if the overall library is binary, header-only, or an alias (really an interface in CMake terms)
|
||||
set(_lib_cmake_type ${_type})
|
||||
geant4_get_category_property(_lib_is_interface ${_name} IS_INTERFACE)
|
||||
if(_lib_is_interface)
|
||||
geant4_get_category_property(_lib_is_alias ${_name} IS_ALIAS)
|
||||
if(_lib_is_interface OR _lib_is_alias)
|
||||
set(_lib_cmake_type "INTERFACE")
|
||||
endif()
|
||||
|
||||
@@ -1297,6 +1362,16 @@ function(__geant4_add_library _name _type)
|
||||
if(_lib_cmake_type STREQUAL "INTERFACE")
|
||||
target_compile_features(${_target_name} INTERFACE ${GEANT4_TARGET_COMPILE_FEATURES})
|
||||
set(_props_to_process "INTERFACE")
|
||||
|
||||
# Shortcut: If this category is also an "alias", we just extract the link interface directly
|
||||
if(_is_lib_is_alias)
|
||||
geant4_get_category_property(iface ${_name} CATEGORIES)
|
||||
if(_type STREQUAL "STATIC")
|
||||
list(TRANSFORM iface APPEND "-static")
|
||||
endif()
|
||||
target_link_libraries(${_target_name} INTERFACE ${iface})
|
||||
return()
|
||||
endif()
|
||||
else()
|
||||
target_compile_features(${_target_name} PUBLIC ${GEANT4_TARGET_COMPILE_FEATURES})
|
||||
set(_props_to_process "PUBLIC" "PRIVATE" "INTERFACE")
|
||||
@@ -1310,6 +1385,12 @@ function(__geant4_add_library _name _type)
|
||||
target_compile_definitions(${_target_name} PUBLIC G4LIB_BUILD_DLL)
|
||||
set_target_properties(${_target_name} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
|
||||
# Check if we have a DEFINE_SYMBOL for this category
|
||||
geant4_get_category_property(_lib_define_symbol ${_name} DEFINE_SYMBOL)
|
||||
if(_lib_define_symbol)
|
||||
set_target_properties(${_target_name} PROPERTIES DEFINE_SYMBOL ${_lib_define_symbol})
|
||||
endif()
|
||||
|
||||
# MacOS
|
||||
# Use '@rpath' in install names of libraries on macOS to provide relocatibility
|
||||
# Add '@loader_path' to INSTALL_RPATH on macOS so that Geant4
|
||||
|
||||
@@ -194,40 +194,6 @@ if(GEANT4_USE_QT)
|
||||
get_target_property(QT_QMAKE_EXECUTABLE Qt${QT_VERSION_MAJOR}::qmake IMPORTED_LOCATION)
|
||||
geant4_add_feature(GEANT4_USE_QT "Build Geant4 with Qt${QT_VERSION_MAJOR} support")
|
||||
|
||||
# Qt3D is only supported on 5.15 and above, but always on if available
|
||||
set(QT3D_MINIMUM_VERSION 5.15.0)
|
||||
set(GEANT4_USE_QT3D OFF)
|
||||
|
||||
if(QT_VERSION VERSION_GREATER_EQUAL QT3D_MINIMUM_VERSION)
|
||||
find_package(Qt${QT_VERSION_MAJOR}3DCore ${QT_VERSION} EXACT QUIET)
|
||||
find_package(Qt${QT_VERSION_MAJOR}3DExtras ${QT_VERSION} EXACT QUIET)
|
||||
find_package(Qt${QT_VERSION_MAJOR}3DRender ${QT_VERSION} EXACT QUIET)
|
||||
|
||||
# Forward correct minimum version to CMake/etc files
|
||||
set(QT3D_MINIMUM_VERSION ${QT_VERSION})
|
||||
|
||||
if(Qt${QT_VERSION_MAJOR}3DCore_FOUND AND Qt${QT_VERSION_MAJOR}3DExtras_FOUND AND Qt${QT_VERSION_MAJOR}3DRender_FOUND)
|
||||
set(GEANT4_USE_QT3D ON)
|
||||
geant4_save_package_variables(Qt${QT_VERSION_MAJOR}
|
||||
Qt${QT_VERSION_MAJOR}3DCore_DIR
|
||||
Qt${QT_VERSION_MAJOR}3DExtras_DIR
|
||||
Qt${QT_VERSION_MAJOR}3DRender_DIR)
|
||||
geant4_add_feature(GEANT4_USE_QT3D "Build Geant4 Qt3D driver")
|
||||
else()
|
||||
set(_g4_qt3d_missing)
|
||||
if(NOT Qt${QT_VERSION_MAJOR}3DCore_FOUND)
|
||||
list(APPEND _g4_qt3d_missing "Qt${QT_VERSION_MAJOR}3DCore")
|
||||
endif()
|
||||
if(NOT Qt${QT_VERSION_MAJOR}3DExtras_FOUND)
|
||||
list(APPEND _g4_qt3d_missing "Qt${QT_VERSION_MAJOR}3DExtras")
|
||||
endif()
|
||||
if(NOT Qt${QT_VERSION_MAJOR}3DRender_FOUND)
|
||||
list(APPEND _g4_qt3d_missing "Qt${QT_VERSION_MAJOR}3DRender")
|
||||
endif()
|
||||
|
||||
message(STATUS "Disabling Geant4 Qt3D driver, missing Qt packages: ${_g4_qt3d_missing}")
|
||||
endif()
|
||||
endif()
|
||||
# Variables for export to GNUmake
|
||||
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_PREFIX OUTPUT_VARIABLE G4QTHOME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_LIBS OUTPUT_VARIABLE G4QTLIBPATH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
@@ -354,7 +354,6 @@ endif()
|
||||
|
||||
# - Qt (UI and Vis!)
|
||||
set(Geant4_qt_FOUND @GEANT4_USE_QT@)
|
||||
set(Geant4_qt3d_FOUND @GEANT4_USE_QT3D@)
|
||||
if(Geant4_qt_FOUND)
|
||||
# Must always refind Qt to recreate imported targets. Because these
|
||||
# are in the public interface, always need linking.
|
||||
@@ -366,12 +365,6 @@ if(Geant4_qt_FOUND)
|
||||
find_dependency(Qt@QT_VERSION_MAJOR@OpenGLWidgets REQUIRED)
|
||||
endif()
|
||||
|
||||
if(Geant4_qt3d_FOUND)
|
||||
find_dependency(Qt@QT_VERSION_MAJOR@3DCore @QT3D_MINIMUM_VERSION@ REQUIRED)
|
||||
find_dependency(Qt@QT_VERSION_MAJOR@3DExtras @QT3D_MINIMUM_VERSION@ REQUIRED)
|
||||
find_dependency(Qt@QT_VERSION_MAJOR@3DRender @QT3D_MINIMUM_VERSION@ REQUIRED)
|
||||
endif()
|
||||
|
||||
# Also require OpenGL
|
||||
find_dependency(OpenGL)
|
||||
|
||||
@@ -380,8 +373,6 @@ if(Geant4_qt_FOUND)
|
||||
OR ("vis_openinventor" IN_LIST Geant4_FIND_COMPONENTS)
|
||||
OR Geant4_ui_all_FOUND OR Geant4_vis_all_FOUND)
|
||||
set(_geant4_use_opengl_library ON)
|
||||
# Qt3D is always on if available
|
||||
set(_geant4_use_qt3D_library ${Geant4_qt3d_FOUND})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -514,7 +505,6 @@ set(_geant4_internal_libraries
|
||||
Geant4::G4Tree${_geant4_lib_use_suffix}
|
||||
Geant4::G4FR${_geant4_lib_use_suffix}
|
||||
Geant4::G4GMocren${_geant4_lib_use_suffix}
|
||||
Geant4::G4visHepRep${_geant4_lib_use_suffix}
|
||||
Geant4::G4RayTracer${_geant4_lib_use_suffix}
|
||||
Geant4::G4VRML${_geant4_lib_use_suffix}
|
||||
Geant4::G4ToolsSG${_geant4_lib_use_suffix})
|
||||
@@ -524,11 +514,6 @@ if(_geant4_use_opengl_library)
|
||||
list(APPEND _geant4_internal_libraries Geant4::G4OpenGL${_geant4_lib_use_suffix})
|
||||
endif()
|
||||
|
||||
# - Qt3D if it's requested.
|
||||
if(_geant4_use_qt3D_library)
|
||||
list(APPEND _geant4_internal_libraries Geant4::G4visQt3D${_geant4_lib_use_suffix})
|
||||
endif()
|
||||
|
||||
# - G4OpenInventor if it's requested.
|
||||
if(_geant4_use_inventor_library)
|
||||
list(APPEND _geant4_internal_libraries Geant4::G4OpenInventor${_geant4_lib_use_suffix})
|
||||
|
||||
@@ -66,7 +66,6 @@ vis_cflags="-DG4UI_USE_TCSH"
|
||||
vis_libs="-lG4Tree \
|
||||
-lG4FR \
|
||||
-lG4GMocren \
|
||||
-lG4visHepRep \
|
||||
-lG4RayTracer \
|
||||
-lG4VRML \
|
||||
-lG4ToolsSG \
|
||||
@@ -126,7 +125,8 @@ libs="-lG4interfaces \
|
||||
-lG4event \
|
||||
-lG4tracking \
|
||||
-lG4parmodels \
|
||||
-lG4processes \
|
||||
-lG4processes_hadronic \
|
||||
-lG4processes_core
|
||||
-lG4digits_hits \
|
||||
-lG4track \
|
||||
-lG4particles \
|
||||
@@ -221,15 +221,6 @@ if test "x${have_qt}" = "xyes" ; then
|
||||
geant4_uses_opengl="yes"
|
||||
fi
|
||||
|
||||
# - QT3D
|
||||
have_qt3d="@G4_BUILTWITH_QT3D@"
|
||||
feature_list="${feature_list} qt3d[${have_qt3d}]"
|
||||
|
||||
if test "x${have_qt3d}" = "xyes" ; then
|
||||
vis_libs="-lG4visQt3D ${vis_libs}"
|
||||
vis_cflags="${vis_cflags} -DG4UI_USE_QT3D"
|
||||
fi
|
||||
|
||||
# - Motif
|
||||
have_motif="@G4_BUILTWITH_MOTIF@"
|
||||
feature_list="${feature_list} motif[${have_motif}]"
|
||||
@@ -677,9 +668,6 @@ while test $# -gt 0 ; do
|
||||
qt)
|
||||
echo ${have_qt}
|
||||
;;
|
||||
qt3d)
|
||||
echo ${have_qt3d}
|
||||
;;
|
||||
vtk)
|
||||
echo ${have_vtk}
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user