Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/cmake/Modules/G4CMakeSettings.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/G4CMakeSettings.cmake (Version 11.3.0) and /cmake/Modules/G4CMakeSettings.cmake (Version 11.2.1)


  1 #.rst:                                              1 #.rst:
  2 # G4CMakeSettings.cmake                             2 # G4CMakeSettings.cmake
  3 # ---------------------                             3 # ---------------------
  4 #                                                   4 #
  5 # Set defaults for core CMake behaviour useful      5 # Set defaults for core CMake behaviour useful or required for building,
  6 # testing and installing Geant4.                    6 # testing and installing Geant4.
  7                                                     7 
  8 #---------------------------------------------      8 #-----------------------------------------------------------------
  9 # License and Disclaimer                            9 # License and Disclaimer
 10 #                                                  10 #
 11 # The  Geant4 software  is  copyright of the C     11 # The  Geant4 software  is  copyright of the Copyright Holders  of
 12 # the Geant4 Collaboration.  It is provided  u     12 # the Geant4 Collaboration.  It is provided  under  the terms  and
 13 # conditions of the Geant4 Software License,       13 # conditions of the Geant4 Software License,  included in the file
 14 # LICENSE and available at  http://cern.ch/gea     14 # LICENSE and available at  http://cern.ch/geant4/license .  These
 15 # include a list of copyright holders.             15 # include a list of copyright holders.
 16 #                                                  16 #
 17 # Neither the authors of this software system,     17 # Neither the authors of this software system, nor their employing
 18 # institutes,nor the agencies providing financ     18 # institutes,nor the agencies providing financial support for this
 19 # work  make  any representation or  warranty,     19 # work  make  any representation or  warranty, express or implied,
 20 # regarding  this  software system or assume a     20 # regarding  this  software system or assume any liability for its
 21 # use.  Please see the license in the file  LI     21 # use.  Please see the license in the file  LICENSE  and URL above
 22 # for the full disclaimer and the limitation o     22 # for the full disclaimer and the limitation of liability.
 23 #                                                  23 #
 24 # This  code  implementation is the result of      24 # This  code  implementation is the result of  the  scientific and
 25 # technical work of the GEANT4 collaboration.      25 # technical work of the GEANT4 collaboration.
 26 # By using,  copying,  modifying or  distribut     26 # By using,  copying,  modifying or  distributing the software (or
 27 # any work based  on the software)  you  agree     27 # any work based  on the software)  you  agree  to acknowledge its
 28 # use  in  resulting  scientific  publications     28 # use  in  resulting  scientific  publications,  and indicate your
 29 # acceptance of all terms of the Geant4 Softwa     29 # acceptance of all terms of the Geant4 Software license.
 30 #                                                  30 #
 31 #---------------------------------------------     31 #-----------------------------------------------------------------
 32                                                    32 
 33 if(NOT __G4CMAKESETTINGS_INCLUDED)                 33 if(NOT __G4CMAKESETTINGS_INCLUDED)
 34   set(__G4CMAKESETTINGS_INCLUDED TRUE)             34   set(__G4CMAKESETTINGS_INCLUDED TRUE)
 35 else()                                             35 else()
 36   return()                                         36   return()
 37 endif()                                            37 endif()
 38                                                    38 
 39 #---------------------------------------------     39 #-----------------------------------------------------------------------
 40 #.rst:                                             40 #.rst:
 41 # General Configuration Settings                   41 # General Configuration Settings
 42 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                   42 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 43 #                                                  43 #
 44 # The following CMake modules and variables ar     44 # The following CMake modules and variables are used to control configuration time
 45 # behaviour such as location of dependencies.      45 # behaviour such as location of dependencies.
 46 #                                                  46 #
 47                                                    47 
 48 #.rst:                                             48 #.rst:
 49 # - ``G4CMakeUtilities`                            49 # - ``G4CMakeUtilities`
 50 #                                                  50 #
 51 #   - Included to provide additional macros an     51 #   - Included to provide additional macros and functions
 52 #                                                  52 #
 53 include(G4CMakeUtilities)                          53 include(G4CMakeUtilities)
 54                                                    54 
 55 #                                                  55 #
 56 # - ``CMAKE_EXPORT_NO_PACKAGE_REGISTRY`` : ON      56 # - ``CMAKE_EXPORT_NO_PACKAGE_REGISTRY`` : ON
 57 # - ``CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY``     57 # - ``CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`` : ON
 58 # - ``CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REG     58 # - ``CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY`` : ON
 59 #                                                  59 #
 60 #   - These variables are set to ensure that C     60 #   - These variables are set to ensure that CMake never creates or searches
 61 #     for config files in any package registry     61 #     for config files in any package registry. This prevents the
 62 #     :cmake:command:`find_package <cmake:comm     62 #     :cmake:command:`find_package <cmake:command:find_package>`
 63 #     command from locating potentially spurio     63 #     command from locating potentially spurious config files.
 64 #                                                  64 #
 65 set(CMAKE_EXPORT_NO_PACKAGE_REGISTRY ON)           65 set(CMAKE_EXPORT_NO_PACKAGE_REGISTRY ON)
 66 set(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY ON)     66 set(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY ON)
 67 set(CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGIS     67 set(CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY ON)
 68                                                    68 
 69 #---------------------------------------------     69 #-----------------------------------------------------------------------
 70 #.rst:                                             70 #.rst:
 71 # General Build Settings                           71 # General Build Settings
 72 # ^^^^^^^^^^^^^^^^^^^^^^                           72 # ^^^^^^^^^^^^^^^^^^^^^^
 73 #                                                  73 #
 74 # The following CMake variables and options ar     74 # The following CMake variables and options are configured by default
 75 # when including this module:                      75 # when including this module:
 76 #                                                  76 #
 77 # - ``CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE     77 # - ``CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE`` : ON
 78 #                                                  78 #
 79 #   - Force project directories to appear firs     79 #   - Force project directories to appear first in any list of include paths.
 80 #     This applies to both full paths and thos     80 #     This applies to both full paths and those created by generator expressions.
 81 #                                                  81 #
 82 set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE O     82 set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
 83                                                    83 
 84 #.rst:                                             84 #.rst:
 85 # - ``CMAKE_LINK_DEPENDS_NO_SHARED`` : ON          85 # - ``CMAKE_LINK_DEPENDS_NO_SHARED`` : ON
 86 #                                                  86 #
 87 #   - Do not relink a target to any shared lib     87 #   - Do not relink a target to any shared library dependencies when
 88 #     only the shared library implementation h     88 #     only the shared library implementation has changed.
 89 #                                                  89 #
 90 set(CMAKE_LINK_DEPENDS_NO_SHARED ON)               90 set(CMAKE_LINK_DEPENDS_NO_SHARED ON)
 91                                                    91 
 92 #.rst:                                             92 #.rst:
 93 # A custom ``validate_sources`` targets is dec     93 # A custom ``validate_sources`` targets is declared to compare files listed
 94 # in `sources.cmake` scripts with on-disk file     94 # in `sources.cmake` scripts with on-disk files. As sources.cmake lists
 95 # source files of Geant4 explicitely, we can o     95 # source files of Geant4 explicitely, we can often a mismatch can occur
 96 # between this list and what's actually on dis     96 # between this list and what's actually on disk.
 97 #                                                  97 #
 98 # The ``validate_sources`` target executes a C     98 # The ``validate_sources`` target executes a CMake script to
 99 # check for these errors and report mismatches     99 # check for these errors and report mismatches. It fails with FATAL_ERROR
100 # if any mismatch is found, but will not do so    100 # if any mismatch is found, but will not do so until it has reported
101 # all errors.                                     101 # all errors.
102 # Configure the script                            102 # Configure the script
103 configure_file(                                   103 configure_file(
104   ${PROJECT_SOURCE_DIR}/cmake/Templates/geant4    104   ${PROJECT_SOURCE_DIR}/cmake/Templates/geant4_validate_sources.cmake.in
105   ${PROJECT_BINARY_DIR}/geant4_validate_source    105   ${PROJECT_BINARY_DIR}/geant4_validate_sources.cmake
106   @ONLY                                           106   @ONLY
107   )                                               107   )
108                                                   108 
109 # Create the target                               109 # Create the target
110 add_custom_target(validate_sources                110 add_custom_target(validate_sources
111   COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY    111   COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY_DIR}/geant4_validate_sources.cmake
112   COMMENT "Validating Geant4 Module Source Lis    112   COMMENT "Validating Geant4 Module Source Lists"
113   )                                               113   )
114                                                   114 
115 #.rst:                                            115 #.rst:
116 # Custom ``validate_no_module_cycles`` and ``v    116 # Custom ``validate_no_module_cycles`` and ``validate_module_consistency`` targets
117 # are declared if Python3.9 is available.         117 # are declared if Python3.9 is available.
118 # These runs the geant4_module_check.py Python    118 # These runs the geant4_module_check.py Python script to check for cycles or
119 # inconsistencies in the module dependency gra    119 # inconsistencies in the module dependency graph and declarations.
120 find_package(Python3 3.9 QUIET COMPONENTS Inte    120 find_package(Python3 3.9 QUIET COMPONENTS Interpreter)
121 if(Python3_FOUND)                                 121 if(Python3_FOUND)
122   set(G4MODULE_VALIDATION_CMD Python3::Interpr    122   set(G4MODULE_VALIDATION_CMD Python3::Interpreter
123     ${PROJECT_SOURCE_DIR}/cmake/Modules/geant4    123     ${PROJECT_SOURCE_DIR}/cmake/Modules/geant4_module_check.py 
124     -db ${PROJECT_BINARY_DIR}/G4ModuleInterfac    124     -db ${PROJECT_BINARY_DIR}/G4ModuleInterfaceMap.csv)
125                                                   125 
126   add_custom_target(validate_no_module_cycles     126   add_custom_target(validate_no_module_cycles
127     COMMAND ${G4MODULE_VALIDATION_CMD} --find-    127     COMMAND ${G4MODULE_VALIDATION_CMD} --find-cycles
128     COMMENT "Checking for cycles in declared s    128     COMMENT "Checking for cycles in declared source module dependencies"
129     )                                             129     )
130                                                   130   
131   add_custom_target(validate_module_consistenc    131   add_custom_target(validate_module_consistency
132     COMMAND ${G4MODULE_VALIDATION_CMD} --find-    132     COMMAND ${G4MODULE_VALIDATION_CMD} --find-inconsistencies
133     COMMENT "Checking for inconsistencies in d    133     COMMENT "Checking for inconsistencies in declared source module dependencies"
134     USES_TERMINAL                                 134     USES_TERMINAL
135     )                                             135     )
136 endif()                                           136 endif()
137                                                   137 
138 #---------------------------------------------    138 #-----------------------------------------------------------------------
139 #.rst:                                            139 #.rst:
140 # General Installation Settings                   140 # General Installation Settings
141 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                   141 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
142 #                                                 142 #
143 # Geant4 custom defaults                          143 # Geant4 custom defaults
144                                                   144 
145 set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PA    145 set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH
146   "Read-only architecture-independent data roo    146   "Read-only architecture-independent data root (share)")
147                                                   147 
148 set(CMAKE_INSTALL_DATADIR                         148 set(CMAKE_INSTALL_DATADIR
149   "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME    149   "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}" CACHE PATH
150   "Read-only architecture-independent data (DA    150   "Read-only architecture-independent data (DATAROOTDIR/${PROJECT_NAME})")
151                                                   151 
152 #                                                 152 #
153 # CMake's builtin `GNUInstallDirs` module is u    153 # CMake's builtin `GNUInstallDirs` module is used to set and provide variables
154 # for the destinations to which for executable    154 # for the destinations to which for executables, libraries and other files
155 # should be installed.                            155 # should be installed.
156 #                                                 156 #
157 include(GNUInstallDirs)                           157 include(GNUInstallDirs)
158                                                   158 
159 # Check for non-relocatable install directorie    159 # Check for non-relocatable install directories
160 foreach(dir                                       160 foreach(dir
161     BINDIR                                        161     BINDIR
162     LIBDIR                                        162     LIBDIR
163     INCLUDEDIR                                    163     INCLUDEDIR
164     DATAROOTDIR                                   164     DATAROOTDIR
165     DATADIR                                       165     DATADIR
166     MANDIR                                        166     MANDIR
167     DOCDIR                                        167     DOCDIR
168     )                                             168     )
169   if(IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})         169   if(IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
170     set(CMAKE_INSTALL_IS_NONRELOCATABLE 1)        170     set(CMAKE_INSTALL_IS_NONRELOCATABLE 1)
171   endif()                                         171   endif()
172 endforeach()                                      172 endforeach()
173                                                   173 
174 #.rst:                                            174 #.rst:
175 # The following CMake variables are additional    175 # The following CMake variables are additionally set to control install
176 # policy and reporting:                           176 # policy and reporting:
177                                                   177 
178 #.rst:                                            178 #.rst:
179 # - ``CMAKE_INSTALL_MESSAGE`` : ``LAZY``          179 # - ``CMAKE_INSTALL_MESSAGE`` : ``LAZY``
180 #                                                 180 #
181 #   - Only report new or updated files install    181 #   - Only report new or updated files installed by the ``install`` target.
182 #                                                 182 #
183 set(CMAKE_INSTALL_MESSAGE LAZY)                   183 set(CMAKE_INSTALL_MESSAGE LAZY)
184                                                   184 
185 #.rst:                                            185 #.rst:
186 # An `uninstall` target is provided to assist     186 # An `uninstall` target is provided to assist in removing previously installed
187 # files. It will not remove any installed dire    187 # files. It will not remove any installed directories per standard behaviour.
188 # Note that if files are removed from the inst    188 # Note that if files are removed from the install manifest between invocations
189 # of the `install` and `uninstall` targets, th    189 # of the `install` and `uninstall` targets, they will *not* be removed by the
190 # latter.                                         190 # latter.
191 #                                                 191 #
192 include(CMakeUninstallTarget)                     192 include(CMakeUninstallTarget)
193                                                   193