From 60893f8df4b1f02d6df51510be8b4765b97989f2 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Fri, 4 May 2018 16:23:45 +0200 Subject: [PATCH] push cmake further. --- src/CMakeLists.txt | 36 +++++++++-- src/classes/CMakeLists.txt | 124 +++++++++++++++++++++++++++++++++++++ 2 files changed, 155 insertions(+), 5 deletions(-) create mode 100644 src/classes/CMakeLists.txt diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 71a0ff05..5e9aaa6e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,5 @@ #--- add further sub-directories ---------------------------------------------- -#[==[ add_subdirectory(classes) -#]==] add_subdirectory(external) #[==[ if (Qt5Core_FOUND OR Qt4_FOUND) @@ -13,15 +11,43 @@ endif (QT_FOUND) #]==] #--- define the musrfit libs -------------------------------------------------- -#[==[ set(MUSRFIT_LIBS ${MUSRFIT_LIBS} mud) set(MUSRFIT_LIBS ${MUSRFIT_LIBS} TMusrRunHeader) set(MUSRFIT_LIBS ${MUSRFIT_LIBS} TLemRunHeader) set(MUSRFIT_LIBS ${MUSRFIT_LIBS} Class_MuSR_PSI) if (nexus) - set(MUSRFIT_LIBS ${MUSRFIT_LIBS} ${LIBNEXUS_LIBRARY}) + set(MUSRFIT_LIBS ${MUSRFIT_LIBS} ${NEXUS_LIBRARY}) set(MUSRFIT_LIBS ${MUSRFIT_LIBS} PNeXus) endif (nexus) set(MUSRFIT_LIBS ${MUSRFIT_LIBS} PMusr) -#]==] + +#--- start create git-revision.h ---------------------------------------------- +configure_file( + ${CMAKE_SOURCE_DIR}/cmake/configure_musrfit_version_file.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/configure_musrfit_version_file.cmake + @ONLY +) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/git-revision.h + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_BINARY_DIR}/configure_musrfit_version_file.cmake + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/configure_musrfit_version_file.cmake + ${CMAKE_SOURCE_DIR}/cmake/git-revision.h.in + COMMENT "Configuring git-revision.h" + VERBATIM +) + +add_custom_target( + configure_musrfit_version ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/git-revision.h +) +#--- end create git-revision.h ------------------------------------------------ + +#--- add all executables ------------------------------------------------------ +message("debug> ${CMAKE_BINARY_DIR}") +add_executable(any2many git-revision.h any2many.cpp) +target_include_directories(any2many BEFORE PRIVATE $) +target_link_libraries(any2many ${ROOT_LIBRARIES} ${FFTW3_LIBRARY} ${MUSRFIT_LIBS}) diff --git a/src/classes/CMakeLists.txt b/src/classes/CMakeLists.txt new file mode 100644 index 00000000..5812d537 --- /dev/null +++ b/src/classes/CMakeLists.txt @@ -0,0 +1,124 @@ +#--- build the PMusr and PUserFcnBase libs ------------------------------------ + +#--- generate necessary dictionaries ------------------------------------------ +set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include) +root_generate_dictionary( + PFourierCanvasDict ${MUSRFIT_INC}/PFourierCanvas.h LINKDEF ${MUSRFIT_INC}/PFourierCanvasLinkDef.h +) +root_generate_dictionary( + PMusrCanvasDict ${MUSRFIT_INC}/PMusrCanvas.h LINKDEF ${MUSRFIT_INC}/PMusrCanvasLinkDef.h +) +root_generate_dictionary( + PMusrT0Dict ${MUSRFIT_INC}/PMusrT0.h LINKDEF ${MUSRFIT_INC}/PMusrT0LinkDef.h +) +root_generate_dictionary( + PStartupHandlerDict ${MUSRFIT_INC}/PStartupHandler.h LINKDEF ${MUSRFIT_INC}/PStartupHandlerLinkDef.h +) +root_generate_dictionary( + PUserFcnBaseDict ${MUSRFIT_INC}/PUserFcnBase.h LINKDEF ${MUSRFIT_INC}/PUserFcnBaseLinkDef.h +) + +#--- create pkg-config info --------------------------------------------------- +set(prefix "${CMAKE_INSTALL_PREFIX}") +set(exec_prefix "\$\{prefix\}") +set(libdir "\$\{exec_prefix\}/lib") +set(includedir "\$\{prefix\}/include") +set(MUSR_VERSION "1.2.0") +set(MUSR_LIBRARY_NAME "PMusr") +configure_file("PMusr.pc.in" "PMusr.pc" @ONLY) +set(USERFCN_LIBRARY_NAME "PUserFcnBase") +configure_file("PUserFcnBase.pc.in" "PUserFcnBase.pc" @ONLY) + +#--- lib creation ------------------------------------------------------------- +add_library(PMusr SHARED + PFitter.cpp + PFitterFcn.cpp + PFourier.cpp + PFourierCanvas.cpp + PFourierCanvasDict.cxx + PMusrCanvas.cpp + PMusrCanvasDict.cxx + PFunction.cpp + PFunctionHandler.cpp + PMsr2Data.cpp + PMsrHandler.cpp + PMusrCanvas.cpp + PMusrCanvasDict.cxx + PMusr.cpp + PMusrT0.cpp + PMusrT0Dict.cxx + PRunAsymmetry.cpp + PRunBase.cpp + PRunDataHandler.cpp + PRunListCollection.cpp + PRunMuMinus.cpp + PRunNonMusr.cpp + PRunSingleHisto.cpp + PStartupHandler.cpp + PStartupHandlerDict.cxx + PTheory.cpp +) + +add_library(PUserFcnBase SHARED + PUserFcnBase.cpp + PUserFcnBaseDict.cxx +) + +#--- add library dependencies ------------------------------------------------- +set(DependOnLibs ${ROOT_LIBARIES}) +set(DependOnLibs ${DependOnLibs} ${FFTW3_LIBRARY}) +set(DependOnLibs ${DependOnLibs} PUserFcnBase) +set(DependOnLibs ${DependOnLibs} mud) +set(DependOnLibs ${DependOnLibs} TMusrRunHeader) +set(DependOnLibs ${DependOnLibs} TLemRunHeader) +set(DependOnLibs ${DependOnLibs} Class_MuSR_PSI) +if (nexus) + set(DependOnLibs ${DependOnLibs} ${LIBNEXUS_LIBRARY}) + set(DependOnLibs ${DependOnLibs} PNeXus) +endif (nexus) + +target_link_libraries(PUserFcnBase ${ROOT_LIBRARIES}) +target_link_libraries(PMusr ${DependOnLibs}) + +#--- install PUserFcnBase solib ----------------------------------------------- +install(TARGETS PUserFcnBase DESTINATION lib) + +#--- install PMusr solib ------------------------------------------------------ +install(TARGETS PMusr DESTINATION lib) + +#--- install root pcm's and rootmaps ------------------------------------------ +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/libPFourierCanvasDict_rdict.pcm + ${CMAKE_CURRENT_BINARY_DIR}/libPFourierCanvasDict.rootmap + ${CMAKE_CURRENT_BINARY_DIR}/libPMusrCanvasDict_rdict.pcm + ${CMAKE_CURRENT_BINARY_DIR}/libPMusrCanvasDict.rootmap + ${CMAKE_CURRENT_BINARY_DIR}/libPMusrT0Dict_rdict.pcm + ${CMAKE_CURRENT_BINARY_DIR}/libPMusrT0Dict.rootmap + ${CMAKE_CURRENT_BINARY_DIR}/libPStartupHandlerDict_rdict.pcm + ${CMAKE_CURRENT_BINARY_DIR}/libPStartupHandlerDict.rootmap + ${CMAKE_CURRENT_BINARY_DIR}/libPUserFcnBaseDict_rdict.pcm + ${CMAKE_CURRENT_BINARY_DIR}/libPUserFcnBaseDict.rootmap + DESTINATION lib +) + +#--- install headers ---------------------------------------------------------- +#--- only install headers needed for classes with dictionary +install( + FILES ${MUSRFIT_INC}/PFourierCanvas.h + ${MUSRFIT_INC}/PFourier.h + ${MUSRFIT_INC}/PMusrCanvas.h + ${MUSRFIT_INC}/PMusr.h + ${MUSRFIT_INC}/PMusrT0.h + ${MUSRFIT_INC}/PRunListCollection.h + ${MUSRFIT_INC}/PStartupHandler.h + ${MUSRFIT_INC}/PUserFcnBase.h + DESTINATION include +) + +#--- install pkg-config info -------------------------------------------------- +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/PUserFcnBase.pc + ${CMAKE_CURRENT_BINARY_DIR}/PMusr.pc + DESTINATION lib/pkgconfig +) +