152 lines
4.8 KiB
CMake
152 lines
4.8 KiB
CMake
# - Setup core required and optional components of Geant4
|
|
#
|
|
# Here we provide options to enable and configure required and optional
|
|
# components, which may require third party libraries.
|
|
#
|
|
# We don't configure User Interface options here because these require
|
|
# a higher degree of configuration so to keep things neat these have their
|
|
# own Module.
|
|
#
|
|
# Options configured here:
|
|
# CLHEP - Control use of internal G4clhep, or locate external CLHEP
|
|
# EXPAT - Control use of internal G4expat, or locate external EXPAT.
|
|
# ZLIB - Control use of internal G4zlib, or locate external ZLIB
|
|
# (NOTIMPLEMENTEDYET - always uses internal zlib)
|
|
# GDML - Requires external XercesC
|
|
# G3TOG4 - UNIX only, requires fortran compiler
|
|
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Find required CLHEP package
|
|
# We prefer to use our internal CLHEP library, but provide an option
|
|
# to allow an external CLHEP to be used should the user require this.
|
|
# We also allow that it can be automatically enabled by providing
|
|
# the CLHEP_ROOT_DIR option (which FindCLHEP will recognize)
|
|
#
|
|
# KNOWNISSUE : For internal CLHEP, how to deal with static and shared?
|
|
if(CLHEP_ROOT_DIR)
|
|
set(_default_use_system_clhep ON)
|
|
else()
|
|
set(_default_use_system_clhep OFF)
|
|
endif()
|
|
|
|
option(GEANT4_USE_SYSTEM_CLHEP
|
|
"Use external CLHEP library"
|
|
${_default_use_system_clhep}
|
|
)
|
|
|
|
if(GEANT4_USE_SYSTEM_CLHEP)
|
|
# We keep this as required, because if the user chooses to use a
|
|
# system option we assume that we absolutely, positively require this.
|
|
find_package(CLHEP 2.1.0.1 REQUIRED)
|
|
set(GEANT4_USE_SYSTEM_CLHEP TRUE)
|
|
else()
|
|
set(CLHEP_FOUND TRUE)
|
|
set(CLHEP_INCLUDE_DIRS
|
|
"${PROJECT_SOURCE_DIR}/source/externals/clhep/include")
|
|
if(BUILD_SHARED_LIBS)
|
|
set(CLHEP_LIBRARIES G4clhep)
|
|
else()
|
|
set(CLHEP_LIBRARIES G4clhep-static)
|
|
endif()
|
|
endif()
|
|
|
|
GEANT4_ADD_FEATURE(GEANT4_USE_SYSTEM_CLHEP "Using external install of CLHEP")
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Find required EXPAT package
|
|
# We always use the internal G4expat on WIN32, on all other systems we prefer
|
|
# system install of expat, unless we can't find it. In that case, we fall
|
|
# back to the internal G4expat
|
|
# If we use the internal G4expat, fix the EXPAT_XXX variables to point to the
|
|
# internal location of expat headers and library target so Geant4 clients of
|
|
# expat have a consistent interface.
|
|
#
|
|
# KNOWNISSUE : For internal expat, how to deal with static and shared?
|
|
if(WIN32)
|
|
set(EXPAT_FOUND TRUE)
|
|
set(EXPAT_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/source/externals/expat/include)
|
|
set(EXPAT_LIBRARIES G4expat)
|
|
else()
|
|
find_package(EXPAT)
|
|
if(EXPAT_FOUND)
|
|
set(GEANT4_USE_SYSTEM_EXPAT TRUE)
|
|
else()
|
|
set(EXPAT_FOUND TRUE)
|
|
set(EXPAT_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/source/externals/expat/include)
|
|
if(BUILD_SHARED_LIBS)
|
|
set(EXPAT_LIBRARIES G4expat)
|
|
else()
|
|
set(EXPAT_LIBRARIES G4expat-static)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
GEANT4_ADD_FEATURE(GEANT4_USE_SYSTEM_EXPAT "Using system install of EXPAT")
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Find required ZLIB package
|
|
# For now, we always use the internal Geant4 zlib...
|
|
#
|
|
#option(GEANT4_USE_SYSTEM_ZLIB "Use the system's zlib library" OFF)
|
|
if(GEANT4_USE_SYSTEM_ZLIB)
|
|
# This needs more work - use ITK's way of doing it as an example.
|
|
find_package(ZLIB)
|
|
endif(GEANT4_USE_SYSTEM_ZLIB)
|
|
|
|
GEANT4_ADD_FEATURE(GEANT4_USE_SYSTEM_ZLIB "Use system zlib library")
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Optional Support for GDML - requires Xerces-C package
|
|
#
|
|
if(XERCESC_ROOT_DIR)
|
|
set(_default_use_gdml ON)
|
|
else()
|
|
set(_default_use_gdml OFF)
|
|
endif()
|
|
|
|
option(GEANT4_USE_GDML
|
|
"Build Geant4 with GDML support"
|
|
${_default_use_gdml}
|
|
)
|
|
|
|
if(GEANT4_USE_GDML)
|
|
find_package(XercesC REQUIRED)
|
|
endif(GEANT4_USE_GDML)
|
|
|
|
GEANT4_ADD_FEATURE(GEANT4_USE_GDML "Build Geant4 with GDML support")
|
|
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Optional support for G3TOG4 convertion interface.
|
|
# We do not build the rztog4 application.
|
|
# -- OLDER NOTES --
|
|
# The G3toG4 *library* should always be built, but the rztog4 application
|
|
# requires a Fortran compiler AND CERNLIB, so is optional.
|
|
# Only on *NIX because converter requires CERNLIB, and Windows support for
|
|
# this is an unknown quantity at present (can always change later).
|
|
# -- OLDER NOTES --
|
|
#
|
|
if(UNIX)
|
|
option(GEANT4_USE_G3TOG4 "Build the rztog4 application for converting Geant3 geometries to Geant4" OFF)
|
|
#if(GEANT4_USE_G3TOG4)
|
|
#enable_language(Fortran)
|
|
#find_package(CERNLIB REQUIRED)
|
|
#endif(GEANT4_USE_G3TOG4)
|
|
|
|
GEANT4_ADD_FEATURE(GEANT4_USE_G3TOG4 "Build the rztog4 application")
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|