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 7.0)


  1 #.rst:                                            
  2 # G4ConfigurePkgConfigHelpers                     
  3 # ---------------------------                     
  4 #                                                 
  5 # This module configures and installs pkg-conf    
  6 # geant4-config program to help clients compil    
  7 # the Geant4 libraries.                           
  8 #                                                 
  9 # The geant4-config script provides an sh base    
 10 # information on the Geant4 installation, incl    
 11 # version number, compiler and linker flags.      
 12 #                                                 
 13 # The script is generated from a template file    
 14 # known bindir as an executable.                  
 15 #                                                 
 16 # Paths are always hardcoded in the build tree    
 17 # intended to be relocatable.                     
 18 # The Install Tree script uses self-location b    
 19 # {root,clhep}-config is the install itself is    
 20 # absolute paths are encoded.                     
 21 #                                                 
 22 #                                                 
 23                                                   
 24 #---------------------------------------------    
 25 # License and Disclaimer                          
 26 #                                                 
 27 # The  Geant4 software  is  copyright of the C    
 28 # the Geant4 Collaboration.  It is provided  u    
 29 # conditions of the Geant4 Software License,      
 30 # LICENSE and available at  http://cern.ch/gea    
 31 # include a list of copyright holders.            
 32 #                                                 
 33 # Neither the authors of this software system,    
 34 # institutes,nor the agencies providing financ    
 35 # work  make  any representation or  warranty,    
 36 # regarding  this  software system or assume a    
 37 # use.  Please see the license in the file  LI    
 38 # for the full disclaimer and the limitation o    
 39 #                                                 
 40 # This  code  implementation is the result of     
 41 # technical work of the GEANT4 collaboration.     
 42 # By using,  copying,  modifying or  distribut    
 43 # any work based  on the software)  you  agree    
 44 # use  in  resulting  scientific  publications    
 45 # acceptance of all terms of the Geant4 Softwa    
 46 #                                                 
 47 #---------------------------------------------    
 48                                                   
 49                                                   
 50 #---------------------------------------------    
 51 # function get_system_include_dirs                
 52 #          return list of directories our C++     
 53 #          by default.                            
 54 #                                                 
 55 #          The idea comes from CMake's inbuilt    
 56 #          for the Eclipse and CodeBlocks gene    
 57 #          our own function because the CMake     
 58 #          so we can't rely on it.                
 59 function(get_system_include_dirs _dirs)           
 60   # Only for GCC, Clang and Intel                 
 61   if("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU OR    
 62     # Proceed                                     
 63     file(WRITE "${PROJECT_BINARY_DIR}/CMakeFil    
 64                                                   
 65     # Save locale, them to "C" english locale     
 66     set(_orig_lc_all      $ENV{LC_ALL})           
 67     set(_orig_lc_messages $ENV{LC_MESSAGES})      
 68     set(_orig_lang        $ENV{LANG})             
 69                                                   
 70     set(ENV{LC_ALL}      C)                       
 71     set(ENV{LC_MESSAGES} C)                       
 72     set(ENV{LANG}        C)                       
 73                                                   
 74     execute_process(COMMAND ${CMAKE_CXX_COMPIL    
 75       WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/    
 76       ERROR_VARIABLE _cxxOutput                   
 77       OUTPUT_VARIABLE _cxxStdout                  
 78       )                                           
 79                                                   
 80     file(REMOVE "${PROJECT_BINARY_DIR}/CMakeFi    
 81                                                   
 82     # Parse and extract search dirs               
 83     set(_resultIncludeDirs )                      
 84     if( "${_cxxOutput}" MATCHES "> search star    
 85       string(REGEX MATCHALL "[^\n]+\n" _includ    
 86       foreach(nextLine ${_includeLines})          
 87         string(REGEX REPLACE "\\(framework dir    
 88         string(STRIP "${nextLineNoFramework}"     
 89         list(APPEND _resultIncludeDirs "${_inc    
 90       endforeach()                                
 91     endif()                                       
 92                                                   
 93     # Restore original locale                     
 94     set(ENV{LC_ALL}      ${_orig_lc_all})         
 95     set(ENV{LC_MESSAGES} ${_orig_lc_messages})    
 96     set(ENV{LANG}        ${_orig_lang})           
 97                                                   
 98     set(${_dirs} ${_resultIncludeDirs} PARENT_    
 99   else()                                          
100     set(${_dirs} "" PARENT_SCOPE)                 
101   endif()                                         
102 endfunction()                                     
103                                                   
104 #---------------------------------------------    
105 # Only create script if we have a global libra    
106 #                                                 
107 #if(NOT GEANT4_BUILD_GRANULAR_LIBS AND UNIX)      
108 if(NOT GEANT4_BUILD_GRANULAR_LIBS)                
109   # Get implicit search paths                     
110   get_system_include_dirs(_cxx_compiler_dirs)     
111                                                   
112   # Setup variables needed for expansion in co    
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                                 
119   if(BUILD_STATIC_LIBS)                           
120     set(G4_BUILTWITH_STATICLIBS "yes")            
121   else()                                          
122     set(G4_BUILTWITH_STATICLIBS "no")             
123   endif()                                         
124                                                   
125   # - Multithreading                              
126   if(GEANT4_BUILD_MULTITHREADED)                  
127     set(G4_BUILTWITH_MULTITHREADING "yes")        
128   else()                                          
129     set(G4_BUILTWITH_MULTITHREADING "no")         
130   endif()                                         
131                                                   
132   # - PHP_AS_HP                                   
133   if(GEANT4_BUILD_PHP_AS_HP)                      
134     set(G4_BUILTWITH_PHP_AS_HP "yes")             
135   else()                                          
136     set(G4_BUILTWITH_PHP_AS_HP "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()                                         
145                                                   
146   # - CLHEP                                       
147   if(GEANT4_USE_SYSTEM_CLHEP)                     
148     set(G4_BUILTWITH_CLHEP "no")                  
149     #inc path                                     
150     get_filename_component(G4_SYSTEM_CLHEP_INC    
151                                                   
152     #libpath                                      
153     list(GET CLHEP_LIBRARIES 0 _zeroth_clhep_l    
154     get_target_property(_system_clhep_libdir "    
155     get_filename_component(_system_clhep_libdi    
156     get_filename_component(_system_clhep_libdi    
157     set(G4_SYSTEM_CLHEP_LIBRARIES "-L${_system    
158                                                   
159     foreach(_clhep_lib ${CLHEP_LIBRARIES})        
160       get_target_property(_curlib "${_clhep_li    
161       get_filename_component(_curlib "${_curli    
162       string(REGEX REPLACE "^lib(.*)\\.(so|a|d    
163       set(G4_SYSTEM_CLHEP_LIBRARIES "${G4_SYST    
164     endforeach()                                  
165   else()                                          
166     set(G4_BUILTWITH_CLHEP "yes")                 
167   endif()                                         
168                                                   
169   # - EXPAT                                       
170   if(GEANT4_USE_SYSTEM_EXPAT)                     
171     set(G4_BUILTWITH_EXPAT "no")                  
172   else()                                          
173     set(G4_BUILTWITH_EXPAT "yes")                 
174   endif()                                         
175                                                   
176   # - ZLIB                                        
177   if(GEANT4_USE_SYSTEM_ZLIB)                      
178     set(G4_BUILTWITH_ZLIB "no")                   
179   else()                                          
180     set(G4_BUILTWITH_ZLIB "yes")                  
181   endif()                                         
182                                                   
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                                        
191   if(GEANT4_USE_GDML)                             
192     set(G4_BUILTWITH_GDML "yes")                  
193     set(G4_XERCESC_INCLUDE_DIRS ${XercesC_INCL    
194     list(REMOVE_DUPLICATES G4_XERCESC_INCLUDE_    
195     if(_cxx_compiler_dirs)                        
196       list(REMOVE_ITEM G4_XERCESC_INCLUDE_DIRS    
197     endif()                                       
198                                                   
199     set(G4_XERCESC_CFLAGS )                       
200     foreach(_dir ${G4_XERCESC_INCLUDE_DIRS})      
201       set(G4_XERCESC_CFLAGS "${G4_XERCESC_CFLA    
202     endforeach()                                  
203   else()                                          
204     set(G4_BUILTWITH_GDML "no")                   
205   endif()                                         
206                                                   
207   # - G3ToG4                                      
208   if(GEANT4_USE_G3TOG4)                           
209     set(G4_BUILTWITH_G3TOG4 "yes")                
210   else()                                          
211     set(G4_BUILTWITH_G3TOG4 "no")                 
212   endif()                                         
213                                                   
214   # - USolids                                     
215   if(GEANT4_USE_USOLIDS OR GEANT4_USE_PARTIAL_    
216     set(G4_BUILTWITH_USOLIDS "yes")               
217     get_target_property(G4_USOLIDS_INCLUDE_DIR    
218     list(REMOVE_DUPLICATES G4_USOLIDS_INCLUDE_    
219     foreach(_dir ${G4_USOLIDS_INCLUDE_DIRS})      
220       set(G4_USOLIDS_CFLAGS "${G4_USOLIDS_CFLA    
221     endforeach()                                  
222     # NB: should ALSO account for VecGeom havi    
223     # this is better handled through proper pk    
224   else()                                          
225     set(G4_BUILTWITH_USOLIDS "no")                
226   endif()                                         
227                                                   
228   # - Freetype                                    
229   if(GEANT4_USE_FREETYPE)                         
230     set(G4_BUILTWITH_FREETYPE "yes")              
231   else()                                          
232     set(G4_BUILTWITH_FREETYPE "no")               
233   endif()                                         
234                                                   
235   # - HDF5                                        
236   if(GEANT4_USE_HDF5)                             
237     set(G4_BUILTWITH_HDF5 "yes")                  
238   else()                                          
239     set(G4_BUILTWITH_HDF5 "no")                   
240   endif()                                         
241                                                   
242   # - Qt                                          
243   if(GEANT4_USE_QT)                               
244     set(G4_BUILTWITH_QT "yes")                    
245     set(_qtcomps Core Gui Widgets OpenGL)         
246     if(QT_VERSION_MAJOR VERSION_GREATER_EQUAL     
247       list(APPEND _qtcomp 3DCore 3DExtras 3DRe    
248     endif()                                       
249                                                   
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)    
256     if(_cxx_compiler_dirs)                        
257       list(REMOVE_ITEM G4_QT_INCLUDE_DIRS ${_c    
258     endif()                                       
259                                                   
260     set(G4_QT_CFLAGS )                            
261     foreach(_dir ${G4_QT_INCLUDE_DIRS})           
262       set(G4_QT_CFLAGS "${G4_QT_CFLAGS} -I${_d    
263     endforeach()                                  
264                                                   
265     if(APPLE AND G4_QT_CFLAGS MATCHES "QtCore\    
266       set(G4_QT_CFLAGS "${G4_QT_CFLAGS} -F${G4    
267     endif()                                       
268   else()                                          
269     set(G4_BUILTWITH_QT "no")                     
270   endif()                                         
271                                                   
272   # - QT3D                                        
273   if(GEANT4_USE_QT3D)                             
274     set(G4_BUILTWITH_QT3D "yes")                  
275   else()                                          
276     set(G4_BUILTWITH_QT3D "no")                   
277   endif()                                         
278                                                   
279   # - Motif                                       
280   if(GEANT4_USE_XM)                               
281     set(G4_BUILTWITH_MOTIF "yes")                 
282     set(G4_CONFIG_NEEDS_X11 TRUE)                 
283   else()                                          
284     set(G4_BUILTWITH_MOTIF "no")                  
285   endif()                                         
286                                                   
287   # - RayTracerX                                  
288   if(GEANT4_USE_RAYTRACER_X11)                    
289     set(G4_BUILTWITH_RAYTRACERX11 "yes")          
290     set(G4_CONFIG_NEEDS_X11 TRUE)                 
291   else()                                          
292     set(G4_BUILTWITH_RAYTRACERX11 "no")           
293   endif()                                         
294                                                   
295   # - OpenGL X11                                  
296   if(GEANT4_USE_OPENGL_X11)                       
297     set(G4_BUILTWITH_OPENGLX11 "yes")             
298     set(G4_CONFIG_NEEDS_X11 TRUE)                 
299   else()                                          
300     set(G4_BUILTWITH_OPENGLX11 "no")              
301   endif()                                         
302                                                   
303   # - OpenInventor                                
304   if(GEANT4_USE_INVENTOR)                         
305     set(G4_BUILTWITH_INVENTOR "yes")              
306   else()                                          
307     set(G4_BUILTWITH_INVENTOR "no")               
308   endif()                                         
309                                                   
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    
318   # paths to get a clean set suitable for incl    
319   if(G4_CONFIG_NEEDS_X11)                         
320     set(_raw_x11_includes ${X11_INCLUDE_DIR})     
321     list(REMOVE_DUPLICATES _raw_x11_includes)     
322     if(_cxx_compiler_dirs)                        
323       list(REMOVE_ITEM _raw_x11_includes ${_cx    
324     endif()                                       
325     set(G4_X11_CFLAGS )                           
326     foreach(_p ${_raw_x11_includes})              
327       set(G4_X11_CFLAGS "-I${_p} ${G4_X11_CFLA    
328     endforeach()                                  
329   endif()                                         
330                                                   
331   # Configure the script                          
332   # - BUILD TREE                                  
333   # Ouch, the include path will be LONG, but a    
334   # absolute paths...                             
335   set(GEANT4_CONFIG_SELF_LOCATION "# BUILD TRE    
336   set(GEANT4_CONFIG_INSTALL_PREFIX "${PROJECT_    
337   set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")      
338   # NB: this only works for *single* mode gene    
339   # generators, which mode to use is not clear    
340   set(GEANT4_CONFIG_LIBDIR ${CMAKE_LIBRARY_OUT    
341                                                   
342   get_property(__geant4_buildtree_include_dirs    
343     GEANT4_BUILDTREE_INCLUDE_DIRS)                
344                                                   
345   foreach(_dir ${__geant4_buildtree_include_di    
346     set(GEANT4_CONFIG_INCLUDE_DIRS "${GEANT4_C    
347     ${_dir}")                                     
348   endforeach()                                    
349                                                   
350   # - Data                                        
351   geant4_export_datasets(BUILD GEANT4_CONFIG_D    
352                                                   
353   # Configure the build tree script               
354   configure_file(                                 
355     ${PROJECT_SOURCE_DIR}/cmake/Templates/gean    
356     ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTO    
357     @ONLY                                         
358     )                                             
359                                                   
360   file(COPY                                       
361     ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTO    
362     DESTINATION ${PROJECT_BINARY_DIR}             
363     FILE_PERMISSIONS                              
364       OWNER_READ OWNER_WRITE OWNER_EXECUTE        
365       GROUP_READ GROUP_EXECUTE                    
366       WORLD_READ WORLD_EXECUTE                    
367     )                                             
368                                                   
369   # - Install Tree                                
370   # Much easier :-)                               
371   # Non-Relocatable case...                       
372   if(CMAKE_INSTALL_IS_NONRELOCATABLE)             
373     # Hardcoded paths                             
374     set(GEANT4_CONFIG_INSTALL_PREFIX "${CMAKE_    
375     set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")    
376     set(GEANT4_CONFIG_LIBDIR "${CMAKE_INSTALL_    
377     set(GEANT4_CONFIG_INCLUDE_DIRS "${CMAKE_IN    
378   else()                                          
379     # Calculate base of self contained install    
380     # CMAKE_INSTALL_FULL_BINDIR to CMAKE_INSTA    
381     file(RELATIVE_PATH _bin_to_prefix ${CMAKE_    
382     # Strip any trailing path separators just     
383     string(REGEX REPLACE "[/\\]$" "" _bin_to_p    
384                                                   
385     set(GEANT4_CONFIG_INSTALL_PREFIX "$scriptl    
386     set(GEANT4_CONFIG_INSTALL_EXECPREFIX \"\")    
387     set(GEANT4_CONFIG_LIBDIR "\${prefix}/${CMA    
388     set(GEANT4_CONFIG_INCLUDE_DIRS "\${prefix}    
389   endif()                                         
390                                                   
391   # - Data                                        
392   geant4_export_datasets(INSTALL GEANT4_CONFIG    
393                                                   
394   # Configure the install tree script             
395   configure_file(                                 
396     ${PROJECT_SOURCE_DIR}/cmake/Templates/gean    
397     ${PROJECT_BINARY_DIR}/InstallTreeFiles/gea    
398     @ONLY                                         
399     )                                             
400                                                   
401   # Install it                                    
402   install(FILES ${PROJECT_BINARY_DIR}/InstallT    
403     DESTINATION ${CMAKE_INSTALL_BINDIR}           
404     PERMISSIONS                                   
405       OWNER_READ OWNER_WRITE OWNER_EXECUTE        
406       GROUP_READ GROUP_EXECUTE                    
407       WORLD_READ WORLD_EXECUTE                    
408     COMPONENT Development                         
409     )                                             
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()