Skip to content
Snippets Groups Projects
Commit 901f5d57 authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

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
parent a946639c
No related branches found
No related tags found
No related merge requests found
...@@ -12,7 +12,11 @@ set(CMAKE_MODULE_PATH ...@@ -12,7 +12,11 @@ set(CMAKE_MODULE_PATH
## OS Specific settings ## OS Specific settings
include(cmake/os.cmake) 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(cmake/modules/CompileTimeInfo.cmake)
include(GNUInstallDirs) include(GNUInstallDirs)
...@@ -20,13 +24,34 @@ set(INSTALL_CONFIGDIR lib/hcana) ...@@ -20,13 +24,34 @@ set(INSTALL_CONFIGDIR lib/hcana)
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}) list(APPEND CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX})
find_package(EXPAT REQUIRED COMPONENTS EXPAT ) # ---------------
find_package(Threads REQUIRED) # PODD
find_package(ZLIB REQUIRED) find_package(PODD)
#ExternalProject_Add(PODD_project
include(ExternalProject) # GIT_REPOSITORY https://github.com/whit2333/analyzer.git
add_subdirectory(external) # GIT_TAG origin/testing
find_package(PODD REQUIRED) # 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})
list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}/etc/cmake) list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}/etc/cmake)
...@@ -58,21 +83,30 @@ install(FILES ...@@ -58,21 +83,30 @@ install(FILES
############################################## ##############################################
# Installation # Installation
#Create a ConfigVersion.cmake file #Create a ConfigVersion.cmake file
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
write_basic_package_version_file( # Install and export targets
${CMAKE_CURRENT_BINARY_DIR}/HCANAConfigVersion.cmake install(EXPORT HCANA-targets
VERSION ${PROJECT_VERSION} FILE HCANATargets.cmake
COMPATIBILITY AnyNewerVersion 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 configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake/HCANAConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/HCANAConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfig.cmake
INSTALL_DESTINATION ${INSTALL_CONFIGDIR} 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 the config, configversion and custom find modules
install(FILES install(FILES
# ${CMAKE_CURRENT_LIST_DIR}/cmake/FindRapidJSON.cmake # ${CMAKE_CURRENT_LIST_DIR}/cmake/FindRapidJSON.cmake
......
...@@ -4,6 +4,9 @@ include("@PACKAGE_TARGETS_INSTALL_PATH@") ...@@ -4,6 +4,9 @@ include("@PACKAGE_TARGETS_INSTALL_PATH@")
check_required_components(HCANA) check_required_components(HCANA)
find_package(PODD REQUIRED)
message(STATUS "Found HCANA")
#get_filename_component(HCANA_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) #get_filename_component(HCANA_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
#include(CMakeFindDependencyMacro) #include(CMakeFindDependencyMacro)
# #
......
cmake_minimum_required(VERSION 3.1) cmake_minimum_required(VERSION 3.1)
#include(ExternalProject) #message(STATUS "Subproject: PODD...")
##############
## GFLAGS ##
##############
message(STATUS "Subproject: PODD...")
# Download and unpack gflags at configure time # Download and unpack gflags at configure time
configure_file( configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/PODD.CMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/PODD.CMakeLists.txt
...@@ -21,20 +16,16 @@ execute_process(COMMAND ${CMAKE_COMMAND} --build . ...@@ -21,20 +16,16 @@ execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download) WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download)
if(result) if(result)
message(FATAL_ERROR "Build step for PODD failed: ${result}") message(FATAL_ERROR "Download step for exteranl PODD build failed: ${result}")
endif() endif()
#set(GFLAGS_NAMESPACE "gflags")
#set(GFLAGS_INSTALL_STATIC_LIBS ON)
#set(GFLAGS_INSTALL_HEADERS ON)
#set(GFLAGS_IS_SUBPROJECT TRUE)
add_subdirectory( add_subdirectory(
${CMAKE_BINARY_DIR}/hallac_PODD-src ${CMAKE_BINARY_DIR}/hallac_PODD-src
${CMAKE_BINARY_DIR}/hallac_PODD-build) ${CMAKE_BINARY_DIR}/hallac_PODD-build)
execute_process(COMMAND "rm -r *" #execute_process(COMMAND "rm -r *"
RESULT_VARIABLE result # RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download) # WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download)
message(STATUS "Subproject: PODD...DONE") message(STATUS "Subproject: PODD...DONE")
cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
# simplify variable expansion # simplify variable expansion
cmake_policy(SET CMP0053 NEW) #cmake_policy(SET CMP0053 NEW)
cmake_policy(SET CMP0010 NEW) #cmake_policy(SET CMP0010 NEW)
project(PODD-download NONE) project(PODD-download NONE)
...@@ -14,7 +14,10 @@ ExternalProject_Add(PODD_project ...@@ -14,7 +14,10 @@ ExternalProject_Add(PODD_project
SOURCE_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-src" SOURCE_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-build" BINARY_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-build"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@" "-DCMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@" 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 "" TEST_COMMAND ""
LOG_DOWNLOAD ON LOG_DOWNLOAD ON
) )
ExternalProject_Add_StepTargets(PODD_project install)
cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
set(HCANA_src set(HCANA_src
Scaler9001.cxx Scaler9250.cxx THcAerogel.cxx THcAerogelHit.cxx THcAnalyzer.cxx THcBCMCurrent.cxx THcCherenkov.cxx 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 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) ...@@ -39,12 +40,13 @@ set(PCM_FILE ${CMAKE_CURRENT_BINARY_DIR}/HallCDict_rdict.pcm)
# SOVERSION "${lib_MAJOR_VERSION}" # SOVERSION "${lib_MAJOR_VERSION}"
# SUFFIX ".so") # 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 add_library(HallC SHARED
${HCANA_src} HallCDict.cxx ${HCANA_src} HallCDict.cxx
) )
add_library(HCANA::HallC ALIAS HallC) #add_library(HCANA::HallC ALIAS HallC)
#Set target properties #Set target properties
target_include_directories(HallC target_include_directories(HallC
...@@ -62,8 +64,8 @@ target_compile_options(HallC PRIVATE $<$<CXX_COMPILER_ID:GNU>:-DHAS_SSTREAM=1>) ...@@ -62,8 +64,8 @@ target_compile_options(HallC PRIVATE $<$<CXX_COMPILER_ID:GNU>:-DHAS_SSTREAM=1>)
target_link_libraries(HallC target_link_libraries(HallC
PUBLIC ${ROOT_LIBRARIES} PUBLIC ${ROOT_LIBRARIES}
PUBLIC HallA PUBLIC PODD::HallA
PUBLIC dc PUBLIC PODD::dc
) )
#This is required so that the exported target has the name JSONUtils and not jsonutils #This is required so that the exported target has the name JSONUtils and not jsonutils
#set_target_properties(HallC PROPERTIES EXPORT_NAME hallC) #set_target_properties(HallC PROPERTIES EXPORT_NAME hallC)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment