Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /cmake/Modules/G4ConfigurePkgConfigHelpers.cmake (Version 11.3.0) and /cmake/Modules/G4ConfigurePkgConfigHelpers.cmake (Version 10.4.p3)


  1 #.rst:                                              1 #.rst:
  2 # G4ConfigurePkgConfigHelpers                       2 # G4ConfigurePkgConfigHelpers
  3 # ---------------------------                       3 # ---------------------------
  4 #                                                   4 #
  5 # This module configures and installs pkg-conf      5 # This module configures and installs pkg-config scripts and the
  6 # geant4-config program to help clients compil      6 # geant4-config program to help clients compile and link against
  7 # the Geant4 libraries.                             7 # the Geant4 libraries.
  8 #                                                   8 #
  9 # The geant4-config script provides an sh base      9 # The geant4-config script provides an sh based interface to provide
 10 # information on the Geant4 installation, incl     10 # information on the Geant4 installation, including installation prefix,
 11 # version number, compiler and linker flags.       11 # version number, compiler and linker flags.
 12 #                                                  12 #
 13 # The script is generated from a template file     13 # The script is generated from a template file and then installed to the
 14 # known bindir as an executable.                   14 # known bindir as an executable.
 15 #                                                  15 #
 16 # Paths are always hardcoded in the build tree     16 # Paths are always hardcoded in the build tree version as this is never
 17 # intended to be relocatable.                      17 # intended to be relocatable.
 18 # The Install Tree script uses self-location b     18 # The Install Tree script uses self-location based on that in
 19 # {root,clhep}-config is the install itself is     19 # {root,clhep}-config is the install itself is relocatable, otherwise
 20 # absolute paths are encoded.                      20 # absolute paths are encoded.
 21 #                                                  21 #
 22 #                                                  22 #
 23                                                    23 
 24 #---------------------------------------------     24 #-----------------------------------------------------------------
 25 # License and Disclaimer                           25 # License and Disclaimer
 26 #                                                  26 #
 27 # The  Geant4 software  is  copyright of the C     27 # The  Geant4 software  is  copyright of the Copyright Holders  of
 28 # the Geant4 Collaboration.  It is provided  u     28 # the Geant4 Collaboration.  It is provided  under  the terms  and
 29 # conditions of the Geant4 Software License,       29 # conditions of the Geant4 Software License,  included in the file
 30 # LICENSE and available at  http://cern.ch/gea     30 # LICENSE and available at  http://cern.ch/geant4/license .  These
 31 # include a list of copyright holders.             31 # include a list of copyright holders.
 32 #                                                  32 #
 33 # Neither the authors of this software system,     33 # Neither the authors of this software system, nor their employing
 34 # institutes,nor the agencies providing financ     34 # institutes,nor the agencies providing financial support for this
 35 # work  make  any representation or  warranty,     35 # work  make  any representation or  warranty, express or implied,
 36 # regarding  this  software system or assume a     36 # regarding  this  software system or assume any liability for its
 37 # use.  Please see the license in the file  LI     37 # use.  Please see the license in the file  LICENSE  and URL above
 38 # for the full disclaimer and the limitation o     38 # for the full disclaimer and the limitation of liability.
 39 #                                                  39 #
 40 # This  code  implementation is the result of      40 # This  code  implementation is the result of  the  scientific and
 41 # technical work of the GEANT4 collaboration.      41 # technical work of the GEANT4 collaboration.
 42 # By using,  copying,  modifying or  distribut     42 # By using,  copying,  modifying or  distributing the software (or
 43 # any work based  on the software)  you  agree     43 # any work based  on the software)  you  agree  to acknowledge its
 44 # use  in  resulting  scientific  publications     44 # use  in  resulting  scientific  publications,  and indicate your
 45 # acceptance of all terms of the Geant4 Softwa     45 # acceptance of all terms of the Geant4 Software license.
 46 #                                                  46 #
 47 #---------------------------------------------     47 #-----------------------------------------------------------------
 48                                                    48 
 49                                                    49 
 50 #---------------------------------------------     50 #-----------------------------------------------------------------------
 51 # function get_system_include_dirs                 51 # function get_system_include_dirs
 52 #          return list of directories our C++      52 #          return list of directories our C++ compiler searches
 53 #          by default.                             53 #          by default.
 54 #                                                  54 #
 55 #          The idea comes from CMake's inbuilt     55 #          The idea comes from CMake's inbuilt technique to do this
 56 #          for the Eclipse and CodeBlocks gene     56 #          for the Eclipse and CodeBlocks generators, but we implement
 57 #          our own function because the CMake      57 #          our own function because the CMake functionality is internal
 58 #          so we can't rely on it.                 58 #          so we can't rely on it.
 59 function(get_system_include_dirs _dirs)            59 function(get_system_include_dirs _dirs)
 60   # Only for GCC, Clang and Intel                  60   # Only for GCC, Clang and Intel
 61   if("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU OR     61   if("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU OR "${CMAKE_CXX_COMPILER_ID}" MATCHES Clang OR "${CMAKE_CXX_COMPILER_ID}" MATCHES Intel)
 62     # Proceed                                      62     # Proceed
 63     file(WRITE "${PROJECT_BINARY_DIR}/CMakeFil <<  63     file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/g4dummy" "\n")
 64                                                    64 
 65     # Save locale, them to "C" english locale      65     # Save locale, them to "C" english locale so we can parse in English
 66     set(_orig_lc_all      $ENV{LC_ALL})            66     set(_orig_lc_all      $ENV{LC_ALL})
 67     set(_orig_lc_messages $ENV{LC_MESSAGES})       67     set(_orig_lc_messages $ENV{LC_MESSAGES})
 68     set(_orig_lang        $ENV{LANG})              68     set(_orig_lang        $ENV{LANG})
 69                                                    69 
 70     set(ENV{LC_ALL}      C)                        70     set(ENV{LC_ALL}      C)
 71     set(ENV{LC_MESSAGES} C)                        71     set(ENV{LC_MESSAGES} C)
 72     set(ENV{LANG}        C)                        72     set(ENV{LANG}        C)
 73                                                    73 
 74     execute_process(COMMAND ${CMAKE_CXX_COMPIL     74     execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -v -E -x c++ -dD g4dummy
 75       WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/ <<  75       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles
 76       ERROR_VARIABLE _cxxOutput                    76       ERROR_VARIABLE _cxxOutput
 77       OUTPUT_VARIABLE _cxxStdout                   77       OUTPUT_VARIABLE _cxxStdout
 78       )                                            78       )
 79                                                    79 
 80     file(REMOVE "${PROJECT_BINARY_DIR}/CMakeFi <<  80     file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/g4dummy")
 81                                                    81 
 82     # Parse and extract search dirs                82     # Parse and extract search dirs
 83     set(_resultIncludeDirs )                       83     set(_resultIncludeDirs )
 84     if( "${_cxxOutput}" MATCHES "> search star     84     if( "${_cxxOutput}" MATCHES "> search starts here[^\n]+\n *(.+ *\n) *End of (search) list" )
 85       string(REGEX MATCHALL "[^\n]+\n" _includ     85       string(REGEX MATCHALL "[^\n]+\n" _includeLines "${CMAKE_MATCH_1}")
 86       foreach(nextLine ${_includeLines})           86       foreach(nextLine ${_includeLines})
 87         string(REGEX REPLACE "\\(framework dir     87         string(REGEX REPLACE "\\(framework directory\\)" "" nextLineNoFramework "${nextLine}")
 88         string(STRIP "${nextLineNoFramework}"      88         string(STRIP "${nextLineNoFramework}" _includePath)
 89         list(APPEND _resultIncludeDirs "${_inc     89         list(APPEND _resultIncludeDirs "${_includePath}")
 90       endforeach()                                 90       endforeach()
 91     endif()                                        91     endif()
 92                                                    92 
 93     # Restore original locale                      93     # Restore original locale
 94     set(ENV{LC_ALL}      ${_orig_lc_all})          94     set(ENV{LC_ALL}      ${_orig_lc_all})
 95     set(ENV{LC_MESSAGES} ${_orig_lc_messages})     95     set(ENV{LC_MESSAGES} ${_orig_lc_messages})
 96     set(ENV{LANG}        ${_orig_lang})            96     set(ENV{LANG}        ${_orig_lang})
 97                                                    97 
 98     set(${_dirs} ${_resultIncludeDirs} PARENT_     98     set(${_dirs} ${_resultIncludeDirs} PARENT_SCOPE)
 99   else()                                           99   else()
100     set(${_dirs} "" PARENT_SCOPE)                 100     set(${_dirs} "" PARENT_SCOPE)
101   endif()                                         101   endif()
102 endfunction()                                     102 endfunction()
103                                                   103 
104 #---------------------------------------------    104 #-----------------------------------------------------------------------
105 # Only create script if we have a global libra    105 # Only create script if we have a global library build...
106 #                                                 106 #
107 #if(NOT GEANT4_BUILD_GRANULAR_LIBS AND UNIX)   << 107 if(NOT GEANT4_BUILD_GRANULAR_LIBS AND UNIX)
108 if(NOT GEANT4_BUILD_GRANULAR_LIBS)             << 
109   # Get implicit search paths                     108   # Get implicit search paths
110   get_system_include_dirs(_cxx_compiler_dirs)     109   get_system_include_dirs(_cxx_compiler_dirs)
111                                                   110 
112   # Setup variables needed for expansion in co    111   # Setup variables needed for expansion in configuration file
113   # - C++ Filesystem, if needed                << 
114   if(GEANT4_CXX_FILESYSTEM_LIBRARY)            << 
115     set(G4_LINK_CXX_FILESYSTEM "-l${GEANT4_CXX << 
116   endif()                                      << 
117                                                << 
118   # - Static libs                                 112   # - Static libs
119   if(BUILD_STATIC_LIBS)                           113   if(BUILD_STATIC_LIBS)
120     set(G4_BUILTWITH_STATICLIBS "yes")            114     set(G4_BUILTWITH_STATICLIBS "yes")
121   else()                                          115   else()
122     set(G4_BUILTWITH_STATICLIBS "no")             116     set(G4_BUILTWITH_STATICLIBS "no")
123   endif()                                         117   endif()
124                                                   118 
125   # - Multithreading                              119   # - Multithreading
126   if(GEANT4_BUILD_MULTITHREADED)                  120   if(GEANT4_BUILD_MULTITHREADED)
127     set(G4_BUILTWITH_MULTITHREADING "yes")        121     set(G4_BUILTWITH_MULTITHREADING "yes")
128   else()                                          122   else()
129     set(G4_BUILTWITH_MULTITHREADING "no")         123     set(G4_BUILTWITH_MULTITHREADING "no")
130   endif()                                         124   endif()
131                                                   125 
132   # - PHP_AS_HP                                << 126   # - Muonic Atom support
133   if(GEANT4_BUILD_PHP_AS_HP)                   << 127   if(GEANT4_BUILD_MUONIC_ATOMS_IN_USE)
134     set(G4_BUILTWITH_PHP_AS_HP "yes")          << 128     set(G4_BUILTWITH_MUONIC_ATOMS "yes")
135   else()                                          129   else()
136     set(G4_BUILTWITH_PHP_AS_HP "no")           << 130     set(G4_BUILTWITH_MUONIC_ATOMS "no")
137   endif()                                      << 
138                                                << 
139   # - Smart Stack                              << 
140   if(GEANT4_USE_SMARTSTACK)                    << 
141     set(G4_BUILTWITH_SMARTSTACK "yes")         << 
142   else()                                       << 
143     set(G4_BUILTWITH_SMARTSTACK "no")          << 
144   endif()                                         131   endif()
145                                                   132 
146   # - CLHEP                                       133   # - CLHEP
147   if(GEANT4_USE_SYSTEM_CLHEP)                     134   if(GEANT4_USE_SYSTEM_CLHEP)
148     set(G4_BUILTWITH_CLHEP "no")                  135     set(G4_BUILTWITH_CLHEP "no")
149     #inc path                                     136     #inc path
150     get_filename_component(G4_SYSTEM_CLHEP_INC    137     get_filename_component(G4_SYSTEM_CLHEP_INCLUDE_DIR "${CLHEP_INCLUDE_DIR}" ABSOLUTE)
151                                                   138 
152     #libpath                                      139     #libpath
153     list(GET CLHEP_LIBRARIES 0 _zeroth_clhep_l    140     list(GET CLHEP_LIBRARIES 0 _zeroth_clhep_lib)
154     get_target_property(_system_clhep_libdir "    141     get_target_property(_system_clhep_libdir "${_zeroth_clhep_lib}" LOCATION)
155     get_filename_component(_system_clhep_libdi    142     get_filename_component(_system_clhep_libdir "${_system_clhep_libdir}" REALPATH)
156     get_filename_component(_system_clhep_libdi    143     get_filename_component(_system_clhep_libdir "${_system_clhep_libdir}" DIRECTORY)
157     set(G4_SYSTEM_CLHEP_LIBRARIES "-L${_system    144     set(G4_SYSTEM_CLHEP_LIBRARIES "-L${_system_clhep_libdir}")
158                                                   145 
159     foreach(_clhep_lib ${CLHEP_LIBRARIES})        146     foreach(_clhep_lib ${CLHEP_LIBRARIES})
160       get_target_property(_curlib "${_clhep_li    147       get_target_property(_curlib "${_clhep_lib}" LOCATION)
161       get_filename_component(_curlib "${_curli    148       get_filename_component(_curlib "${_curlib}" NAME)
162       string(REGEX REPLACE "^lib(.*)\\.(so|a|d    149       string(REGEX REPLACE "^lib(.*)\\.(so|a|dylib|lib|dll)$" "\\1" _curlib "${_curlib}")
163       set(G4_SYSTEM_CLHEP_LIBRARIES "${G4_SYST    150       set(G4_SYSTEM_CLHEP_LIBRARIES "${G4_SYSTEM_CLHEP_LIBRARIES} -l${_curlib}")
164     endforeach()                                  151     endforeach()
165   else()                                          152   else()
166     set(G4_BUILTWITH_CLHEP "yes")                 153     set(G4_BUILTWITH_CLHEP "yes")
167   endif()                                         154   endif()
168                                                   155 
169   # - EXPAT                                       156   # - EXPAT
170   if(GEANT4_USE_SYSTEM_EXPAT)                     157   if(GEANT4_USE_SYSTEM_EXPAT)
171     set(G4_BUILTWITH_EXPAT "no")                  158     set(G4_BUILTWITH_EXPAT "no")
172   else()                                          159   else()
173     set(G4_BUILTWITH_EXPAT "yes")                 160     set(G4_BUILTWITH_EXPAT "yes")
174   endif()                                         161   endif()
175                                                   162 
176   # - ZLIB                                        163   # - ZLIB
177   if(GEANT4_USE_SYSTEM_ZLIB)                      164   if(GEANT4_USE_SYSTEM_ZLIB)
178     set(G4_BUILTWITH_ZLIB "no")                   165     set(G4_BUILTWITH_ZLIB "no")
179   else()                                          166   else()
180     set(G4_BUILTWITH_ZLIB "yes")                  167     set(G4_BUILTWITH_ZLIB "yes")
181   endif()                                         168   endif()
182                                                   169 
183   # - PTL                                      << 
184   if(GEANT4_USE_SYSTEM_PTL)                    << 
185     set(G4_BUILTWITH_PTL "no")                 << 
186   else()                                       << 
187     set(G4_BUILTWITH_PTL "yes")                << 
188   endif()                                      << 
189                                                << 
190   # - GDML                                        170   # - GDML
191   if(GEANT4_USE_GDML)                             171   if(GEANT4_USE_GDML)
192     set(G4_BUILTWITH_GDML "yes")                  172     set(G4_BUILTWITH_GDML "yes")
193     set(G4_XERCESC_INCLUDE_DIRS ${XercesC_INCL << 173     set(G4_XERCESC_INCLUDE_DIRS ${XERCESC_INCLUDE_DIRS})
194     list(REMOVE_DUPLICATES G4_XERCESC_INCLUDE_    174     list(REMOVE_DUPLICATES G4_XERCESC_INCLUDE_DIRS)
195     if(_cxx_compiler_dirs)                     << 175     list(REMOVE_ITEM G4_XERCESC_INCLUDE_DIRS ${_cxx_compiler_dirs})
196       list(REMOVE_ITEM G4_XERCESC_INCLUDE_DIRS << 
197     endif()                                    << 
198                                                   176 
199     set(G4_XERCESC_CFLAGS )                       177     set(G4_XERCESC_CFLAGS )
200     foreach(_dir ${G4_XERCESC_INCLUDE_DIRS})      178     foreach(_dir ${G4_XERCESC_INCLUDE_DIRS})
201       set(G4_XERCESC_CFLAGS "${G4_XERCESC_CFLA    179       set(G4_XERCESC_CFLAGS "${G4_XERCESC_CFLAGS} -I${_dir}")
202     endforeach()                                  180     endforeach()
203   else()                                          181   else()
204     set(G4_BUILTWITH_GDML "no")                   182     set(G4_BUILTWITH_GDML "no")
205   endif()                                         183   endif()
206                                                   184 
207   # - G3ToG4                                      185   # - G3ToG4
208   if(GEANT4_USE_G3TOG4)                           186   if(GEANT4_USE_G3TOG4)
209     set(G4_BUILTWITH_G3TOG4 "yes")                187     set(G4_BUILTWITH_G3TOG4 "yes")
210   else()                                          188   else()
211     set(G4_BUILTWITH_G3TOG4 "no")                 189     set(G4_BUILTWITH_G3TOG4 "no")
212   endif()                                         190   endif()
213                                                   191 
214   # - USolids                                     192   # - USolids
215   if(GEANT4_USE_USOLIDS OR GEANT4_USE_PARTIAL_    193   if(GEANT4_USE_USOLIDS OR GEANT4_USE_PARTIAL_USOLIDS)
216     set(G4_BUILTWITH_USOLIDS "yes")               194     set(G4_BUILTWITH_USOLIDS "yes")
217     get_target_property(G4_USOLIDS_INCLUDE_DIR << 195     set(G4_USOLIDS_INCLUDE_DIRS "${USOLIDS_INCLUDE_DIRS} ${VECGEOM_EXTERNAL_INCLUDES}")
218     list(REMOVE_DUPLICATES G4_USOLIDS_INCLUDE_    196     list(REMOVE_DUPLICATES G4_USOLIDS_INCLUDE_DIRS)
                                                   >> 197     list(REMOVE_ITEM G4_USOLIDS_INCLUDE_DIRS ${_cxx_compiler_dirs})
                                                   >> 198 
                                                   >> 199     string(REPLACE ";" " " G4_USOLIDS_CFLAGS "${GEANT4_USOLIDS_COMPILE_DEFINITIONS}")
219     foreach(_dir ${G4_USOLIDS_INCLUDE_DIRS})      200     foreach(_dir ${G4_USOLIDS_INCLUDE_DIRS})
220       set(G4_USOLIDS_CFLAGS "${G4_USOLIDS_CFLA    201       set(G4_USOLIDS_CFLAGS "${G4_USOLIDS_CFLAGS} -I${_dir}")
221     endforeach()                                  202     endforeach()
222     # NB: should ALSO account for VecGeom havi << 
223     # this is better handled through proper pk << 
224   else()                                          203   else()
225     set(G4_BUILTWITH_USOLIDS "no")                204     set(G4_BUILTWITH_USOLIDS "no")
226   endif()                                         205   endif()
227                                                   206 
228   # - Freetype                                    207   # - Freetype
229   if(GEANT4_USE_FREETYPE)                         208   if(GEANT4_USE_FREETYPE)
230     set(G4_BUILTWITH_FREETYPE "yes")              209     set(G4_BUILTWITH_FREETYPE "yes")
231   else()                                          210   else()
232     set(G4_BUILTWITH_FREETYPE "no")               211     set(G4_BUILTWITH_FREETYPE "no")
233   endif()                                         212   endif()
234                                                   213 
235   # - HDF5                                     << 214   # - Freetype
236   if(GEANT4_USE_HDF5)                             215   if(GEANT4_USE_HDF5)
237     set(G4_BUILTWITH_HDF5 "yes")                  216     set(G4_BUILTWITH_HDF5 "yes")
238   else()                                          217   else()
239     set(G4_BUILTWITH_HDF5 "no")                   218     set(G4_BUILTWITH_HDF5 "no")
240   endif()                                         219   endif()
241                                                   220 
242   # - Qt                                          221   # - Qt
243   if(GEANT4_USE_QT)                               222   if(GEANT4_USE_QT)
244     set(G4_BUILTWITH_QT "yes")                    223     set(G4_BUILTWITH_QT "yes")
245     set(_qtcomps Core Gui Widgets OpenGL)      << 224     if(QT4_FOUND)
246     if(QT_VERSION_MAJOR VERSION_GREATER_EQUAL  << 225       set(G4_QT_INCLUDE_DIRS ${QT_QTCORE_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTOPENGL_INCLUDE_DIR})
247       list(APPEND _qtcomp 3DCore 3DExtras 3DRe << 226     else()
                                                   >> 227       set(G4_QT_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5OpenGL_INCLUDE_DIRS} ${Qt5PrintSupport_INCLUDE_DIRS})
248     endif()                                       228     endif()
249                                                   229 
250     set(G4_QT_INCLUDE_DIRS )                   << 
251     foreach(_qtc ${_qtcomps})                  << 
252       list(APPEND G4_QT_INCLUDE_DIRS ${Qt${QT_ << 
253     endforeach()                               << 
254                                                << 
255     list(REMOVE_DUPLICATES G4_QT_INCLUDE_DIRS)    230     list(REMOVE_DUPLICATES G4_QT_INCLUDE_DIRS)
256     if(_cxx_compiler_dirs)                     << 231     list(REMOVE_ITEM G4_QT_INCLUDE_DIRS ${_cxx_compiler_dirs})
257       list(REMOVE_ITEM G4_QT_INCLUDE_DIRS ${_c << 
258     endif()                                    << 
259                                                   232 
260     set(G4_QT_CFLAGS )                            233     set(G4_QT_CFLAGS )
261     foreach(_dir ${G4_QT_INCLUDE_DIRS})           234     foreach(_dir ${G4_QT_INCLUDE_DIRS})
262       set(G4_QT_CFLAGS "${G4_QT_CFLAGS} -I${_d    235       set(G4_QT_CFLAGS "${G4_QT_CFLAGS} -I${_dir}")
263     endforeach()                                  236     endforeach()
264                                                   237 
265     if(APPLE AND G4_QT_CFLAGS MATCHES "QtCore\ << 
266       set(G4_QT_CFLAGS "${G4_QT_CFLAGS} -F${G4 << 
267     endif()                                    << 
268   else()                                          238   else()
269     set(G4_BUILTWITH_QT "no")                     239     set(G4_BUILTWITH_QT "no")
270   endif()                                         240   endif()
271                                                   241 
272   # - QT3D                                     << 242   # - Wt
273   if(GEANT4_USE_QT3D)                          << 243   if(GEANT4_USE_WT)
274     set(G4_BUILTWITH_QT3D "yes")               << 244     set(G4_BUILTWITH_WT "yes")
                                                   >> 245     set(G4_WT_INCLUDE_DIRS ${Wt_INCLUDE_DIR} ${Boost_INCLUDE_DIR} )
                                                   >> 246 
                                                   >> 247     set(G4_WT_CFLAGS )
                                                   >> 248     foreach(_dir ${G4_WT_INCLUDE_DIRS})
                                                   >> 249       set(G4_WT_CFLAGS "${G4_WT_CFLAGS} -I${_dir}")
                                                   >> 250     endforeach()
                                                   >> 251 
275   else()                                          252   else()
276     set(G4_BUILTWITH_QT3D "no")                << 253     set(G4_BUILTWITH_WT "no")
277   endif()                                         254   endif()
278                                                   255 
279   # - Motif                                       256   # - Motif
280   if(GEANT4_USE_XM)                               257   if(GEANT4_USE_XM)
281     set(G4_BUILTWITH_MOTIF "yes")                 258     set(G4_BUILTWITH_MOTIF "yes")
282     set(G4_CONFIG_NEEDS_X11 TRUE)                 259     set(G4_CONFIG_NEEDS_X11 TRUE)
283   else()                                          260   else()
284     set(G4_BUILTWITH_MOTIF "no")                  261     set(G4_BUILTWITH_MOTIF "no")
285   endif()                                         262   endif()
286                                                   263 
287   # - RayTracerX                                  264   # - RayTracerX
288   if(GEANT4_USE_RAYTRACER_X11)                    265   if(GEANT4_USE_RAYTRACER_X11)
289     set(G4_BUILTWITH_RAYTRACERX11 "yes")          266     set(G4_BUILTWITH_RAYTRACERX11 "yes")
290     set(G4_CONFIG_NEEDS_X11 TRUE)                 267     set(G4_CONFIG_NEEDS_X11 TRUE)
291   else()                                          268   else()
292     set(G4_BUILTWITH_RAYTRACERX11 "no")           269     set(G4_BUILTWITH_RAYTRACERX11 "no")
293   endif()                                         270   endif()
294                                                   271 
295   # - OpenGL X11                                  272   # - OpenGL X11
296   if(GEANT4_USE_OPENGL_X11)                       273   if(GEANT4_USE_OPENGL_X11)
297     set(G4_BUILTWITH_OPENGLX11 "yes")             274     set(G4_BUILTWITH_OPENGLX11 "yes")
298     set(G4_CONFIG_NEEDS_X11 TRUE)                 275     set(G4_CONFIG_NEEDS_X11 TRUE)
299   else()                                          276   else()
300     set(G4_BUILTWITH_OPENGLX11 "no")              277     set(G4_BUILTWITH_OPENGLX11 "no")
301   endif()                                         278   endif()
302                                                   279 
303   # - OpenInventor                                280   # - OpenInventor
304   if(GEANT4_USE_INVENTOR)                         281   if(GEANT4_USE_INVENTOR)
305     set(G4_BUILTWITH_INVENTOR "yes")              282     set(G4_BUILTWITH_INVENTOR "yes")
306   else()                                          283   else()
307     set(G4_BUILTWITH_INVENTOR "no")               284     set(G4_BUILTWITH_INVENTOR "no")
308   endif()                                         285   endif()
309                                                   286 
310   # - VTK                                      << 
311   if(GEANT4_USE_VTK)                           << 
312     set(G4_BUILTWITH_VTK "yes")                << 
313   else()                                       << 
314     set(G4_BUILTWITH_VTK "no")                 << 
315   endif()                                      << 
316                                                << 
317   # If we have a module that uses X11, We have    287   # If we have a module that uses X11, We have to play with the X11
318   # paths to get a clean set suitable for incl    288   # paths to get a clean set suitable for inclusion
319   if(G4_CONFIG_NEEDS_X11)                         289   if(G4_CONFIG_NEEDS_X11)
320     set(_raw_x11_includes ${X11_INCLUDE_DIR})     290     set(_raw_x11_includes ${X11_INCLUDE_DIR})
321     list(REMOVE_DUPLICATES _raw_x11_includes)     291     list(REMOVE_DUPLICATES _raw_x11_includes)
322     if(_cxx_compiler_dirs)                     << 292     list(REMOVE_ITEM _raw_x11_includes ${_cxx_compiler_dirs})
323       list(REMOVE_ITEM _raw_x11_includes ${_cx << 
324     endif()                                    << 
325     set(G4_X11_CFLAGS )                           293     set(G4_X11_CFLAGS )
326     foreach(_p ${_raw_x11_includes})              294     foreach(_p ${_raw_x11_includes})
327       set(G4_X11_CFLAGS "-I${_p} ${G4_X11_CFLA    295       set(G4_X11_CFLAGS "-I${_p} ${G4_X11_CFLAGS}")
328     endforeach()                                  296     endforeach()
329   endif()                                         297   endif()
330                                                   298 
331   # Configure the script                          299   # Configure the script
332   # - BUILD TREE                                  300   # - BUILD TREE
333   # Ouch, the include path will be LONG, but a    301   # Ouch, the include path will be LONG, but at least we always have
334   # absolute paths...                             302   # absolute paths...
335   set(GEANT4_CONFIG_SELF_LOCATION "# BUILD TRE    303   set(GEANT4_CONFIG_SELF_LOCATION "# BUILD TREE IS NON-RELOCATABLE")
336   set(GEANT4_CONFIG_INSTALL_PREFIX "${PROJECT_    304   set(GEANT4_CONFIG_INSTALL_PREFIX "${PROJECT_BINARY_DIR}")
337   set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")      305   set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")
338   # NB: this only works for *single* mode gene    306   # NB: this only works for *single* mode generators. With multimode
339   # generators, which mode to use is not clear    307   # generators, which mode to use is not clear...
340   set(GEANT4_CONFIG_LIBDIR ${CMAKE_LIBRARY_OUT    308   set(GEANT4_CONFIG_LIBDIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
341                                                   309 
342   get_property(__geant4_buildtree_include_dirs    310   get_property(__geant4_buildtree_include_dirs GLOBAL PROPERTY
343     GEANT4_BUILDTREE_INCLUDE_DIRS)                311     GEANT4_BUILDTREE_INCLUDE_DIRS)
344                                                   312 
345   foreach(_dir ${__geant4_buildtree_include_di    313   foreach(_dir ${__geant4_buildtree_include_dirs})
346     set(GEANT4_CONFIG_INCLUDE_DIRS "${GEANT4_C    314     set(GEANT4_CONFIG_INCLUDE_DIRS "${GEANT4_CONFIG_INCLUDE_DIRS} \\
347     ${_dir}")                                     315     ${_dir}")
348   endforeach()                                    316   endforeach()
349                                                   317 
350   # - Data                                        318   # - Data
351   geant4_export_datasets(BUILD GEANT4_CONFIG_D    319   geant4_export_datasets(BUILD GEANT4_CONFIG_DATASET_DESCRIPTIONS)
352                                                   320 
353   # Configure the build tree script               321   # Configure the build tree script
354   configure_file(                              << 322   # If we're on CMake 2.8 and above, we try to use file(COPY) to create an
355     ${PROJECT_SOURCE_DIR}/cmake/Templates/gean << 323   # executable script
356     ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTO << 324   # Not sure if version check is o.k., but I'll be shocked if we ever see
357     @ONLY                                      << 325   # a CMake 2.7 in the wild...
358     )                                          << 326   if(${CMAKE_VERSION} VERSION_GREATER 2.7)
                                                   >> 327     configure_file(
                                                   >> 328       ${CMAKE_SOURCE_DIR}/cmake/Templates/geant4-config.in
                                                   >> 329       ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/geant4-config
                                                   >> 330       @ONLY
                                                   >> 331       )
359                                                   332 
360   file(COPY                                    << 333     file(COPY
361     ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTO << 334       ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/geant4-config
362     DESTINATION ${PROJECT_BINARY_DIR}          << 335       DESTINATION ${PROJECT_BINARY_DIR}
363     FILE_PERMISSIONS                           << 336       FILE_PERMISSIONS
364       OWNER_READ OWNER_WRITE OWNER_EXECUTE     << 337         OWNER_READ OWNER_WRITE OWNER_EXECUTE
365       GROUP_READ GROUP_EXECUTE                 << 338         GROUP_READ GROUP_EXECUTE
366       WORLD_READ WORLD_EXECUTE                 << 339         WORLD_READ WORLD_EXECUTE
367     )                                          << 340       )
                                                   >> 341   else()
                                                   >> 342     # Changing permissions is awkward, so just configure and document
                                                   >> 343     # that you have to do 'sh geant4-config' in this case.
                                                   >> 344     configure_file(
                                                   >> 345       ${CMAKE_SOURCE_DIR}/cmake/Templates/geant4-config.in
                                                   >> 346       ${PROJECT_BINARY_DIR}/geant4-config
                                                   >> 347       @ONLY
                                                   >> 348       )
                                                   >> 349   endif()
368                                                   350 
369   # - Install Tree                                351   # - Install Tree
370   # Much easier :-)                               352   # Much easier :-)
371   # Non-Relocatable case...                       353   # Non-Relocatable case...
372   if(CMAKE_INSTALL_IS_NONRELOCATABLE)             354   if(CMAKE_INSTALL_IS_NONRELOCATABLE)
373     # Hardcoded paths                             355     # Hardcoded paths
374     set(GEANT4_CONFIG_INSTALL_PREFIX "${CMAKE_    356     set(GEANT4_CONFIG_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
375     set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")    357     set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")
376     set(GEANT4_CONFIG_LIBDIR "${CMAKE_INSTALL_    358     set(GEANT4_CONFIG_LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
377     set(GEANT4_CONFIG_INCLUDE_DIRS "${CMAKE_IN    359     set(GEANT4_CONFIG_INCLUDE_DIRS "${CMAKE_INSTALL_FULL_INCLUDEDIR}/Geant4")
378   else()                                          360   else()
379     # Calculate base of self contained install    361     # Calculate base of self contained install based on relative path from
380     # CMAKE_INSTALL_FULL_BINDIR to CMAKE_INSTA    362     # CMAKE_INSTALL_FULL_BINDIR to CMAKE_INSTALL_PREFIX.
381     file(RELATIVE_PATH _bin_to_prefix ${CMAKE_    363     file(RELATIVE_PATH _bin_to_prefix ${CMAKE_INSTALL_FULL_BINDIR} ${CMAKE_INSTALL_PREFIX})
382     # Strip any trailing path separators just     364     # Strip any trailing path separators just for neatness.
383     string(REGEX REPLACE "[/\\]$" "" _bin_to_p    365     string(REGEX REPLACE "[/\\]$" "" _bin_to_prefix "${_bin_to_prefix}")
384                                                   366 
385     set(GEANT4_CONFIG_INSTALL_PREFIX "$scriptl    367     set(GEANT4_CONFIG_INSTALL_PREFIX "$scriptloc/${_bin_to_prefix}")
386     set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")    368     set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")
387     set(GEANT4_CONFIG_LIBDIR "\${prefix}/${CMA    369     set(GEANT4_CONFIG_LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
388     set(GEANT4_CONFIG_INCLUDE_DIRS "\${prefix}    370     set(GEANT4_CONFIG_INCLUDE_DIRS "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}/Geant4")
389   endif()                                         371   endif()
390                                                   372 
391   # - Data                                        373   # - Data
392   geant4_export_datasets(INSTALL GEANT4_CONFIG    374   geant4_export_datasets(INSTALL GEANT4_CONFIG_DATASET_DESCRIPTIONS)
393                                                   375 
394   # Configure the install tree script             376   # Configure the install tree script
395   configure_file(                                 377   configure_file(
396     ${PROJECT_SOURCE_DIR}/cmake/Templates/gean << 378     ${CMAKE_SOURCE_DIR}/cmake/Templates/geant4-config.in
397     ${PROJECT_BINARY_DIR}/InstallTreeFiles/gea    379     ${PROJECT_BINARY_DIR}/InstallTreeFiles/geant4-config
398     @ONLY                                         380     @ONLY
399     )                                             381     )
400                                                   382 
401   # Install it                                    383   # Install it
402   install(FILES ${PROJECT_BINARY_DIR}/InstallT    384   install(FILES ${PROJECT_BINARY_DIR}/InstallTreeFiles/geant4-config
403     DESTINATION ${CMAKE_INSTALL_BINDIR}           385     DESTINATION ${CMAKE_INSTALL_BINDIR}
404     PERMISSIONS                                   386     PERMISSIONS
405       OWNER_READ OWNER_WRITE OWNER_EXECUTE        387       OWNER_READ OWNER_WRITE OWNER_EXECUTE
406       GROUP_READ GROUP_EXECUTE                    388       GROUP_READ GROUP_EXECUTE
407       WORLD_READ WORLD_EXECUTE                    389       WORLD_READ WORLD_EXECUTE
408     COMPONENT Development                         390     COMPONENT Development
409     )                                             391     )
410                                                << 
411   # Win32 helper file geant4-config.cmd        << 
412   if(WIN32)                                    << 
413     # No configuration just a copy             << 
414     configure_file(                            << 
415       ${PROJECT_SOURCE_DIR}/cmake/Templates/ge << 
416       ${PROJECT_BINARY_DIR}/InstallTreeFiles/g << 
417       @ONLY                                    << 
418       )                                        << 
419                                                << 
420     # Install helper                           << 
421     install(FILES ${PROJECT_BINARY_DIR}/Instal << 
422       DESTINATION ${CMAKE_INSTALL_BINDIR}      << 
423       PERMISSIONS                              << 
424         OWNER_READ OWNER_WRITE OWNER_EXECUTE   << 
425         GROUP_READ GROUP_EXECUTE               << 
426         WORLD_READ WORLD_EXECUTE               << 
427       COMPONENT Development                    << 
428       )                                        << 
429 endif()                                        << 
430 endif()                                           392 endif()
                                                   >> 393