Commit 93d841ac authored by Simon Spannagel's avatar Simon Spannagel
Browse files

Merge branch 'f/239' into 'master'

Improve Module-Geant4 Interface in CMake

See merge request allpix-squared/allpix-squared!814
parents 89911322 16a54dbb
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -365,10 +365,48 @@ ENDMACRO()

# Enable Geant4 interface library requirement
MACRO(ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE name)
    SET(options REQUIRED)
    SET(oneValueArgs "")
    SET(multiValueArgs COMPONENTS)
    CMAKE_PARSE_ARGUMENTS(GEANT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

    SET(ALLPIX_BUILD_GEANT4_INTERFACE
        "ON"
        CACHE BOOL "Build Geant4 interface library" FORCE)
    TARGET_LINK_LIBRARIES(${name} ${ALLPIX_GEANT4_INTERFACE})

    IF(GEANT_REQUIRED)
        FIND_PACKAGE(Geant4 REQUIRED COMPONENTS "${GEANT_COMPONENTS}")
    ELSE()
        FIND_PACKAGE(Geant4 COMPONENTS "${GEANT_COMPONENTS}")
    ENDIF()
    IF(NOT Geant4_FOUND)
        MESSAGE(FATAL_ERROR "Could not find Geant4, make sure to source the Geant4 environment\n"
                            "$ source YOUR_GEANT4_DIR/bin/geant4.sh")
    ENDIF()

    # Add "geant4.sh" as runtime dependency for setup.sh file:
    ADD_RUNTIME_DEP(geant4.sh)

    # Add Geant4 flags before our own flags
    ADD_DEFINITIONS(${Geant4_DEFINITIONS})
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
    IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
        SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS}")
    ELSEIF(CMAKE_BUILD_TYPE MATCHES RELEASE)
        SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS}")
    ENDIF()

    # Add GDML flag if supported
    IF(Geant4_gdml_FOUND)
        ADD_DEFINITIONS(-DGeant4_GDML)
    ENDIF()

    # Include Geant4 directories (NOTE Geant4_USE_FILE is not used!)
    TARGET_INCLUDE_DIRECTORIES(${MODULE_NAME} SYSTEM PRIVATE ${Geant4_INCLUDE_DIRS})

    # Add Geant4 libraries
    TARGET_LINK_LIBRARIES(${MODULE_NAME} ${Geant4_LIBRARIES})
ENDMACRO()

# Macro to set up ROOT:: targets so that we can use the same code for root 6.8 and for root 6.10 and beyond
+3 −24
Original line number Diff line number Diff line
@@ -55,25 +55,6 @@ INSTALL(

ADD_DEFINITIONS(-DALLPIX_CRY_DATA_DIRECTORY="${CRY_DATA_DIRECTORY}")

# Geant4 is required for geometry description and charge deposition.
FIND_PACKAGE(Geant4)
IF(NOT Geant4_FOUND)
    MESSAGE(FATAL_ERROR "Could not find Geant4, make sure to source the Geant4 environment\n"
                        "$ source YOUR_GEANT4_DIR/bin/geant4.sh")
ENDIF()

# Add "geant4.sh" as runtime dependency for setup.sh file:
ADD_RUNTIME_DEP(geant4.sh)

# Add Geant4 flags before our own flags
ADD_DEFINITIONS(${Geant4_DEFINITIONS})
SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS}")
ELSEIF(CMAKE_BUILD_TYPE MATCHES RELEASE)
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS}")
ENDIF()

# Add source files to library
ALLPIX_MODULE_SOURCES(
    ${MODULE_NAME}
@@ -97,15 +78,13 @@ ALLPIX_MODULE_SOURCES(
    cry/CRYUtils.cc
    cry/CRYWeightFunc.cc)

# Include Geant4 directories (NOTE Geant4_USE_FILE is not used!)
TARGET_INCLUDE_DIRECTORIES(${MODULE_NAME} SYSTEM PRIVATE ${Geant4_INCLUDE_DIRS})
TARGET_INCLUDE_DIRECTORIES(${MODULE_NAME} SYSTEM PRIVATE "cry")

# Add Geant4 libraries
TARGET_LINK_LIBRARIES(${MODULE_NAME} ${Geant4_LIBRARIES} AllpixModuleDepositionGeant4)
# Link to parent module library
TARGET_LINK_LIBRARIES(${MODULE_NAME} AllpixModuleDepositionGeant4)

# Allpix Geant4 interface is required for this module
ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE(${MODULE_NAME})
ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE(${MODULE_NAME} REQUIRED)

# Register module tests
ALLPIX_MODULE_TESTS(${MODULE_NAME} "tests")
+1 −26
Original line number Diff line number Diff line
@@ -4,25 +4,6 @@
# Define module
ALLPIX_UNIQUE_MODULE(MODULE_NAME)

# Geant4 is required for geometry description and charge deposition.
FIND_PACKAGE(Geant4)
IF(NOT Geant4_FOUND)
    MESSAGE(FATAL_ERROR "Could not find Geant4, make sure to source the Geant4 environment\n"
                        "$ source YOUR_GEANT4_DIR/bin/geant4.sh")
ENDIF()

# Add "geant4.sh" as runtime dependency for setup.sh file:
ADD_RUNTIME_DEP(geant4.sh)

# Add Geant4 flags before our own flags
ADD_DEFINITIONS(${Geant4_DEFINITIONS})
SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS}")
ELSEIF(CMAKE_BUILD_TYPE MATCHES RELEASE)
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS}")
ENDIF()

