Advertisement
Guest User

Untitled

a guest
Jul 12th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 8.64 KB | None | 0 0
  1. # Adapted for nusyst by L. Pickering, originally from the NUISANCE package
  2.  
  3. # Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret
  4.  
  5. ################################################################################
  6. #    This file is part of NUISANCE.
  7. #
  8. #    NUISANCE is free software: you can redistribute it and/or modify
  9. #    it under the terms of the GNU General Public License as published by
  10. #    the Free Software Foundation, either version 3 of the License, or
  11. #    (at your option) any later version.
  12. #
  13. #    NUISANCE is distributed in the hope that it will be useful,
  14. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. #    GNU General Public License for more details.
  17. #
  18. #    You should have received a copy of the GNU General Public License
  19. #    along with NUISANCE.  If not, see <http://www.gnu.org/licenses/>.
  20. ################################################################################
  21.  
  22. #################################  GENIE  ######################################
  23. if(GENIE STREQUAL "")
  24.   message(FATAL_ERROR "Variable GENIE is not defined. "
  25.     "The location of a pre-built GENIE install must be defined either as"
  26.     " $ cmake -DGENIE=/path/to/GENIE or as and environment vairable"
  27.     " $ export GENIE=/path/to/GENIE")
  28. endif()
  29.  
  30. find_program(GENIECFG genie-config)
  31. if(GENIECFG STREQUAL "GENIECFG-NOTFOUND")
  32.   message(FATAL_ERROR "Failed to find the genie-config program. Is the GENIE environment set up?")
  33. endif()
  34.  
  35. execute_process (COMMAND ${GENIECFG}
  36.   --libs OUTPUT_VARIABLE GENIE_LD_FLAGS_STR OUTPUT_STRIP_TRAILING_WHITESPACE)
  37. execute_process (COMMAND ${GENIECFG}
  38.   --topsrcdir OUTPUT_VARIABLE GENIE_INCLUDES_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
  39.  
  40. string(REGEX MATCH "-L\([^ ]+\) \(.*\)$" PARSE_GENIE_LIBS_MATCH ${GENIE_LD_FLAGS_STR})
  41.  
  42. message(STATUS "genie-config --libs: ${GENIE_LD_FLAGS_STR}")
  43.  
  44. if(NOT PARSE_GENIE_LIBS_MATCH)
  45.   message(FATAL_ERROR "Expected to be able to parse the result of genie-config --libs to a lib directory and a list of libraries to include, but got: \"${GENIE_LD_FLAGS_STR}\"")
  46. endif()
  47.  
  48. set(GENIE_LIB_DIR ${CMAKE_MATCH_1})
  49. set(GENIE_LIBS_RAW ${CMAKE_MATCH_2})
  50. string(REPLACE "-l" "" GENIE_LIBS_STRIPED "${GENIE_LIBS_RAW}")
  51.  
  52. message(STATUS "GENIE version : ${GENIE_VERSION}")
  53. message(STATUS "GENIE libdir  : ${GENIE_LIB_DIR}")
  54. message(STATUS "GENIE libs    : ${GENIE_LIBS_STRIPED}")
  55.  
  56. string(REGEX MATCH "ReWeight" WASMATCHED ${GENIE_LIBS_STRIPED})
  57. if(NOT WASMATCHED)
  58.   set(GENIE_LIBS_STRIPED "GReWeight ${GENIE_LIBS_STRIPED}")
  59.   message(STATUS "Force added ReWeight library: ${GENIE_LIBS_STRIPED}")
  60. endif()
  61.  
  62. string(REPLACE " " ";" GENIE_LIBS_LIST "${GENIE_LIBS_STRIPED}")
  63. message(STATUS "genie-config --libs -- MATCH1: ${CMAKE_MATCH_1}")
  64. message(STATUS "genie-config --libs -- MATCH2: ${CMAKE_MATCH_2}")
  65. message(STATUS "genie-config --libs -- libs stripped: ${GENIE_LIBS_STRIPED}")
  66. message(STATUS "genie-config --libs -- libs list: ${GENIE_LIBS_LIST}")
  67.  
  68. ##############################  VARIABLES  #####################################
  69. function(CheckAndSetDefaultEnv VARNAME DEFAULT CACHETYPE DOCSTRING ENVNAME)
  70.   if(NOT DEFINED ${VARNAME})
  71.     if(DEFINED ENV{${ENVNAME}} AND NOT $ENV{${ENVNAME}} STREQUAL "")
  72.       set(${VARNAME} $ENV{${ENVNAME}} CACHE ${CACHETYPE} ${DOCSTRING})
  73.     else()
  74.       set(${VARNAME} ${DEFAULT} CACHE ${CACHETYPE} ${DOCSTRING})
  75.     endif()
  76.   else()
  77.     set(${VARNAME} ${${VARNAME}} CACHE ${CACHETYPE} ${DOCSTRING})
  78.     unset(${VARNAME})
  79.   endif()
  80. endfunction()
  81.  
  82. CheckAndSetDefaultEnv(GENIE "" PATH "Path to GENIE source tree root directory. Overrides environment variable \$GENIE <>" GENIE)
  83. CheckAndSetDefaultEnv(LHAPDF_LIB "" PATH "Path to pre-built LHAPDF libraries. Overrides environment variable \$LHAPDF_LIB. <>" LHAPDF_LIB)
  84. CheckAndSetDefaultEnv(LHAPDF_INC "" PATH "Path to installed LHAPDF headers. Overrides environment variable \$LHAPDF_INC. <>" LHAPDF_INC)
  85. CheckAndSetDefaultEnv(LHAPATH "" PATH "Path to LHA PDF inputs. Overrides environment variable \$LHAPATH. <>" LHAPATH)
  86. CheckAndSetDefaultEnv(LIBXML2_LIB "" PATH "Path to pre-built LIBXML2 libraries. Overrides environment variable \$LIBXML2_LIB. <>" LIBXML2_LIB)
  87. CheckAndSetDefaultEnv(LIBXML2_INC "" PATH "Path to installed LIBXML2 headers. Overrides environment variable \$LIBXML2_INC. <>" LIBXML2_INC)
  88. CheckAndSetDefaultEnv(LOG4CPP_LIB "" PATH "Path to pre-built LOG4CPP libraries. Overrides environment variable \$LOG4CPP_LIB. <>" LOG4CPP_LIB)
  89. CheckAndSetDefaultEnv(LOG4CPP_INC "" PATH "Path to installed LOG4CPP headers. Overrides environment variable \$LOG4CPP_INC. <>" LOG4CPP_INC)
  90. CheckAndSetDefaultEnv(PYTHIA6 "" PATH "Path to directory containing Pythia6 library. Overrides environment variable \$PYTHIA6. <>" PYTHIA6)
  91.  
  92. ################################  LHAPDF  ######################################
  93. if(LHAPDF_LIB STREQUAL "")
  94.   message(FATAL_ERROR "Variable LHAPDF_LIB is not defined. The location of a pre-built lhapdf install must be defined either as $ cmake -DLHAPDF_LIB=/path/to/LHAPDF_libraries or as and environment vairable $ export LHAPDF_LIB=/path/to/LHAPDF_libraries")
  95. endif()
  96.  
  97. if(LHAPDF_INC STREQUAL "")
  98.   message(FATAL_ERROR "Variable LHAPDF_INC is not defined. The location of a pre-built lhapdf install must be defined either as $ cmake -DLHAPDF_INC=/path/to/LHAPDF_includes or as and environment vairable $ export LHAPDF_INC=/path/to/LHAPDF_includes")
  99. endif()
  100.  
  101. if(LHAPATH STREQUAL "")
  102.   message(FATAL_ERROR "Variable LHAPATH is not defined. The location of a the LHAPATH directory must be defined either as $ cmake -DLHAPATH=/path/to/LHAPATH or as and environment variable $ export LHAPATH=/path/to/LHAPATH")
  103. endif()
  104.  
  105. ################################  LIBXML  ######################################
  106. if(LIBXML2_LIB STREQUAL "")
  107.   message(FATAL_ERROR "Variable LIBXML2_LIB is not defined. The location of a pre-built libxml2 install must be defined either as $ cmake -DLIBXML2_LIB=/path/to/LIBXML2_libraries or as and environment vairable $ export LIBXML2_LIB=/path/to/LIBXML2_libraries")
  108. endif()
  109.  
  110. if(LIBXML2_INC STREQUAL "")
  111.   message(FATAL_ERROR "Variable LIBXML2_INC is not defined. The location of a pre-built libxml2 install must be defined either as $ cmake -DLIBXML2_INC=/path/to/LIBXML2_includes or as and environment vairable $ export LIBXML2_INC=/path/to/LIBXML2_includes")
  112. endif()
  113. ###############################  log4cpp  ######################################
  114. if(LOG4CPP_LIB STREQUAL "")
  115.   find_program(LOG4CPPCFG log4cpp-config)
  116.   if(NOT LOG4CPPCFG STREQUAL "LOG4CPPCFG-NOTFOUND")
  117.     execute_process (COMMAND ${LOG4CPPCFG}
  118.     --pkglibdir OUTPUT_VARIABLE LOG4CPP_LIB OUTPUT_STRIP_TRAILING_WHITESPACE)
  119.   else()
  120.     message(FATAL_ERROR "Variable LOG4CPP_LIB is not defined. The location of a pre-built log4cpp install must be defined either as $ cmake -DLOG4CPP_LIB=/path/to/LOG4CPP_libraries or as and environment vairable $ export LOG4CPP_LIB=/path/to/LOG4CPP_libraries")
  121.   endif()
  122. endif()
  123.  
  124. if(LOG4CPP_INC  STREQUAL "")
  125.   find_program(LOG4CPPCFG log4cpp-config)
  126.   if(NOT LOG4CPPCFG STREQUAL "LOG4CPPCFG-NOTFOUND")
  127.     execute_process (COMMAND ${LOG4CPPCFG}
  128.     --pkgincludedir OUTPUT_VARIABLE LOG4CPP_INC OUTPUT_STRIP_TRAILING_WHITESPACE)
  129.   else()
  130.     message(FATAL_ERROR "Variable LOG4CPP_INC is not defined. The location of a pre-built log4cpp install must be defined either as $ cmake -DGENIE_LOG4CPP_INC=/path/to/LOG4CPP_includes or as and environment vairable $ export LOG4CPP_INC=/path/to/LOG4CPP_includes")
  131.   endif()
  132. endif()
  133.  
  134. if(PYTHIA6 STREQUAL "")
  135.   message(FATAL_ERROR "Variable PYTHIA6 is not defined. The location of a pre-built PYTHIA6 prefix must be defined either as $ cmake -DPYTHIA6=/path/to/PYTHIA6 or as and environment vairable $ export PYTHIA6=/path/to/PYTHIA6")
  136. endif()
  137. ################################################################################
  138.  
  139. SET(GENIE_CXX_FLAGS -D__GENIE_ENABLED__)
  140.  
  141. SET(GENIE_INCLUDE_DIRS)
  142. LIST(APPEND GENIE_INCLUDE_DIRS
  143.   ${GENIE_INCLUDES_DIR}
  144.   ${LHAPDF_INC}
  145.   ${LIBXML2_INC}
  146.   ${LOG4CPP_INC})
  147.  
  148. LIST(APPEND GENIE_LINK_DIRS
  149.   ${GENIE_LIB_DIR}
  150.   ${PYTHIA6}
  151.   ${LHAPDF_LIB}
  152.   ${LIBXML2_LIB}
  153.   ${LOG4CPP_LIB})
  154.  
  155. LIST(APPEND GENIE_LIBS ${GENIE_LIBS_LIST})
  156. LIST(APPEND GENIE_LIBS LHAPDF xml2 log4cpp)
  157.  
  158. if(NOT GENIE_LINK_DIRS STREQUAL "")
  159.   string(REPLACE ";" " -L" STR_GENIE_LINK_DIRS "-L${GENIE_LINK_DIRS}")
  160. endif()
  161.  
  162. if(NOT GENIE_LIBS STREQUAL "")
  163.   string(REPLACE ";" " -l" STR_GENIE_LIBS "-l${GENIE_LIBS}")
  164. endif()
  165.  
  166. message (STATUS "[GENIE]: Includes : ${GENIE_INCLUDE_DIRS} ")
  167. message (STATUS "[GENIE]: Link dirs: ${STR_GENIE_LINK_DIRS} ")
  168. message (STATUS "[GENIE]: Link libs: ${STR_GENIE_LIBS} ")
  169.  
  170. SET(GENIE_LIBS ${GENIE_LIBS};${GENIE_LIBS})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement