From 1e75b3f3f73d9aacb9c1de69839c6fe146d082bc Mon Sep 17 00:00:00 2001
From: Ole Hansen <ole@jlab.org>
Date: Fri, 7 Dec 2018 16:29:25 -0500
Subject: [PATCH] Modify CMake and SCons scripts for new Podd directory layout

Currently both CMake and SCons build not only libPodd, but also libHallA,
even though it is not required for hcana. hcana is linked only against
libPodd, however, so libHallA is simply a spurious byproduct.
---
 SConscript.py      |  8 ++++++++
 SConstruct         | 25 +++++++++----------------
 podd               |  2 +-
 src/CMakeLists.txt |  2 +-
 4 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/SConscript.py b/SConscript.py
index 105c617..c8f4ccd 100644
--- a/SConscript.py
+++ b/SConscript.py
@@ -106,6 +106,14 @@ f.close()
 
 print ('LIBS = %s\n' % pbaseenv.subst('$LIBS'))
 
+# SCons seems to ignore $RPATH on macOS... sigh
+if pbaseenv['PLATFORM'] == 'darwin':
+    try:
+        for rp in pbaseenv['RPATH']:
+            pbaseenv.Append(LINKFLAGS = ['-Wl,-rpath,'+rp])
+    except KeyError:
+        pass
+
 analyzer = pbaseenv.Program(target = 'hcana', source = 'src/main.o')
 pbaseenv.Install('./bin',analyzer)
 pbaseenv.Alias('install',['./bin'])
diff --git a/SConstruct b/SConstruct
index 9ea5ad9..d5651fe 100644
--- a/SConstruct
+++ b/SConstruct
@@ -14,7 +14,7 @@ print('!!! Building the Hall C analyzer and libraries with SCons requires')
 print('!!! SCons version 2.5.0 or newer.')
 EnsureSConsVersion(2,5,0)
 
-baseenv = Environment(ENV = os.environ,tools=["default"],toolpath=['podd/site_scons'])
+baseenv = Environment(ENV = os.environ,tools=["default","rootcint"],toolpath=['podd/site_scons'])
 
 ####### Hall A Build Environment #############
 #
@@ -23,8 +23,8 @@ baseenv.Append(HC_DIR= baseenv.subst('$HEAD_DIR'))
 baseenv.Append(HC_SRC= baseenv.subst('$HC_DIR')+'/src')
 baseenv.Append(HA_DIR= baseenv.subst('$HC_DIR')+'/podd')
 baseenv.Append(MAIN_DIR= baseenv.subst('$HEAD_DIR'))
-baseenv.Append(HA_SRC= baseenv.subst('$HA_DIR')+'/src')
-baseenv.Append(HA_DC= baseenv.subst('$HA_DIR')+'/hana_decode')
+baseenv.Append(HA_Podd = os.path.join(baseenv.subst('$HA_DIR'),'Podd'))
+baseenv.Append(HA_DC = os.path.join(baseenv.subst('$HA_DIR'),'hana_decode'))
 baseenv.Append(MAJORVERSION = '0')
 baseenv.Append(MINORVERSION = '90')
 baseenv.Append(PATCH = '0')
@@ -38,19 +38,12 @@ print ("Hall A Main Directory = %s" % baseenv.subst('$HA_DIR'))
 print ("Software Version = %s" % baseenv.subst('$VERSION'))
 ivercode = 65536*int(float(baseenv.subst('$SOVERSION')))+ 256*int(10*(float(baseenv.subst('$SOVERSION'))-int(float(baseenv.subst('$SOVERSION')))))+ int(float(baseenv.subst('$PATCH')))
 baseenv.Append(VERCODE = ivercode)
-baseenv.Append(CPPPATH = ['$HC_SRC','$HA_SRC','$HA_DC'])
+baseenv.Append(CPPPATH = ['$HC_SRC','$HA_Podd','$HA_DC'])
 
 sys.path.insert(1,baseenv.subst('$HA_DIR'+'/site_scons'))
 import configure
-from rootcint import rootcint
 
 configure.FindROOT(baseenv)
-# If EVIO is set up, use it. Otherwise the Podd submodule will build it
-# and we will pick it up from there
-configure.FindEVIO(baseenv, build_it = False, fail_if_missing = False)
-
-bld = Builder(action=rootcint)
-baseenv.Append(BUILDERS = {'RootCint': bld})
 
 ######## cppcheck ###########################
 
@@ -93,19 +86,19 @@ Export('baseenv')
 ####### Start of main SConstruct ############
 
 hallclib = 'HallC'
-hallalib = 'HallA'
+poddlib = 'Podd'
 dclib = 'dc'
-eviolib = 'evio'
 
-baseenv.Append(LIBPATH=['$HC_DIR','$EVIO_LIB','$HA_DIR','$HC_SRC','$HA_SRC','$HA_DC'])
+baseenv.Append(LIBPATH=['$HC_DIR','$HC_SRC','$HA_Podd','$HA_DC'])
+baseenv.Append(RPATH=['$HC_DIR','$HA_Podd','$HA_DC'])
 baseenv.Replace(SHLIBSUFFIX = '.so')
 baseenv.Replace(SOSUFFIX = baseenv.subst('$SHLIBSUFFIX'))
 #baseenv.Replace(SHLIBSUFFIX = '.so')
 baseenv.Append(SHLIBSUFFIX = '.'+baseenv.subst('$VERSION'))
 
 pbaseenv=baseenv.Clone()
-pbaseenv.Prepend(LIBS=[hallclib,hallalib,dclib,eviolib])
-baseenv.Prepend(LIBS=[hallalib,dclib,eviolib])
+pbaseenv.Prepend(LIBS=[hallclib,poddlib,dclib])
+baseenv.Prepend(LIBS=[poddlib,dclib])
 Export('pbaseenv')
 
 if pbaseenv['CXX'] == 'g++':
diff --git a/podd b/podd
index e58d695..234a66d 160000
--- a/podd
+++ b/podd
@@ -1 +1 @@
-Subproject commit e58d6959ef72f188811ba485f53945dde13141bf
+Subproject commit 234a66d6f9edc127c44a482e9f575b639d98a05f
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 151419e..66d8696 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -73,7 +73,7 @@ endif()
 
 target_link_libraries(${LIBNAME}
   PUBLIC
-    Podd::HallA
+    Podd::Podd
     Podd::Decode
   )
 set_target_properties(${LIBNAME} PROPERTIES
-- 
GitLab