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