# - Use file for Geant4
# This file should be included after a find_package call has successfully
# located Geant4.
#
#  Geant4_USE_FILE : Point to the location of the use file for the found
#                    Geant4 installation.
#
# Inclusion of this file results in the addition of the Geant4 compile
# definitions and include directories to those of the directory in which
# this files is included.
#
# The recommended Geant4 compiler flags are also added to CMAKE_CXX_FLAGS
# but duplicated flags are NOT removed.
# Advanced users requiring special sets of flags, or the removal of duplicate
# flags should therefore *not* use this file, preferring the direct use of the 
# Geant4_XXXX variables set by the Geant4Config file.
#
# The use file also defines a simple macro to help with collating sources
# for simple user applications.
#
#  macro GEANT4_COLLATE_APPLICATION_SOURCES(sources)
#        Create the list of sources in a standard Geant4 application example.
#        If the project is organized as
#        +- project
#           +- CMakeLists.txt
#           +- project.cc
#           +- include/
#           |  +- project_impl_a.hh
#           |  +- ...
#           +- src/
#              +- project_impl_a.cc
#              +- ...
#        Then when called in the CMakeLists.txt under 'project', it will
#        collate all the .hh and .cc files into the sources variable, and
#        add the include directory to those to be searched for.
#        The CMakeLists.txt for project would then read:
#       
#        cmake_minimum_required(VERSION 2.6.4)
#        project(myproject)
#
#        find_package(Geant4 REQUIRED)
#        include(${Geant4_USE_FILE})
#
#        GEANT4_COLLATE_APPLICATION_SOURCES(my_project_sources)
#
#        add_executable(myproject ${my_project_sources})
#        target_link_libraries(myproject ${Geant4_LIBRARIES})
#
#
#        This gives you maximum flexibility in setting up your project, as
#        you can either use this macro for simplicity and to easily convert
#        an existing application to CMake, or you can set the sources manually
#        with your own arrangement of headers and source files.
#
#
# The last thing the module does is to optionally include an internal Use 
# file. This file can contain variables, functions and macros for strict
# internal use in Geant4, such as building and running validation tests.
#

#----------------------------------------------------------------------------
# macro GEANT4_COLLATE_SOURCES(source_dest_var)
#
macro(GEANT4_COLLATE_APPLICATION_SOURCES source_dest_var)
    file(GLOB_RECURSE 
        ${source_dest_var} 
        ${CMAKE_CURRENT_SOURCE_DIR}/*.hh 
        ${CMAKE_CURRENT_SOURCE_DIR}/*.cc
    )
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
endmacro()


#----------------------------------------------------------------------------
# We need to set the compile definitions and include directories
#
add_definitions(${Geant4_DEFINITIONS})
include_directories(${Geant4_INCLUDE_DIRS})

#----------------------------------------------------------------------------
# Because Geant4 is sensitive to the compiler flags, lets set the base set
# here. This reproduces as far as possible the behaviour of the original
# makefile system.
#
set(CMAKE_CXX_FLAGS                "${Geant4_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG          "${Geant4_CXX_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_MINSIZEREL     "${Geant4_CXX_FLAGS_MINSIZEREL}")
set(CMAKE_CXX_FLAGS_RELEASE        "${Geant4_CXX_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${Geant4_CXX_FLAGS_RELWITHDEBINFO}")


#----------------------------------------------------------------------------
# Include internal use file if it exists. It should only exist in the
# build tree!
#
get_filename_component(_use_geant4_dir ${CMAKE_CURRENT_LIST_FILE} PATH)
include(${_use_geant4_dir}/UseGeant4_internal.cmake OPTIONAL)