# Add source files to library
ALLPIX_MODULE_SOURCES(
    ${MODULE_NAME}
@@ -34,14 +15,8 @@ ALLPIX_MODULE_SOURCES(
    SetTrackInfoUserHookG4.cpp
    SDAndFieldConstruction.cpp)

# Include Geant4 directories (NOTE Geant4_USE_FILE is not used!)
TARGET_INCLUDE_DIRECTORIES(${MODULE_NAME} SYSTEM PRIVATE ${Geant4_INCLUDE_DIRS})

# Add Geant4 libraries
TARGET_LINK_LIBRARIES(${MODULE_NAME} ${Geant4_LIBRARIES})

# Allpix Geant4 interface is required for this module
ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE(${MODULE_NAME})
ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE(${MODULE_NAME} REQUIRED)

# Register module tests
ALLPIX_MODULE_TESTS(${MODULE_NAME} "tests")
+2 −20
Original line number Diff line number Diff line
@@ -4,29 +4,11 @@
# Define module
ALLPIX_UNIQUE_MODULE(MODULE_NAME)

# Geant4 is required
FIND_PACKAGE(Geant4 COMPONENTS gdml)

# Add "geant4.sh" as runtime dependency for setup.sh file:
ADD_RUNTIME_DEP(geant4.sh)

# Add Geant4 flags before our own flags
ADD_DEFINITIONS(${Geant4_DEFINITIONS})
SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS}")
ELSEIF(CMAKE_BUILD_TYPE MATCHES RELEASE)
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS}")
ENDIF()

# Add source files to library
ALLPIX_MODULE_SOURCES(${MODULE_NAME} GDMLOutputWriterModule.cpp)

# Include Geant4 directories (NOTE Geant4_USE_FILE is not used!)
TARGET_INCLUDE_DIRECTORIES(${MODULE_NAME} SYSTEM PRIVATE ${Geant4_INCLUDE_DIRS})

# Add Geant4 libraries
TARGET_LINK_LIBRARIES(${MODULE_NAME} ${Geant4_LIBRARIES})
# Allpix Geant4 interface is required for this module
ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE(${MODULE_NAME} REQUIRED COMPONENTS gdml)

# Provide standard install target
ALLPIX_MODULE_INSTALL(${MODULE_NAME})
+1 −31
Original line number Diff line number Diff line
@@ -4,30 +4,6 @@
# Define module
ALLPIX_UNIQUE_MODULE(MODULE_NAME)

# Geant4 is required
FIND_PACKAGE(Geant4)
IF(NOT Geant4_FOUND)
    MESSAGE(FATAL_ERROR "Could not find Geant4, make sure to source the Geant4 environment\n"
                        "$ source YOUR_GEANT4_DIR/bin/geant4.sh")
ENDIF()

# Add "geant4.sh" as runtime dependency for setup.sh file:
ADD_RUNTIME_DEP(geant4.sh)

# Add GDML flag if supported
IF(Geant4_gdml_FOUND)
    ADD_DEFINITIONS(-DGeant4_GDML)
ENDIF()

# Add Geant4 flags before our own flags
ADD_DEFINITIONS(${Geant4_DEFINITIONS})
SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS}")
ELSEIF(CMAKE_BUILD_TYPE MATCHES RELEASE)
    SET(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS}")
ENDIF()

# Add source files to library
ALLPIX_MODULE_SOURCES(
    ${MODULE_NAME}
@@ -39,14 +15,8 @@ ALLPIX_MODULE_SOURCES(
    PassiveMaterialConstructionG4.cpp
    PassiveMaterialModel.cpp)

# Include Geant4 directories (NOTE Geant4_USE_FILE is not used!)
TARGET_INCLUDE_DIRECTORIES(${MODULE_NAME} SYSTEM PRIVATE ${Geant4_INCLUDE_DIRS})

# Add Geant4 libraries
TARGET_LINK_LIBRARIES(${MODULE_NAME} ${Geant4_LIBRARIES})

# Allpix Geant4 interface is required for this module
ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE(${MODULE_NAME})
ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE(${MODULE_NAME} REQUIRED)

# Register module tests
ALLPIX_MODULE_TESTS(${MODULE_NAME} "tests")
Loading