Import Geant4 10.7.0.beta source tree
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
# - Geant4MakeRules_cxx
|
||||
# Sets the default make rules for a CXX build, specifically the
|
||||
# initialization of the compiler flags on a platform and compiler
|
||||
# dependent basis
|
||||
#
|
||||
#
|
||||
#-----------------------------------------------------------------------
|
||||
# function __configure_tls_models()
|
||||
# Set available thread local storage models. Valid for GNU,
|
||||
# Clang and Intel compilers. Adds an additional "auto"
|
||||
# dummy model to indicate that no flag should be added.
|
||||
#
|
||||
function(__configure_tls_models)
|
||||
# available models, default first
|
||||
set(_TLSMODELS initial-exec local-exec global-dynamic local-dynamic)
|
||||
foreach(_s ${_TLSMODELS})
|
||||
set(${_s}_TLSMODEL_FLAGS "-ftls-model=${_s}" PARENT_SCOPE)
|
||||
endforeach()
|
||||
|
||||
list(APPEND _TLSMODELS auto)
|
||||
set(auto_TLSMODEL_FLAGS "" PARENT_SCOPE)
|
||||
|
||||
set(TLSMODEL_IS_AVAILABLE ${_TLSMODELS} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# DEFAULT FLAG SETTING
|
||||
#-----------------------------------------------------------------------
|
||||
# GNU C++ or Clang/AppleClang Compiler on all(?) platforms
|
||||
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
||||
# Warnings
|
||||
set(CMAKE_CXX_FLAGS_INIT "-W -Wall -pedantic -Wno-non-virtual-dtor -Wno-long-long -Wwrite-strings -Wpointer-arith -Woverloaded-virtual -Wno-variadic-macros -Wshadow")
|
||||
# Use pipes rather than temp files
|
||||
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -pipe")
|
||||
|
||||
# Additional per-mode flags
|
||||
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
|
||||
# Assist auto-vectorization
|
||||
set(CMAKE_CXX_FLAGS_RELEASE_INIT "${CMAKE_CXX_FLAGS_RELEASE_INIT} -fno-trapping-math -ftree-vectorize -fno-math-errno")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g")
|
||||
|
||||
# Remove superfluous "unused argument" and "GL deprecation" "warnings" from Clang
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
||||
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -Qunused-arguments -DGL_SILENCE_DEPRECATION")
|
||||
endif()
|
||||
|
||||
# Though it should be the default, always use libc++ with AppleClang
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -stdlib=libc++")
|
||||
endif()
|
||||
|
||||
# Extra Geant4 modes
|
||||
# - Debug_FPE: Core Debug mode plus FPE)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG_FPE_INIT "${CMAKE_CXX_FLAGS_DEBUG_INIT} -DG4FPE_DEBUG")
|
||||
|
||||
# - TestRelease
|
||||
set(CMAKE_CXX_FLAGS_TESTRELEASE_INIT "-g -DG4DEBUG_VERBOSE -DG4FPE_DEBUG")
|
||||
|
||||
# - Maintainer
|
||||
set(CMAKE_CXX_FLAGS_MAINTAINER_INIT "-g")
|
||||
|
||||
# - Multithreading
|
||||
__configure_tls_models()
|
||||
set(GEANT4_MULTITHREADED_CXX_FLAGS "-pthread")
|
||||
endif()
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# MSVC - all (?) versions
|
||||
if(MSVC)
|
||||
# Hmm, WIN32-VC.gmk uses dashes, but cmake uses slashes, latter probably
|
||||
# best for native build.
|
||||
set(CMAKE_CXX_FLAGS_INIT "-GR -EHsc -Zm200 -nologo -D_CONSOLE -D_WIN32 -DWIN32 -DOS -DXPNET -D_CRT_SECURE_NO_DEPRECATE")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-MDd -Od -Zi")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE_INIT "-MD -Ox -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-MD -Os -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-MD -O2 -Zi")
|
||||
|
||||
# Extra modes
|
||||
set(CMAKE_CXX_FLAGS_TESTRELEASE_INIT "-MDd -Zi -G4DEBUG_VERBOSE")
|
||||
set(CMAKE_CXX_FLAGS_MAINTAINER_INIT "-MDd -Zi")
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# Intel C++ Compilers - all (?) platforms
|
||||
#
|
||||
# Sufficient id on all platforms?
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
set(CMAKE_CXX_FLAGS_INIT "-w1 -Wno-non-virtual-dtor -Wpointer-arith -Wwrite-strings -fp-model precise")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g")
|
||||
|
||||
# Extra modes
|
||||
set(CMAKE_CXX_FLAGS_TESTRELEASE_INIT "-g -G4DEBUG_VERBOSE")
|
||||
set(CMAKE_CXX_FLAGS_MAINTAINER_INIT "-g")
|
||||
|
||||
# - Multithreading
|
||||
__configure_tls_models()
|
||||
set(GEANT4_MULTITHREADED_CXX_FLAGS "-pthread")
|
||||
|
||||
# Linker flags
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-limf")
|
||||
endif()
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# Ye Olde *NIX/Compiler Systems
|
||||
# NB: *NOT* Supported... Only provided as legacy.
|
||||
# None are tested...
|
||||
# Whilst these use flags taken from existing Geant4 setup, may want to see if
|
||||
# CMake defaults on these platforms are good enough...
|
||||
#
|
||||
if(UNIX AND NOT CMAKE_COMPILER_IS_GNUCXX)
|
||||
#---------------------------------------------------------------------
|
||||
# IBM xlC compiler
|
||||
#
|
||||
if(CMAKE_CXX_COMPILER MATCHES "xlC")
|
||||
set(CMAKE_CXX_FLAGS_INIT "")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g -qdbextra -qcheck=all -qfullpath -qtwolink -+")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -qtwolink -+")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-O3 -qtwolink -+")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O3 -g -qdbextra -qcheck=all -qfullpath -qtwolink -+")
|
||||
endif()
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# HP aC++ Compiler
|
||||
#
|
||||
if(CMAKE_CXX_COMPILER MATCHES "aCC")
|
||||
set(CMAKE_CXX_FLAGS_INIT "+DAportable +W823")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE_INIT "+O2 +Onolimit")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-O2 +Onolimit")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 +Onolimit -g")
|
||||
endif()
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# IRIX MIPSpro CC Compiler
|
||||
#
|
||||
if(CMAKE_CXX_COMPILER MATCHES "CC" AND CMAKE_SYSTEM_NAME MATCHES "IRIX")
|
||||
set(CMAKE_CXX_FLAGS_INIT "-ptused -DSOCKET_IRIX_SOLARIS")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O -OPT:Olimit=5000")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-O -OPT:Olimit=5000")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O -OPT:Olimit=5000 -g")
|
||||
endif()
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# SunOS CC Compiler
|
||||
# - CMake may do a reasonable job on its own here...
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user