From 32a344f167521b990b9d5b16132f239f192f511e Mon Sep 17 00:00:00 2001 From: Markus Frank <markus.frank@cern.ch> Date: Fri, 13 Nov 2015 12:38:28 +0000 Subject: [PATCH] Fix rootmap and env-check problems on MAC --- cmake/DD4hepBuild.cmake | 12 +++++----- cmake/FindPYTHON.cmake | 42 ++++++++++++++++++++++++++++++++++ cmake/MakeRootMap.cmake | 6 +++++ cmake/thisdd4hep.sh | 20 +++++++++++----- cmake/thisdd4hep_package.sh.in | 2 +- 5 files changed, 69 insertions(+), 13 deletions(-) create mode 100644 cmake/FindPYTHON.cmake diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake index ccdb8a6a9..823139f8b 100644 --- a/cmake/DD4hepBuild.cmake +++ b/cmake/DD4hepBuild.cmake @@ -476,21 +476,21 @@ function ( dd4hep_unpack_package_opts name opt ) if( "${nam_pkg}" STREQUAL "" ) set ( nam_pkg ${e} ) unset ( act_pkg ) - elseif ( "${e}" STREQUAL "REQUIRED" ) + elseif ( ${e} STREQUAL "REQUIRED" ) set ( req_pkg ${e} ) unset ( act_pkg ) - elseif ( "${e}" STREQUAL "INTERNAL" ) + elseif ( ${e} STREQUAL "INTERNAL" ) set ( typ_pkg ${e} ) unset ( act_pkg ) - elseif ( "${e}" STREQUAL "EXTERNAL" ) + elseif ( ${e} STREQUAL "EXTERNAL" ) set ( typ_pkg ${e} ) unset ( act_pkg ) - elseif ( "${com_pkg}" STREQUAL "" AND "${e}" STREQUAL "COMPONENTS" ) + elseif ( "${com_pkg}" STREQUAL "" AND ${e} STREQUAL "COMPONENTS" ) set ( com_pkg ${e} ) set ( act_pkg ${e} ) - elseif ( "${src_pkg}" STREQUAL "" AND "${e}" STREQUAL "SOURCES" ) + elseif ( "${src_pkg}" STREQUAL "" AND ${e} STREQUAL "SOURCES" ) set ( act_pkg ${e} ) - elseif ( "${def_pkg}" STREQUAL "" AND "${e}" STREQUAL "DEFINITIONS" ) + elseif ( "${def_pkg}" STREQUAL "" AND ${e} STREQUAL "DEFINITIONS" ) set ( act_pkg ${e} ) elseif ( "${act_pkg}" STREQUAL "COMPONENTS" ) set ( comp_pkg ${comp_pkg} ${e} ) diff --git a/cmake/FindPYTHON.cmake b/cmake/FindPYTHON.cmake new file mode 100644 index 000000000..b4358b5b4 --- /dev/null +++ b/cmake/FindPYTHON.cmake @@ -0,0 +1,42 @@ +# - Find Xerces-C +# This module tries to find the Xerces-C library and headers. +# Once done this will define +# +# XERCESC_FOUND - system has Xerces-C headers and libraries +# XERCESC_INCLUDE_DIRS - the include directories needed for Xerces-C +# XERCESC_LIBRARIES - the libraries needed to use Xerces-C +# +# Variables used by this module, which can change the default behaviour and +# need to be set before calling find_package: +# +# XERCESC_ROOT_DIR Root directory to Xerces-C installation. Will +# be used ahead of CMake default path. +# +# The following advanced variables may be used if the module has difficulty +# locating Xerces-C or you need fine control over what is used. +# +# XERCESC_INCLUDE_DIR +# +# XERCESC_LIBRARY +# +# Copyright (c) 2009, Ben Morgan, <Ben.Morgan@warwick.ac.uk> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +include ( FindPackageHandleStandardArgs ) + +find_package(PythonInterp 2.7 REQUIRED) +find_package(PythonLibs 2.7 REQUIRED) + +if (PYTHONLIBS_FOUND) + get_filename_component(PYTHON_LIBRARY_DIR ${PYTHON_LIBRARIES} DIRECTORY) + #get_filename_component(PYTHON_LIBRARY_NAME ${PYTHON_LIBRARIES} NAME_WE) + set(PYTHON_LIBRARY_DIR ${PYTHON_LIBRARY_DIR}) + set(PYTHON_LIBRARIES ${PYTHON_LIBRARIES}) + set(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS}) + message(STATUS "******** PYTHON FOUND ${PYTHON_LIBRARY_DIR} -> ${PYTHON_LIBRARIES}") +else() + message(STATUS "PYTHON ****NOT**** FOUND") +endif() +find_package_handle_standard_args(PYTHON DEFAULT_MSG PYTHON_INCLUDE_DIR) +mark_as_advanced(PYTHON_FOUND PYTHON_INCLUDE_DIRS) diff --git a/cmake/MakeRootMap.cmake b/cmake/MakeRootMap.cmake index 962518de7..1753b7a30 100644 --- a/cmake/MakeRootMap.cmake +++ b/cmake/MakeRootMap.cmake @@ -7,6 +7,12 @@ if( ${ROOT_VERSION_MAJOR} GREATER 5 ) MESSAGE( STATUS " *** MakeROOTMap[components].cmake run command : ${ROOT_genmap_CMD} -o ${rootmapfile} ${libname} WORKING_DIRECTORY ${genmap_install_dir} " ) + if(APPLE) + SET ( ENV{DYLD_LIBRARY_PATH} ${genmap_install_dir}:$ENV{DYLD_LIBRARY_PATH} ) + else() + SET ( ENV{LD_LIBRARY_PATH} ${genmap_install_dir}:$ENV{LD_LIBRARY_PATH} ) + endif() + # EXECUTE_PROCESS( COMMAND echo LD_LIBRARY_PATH = $ENV{LD_LIBRARY_PATH} ) EXECUTE_PROCESS( COMMAND ${ROOT_genmap_CMD} -o ${rootmapfile} ${libname} WORKING_DIRECTORY ${genmap_install_dir} diff --git a/cmake/thisdd4hep.sh b/cmake/thisdd4hep.sh index f64cba0c3..1f93842a2 100644 --- a/cmake/thisdd4hep.sh +++ b/cmake/thisdd4hep.sh @@ -30,10 +30,10 @@ dd4hep_add_path() { path_name=${1}; path_prefix=${2}; eval path_value=\$$path_name; - if test -z "${path_value}"; then - path_value=${path_prefix}; - else + if [ ${path_value} ]; then path_value=${path_prefix}:${path_value}; + else + path_value=${path_prefix}; fi; eval export ${path_name}=${path_value}; ## echo "dd4hep_add_path: ${path_name}=${path_value}"; @@ -43,9 +43,17 @@ dd4hep_add_library_path() { path_prefix=${1}; if [ @USE_DYLD@ ]; then - export DYLD_LIBRARY_PATH=${path_prefix}:$DYLD_LIBRARY_PATH; + if [ ${DYLD_LIBRARY_PATH} ]; then + export DYLD_LIBRARY_PATH=${path_prefix}:$DYLD_LIBRARY_PATH; + else + export DYLD_LIBRARY_PATH=${path_prefix}; + fi; else - export LD_LIBRARY_PATH=${path_prefix}:$LD_LIBRARY_PATH; + if [ ${LD_LIBRARY_PATH} ]; then + export LD_LIBRARY_PATH=${path_prefix}:$LD_LIBRARY_PATH; + else + export LD_LIBRARY_PATH=${path_prefix}; + fi; fi; } # @@ -65,7 +73,7 @@ ROOTENV_INIT=${ROOTSYS}/bin/thisroot.sh; test -r ${ROOTENV_INIT} && { cd $(dirname ${ROOTENV_INIT}); . ./$(basename ${ROOTENV_INIT}) ; cd $OLDPWD ; } # #----Geant4 LIBRARY_PATH------------------------------------------------------ -if test -n "${Geant4_DIR}"; then +if [ ${Geant4_DIR ]; then G4LIB_DIR=`dirname ${Geant4_DIR}`; export G4INSTALL=`dirname ${G4LIB_DIR}`; export G4ENV_INIT=${G4INSTALL}/bin/geant4.sh diff --git a/cmake/thisdd4hep_package.sh.in b/cmake/thisdd4hep_package.sh.in index 0c9075be7..d542f37bc 100644 --- a/cmake/thisdd4hep_package.sh.in +++ b/cmake/thisdd4hep_package.sh.in @@ -9,7 +9,7 @@ # ################################################################################# # Default of DD4hep is the primary installation directory -if test -z "${DD4hep_DIR}"; then +if [ ! ${DD4hep_DIR} ]; then export DD4hep_DIR=@DD4hep_DIR@; fi; source ${DD4hep_DIR}/bin/thisdd4hep.sh; -- GitLab