562 lines
20 KiB
CMake
562 lines
20 KiB
CMake
# - Geant4 CMake Configuration File for External Projects
|
|
# This file is configured by Geant4 for use by an external project
|
|
# This file is configured by Geant4's CMake system and SHOULD NOT BE EDITED
|
|
#
|
|
# It defines the following variables
|
|
# Geant4_INCLUDE_DIRS - include directories for Geant4
|
|
# Geant4_DEFINITIONS - compile definitions needed to use Geant4
|
|
# Geant4_LIBRARIES - libraries to link against
|
|
# Geant4_CXX_FLAGS - Recommended CXX flags for the compiler used to
|
|
# build the Geant4 libraries.
|
|
# Geant4_CXX_FLAGS_<CONFIG> - Recommended CXX flags for build mode CONFIG.
|
|
# Geant4_USE_FILE - path to a CMake module which may be included to
|
|
# help setup CMake variables
|
|
#
|
|
# You may supply a version number through find_package which will be checked
|
|
# against the version of this build. Standard CMake logic is used so that
|
|
# the EXACT flag may be passed, and otherwise this build will report itself
|
|
# as compatible with the requested version if:
|
|
#
|
|
# VERSION_OF_THIS_BUILD >= VERSION_REQUESTED
|
|
#
|
|
# By default only the core (or kernel) of Geant4 is activated by this
|
|
# module. You can specify additional components of Geant4 through the
|
|
# COMPONENTS argument to find_package. By default, all core libraries of
|
|
# Geant4 are appended to the Geant4_LIBRARIES variable. Specifiying
|
|
# additional components will enable a check on the existence of these
|
|
# components, with the following per component variables being set:
|
|
#
|
|
# Geant4_${COMPONENT}_FOUND TRUE is the Geant4 library "component" was
|
|
# found
|
|
#
|
|
# Geant4_${COMPONENT}_LIBRARY Contains the library for the specified
|
|
# "component" IF the component is a library.
|
|
#
|
|
# In Geant4, components can be optional subcomponents of an always
|
|
# available library. In that case there will be no
|
|
# Geant4_{COMPONENT}_LIBRARY variable. These non-library components are
|
|
# generally activated by compile definitions, and in these cases the
|
|
# appropriate definition will be added to the Geant4_DEFINITIONS component.
|
|
#
|
|
# If you specify components and use the REQUIRED option to find_package,
|
|
# then the module will issue a FATAL_ERROR if this build of Geant4 does
|
|
# not have the requested component(s).
|
|
#
|
|
# The list of components available generally corresponds to the optional
|
|
# extras that Geant4 can be built with and are:
|
|
#
|
|
# multithreaded (Libraries built with multithreading support)
|
|
#
|
|
# gdml (GDML support)
|
|
# g3tog4 (Geant3 geometry call list reader library)
|
|
#
|
|
# ui_tcsh (TCsh Style Application Command Line Interface)
|
|
# ui_win32 (WIN32 Style Application Command Line Interface)
|
|
#
|
|
# motif (Motif-X11/OpenGL Graphical User Interface)
|
|
# qt (Qt4/OpenGL Graphical User Interface)
|
|
# wt (Wt/OpenGL Web based Graphical User Interface)
|
|
#
|
|
# vis_network_dawn (Client/Server network interface to DAWN visualization)
|
|
# vis_network_vrml (Client/Server network interface to VRML visualization)
|
|
# vis_opengl_x11 (OpenGL visualization with X11 interface)
|
|
# vis_opengl_win32 (OpenGL visualization with X11 interface)
|
|
# vis_raytracer_x11 (RayTracer visualization with X11 interface)
|
|
# vis_openinventor (OpenInventor visualization)
|
|
#
|
|
# In addition, two 'shorthand' components are defined to help activate all
|
|
# available User Interface and Visualization drivers:
|
|
#
|
|
# ui_all (All available UI drivers)
|
|
# vis_all (All available Vis drivers)
|
|
#
|
|
# These never result in a FATAL_ERROR, even if the REQUIRED find_package
|
|
# argument is set. This is because these options do not depend on specific
|
|
# components being available.
|
|
#
|
|
# You can also query Geant4's use, or otherwise, of its builtin versions
|
|
# of CLHEP, ZLIB and Expat after calling find_package via the variables
|
|
#
|
|
# Geant4_builtin_clhep_FOUND (TRUE if Geant4 built with internal CLHEP)
|
|
# Geant4_builtin_expat_FOUND (TRUE if Geant4 built with internal Expat)
|
|
# Geant4_builtin_zlib_FOUND (TRUE if Geant4 built with internal Zlib)
|
|
#
|
|
# These are not used via components as they do not, in general, affect
|
|
# the use of Geant4 in an application unless you yourself make direct
|
|
# calls to these APIs. As the builtin libraries only contain the code
|
|
# required directly by the Geant4 toolkit, you may wish to perform a
|
|
# configure time check in these cases that the builtin libraries contain
|
|
# the calls required. In both cases, the Geant4_INCLUDE_DIRS and
|
|
# Geant4_LIBRARIES variables will be populated to use the builtin or
|
|
# system APIs as required, and you should use these to ensure you compile
|
|
# and link against the same API version.
|
|
#
|
|
# Environment variables for and directory paths to physics datasets
|
|
# used by some Geant4 physics processes may be determined from the
|
|
# variables
|
|
#
|
|
# Geant4_DATASETS (List of dataset names known to Geant4)
|
|
# Geant4_DATASET_<NAME>_ENVVAR (Name of environment variable used by
|
|
# Geant4 to query for path to dataset
|
|
# <NAME>)
|
|
# Geant4_DATASET_<NAME>_PATH (Path to dataset <NAME>. NB this may
|
|
# point to a non-existent path if Geant4
|
|
# was configured not to install data)
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
# Variables used by this module which can change the default behaviour of
|
|
# this module. They need to be set prior to the call to find_package
|
|
#
|
|
# Geant4_CONFIG_DEBUG If set, enable extra messaging output which can
|
|
# be helpful in debugging and identifying problems
|
|
# with the configuration.
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
|
|
#-----------------------------------------------------------------------
|
|
# DEBUG : print out the variables passed via find_package arguments
|
|
#
|
|
if(Geant4_CONFIG_DEBUG)
|
|
message(STATUS "G4CFG_DEBUG : Geant4_VERSION = ${Geant4_VERSION}")
|
|
message(STATUS "G4CFG_DEBUG : Geant4_FIND_VERSION = ${Geant4_FIND_VERSION}")
|
|
message(STATUS "G4CFG_DEBUG : Geant4_FIND_REQUIRED = ${Geant4_FIND_REQUIRED}")
|
|
message(STATUS "G4CFG_DEBUG : Geant4_FIND_COMPONENTS = ${Geant4_FIND_COMPONENTS}")
|
|
|
|
foreach(_cpt ${Geant4_FIND_COMPONENTS})
|
|
message(STATUS "G4CFG_DEBUG : Geant4_FIND_REQUIRED_${_cpt} = ${Geant4_FIND_REQUIRED_${_cpt}}")
|
|
endforeach()
|
|
|
|
message(STATUS "G4CFG_DEBUG : Geant4_LIBDEPS_LOADED = ${Geant4_LIBDEPS_LOADED}")
|
|
endif()
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Locate ourselves, since all other config files should have been
|
|
# installed alongside us...
|
|
#
|
|
get_filename_component(_thisdir "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Provide *recommended* compiler flags used by this build of Geant4
|
|
# Don't mess with the actual CMAKE_CXX_FLAGS!!!
|
|
# It's up to the user what to do with these
|
|
@GEANT4_COMPILER_FLAG_HINTS@
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Set the base compile definitions required to use Geant4 if the variable
|
|
# does not exist (we do this to ensure multiple calls to find_package
|
|
# don't overwrite previous invocations)
|
|
# Components may append to this
|
|
# We set VIS/UI_USE directly here, because for now they are, unfortunately,
|
|
# always needed for the Examples.
|
|
# However, they ARE NOT required to use Geant4 itself.
|
|
#
|
|
if(NOT Geant4_DEFINITIONS)
|
|
set(Geant4_DEFINITIONS @GEANT4_CORE_DEFINITIONS@)
|
|
endif()
|
|
|
|
# We set VIS/UI_USE directly here, because for now they are, unfortunately,
|
|
# always needed for the Examples.
|
|
# However, they ARE NOT required to use Geant4 itself.
|
|
#
|
|
if(NOT G4UI_NONE)
|
|
list(APPEND Geant4_DEFINITIONS -DG4UI_USE)
|
|
endif()
|
|
|
|
if(NOT G4VIS_NONE)
|
|
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE)
|
|
endif()
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Configure the path to the Geant4 headers, using a relative path if
|
|
# possible. This is only known at CMake time, so we expand a CMake
|
|
# supplied variable.
|
|
#
|
|
@GEANT4_INCLUDE_DIR_SETUP@
|
|
|
|
@GEANT4_MODULE_PATH_SETUP@
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Configure the path(s) to third party headers.
|
|
# This is not a perfect solution to recording dependencies on external
|
|
# libraries, but it does ensure that users of THIS Geant4 will pick up
|
|
# those it was built against.
|
|
# Library dependencies are generally handled through the
|
|
# Geant4LibraryDepends file listed below (apart from one exception!)
|
|
#
|
|
set(Geant4_THIRD_PARTY_INCLUDE_DIRS @GEANT4_THIRD_PARTY_INCLUDES@)
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Construct overall include path for using Geant4
|
|
#
|
|
set(Geant4_INCLUDE_DIRS
|
|
${Geant4_INCLUDE_DIR}
|
|
${Geant4_THIRD_PARTY_INCLUDE_DIRS})
|
|
|
|
#-----------------------------------------------------------------------
|
|
# If we have used imported targets for any third party packages, reimport
|
|
# them here, BEFORE we try and import the Geant4 targets which are
|
|
# linked against them.
|
|
# Generally, we try and use a standard find_package, but try and force it
|
|
# to find the actual package we were built against.
|
|
# THIS IS NOT PERFECT, AS IT CANNOT GUARANTEE A BINARY COMPATIBLE
|
|
# PACKAGE IS FOUND.
|
|
@GEANT4_THIRD_PARTY_IMPORT_SETUP@
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Include the file listing all the imported targets.
|
|
# (Not needed if used in the same Geant4 project, or if we have run before)
|
|
# This is always installed in the same location as us...
|
|
#
|
|
if(NOT CMAKE_PROJECT_NAME STREQUAL Geant4)
|
|
if(NOT Geant4_LIBDEPS_LOADED)
|
|
include("${_thisdir}/Geant4LibraryDepends.cmake")
|
|
set(Geant4_LIBDEPS_LOADED 1)
|
|
endif()
|
|
endif()
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Data Resources
|
|
# NB: Because data paths can be "forward declared" these offer no
|
|
# guarantee of data existence. They only provide a hint.
|
|
#
|
|
set(Geant4_DATASET_DESCRIPTIONS "@GEANT4_DATASET_DESCRIPTIONS@")
|
|
|
|
foreach(_g4dataset_tuple ${Geant4_DATASET_DESCRIPTIONS})
|
|
# Format is NAME|ENVVAR|PATH
|
|
string(REPLACE "|" ";" _g4dataset_tuple "${_g4dataset_tuple}")
|
|
list(GET _g4dataset_tuple 0 _g4dataset_name)
|
|
list(APPEND Geant4_DATASETS ${_g4dataset_name})
|
|
list(GET _g4dataset_tuple 1 Geant4_DATASET_${_g4dataset_name}_ENVVAR)
|
|
list(GET _g4dataset_tuple 2 Geant4_DATASET_${_g4dataset_name}_PATH)
|
|
endforeach()
|
|
unset(Geant4_DATASET_DESCRIPTIONS)
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Setup components.
|
|
# THIS SECTION IS VERY ROUGH AND VERY MUCH CUT AND PASTE.
|
|
# TODO: INVESTIGATE TIDY UP WITH LESS PROCESSING.
|
|
#-----------------------------------------------------------------------
|
|
# Many components are simply present as parts of libraries or always built
|
|
# but require additional compile definitions.
|
|
#
|
|
# Builtin/External packages
|
|
set(Geant4_builtin_clhep_FOUND @GEANT4_USE_BUILTIN_CLHEP@)
|
|
set(Geant4_builtin_expat_FOUND @GEANT4_USE_BUILTIN_EXPAT@)
|
|
set(Geant4_builtin_zlib_FOUND @GEANT4_USE_BUILTIN_ZLIB@)
|
|
|
|
# - Multithreading
|
|
set(Geant4_multithreaded_FOUND @GEANT4_BUILD_MULTITHREADED@)
|
|
if(Geant4_multithreaded_FOUND)
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS multithreaded)
|
|
list(APPEND Geant4_DEFINITIONS -DG4MULTITHREADED)
|
|
endif()
|
|
|
|
# - GDML
|
|
set(Geant4_gdml_FOUND @GEANT4_USE_GDML@)
|
|
if(Geant4_gdml_FOUND)
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS gdml)
|
|
endif()
|
|
|
|
# - G3toG4
|
|
set(Geant4_g3tog4_FOUND @GEANT4_USE_G3TOG4@)
|
|
if(Geant4_g3tog4_FOUND)
|
|
if(Geant4_FIND_REQUIRED_g3tog4)
|
|
set(_geant4_use_g3tog4_library ON)
|
|
endif()
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS g3tog4)
|
|
endif()
|
|
|
|
# - UI : TCSH
|
|
set(Geant4_ui_tcsh_FOUND @UNIX@)
|
|
if(Geant4_ui_tcsh_FOUND)
|
|
if(Geant4_FIND_REQUIRED_ui_tcsh OR Geant4_FIND_REQUIRED_ui_all)
|
|
list(APPEND Geant4_DEFINITIONS -DG4UI_USE_TCSH)
|
|
endif()
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS ui_tcsh)
|
|
endif()
|
|
|
|
# - UI : win32
|
|
set(Geant4_ui_win32_FOUND @WIN32@)
|
|
if(Geant4_ui_win32_FOUND)
|
|
if(Geant4_FIND_REQUIRED_ui_win32 OR Geant4_FIND_REQUIRED_ui_all)
|
|
list(APPEND
|
|
Geant4_DEFINITIONS
|
|
-DG4INTY_USE_WIN32
|
|
-DG4UI_USE_WIN32
|
|
)
|
|
endif()
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS ui_win32)
|
|
endif()
|
|
|
|
# - Visualization : Network DAWN
|
|
set(Geant4_vis_dawn_network_FOUND @GEANT4_USE_NETWORK_DAWN@)
|
|
if(Geant4_vis_dawn_network_FOUND)
|
|
if(Geant4_FIND_REQUIRED_vis_dawn_network OR Geant4_FIND_REQUIRED_vis_all)
|
|
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_DAWN)
|
|
endif()
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_dawn_network)
|
|
endif()
|
|
|
|
# - Visualization : Network VRML
|
|
set(Geant4_vis_vrml_network_FOUND @GEANT4_USE_NETWORK_VRML@)
|
|
if(Geant4_vis_vrml_network_FOUND)
|
|
if(Geant4_FIND_REQUIRED_vis_vrml_network OR Geant4_FIND_REQUIRED_vis_all)
|
|
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_VRML)
|
|
endif()
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_vrml_network)
|
|
endif()
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Components which requires slightly more complex setup
|
|
#
|
|
# - Visualization : RayTracerX
|
|
set(Geant4_vis_raytracer_x11_FOUND @GEANT4_USE_RAYTRACER_X11@)
|
|
if(Geant4_vis_raytracer_x11_FOUND)
|
|
if(Geant4_FIND_REQUIRED_vis_raytracer_x11 OR Geant4_FIND_REQUIRED_vis_all)
|
|
list(APPEND
|
|
Geant4_DEFINITIONS
|
|
-DG4INTY_USE_XT
|
|
-DG4VIS_USE_RAYTRACERX
|
|
)
|
|
endif()
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_raytracer_x11)
|
|
endif()
|
|
|
|
# - Qt (UI and Vis!)
|
|
set(Geant4_qt_FOUND @GEANT4_USE_QT@)
|
|
set(Geant4_USES_QT5 @Qt5Core_FOUND@)
|
|
if(Geant4_qt_FOUND)
|
|
if(Geant4_FIND_REQUIRED_qt OR Geant4_FIND_REQUIRED_ui_all OR
|
|
Geant4_FIND_REQUIRED_vis_all)
|
|
# If we have Qt5, we need to refind the components because they use
|
|
# imported targets, so linking will not work unless we recreate
|
|
# them
|
|
if(Geant4_USES_QT5)
|
|
find_package(Qt5Core REQUIRED PATHS "@Qt5Core_DIR@")
|
|
find_package(Qt5Gui REQUIRED PATHS "@Qt5Gui_DIR@")
|
|
find_package(Qt5Widgets REQUIRED PATHS "@Qt5Widgets_DIR@")
|
|
find_package(Qt5OpenGL REQUIRED PATHS "@Qt5OpenGL_DIR@")
|
|
find_package(Qt5PrintSupport REQUIRED PATHS "@Qt5PrintSupport_DIR@")
|
|
endif()
|
|
|
|
list(APPEND
|
|
Geant4_DEFINITIONS
|
|
-DG4INTY_USE_QT
|
|
-DG4UI_USE_QT
|
|
-DG4VIS_USE_OPENGLQT
|
|
)
|
|
set(_geant4_use_opengl_library ON)
|
|
endif()
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS qt)
|
|
endif()
|
|
|
|
# - Wt (UI and Vis!)
|
|
set(Geant4_wt_FOUND @GEANT4_USE_WT@)
|
|
if(Geant4_wt_FOUND)
|
|
if(Geant4_FIND_REQUIRED_wt OR Geant4_FIND_REQUIRED_ui_all OR
|
|
Geant4_FIND_REQUIRED_vis_all)
|
|
list(APPEND
|
|
Geant4_DEFINITIONS
|
|
-DG4INTY_USE_WT
|
|
-DG4UI_USE_WT
|
|
-DG4VIS_USE_OPENGLWT
|
|
)
|
|
set(_geant4_use_opengl_library ON)
|
|
endif()
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS wt)
|
|
endif()
|
|
|
|
# - Motif (UI and Vis!)
|
|
set(Geant4_motif_FOUND @GEANT4_USE_XM@)
|
|
if(Geant4_motif_FOUND)
|
|
if(Geant4_FIND_REQUIRED_motif OR Geant4_FIND_REQUIRED_ui_all OR
|
|
Geant4_FIND_REQUIRED_vis_all)
|
|
list(APPEND
|
|
Geant4_DEFINITIONS
|
|
-DG4INTY_USE_XT
|
|
-DG4UI_USE_XM
|
|
-DG4VIS_USE_OPENGLXM
|
|
)
|
|
set(_geant4_use_opengl_library ON)
|
|
endif()
|
|
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS motif)
|
|
endif()
|
|
|
|
# - OpenGL X11
|
|
set(Geant4_vis_opengl_x11_FOUND @GEANT4_USE_OPENGL_X11@)
|
|
if(Geant4_vis_opengl_x11_FOUND)
|
|
if(Geant4_FIND_REQUIRED_vis_opengl_x11 OR Geant4_FIND_REQUIRED_vis_all)
|
|
list(APPEND
|
|
Geant4_DEFINITIONS
|
|
-DG4INTY_USE_XT
|
|
-DG4VIS_USE_OPENGLX
|
|
)
|
|
set(_geant4_use_opengl_library ON)
|
|
endif()
|
|
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_opengl_x11)
|
|
endif()
|
|
|
|
# - OpenGL Win32
|
|
set(Geant4_vis_opengl_win32_FOUND @GEANT4_USE_OPENGL_WIN32@)
|
|
if(Geant4_vis_opengl_win32_FOUND)
|
|
if(Geant4_FIND_REQUIRED_vis_opengl_win32 OR Geant4_FIND_REQUIRED_vis_all)
|
|
list(APPEND
|
|
Geant4_DEFINITIONS
|
|
-DG4INTY_USE_WIN32
|
|
-DG4VIS_USE_OPENGLWIN32
|
|
)
|
|
set(_geant4_use_opengl_library ON)
|
|
endif()
|
|
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_opengl_win32)
|
|
endif()
|
|
|
|
# - OpenInventor
|
|
set(Geant4_vis_openinventor_FOUND @GEANT4_USE_INVENTOR@)
|
|
if(Geant4_vis_openinventor_FOUND)
|
|
if(Geant4_FIND_REQUIRED_vis_openinventor OR Geant4_FIND_REQUIRED_vis_all)
|
|
if(UNIX AND NOT WIN32)
|
|
list(APPEND Geant4_DEFINITIONS
|
|
-DG4INTY_USE_XT
|
|
-DG4VIS_USE_OI
|
|
-DG4VIS_USE_OIX
|
|
)
|
|
elseif(WIN32)
|
|
list(APPEND Geant4_DEFINITIONS
|
|
-G4INTY_USE_WIN32
|
|
-DG4VIS_USE_OI
|
|
-DG4VIS_USE_OIWIN32
|
|
)
|
|
endif()
|
|
|
|
set(_geant4_use_inventor_library ON)
|
|
endif()
|
|
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_openinventor)
|
|
endif()
|
|
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Now perform final configuration of libraries...
|
|
# We provide FOUND variables for shared and static but for now we don't
|
|
# allow users to choose - we prefer shared if available, and fallback to
|
|
# static otherwise
|
|
#
|
|
set(Geant4_shared_FOUND @BUILD_SHARED_LIBS@)
|
|
set(Geant4_static_FOUND @BUILD_STATIC_LIBS@)
|
|
|
|
if(Geant4_shared_FOUND)
|
|
set(_geant4_lib_use_suffix "")
|
|
else()
|
|
set(_geant4_lib_use_suffix "-static")
|
|
endif()
|
|
|
|
# The list of libraries probably should be autogenerated, but we hard code
|
|
# for now. We don't have to divide the list of shared libraries, but we
|
|
# do so for consistency with the way we'll need to do it for static.
|
|
# - Always on Vis Components
|
|
set(_geant4_internal_libraries
|
|
G4Tree${_geant4_lib_use_suffix}
|
|
G4FR${_geant4_lib_use_suffix}
|
|
G4GMocren${_geant4_lib_use_suffix}
|
|
G4visHepRep${_geant4_lib_use_suffix}
|
|
G4RayTracer${_geant4_lib_use_suffix}
|
|
G4VRML${_geant4_lib_use_suffix}
|
|
)
|
|
|
|
# - G4OpenGL if it's requested.
|
|
if(_geant4_use_opengl_library)
|
|
list(APPEND _geant4_internal_libraries
|
|
G4OpenGL${_geant4_lib_use_suffix}
|
|
G4gl2ps${_geant4_lib_use_suffix}
|
|
)
|
|
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_OPENGL)
|
|
endif()
|
|
|
|
# - G4OpenInventor if it's requested.
|
|
if(_geant4_use_inventor_library)
|
|
list(APPEND _geant4_internal_libraries
|
|
G4OpenInventor${_geant4_lib_use_suffix}
|
|
)
|
|
endif()
|
|
|
|
# - G3toG4 if it's requested
|
|
if(_geant4_use_g3tog4_library)
|
|
set(_geant4_g3tog4_library G3toG4${_geant4_lib_use_suffix})
|
|
endif()
|
|
|
|
# - 'Kernel' libraries
|
|
list(APPEND _geant4_internal_libraries
|
|
G4vis_management${_geant4_lib_use_suffix}
|
|
G4modeling${_geant4_lib_use_suffix}
|
|
G4interfaces${_geant4_lib_use_suffix}
|
|
G4persistency${_geant4_lib_use_suffix}
|
|
${_geant4_g3tog4_library}
|
|
G4analysis${_geant4_lib_use_suffix}
|
|
G4error_propagation${_geant4_lib_use_suffix}
|
|
G4readout${_geant4_lib_use_suffix}
|
|
G4physicslists${_geant4_lib_use_suffix}
|
|
G4run${_geant4_lib_use_suffix}
|
|
G4event${_geant4_lib_use_suffix}
|
|
G4tracking${_geant4_lib_use_suffix}
|
|
G4parmodels${_geant4_lib_use_suffix}
|
|
G4processes${_geant4_lib_use_suffix}
|
|
G4digits_hits${_geant4_lib_use_suffix}
|
|
G4track${_geant4_lib_use_suffix}
|
|
G4particles${_geant4_lib_use_suffix}
|
|
G4geometry${_geant4_lib_use_suffix}
|
|
G4materials${_geant4_lib_use_suffix}
|
|
G4graphics_reps${_geant4_lib_use_suffix}
|
|
G4intercoms${_geant4_lib_use_suffix}
|
|
G4global${_geant4_lib_use_suffix}
|
|
)
|
|
|
|
# - Any externals built by Geant4
|
|
foreach(_extlib @GEANT4_EXTERNALS_TARGETS@)
|
|
list(APPEND
|
|
_geant4_internal_libraries
|
|
${_extlib}${_geant4_lib_use_suffix}
|
|
)
|
|
endforeach()
|
|
|
|
# - Now set them to Geant4_LIBRARIES
|
|
set(Geant4_LIBRARIES ${_geant4_internal_libraries})
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Remove any duplicates from the Geant4_{DEFINITIONS,INCLUDE_DIRS,LIBRARIES}
|
|
# variables so that multiple passes append things correctly
|
|
#
|
|
list(REMOVE_DUPLICATES Geant4_DEFINITIONS)
|
|
list(REMOVE_DUPLICATES Geant4_INCLUDE_DIRS)
|
|
list(REMOVE_DUPLICATES Geant4_LIBRARIES)
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Point the user to the UseGeant4.cmake file which they may wish to include
|
|
# to help them with setting up Geant4
|
|
#
|
|
set(Geant4_USE_FILE ${_thisdir}/UseGeant4.cmake)
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Finally, handle any remaining components.
|
|
# We should have dealt with all available components above, except for
|
|
# ui_all and vis_all, and removed them from the list of FIND_COMPONENTS
|
|
# so any left we either didn't find or don't know about. Emit a warning
|
|
# if REQUIRED isn't set, or FATAL_ERROR otherwise
|
|
#
|
|
list(REMOVE_DUPLICATES Geant4_FIND_COMPONENTS)
|
|
list(REMOVE_ITEM Geant4_FIND_COMPONENTS ui_all vis_all)
|
|
|
|
foreach(_remaining ${Geant4_FIND_COMPONENTS})
|
|
if(Geant4_FIND_REQUIRED)
|
|
message(FATAL_ERROR "Geant4 component ${_remaining} not found")
|
|
elseif(NOT Geant4_FIND_QUIETLY)
|
|
message(WARNING " Geant4 component ${_remaining} not found")
|
|
endif()
|
|
unset(Geant4_FIND_REQUIRED_${_remaining})
|
|
endforeach()
|
|
|
|
# And we should be done...
|
|
|