Advertisement
Guest User

Untitled

a guest
Jul 12th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 5.22 KB | None | 0 0
  1. ###### FHICL set up
  2. include(ExternalProject)
  3.  
  4. ExternalProject_Add(larsyst
  5.   PREFIX "${PROJECT_BINARY_DIR}/larsyst"
  6.   GIT_REPOSITORY https://github.com/luketpickering/larsyst.git
  7.   GIT_TAG develop
  8.   UPDATE_DISCONNECTED 1
  9.   CMAKE_ARGS -DUSEART=0
  10.   -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
  11.   -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
  12.   -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  13.   -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
  14.  
  15. ###### ROOT set up
  16.  
  17. if (NOT DEFINED ENV{ROOTSYS})
  18.   message (FATAL_ERROR "$ROOTSYS is not defined, please set up ROOT first.")
  19. else()
  20.   message(STATUS "Using ROOT installed at $ENV{ROOTSYS}")
  21.   set(CMAKE_ROOTSYS $ENV{ROOTSYS})
  22. endif()
  23.  
  24. # Get cflags from ROOT
  25. execute_process (COMMAND root-config
  26.   --cflags OUTPUT_VARIABLE ROOT_CXX_FLAGS_RAW OUTPUT_STRIP_TRAILING_WHITESPACE)
  27. string(REPLACE " " ";" ROOT_CXX_FLAGS_PREPARSE "${ROOT_CXX_FLAGS_RAW}")
  28. set(ROOT_CXX_FLAGS_SCRUBBED "")
  29. foreach(FLG ${ROOT_CXX_FLAGS_PREPARSE})
  30.   string(REGEX MATCH "-std=" ISSTDFLAG ${FLG})
  31.   if(NOT ISSTDFLAG) #ignore -std= flags from ROOT config
  32.     SET(ROOT_CXX_FLAGS_SCRUBBED "${ROOT_CXX_FLAGS_SCRUBBED} ${FLG}")
  33.   endif()
  34. endforeach()
  35. # Get libdir from ROOT
  36. execute_process (COMMAND root-config
  37.   --libdir OUTPUT_VARIABLE ROOT_LIBDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
  38. # Get version from ROOT
  39. execute_process (COMMAND root-config
  40.   --version OUTPUT_VARIABLE ROOT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
  41. # Get features from ROOT
  42. execute_process (COMMAND root-config
  43.   --features OUTPUT_VARIABLE ROOT_FEATURES OUTPUT_STRIP_TRAILING_WHITESPACE)
  44.  
  45. SET(ROOT_LIBS)
  46. LIST(APPEND ROOT_LIBS
  47.   Core
  48.   RIO
  49.   XMLIO
  50.   Net
  51.   Hist
  52.   Graf
  53.   Graf3d
  54.   Gpad
  55.   Tree
  56.   Rint
  57.   Postscript
  58.   Matrix
  59.   Physics
  60.   MathCore
  61.   Thread
  62.   EG
  63.   Geom
  64.   GenVector
  65.   EGPythia6
  66.   Pythia6)
  67.  
  68. message (STATUS "[ROOT]: root-config --version: ${ROOT_VERSION} ")
  69. message (STATUS "[ROOT]: root-config --cflags : ${ROOT_CXX_FLAGS_SCRUBBED} ")
  70. message (STATUS "[ROOT]: libs in use          : ${ROOT_LIBS} ")
  71.  
  72. ###### GENIE setup
  73.   include(${CMAKE_CURRENT_SOURCE_DIR}/GENIESetup.cmake)
  74. ###### Compiler set up
  75. #-Wl,--no-as-needed used to ensuring dynamic linking of GENIE algorithm libraries so that TClass::GetClass has access to the dictionaries at runtime
  76. set(EXTRA_LINK_FLAGS "-Wl,--no-as-needed -L${CMAKE_INSTALL_PREFIX}/lib ${STR_GENIE_LINK_DIRS} -L${ROOT_LIBDIR}")
  77. if(CMAKE_LINK_FLAGS STREQUAL "")
  78.   SET(CMAKE_LINK_FLAGS "${EXTRA_LINK_FLAGS}")
  79. else()
  80.   SET(CMAKE_LINK_FLAGS "${CMAKE_LINK_FLAGS} ${EXTRA_LINK_FLAGS}")
  81. endif()
  82.  
  83. set(EXTRA_CXX_FLAGS "-DNO_ART -std=c++1y ${ROOT_CXX_FLAGS_SCRUBBED} ${GENIE_CXX_FLAGS}")
  84. if(CMAKE_CXX_FLAGS STREQUAL "")
  85.   SET(CMAKE_CXX_FLAGS ${EXTRA_CXX_FLAGS})
  86. else()
  87.   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXX_FLAGS}")
  88. endif()
  89.  
  90. include_directories(${GENIE_INCLUDE_DIRS})
  91. include_directories(${CMAKE_INSTALL_PREFIX}/include)
  92. include_directories(${CMAKE_SOURCE_DIR})
  93.  
  94. ####### responsecalculators library
  95. SET(RC_HDRFILES
  96.   ${CMAKE_SOURCE_DIR}/nusyst/responsecalculators/BeRPA.hh
  97.   ${CMAKE_SOURCE_DIR}/nusyst/responsecalculators/TemplateResponseCalculatorBase.hh
  98.   ${CMAKE_SOURCE_DIR}/nusyst/responsecalculators/MKSinglePiEnuq0q3_ReWeight.hh
  99.   ${CMAKE_SOURCE_DIR}/nusyst/responsecalculators/MINERvA2p2hq0q3.hh
  100.   ${CMAKE_SOURCE_DIR}/nusyst/responsecalculators/MINERvAq0q3Weighting_data.hh
  101.   ${CMAKE_SOURCE_DIR}/nusyst/responsecalculators/MINERvARPAq0q3_ReWeight.hh)
  102.  
  103. INSTALL(FILES ${RC_HDRFILES} DESTINATION include/nusyst/responsecalculators)
  104.  
  105. ####### systproviders library
  106. SET(SP_IMPLFILES
  107.   ${CMAKE_SOURCE_DIR}/nusyst/systproviders/GENIEReWeight_tool.cc
  108.   ${CMAKE_SOURCE_DIR}/nusyst/systproviders/GENIEReWeightEngineConfig.cc
  109.   ${CMAKE_SOURCE_DIR}/nusyst/systproviders/MKSinglePiEnuq0q3_tool.cc
  110.  ${CMAKE_SOURCE_DIR}/nusyst/systproviders/MINERvAq0q3Weighting_tool.cc)
  111.  
  112. SET(SP_HDRFILES
  113.   ${CMAKE_SOURCE_DIR}/nusyst/systproviders/GENIEReWeight_tool.hh
  114.   ${CMAKE_SOURCE_DIR}/nusyst/systproviders/MKSinglePiEnuq0q3_tool.hh
  115.  ${CMAKE_SOURCE_DIR}/nusyst/systproviders/MINERvAq0q3Weighting_tool.hh)
  116.  
  117. if(CMAKE_BUILD_TYPE MATCHES DEBUG)
  118.   add_library(nusyst_systproviders STATIC ${SP_IMPLFILES})
  119. else(CMAKE_BUILD_TYPE MATCHES RELEASE)
  120.   add_library(nusyst_systproviders SHARED ${SP_IMPLFILES})
  121. endif()
  122.  
  123. add_dependencies(nusyst_systproviders larsyst)
  124.  
  125. INSTALL(TARGETS nusyst_systproviders DESTINATION lib)
  126. INSTALL(FILES ${SP_HDRFILES} DESTINATION include/nusyst/systproviders)
  127.  
  128. ####### GENIE RwExample
  129. add_executable(ReWeightGHep ReWeightGHep.cc)
  130. add_dependencies(ReWeightGHep larsyst)
  131. target_link_libraries(ReWeightGHep nusyst_systproviders)
  132.  
  133. set_target_properties(ReWeightGHep PROPERTIES LINK_FLAGS ${CMAKE_LINK_FLAGS})
  134. target_link_libraries(ReWeightGHep
  135.   larsyst_utility
  136.   larsyst_interpreters)
  137. target_link_libraries(ReWeightGHep ${GENIE_LIBS})
  138. target_link_libraries(ReWeightGHep ${ROOT_LIBS})
  139.  
  140. INSTALL(TARGETS ReWeightGHep DESTINATION bin)
  141.  
  142. ####### fhicl files
  143. file(GLOB FCL ${CMAKE_SOURCE_DIR}/nusyst/fcl/*.fcl)
  144. install(FILES ${FCL} DESTINATION ${CMAKE_INSTALL_PREFIX}/fcl)
  145.  
  146. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/setup.sh.in
  147.   "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/setup.sh" @ONLY)
  148. install(FILES
  149.   "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/setup.sh" DESTINATION
  150.   ${CMAKE_INSTALL_PREFIX})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement