CMakeLists.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
  2. PROJECT (TTTT CXX)
  3. # Declare semantic versioning for FILVAL
  4. SET(FILVAL_VERSION_MAJOR 0)
  5. SET(FILVAL_VERSION_MINOR 1)
  6. SET(FILVAL_VERSION_PATCH 0)
  7. SET(CMAKE_BUILD_TYPE "Release")
  8. CONFIGURE_FILE (
  9. "${PROJECT_SOURCE_DIR}/filval/filval.hpp"
  10. "${PROJECT_BINARY_DIR}/filval/filval.hpp"
  11. )
  12. SET( TTTT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
  13. SET( TTTT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} )
  14. # Setup clang as the project compiler
  15. SET (CMAKE_CXX_COMPILER "/usr/bin/clang++")
  16. SET (CMAKE_CXX_FLAGS "-Wall")
  17. SET (CMAKE_CXX_FLAGS_DEBUG "-g")
  18. SET (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
  19. SET (CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
  20. SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
  21. SET (CMAKE_AR "/usr/bin/llvm-ar")
  22. SET (CMAKE_LINKER "/usr/bin/llvm-ld")
  23. SET (CMAKE_NM "/usr/bin/llvm-nm")
  24. SET (CMAKE_OBJDUMP "/usr/bin/llvm-objdump")
  25. SET (CMAKE_RANLIB "/usr/bin/llvm-ranlib")
  26. LIST( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake )
  27. FIND_PACKAGE(Jupyter)
  28. IF(NBCONVERT_FOUND)
  29. ADD_CUSTOM_TARGET(notebook-docs
  30. ${CMAKE_CURRENT_SOURCE_DIR}/cmake/convert_nb ${NBCONVERT_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen_site
  31. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  32. COMMENT "Converting Jupyter Notebooks to HTML" VERBATIM
  33. )
  34. ADD_CUSTOM_TARGET(notebooks
  35. ${CMAKE_CURRENT_SOURCE_DIR}/cmake/convert_nb ${NBCONVERT_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen_site --update
  36. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  37. COMMENT "Re-Running notebooks and converting to HTML" VERBATIM
  38. )
  39. ENDIF(NBCONVERT_FOUND)
  40. # add a target to generate API documentation with Doxygen
  41. FIND_PACKAGE(Doxygen)
  42. IF(DOXYGEN_FOUND)
  43. CONFIGURE_FILE(
  44. ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in
  45. ${CMAKE_CURRENT_BINARY_DIR}/doxygen_site/Doxyfile @ONLY
  46. )
  47. ADD_CUSTOM_TARGET(docs
  48. ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen_site/Doxyfile
  49. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doxygen_site
  50. COMMENT "Generating API documentation with Doxygen" VERBATIM
  51. DEPENDS notebook-docs
  52. )
  53. ADD_CUSTOM_TARGET(docs-deploy
  54. rsync -r ./doxygen_site/ caleb@fangmeier.tech:/var/www/tttt
  55. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  56. COMMENT "Deploy documentation to tttt.fangmeier.tech" VERBATIM
  57. DEPENDS docs
  58. )
  59. ENDIF(DOXYGEN_FOUND)
  60. ADD_SUBDIRECTORY(docs/)
  61. FIND_PACKAGE(ROOT REQUIRED)
  62. INCLUDE_DIRECTORIES( SYSTEM ${ROOT_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
  63. # Adds the dictionary library for addiitonal type serialization
  64. SET( CLINGDICTFILE ${CMAKE_CURRENT_BINARY_DIR}/clingdict.cpp )
  65. ROOT_GENERATE_DICTIONARY( "" ${CMAKE_CURRENT_SOURCE_DIR}/filval/root/LinkDef.hpp ${CLINGDICTFILE} "" )
  66. ADD_LIBRARY( filval SHARED ${CLINGDICTFILE} )
  67. # Compiles main analysis routine
  68. ADD_EXECUTABLE(main ${CMAKE_CURRENT_SOURCE_DIR}/analysis/TTTT_Analysis.cpp)
  69. TARGET_LINK_LIBRARIES( main filval ${ROOT_LIBRARIES} )
  70. # Compiles MVA creation routine
  71. ADD_EXECUTABLE(mva ${CMAKE_CURRENT_SOURCE_DIR}/analysis/MVA_Creation.cpp)
  72. TARGET_LINK_LIBRARIES( mva filval ${ROOT_LIBRARIES} )
  73. # Compiles Examples
  74. ADD_CUSTOM_TARGET(examples
  75. COMMENT "Building Examples"
  76. )
  77. FILE(GLOB ExampleSources ${CMAKE_CURRENT_SOURCE_DIR}/filval/examples/example*.cpp)
  78. FOREACH(ex_full_name IN LISTS ExampleSources)
  79. GET_FILENAME_COMPONENT(ex_name ${ex_full_name} NAME_WE)
  80. ADD_EXECUTABLE(${ex_name} EXCLUDE_FROM_ALL ${ex_full_name})
  81. ADD_DEPENDENCIES(examples ${ex_name})
  82. TARGET_LINK_LIBRARIES(${ex_name} filval ${ROOT_LIBRARIES} )
  83. ENDFOREACH(ex_full_name)