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 10.4.p2)


  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:                                         << 
116 # Custom ``validate_no_module_cycles`` and ``v << 
117 # are declared if Python3.9 is available.      << 
118 # These runs the geant4_module_check.py Python << 
119 # inconsistencies in the module dependency gra << 
120 find_package(Python3 3.9 QUIET COMPONENTS Inte << 
121 if(Python3_FOUND)                              << 
122   set(G4MODULE_VALIDATION_CMD Python3::Interpr << 
123     ${PROJECT_SOURCE_DIR}/cmake/Modules/geant4 << 
124     -db ${PROJECT_BINARY_DIR}/G4ModuleInterfac << 
125                                                << 
126   add_custom_target(validate_no_module_cycles  << 
127     COMMAND ${G4MODULE_VALIDATION_CMD} --find- << 
128     COMMENT "Checking for cycles in declared s << 
129     )                                          << 
130                                                << 
131   add_custom_target(validate_module_consistenc << 
132     COMMAND ${G4MODULE_VALIDATION_CMD} --find- << 
133     COMMENT "Checking for inconsistencies in d << 
134     USES_TERMINAL                              << 
135     )                                          << 
136 endif()                                        << 
137                                                << 
138 #---------------------------------------------    115 #-----------------------------------------------------------------------
139 #.rst:                                            116 #.rst:
140 # General Installation Settings                   117 # General Installation Settings
141 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                   118 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
142 #                                              << 
143 # Geant4 custom defaults                       << 
144                                                << 
145 set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PA << 
146   "Read-only architecture-independent data roo << 
147                                                << 
148 set(CMAKE_INSTALL_DATADIR                      << 
149   "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME << 
150   "Read-only architecture-independent data (DA << 
151                                                << 
152 #                                                 119 #
153 # CMake's builtin `GNUInstallDirs` module is u    120 # CMake's builtin `GNUInstallDirs` module is used to set and provide variables
154 # for the destinations to which for executable    121 # for the destinations to which for executables, libraries and other files
155 # should be installed.                            122 # should be installed.
156 #                                                 123 #
157 include(GNUInstallDirs)                           124 include(GNUInstallDirs)
158                                                   125 
159 # Check for non-relocatable install directorie    126 # Check for non-relocatable install directories
160 foreach(dir                                       127 foreach(dir
161     BINDIR                                        128     BINDIR
162     LIBDIR                                        129     LIBDIR
163     INCLUDEDIR                                    130     INCLUDEDIR
164     DATAROOTDIR                                   131     DATAROOTDIR
165     DATADIR                                       132     DATADIR
166     MANDIR                                        133     MANDIR
167     DOCDIR                                        134     DOCDIR
168     )                                             135     )
169   if(IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})         136   if(IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
170     set(CMAKE_INSTALL_IS_NONRELOCATABLE 1)        137     set(CMAKE_INSTALL_IS_NONRELOCATABLE 1)
171   endif()                                         138   endif()
172 endforeach()                                      139 endforeach()
173                                                   140 
174 #.rst:                                            141 #.rst:
175 # The following CMake variables are additional    142 # The following CMake variables are additionally set to control install
176 # policy and reporting:                           143 # policy and reporting:
177                                                   144 
178 #.rst:                                            145 #.rst:
179 # - ``CMAKE_INSTALL_MESSAGE`` : ``LAZY``          146 # - ``CMAKE_INSTALL_MESSAGE`` : ``LAZY``
180 #                                                 147 #
181 #   - Only report new or updated files install    148 #   - Only report new or updated files installed by the ``install`` target.
182 #                                                 149 #
183 set(CMAKE_INSTALL_MESSAGE LAZY)                   150 set(CMAKE_INSTALL_MESSAGE LAZY)
184                                                   151 
185 #.rst:                                            152 #.rst:
186 # An `uninstall` target is provided to assist     153 # An `uninstall` target is provided to assist in removing previously installed
187 # files. It will not remove any installed dire    154 # files. It will not remove any installed directories per standard behaviour.
188 # Note that if files are removed from the inst    155 # Note that if files are removed from the install manifest between invocations
189 # of the `install` and `uninstall` targets, th    156 # of the `install` and `uninstall` targets, they will *not* be removed by the
190 # latter.                                         157 # latter.
191 #                                                 158 #
192 include(CMakeUninstallTarget)                     159 include(CMakeUninstallTarget)
193                                                   160