From 901f5d5770b96ae4bc123120b0ef51cd2ae68c14 Mon Sep 17 00:00:00 2001 From: Whitney Armstrong <warmstrong@anl.gov> Date: Fri, 29 Jun 2018 12:16:28 -0500 Subject: [PATCH] Cleaned up auto build process for PODD modified: CMakeLists.txt modified: cmake/HCANAConfig.cmake.in modified: external/CMakeLists.txt modified: external/PODD.CMakeLists.txt modified: src/CMakeLists.txt --- CMakeLists.txt | 60 ++++++++++++++++++++++++++++-------- cmake/HCANAConfig.cmake.in | 3 ++ external/CMakeLists.txt | 19 +++--------- external/PODD.CMakeLists.txt | 9 ++++-- src/CMakeLists.txt | 10 +++--- 5 files changed, 67 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d81fb7a..4714eab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,11 @@ set(CMAKE_MODULE_PATH ## OS Specific settings include(cmake/os.cmake) -# provides variables for header hc_compiledata.h + +## External projects: analyzer(PODD) +include(ExternalProject) + +# provides variables for HallC header "hc_compiledata.h" include(cmake/modules/CompileTimeInfo.cmake) include(GNUInstallDirs) @@ -20,13 +24,34 @@ set(INSTALL_CONFIGDIR lib/hcana) list(APPEND CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}) -find_package(EXPAT REQUIRED COMPONENTS EXPAT ) -find_package(Threads REQUIRED) -find_package(ZLIB REQUIRED) - -include(ExternalProject) -add_subdirectory(external) -find_package(PODD REQUIRED) +# --------------- +# PODD +find_package(PODD) +#ExternalProject_Add(PODD_project +# GIT_REPOSITORY https://github.com/whit2333/analyzer.git +# GIT_TAG origin/testing +# SOURCE_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-src" +# BINARY_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-build" +# CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@" "-DCMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@" +# BUILD_COMMAND ${CMAKE_COMMAND} --build . -- -j4 +# USES_TERMINAL_BUILD ON +# TEST_COMMAND "" +# LOG_DOWNLOAD ON +# ) +if(NOT ${PODD_FOUND}) + message(STATUS "PODD not found. Will download and build analyzer (PODD)") + add_subdirectory(external) + find_package(PODD) + #Rescan becomes a dummy target after first build + #this prevents cmake from rebuilding cache/projects on subsequent builds + #add_custom_target(Rescan) +endif() + +#add_executable(testapp testapp.cpp ) +#add_dependencies(testapp Rescan) +#if(${Beaengine_FOUND}) +# target_link_libraries(testapp ${Beaengine_LIBRARY}) +#endif() list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}) list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}/etc/cmake) @@ -58,21 +83,30 @@ install(FILES ############################################## # Installation - #Create a ConfigVersion.cmake file include(CMakePackageConfigHelpers) -write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfigVersion.cmake - VERSION ${PROJECT_VERSION} - COMPATIBILITY AnyNewerVersion +# Install and export targets +install(EXPORT HCANA-targets + FILE HCANATargets.cmake + NAMESPACE HCANA:: + DESTINATION lib/hcana ) +set(TARGETS_INSTALL_PATH lib/hcana/HCANATargets.cmake) configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake/HCANAConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfig.cmake INSTALL_DESTINATION ${INSTALL_CONFIGDIR} + PATH_VARS TARGETS_INSTALL_PATH ) +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion + ) + + #Install the config, configversion and custom find modules install(FILES # ${CMAKE_CURRENT_LIST_DIR}/cmake/FindRapidJSON.cmake diff --git a/cmake/HCANAConfig.cmake.in b/cmake/HCANAConfig.cmake.in index 174aaa2..57b242a 100644 --- a/cmake/HCANAConfig.cmake.in +++ b/cmake/HCANAConfig.cmake.in @@ -4,6 +4,9 @@ include("@PACKAGE_TARGETS_INSTALL_PATH@") check_required_components(HCANA) +find_package(PODD REQUIRED) +message(STATUS "Found HCANA") + #get_filename_component(HCANA_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) #include(CMakeFindDependencyMacro) # diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index d66c2ad..8e22c5b 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -1,11 +1,6 @@ cmake_minimum_required(VERSION 3.1) -#include(ExternalProject) - -############## -## GFLAGS ## -############## -message(STATUS "Subproject: PODD...") +#message(STATUS "Subproject: PODD...") # Download and unpack gflags at configure time configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/PODD.CMakeLists.txt @@ -21,20 +16,16 @@ execute_process(COMMAND ${CMAKE_COMMAND} --build . RESULT_VARIABLE result WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download) if(result) - message(FATAL_ERROR "Build step for PODD failed: ${result}") + message(FATAL_ERROR "Download step for exteranl PODD build failed: ${result}") endif() -#set(GFLAGS_NAMESPACE "gflags") -#set(GFLAGS_INSTALL_STATIC_LIBS ON) -#set(GFLAGS_INSTALL_HEADERS ON) -#set(GFLAGS_IS_SUBPROJECT TRUE) add_subdirectory( ${CMAKE_BINARY_DIR}/hallac_PODD-src ${CMAKE_BINARY_DIR}/hallac_PODD-build) -execute_process(COMMAND "rm -r *" - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download) +#execute_process(COMMAND "rm -r *" +# RESULT_VARIABLE result +# WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download) message(STATUS "Subproject: PODD...DONE") diff --git a/external/PODD.CMakeLists.txt b/external/PODD.CMakeLists.txt index c149508..b14bddd 100644 --- a/external/PODD.CMakeLists.txt +++ b/external/PODD.CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.5) # simplify variable expansion -cmake_policy(SET CMP0053 NEW) -cmake_policy(SET CMP0010 NEW) +#cmake_policy(SET CMP0053 NEW) +#cmake_policy(SET CMP0010 NEW) project(PODD-download NONE) @@ -14,7 +14,10 @@ ExternalProject_Add(PODD_project SOURCE_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-src" BINARY_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-build" CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@" "-DCMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@" - BUILD_COMMAND ${CMAKE_COMMAND} --build . -- -j4 + BUILD_COMMAND ${CMAKE_COMMAND} --build . -- -j4 + USES_TERMINAL_BUILD ON TEST_COMMAND "" LOG_DOWNLOAD ON ) +ExternalProject_Add_StepTargets(PODD_project install) + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 095e425..882142a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.5) + set(HCANA_src Scaler9001.cxx Scaler9250.cxx THcAerogel.cxx THcAerogelHit.cxx THcAnalyzer.cxx THcBCMCurrent.cxx THcCherenkov.cxx THcCherenkovHit.cxx THcCoinTime.cxx THcConfigEvtHandler.cxx THcDC.cxx THcDCHit.cxx THcDCLookupTTDConv.cxx THcDCTimeToDistConv.cxx @@ -39,12 +40,13 @@ set(PCM_FILE ${CMAKE_CURRENT_BINARY_DIR}/HallCDict_rdict.pcm) # SOVERSION "${lib_MAJOR_VERSION}" # SUFFIX ".so") -ADD_CUSTOM_TARGET(HallC_ROOTDICTS DEPENDS ${HCANA_src} ${headers} include/HallC_LinkDef.h HallCDict.cxx) +add_custom_target(HallC_ROOTDICTS DEPENDS ${HCANA_src} ${headers} include/HallC_LinkDef.h HallCDict.cxx) + add_library(HallC SHARED ${HCANA_src} HallCDict.cxx ) -add_library(HCANA::HallC ALIAS HallC) +#add_library(HCANA::HallC ALIAS HallC) #Set target properties target_include_directories(HallC @@ -62,8 +64,8 @@ target_compile_options(HallC PRIVATE $<$<CXX_COMPILER_ID:GNU>:-DHAS_SSTREAM=1>) target_link_libraries(HallC PUBLIC ${ROOT_LIBRARIES} - PUBLIC HallA - PUBLIC dc + PUBLIC PODD::HallA + PUBLIC PODD::dc ) #This is required so that the exported target has the name JSONUtils and not jsonutils #set_target_properties(HallC PROPERTIES EXPORT_NAME hallC) -- GitLab