Skip to content
Snippets Groups Projects
Commit b0d35003 authored by Jeremy McCormick's avatar Jeremy McCormick Committed by GitHub
Browse files

CMake build enhancements and bug fixes (#23)

* change GLOBAL_INSTALL_DIR to CMAKE_INSTALL_PREFIX

* use unquoted version variables in cmake install scripts

* comment out debug prints

* correct slic bin dir

* install ext dep sources directly in build dir
parent 20aadb35
No related branches found
No related tags found
No related merge requests found
...@@ -19,13 +19,9 @@ SET( SLIC_VERSION_PATCH 0 ) ...@@ -19,13 +19,9 @@ SET( SLIC_VERSION_PATCH 0 )
INCLUDE( ExternalProject ) INCLUDE( ExternalProject )
IF ( NOT GLOBAL_INSTALL_DIR ) #IF ( NOT CMAKE_INSTALL_PREFIX )
SET( GLOBAL_INSTALL_DIR "$ENV{HOME}/slic" ) # SET( CMAKE_INSTALL_PREFIX "$ENV{HOME}/slic" )
MESSAGE( STATUS "Global install dir set to: ${GLOBAL_INSTALL_DIR}" ) # MESSAGE( STATUS "Global install dir set to: ${CMAKE_INSTALL_PREFIX}" )
ENDIF()
#IF( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
SET( CMAKE_INSTALL_PREFIX ${GLOBAL_INSTALL_DIR}/slic )
#ENDIF() #ENDIF()
MESSAGE( STATUS "SLIC install dir set to: ${CMAKE_INSTALL_PREFIX}" ) MESSAGE( STATUS "SLIC install dir set to: ${CMAKE_INSTALL_PREFIX}" )
...@@ -47,19 +43,16 @@ LIST( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ) ...@@ -47,19 +43,16 @@ LIST( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake )
FILE( GLOB_RECURSE library_sources ${PROJECT_SOURCE_DIR}/src/*.cc ) FILE( GLOB_RECURSE library_sources ${PROJECT_SOURCE_DIR}/src/*.cc )
# dependency list in build order # dependency list in build order
SET( DEPENDENCIES XERCES Geant4 LCIO HEPPDT GDML LCDD ) SET( DEPENDENCIES XERCES Geant4 GDML LCDD LCIO HEPPDT )
ADD_CUSTOM_TARGET( extdeps ) ADD_CUSTOM_TARGET( extdeps )
FOREACH( dependency ${DEPENDENCIES} ) FOREACH( dependency ${DEPENDENCIES} )
IF ( ${dependency}_DIR ) #MESSAGE( "processing dep: ${dependency}" )
FIND_PACKAGE( ${dependency} QUIET ) FIND_PACKAGE( ${dependency} )
IF ( ${dependency}_FOUND ) IF ( ${dependency}_FOUND )
MESSAGE( STATUS "${dependency} was found at: ${${dependency}_DIR}" ) MESSAGE( STATUS "${dependency} was found at: ${${dependency}_DIR}" )
IF( NOT TARGET ${dependency} ) IF( NOT TARGET ${dependency} )
ADD_CUSTOM_TARGET( ${dependency} ) ADD_CUSTOM_TARGET( ${dependency} )
ENDIF()
ELSE()
MESSAGE( FATAL_ERROR "You specified ${dependency}_DIR but this does not appear to point to a valid install of ${dependency}." )
ENDIF() ENDIF()
ELSE() ELSE()
MESSAGE( STATUS "${dependency} was not found and will be installed as an external project." ) MESSAGE( STATUS "${dependency} was not found and will be installed as an external project." )
...@@ -67,6 +60,9 @@ FOREACH( dependency ${DEPENDENCIES} ) ...@@ -67,6 +60,9 @@ FOREACH( dependency ${DEPENDENCIES} )
SET( DEPENDENCIES_NOTFOUND "YES" FORCE ) SET( DEPENDENCIES_NOTFOUND "YES" FORCE )
ENDIF() ENDIF()
ADD_DEPENDENCIES( extdeps ${dependency} ) ADD_DEPENDENCIES( extdeps ${dependency} )
#MESSAGE(" ${dependency}_DIR=${${dependency}_DIR}" )
#MESSAGE(" ${dependency}_VERSION=${${dependency}_VERSION}" )
#MESSAGE(" ${dependency}_FOUND=${${dependency}_FOUND}" )
ENDFOREACH() ENDFOREACH()
IF ( DEPENDENCIES_NOTFOUND ) IF ( DEPENDENCIES_NOTFOUND )
...@@ -89,7 +85,7 @@ ELSE() ...@@ -89,7 +85,7 @@ ELSE()
# configure files # configure files
CONFIGURE_FILE( ${PROJECT_SOURCE_DIR}/include/PackageInfo.hh.in ${PROJECT_SOURCE_DIR}/include/PackageInfo.hh) CONFIGURE_FILE( ${PROJECT_SOURCE_DIR}/include/PackageInfo.hh.in ${PROJECT_SOURCE_DIR}/include/PackageInfo.hh)
CONFIGURE_FILE( ${PROJECT_SOURCE_DIR}/include/Geant4VersionInfo.hh.in ${PROJECT_SOURCE_DIR}/include/Geant4VersionInfo.hh ) CONFIGURE_FILE( ${PROJECT_SOURCE_DIR}/include/Geant4VersionInfo.hh.in ${PROJECT_SOURCE_DIR}/include/Geant4VersionInfo.hh )
CONFIGURE_FILE( ${PROJECT_SOURCE_DIR}/scripts/create_slic_tarball.sh.in ${PROJECT_SOURCE_DIR}/scripts/create_slic_tarball.sh ) #CONFIGURE_FILE( ${PROJECT_SOURCE_DIR}/scripts/create_slic_tarball.sh.in ${PROJECT_SOURCE_DIR}/scripts/create_slic_tarball.sh )
# additional compilation flags for Geant4 # additional compilation flags for Geant4
INCLUDE( ${Geant4_USE_FILE} ) INCLUDE( ${Geant4_USE_FILE} )
...@@ -104,11 +100,11 @@ ELSE() ...@@ -104,11 +100,11 @@ ELSE()
LINK_DIRECTORIES( ${GDML_LIBRARY_DIR} ${LCDD_LIBRARY_DIR} ${LCIO_LIBRARY_DIRS} ) LINK_DIRECTORIES( ${GDML_LIBRARY_DIR} ${LCDD_LIBRARY_DIR} ${LCIO_LIBRARY_DIRS} )
# install # install
INSTALL( TARGETS slic slic DESTINATION bin ) INSTALL( TARGETS slic slic DESTINATION slic/bin )
# install env setup script # install env setup script
CONFIGURE_FILE( ${PROJECT_SOURCE_DIR}/scripts/slic-env.sh.in ${CMAKE_CURRENT_BINARY_DIR}/slic-env.sh ) CONFIGURE_FILE( ${PROJECT_SOURCE_DIR}/scripts/slic-env.sh.in ${CMAKE_CURRENT_BINARY_DIR}/slic-env.sh )
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/slic-env.sh DESTINATION bin INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/slic-env.sh DESTINATION slic/bin
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
ENDIF() ENDIF()
......
...@@ -3,4 +3,4 @@ FIND_PATH( LCDD_INCLUDE_DIR lcdd/core/LCDDProcessor.hh ${LCDD_DIR}/include ) ...@@ -3,4 +3,4 @@ FIND_PATH( LCDD_INCLUDE_DIR lcdd/core/LCDDProcessor.hh ${LCDD_DIR}/include )
FIND_LIBRARY( LCDD_LIBRARY lcdd ${LCDD_DIR}/lib/ ) FIND_LIBRARY( LCDD_LIBRARY lcdd ${LCDD_DIR}/lib/ )
INCLUDE( FindPackageHandleStandardArgs ) INCLUDE( FindPackageHandleStandardArgs )
FIND_PACKAGE_HANDLE_STANDARD_ARGS( LCDD DEFAULT_MSG LCDD_DIR ) FIND_PACKAGE_HANDLE_STANDARD_ARGS( LCDD DEFAULT_MSG LCDD_INCLUDE_DIR LCDD_LIBRARY )
...@@ -9,15 +9,15 @@ EXTERNALPROJECT_ADD( ...@@ -9,15 +9,15 @@ EXTERNALPROJECT_ADD(
DEPENDS XERCES Geant4 DEPENDS XERCES Geant4
GIT_REPOSITORY "https://github.com/slaclab/gdml" GIT_REPOSITORY "https://github.com/slaclab/gdml"
GIT_TAG "${GDML_VERSION}" GIT_TAG ${GDML_VERSION}
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND "" PATCH_COMMAND ""
SOURCE_DIR "${CMAKE_BINARY_DIR}/extdep/gdml" SOURCE_DIR "${CMAKE_BINARY_DIR}/gdml"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${GLOBAL_INSTALL_DIR}/gdml -DXERCES_DIR=${XERCES_DIR} -DGeant4_DIR=${Geant4_DIR} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/gdml -DXERCES_DIR=${XERCES_DIR} -DGeant4_DIR=${Geant4_DIR}
BUILD_COMMAND make -j4 BUILD_COMMAND make -j4
) )
SET( GDML_DIR ${GLOBAL_INSTALL_DIR}/gdml CACHE PATH "GDML install dir" FORCE ) SET( GDML_DIR ${CMAKE_INSTALL_PREFIX}/gdml CACHE PATH "GDML install dir" FORCE )
...@@ -3,23 +3,28 @@ IF( NOT Geant4_VERSION ) ...@@ -3,23 +3,28 @@ IF( NOT Geant4_VERSION )
ENDIF() ENDIF()
IF ( Geant4_VERSION EQUAL "master" ) IF ( Geant4_VERSION EQUAL "master" )
MESSAGE( FATAL "Installing Geant4 from github master is not allowed." ) MESSAGE( FATAL_ERROR "Installing Geant4 from github master is not allowed." )
ENDIF()
IF ( NOT GEANT4_INSTALL_DATA )
SET( GEANT4_INSTALL_DATA "OFF" )
ENDIF() ENDIF()
EXTERNALPROJECT_ADD( EXTERNALPROJECT_ADD(
Geant4 Geant4
GIT_REPOSITORY "https://github.com/Geant4/geant4" GIT_REPOSITORY "https://github.com/Geant4/geant4"
GIT_TAG "${GEANT4_VERSION}" GIT_TAG ${GEANT4_VERSION}
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND "" PATCH_COMMAND ""
SOURCE_DIR "${CMAKE_BINARY_DIR}/extdep/geant4" SOURCE_DIR "${CMAKE_BINARY_DIR}/geant4"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${GLOBAL_INSTALL_DIR}/geant4 -DGEANT4_INSTALL_DATA=ON
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/geant4 -DGEANT4_INSTALL_DATA=${GEANT4_INSTALL_DATA}
BUILD_COMMAND make -j4 BUILD_COMMAND make -j4
) )
STRING( REPLACE "v" "" Geant4_VERSION_NUMBER ${Geant4_VERSION} ) STRING( REPLACE "v" "" Geant4_VERSION_NUMBER ${Geant4_VERSION} )
SET( Geant4_DIR ${GLOBAL_INSTALL_DIR}/geant4/lib64/Geant4-${Geant4_VERSION_NUMBER} CACHE PATH "Geant4 install dir" FORCE ) SET( Geant4_DIR ${CMAKE_INSTALL_PREFIX}/geant4/lib64/Geant4-${Geant4_VERSION_NUMBER} CACHE PATH "Geant4 install dir" FORCE )
...@@ -3,12 +3,12 @@ EXTERNALPROJECT_ADD( ...@@ -3,12 +3,12 @@ EXTERNALPROJECT_ADD(
URL "http://lcgapp.cern.ch/project/simu/HepPDT/download/HepPDT-3.04.01.tar.gz" URL "http://lcgapp.cern.ch/project/simu/HepPDT/download/HepPDT-3.04.01.tar.gz"
SOURCE_DIR "${CMAKE_BINARY_DIR}/extdep/heppdt" SOURCE_DIR "${CMAKE_BINARY_DIR}/heppdt"
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND "" PATCH_COMMAND ""
CONFIGURE_COMMAND "${CMAKE_BINARY_DIR}/extdep/heppdt/configure" --prefix=${GLOBAL_INSTALL_DIR}/heppdt CONFIGURE_COMMAND "${CMAKE_BINARY_DIR}/heppdt/configure" --prefix=${CMAKE_INSTALL_PREFIX}/heppdt
) )
SET( HEPPDT_DIR ${GLOBAL_INSTALL_DIR}/heppdt CACHE PATH "HEPPDT install dir" FORCE ) SET( HEPPDT_DIR ${CMAKE_INSTALL_PREFIX}/heppdt CACHE PATH "HEPPDT install dir" FORCE )
...@@ -8,15 +8,16 @@ EXTERNALPROJECT_ADD( ...@@ -8,15 +8,16 @@ EXTERNALPROJECT_ADD(
DEPENDS XERCES Geant4 GDML DEPENDS XERCES Geant4 GDML
GIT_REPOSITORY "https://github.com/slaclab/lcdd" GIT_REPOSITORY "https://github.com/slaclab/lcdd"
GIT_TAG "${LCDD_VERSION}" GIT_TAG ${LCDD_VERSION}
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND "" PATCH_COMMAND ""
SOURCE_DIR "${CMAKE_BINARY_DIR}/extdep/lcdd" SOURCE_DIR "${CMAKE_BINARY_DIR}/lcdd"
CMAKE_ARGS -DINSTALL_DOC=OFF -DCMAKE_INSTALL_PREFIX=${GLOBAL_INSTALL_DIR}/lcdd -DGDML_DIR=${GDML_DIR} -DXERCES_DIR=${XERCES_DIR} -DGeant4_DIR=${Geant4_DIR}
CMAKE_ARGS -DINSTALL_DOC=OFF -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/lcdd -DGDML_DIR=${GDML_DIR} -DXERCES_DIR=${XERCES_DIR} -DGeant4_DIR=${Geant4_DIR}
BUILD_COMMAND make -j4 BUILD_COMMAND make -j4
) )
SET( LCDD_DIR ${GLOBAL_INSTALL_DIR}/lcdd CACHE PATH "LCDD install dir" FORCE ) SET( LCDD_DIR "${CMAKE_INSTALL_PREFIX}/lcdd" CACHE PATH "LCDD install dir" FORCE )
...@@ -6,15 +6,15 @@ EXTERNALPROJECT_ADD( ...@@ -6,15 +6,15 @@ EXTERNALPROJECT_ADD(
LCIO LCIO
GIT_REPOSITORY "https://github.com/iLCSoft/LCIO" GIT_REPOSITORY "https://github.com/iLCSoft/LCIO"
GIT_TAG "${LCIO_VERSION}" GIT_TAG ${LCIO_VERSION}
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND "" PATCH_COMMAND ""
SOURCE_DIR "${CMAKE_BINARY_DIR}/extdep/lcio" SOURCE_DIR "${CMAKE_BINARY_DIR}/lcio"
CMAKE_ARGS -DINSTALL_DOC=OFF -DCMAKE_INSTALL_PREFIX=${GLOBAL_INSTALL_DIR}/lcio CMAKE_ARGS -DINSTALL_DOC=OFF -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/lcio
BUILD_COMMAND make -j4 BUILD_COMMAND make -j4
) )
SET( LCIO_DIR ${GLOBAL_INSTALL_DIR}/lcio CACHE PATH "LCIO install dir" FORCE ) SET( LCIO_DIR ${CMAKE_INSTALL_PREFIX}/lcio CACHE PATH "LCIO install dir" FORCE )
...@@ -3,12 +3,12 @@ EXTERNALPROJECT_ADD( ...@@ -3,12 +3,12 @@ EXTERNALPROJECT_ADD(
XERCES XERCES
URL "http://apache.cs.utah.edu//xerces/c/3/sources/xerces-c-3.1.4.tar.gz" URL "http://apache.cs.utah.edu//xerces/c/3/sources/xerces-c-3.1.4.tar.gz"
SOURCE_DIR "${CMAKE_BINARY_DIR}/extdep/xerces" SOURCE_DIR "${CMAKE_BINARY_DIR}/xerces"
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND "" PATCH_COMMAND ""
CONFIGURE_COMMAND "${CMAKE_BINARY_DIR}/extdep/xerces/configure" --enable-shared --disable-static --prefix=${GLOBAL_INSTALL_DIR}/xerces CONFIGURE_COMMAND "${CMAKE_BINARY_DIR}/xerces/configure" --enable-shared --disable-static --prefix=${CMAKE_INSTALL_PREFIX}/xerces
) )
SET( XERCES_DIR ${GLOBAL_INSTALL_DIR}/xerces CACHE PATH "XERCES install dir" FORCE ) SET( XERCES_DIR ${CMAKE_INSTALL_PREFIX}/xerces CACHE PATH "XERCES install dir" FORCE )
...@@ -11,7 +11,7 @@ export GDML_SCHEMA_DIR=@GDML_DIR@/schemas ...@@ -11,7 +11,7 @@ export GDML_SCHEMA_DIR=@GDML_DIR@/schemas
. @Geant4_DIR@/../../bin/geant4.sh . @Geant4_DIR@/../../bin/geant4.sh
export PATH=@CMAKE_INSTALL_PREFIX@/bin:$PATH export PATH=@CMAKE_INSTALL_PREFIX@/slic/bin:$PATH
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
echo "GDML_SCHEMA_DIR=$GDML_SCHEMA_DIR" echo "GDML_SCHEMA_DIR=$GDML_SCHEMA_DIR"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment