Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/cmake/Modules/FindPythia8.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 ]

  1 #[=======================================================================[.rst:
  2 FindPythia8
  3 ---------
  4 
  5 Find the Pythia8 event generator headers and library.
  6 
  7 Imported Targets
  8 ^^^^^^^^^^^^^^^^
  9 
 10 This module defines the following :prop_tgt:`IMPORTED` targets:
 11 
 12 ``Pythia8::Pythia8``
 13   The Pythia8 ``pythia8`` library, if found.
 14 
 15 Result Variables
 16 ^^^^^^^^^^^^^^^^
 17 
 18 This module will set the following variables in your project:
 19 
 20 ``Pythia8_FOUND``
 21   true if the Pythia8 headers and libraries were found.
 22 
 23 Hints
 24 ^^^^^
 25 
 26 A user may set ``Pythia8_ROOT`` to a Pythia8 installation root to tell this
 27 module where to look.
 28 
 29 #]=======================================================================]
 30 
 31 # WE ONLY ALLOW USE OF THIS MODULE IN GEANT4 OR py8decayer EXAMPLE
 32 if(NOT PROJECT_NAME MATCHES "Geant4|py8decayer")
 33   message(FATAL_ERROR "This FindPythia8.cmake module is only supported for use in Geant4's py8decayer "
 34     "extended example. No support or extension of this module for use outside of this example "
 35     "will be provided.")
 36 endif()
 37 
 38 # Look for the header file
 39 find_path(Pythia8_INCLUDE_DIR 
 40   NAMES Pythia8/Pythia.h
 41   HINTS ${Pythia8_ROOT}/include)
 42 
 43 if(NOT Pythia8_LIBRARY)
 44   find_library(Pythia8_LIBRARY
 45     NAMES pythia8 Pythia8 
 46     HINTS ${Pythia8_ROOT}/lib ${Pythia8_ROOT}/lib64)
 47 endif()
 48 
 49 # Determine the version
 50 if(Pythia8_INCLUDE_DIR AND EXISTS "${Pythia8_INCLUDE_DIR}/Pythia8/Pythia.h")
 51   file(STRINGS "${Pythia8_INCLUDE_DIR}/Pythia8/Pythia.h" PYTHIA8_H REGEX "^#define PYTHIA_VERSION.*$")
 52   if(PYTHIA8_H MATCHES "PYTHIA_VERSION ([0-9]\\.[0-9]+)$")
 53     set(Pythia8_VERSION "${CMAKE_MATCH_1}")
 54   else()
 55     set(Pythia8_VERSION "")
 56   endif()
 57 endif()
 58 
 59 # handle the QUIETLY and REQUIRED arguments and set Pythia8_FOUND to TRUE if
 60 # all listed variables are TRUE
 61 include(FindPackageHandleStandardArgs)
 62 find_package_handle_standard_args(Pythia8 
 63   REQUIRED_VARS Pythia8_INCLUDE_DIR Pythia8_LIBRARY
 64   VERSION_VAR Pythia8_VERSION)
 65 
 66 mark_as_advanced(Pythia8_INCLUDE_DIR Pythia8_LIBRARY)
 67 
 68 # Create imported target
 69 if(Pythia8_FOUND)
 70   if(NOT TARGET Pythia8::Pythia8)
 71     add_library(Pythia8::Pythia8 UNKNOWN IMPORTED)
 72     set_target_properties(Pythia8::Pythia8 PROPERTIES
 73       INTERFACE_INCLUDE_DIRECTORIES "${Pythia8_INCLUDE_DIR}"
 74       IMPORTED_LOCATION ${Pythia8_LIBRARY})
 75   endif()
 76 endif()