
#///////////////////////////////////////////////////
#// If working with a osc_vis kit, customize the 
#// two below lines in order to find CLHEP and 
#// Geant4 on your machine. It is assumed that 
#// CLHEP installation is of the form :
#//   ${CLHEP_home}/include
#//   ${CLHEP_home}/lib/libCLHEP-<version>.[dylib,so]
#// and Geant4 :
#//   ${g4_home}/include
#//   ${g4_home}/lib/libG4global.[dylib,so], etc..
#// It is assumed that the G4 global libs are
#// available.
#///////////////////////////////////////////////////
CLHEP_home=/usr/local/CLHEP/2.0.3.1
g4_home=/usr/local/geant4/8.2

HDF5_home=/usr/local/HDF5/1.6.5

# SNEMO :
bhep_home=/Users/barrand/dev/exp/nemo/bhep/v1r4p2
snova_home=/Users/barrand/dev/exp/nemo/snova/v2r0p0

#///////////////////////////////////////////////////
#///////////////////////////////////////////////////
#///////////////////////////////////////////////////
g4_incs=-I$(CLHEP_home)/include -I$(g4_home)/include
g4_libs=-L$(g4_home)/lib -lG4readout -lG4run -lG4event -lG4tracking -lG4processes -lG4digits_hits -lG4track -lG4particles -lG4geometry -lG4graphics_reps -lG4materials -lG4intercoms -lG4global -L$(CLHEP_home)/lib -lCLHEP-2.0.3.1

g4lab_cppflags=-I../source $(g4_incs) `onx-config --cppflags`
g4lab_libs=-L. -lG4LabUIOnX -lG4LabCore $(g4_libs) `onx-config --core_libs`

bin=.
src=../source
apps=../applications

#///////////////////////////////////////////////////
#// Platform ///////////////////////////////////////
#///////////////////////////////////////////////////
platform=$(shell uname)
ifeq ($(platform),Darwin)
  compiler=eval c++
  linker=eval c++
  app_linker=eval c++ -bind_at_load
  shlib_builder=eval c++ -dynamiclib -twolevel_namespace -undefined dynamic_lookup -dynamic -single_module
  dll_builder=eval c++ -bundle -twolevel_namespace -Wl,-headerpad_max_install_names -Wl,-headerpad,800
  shlib_suffix=dylib
  dll_suffix=bundle
  dll_prefix=
endif

ifeq ($(platform),Linux)
  compiler=eval c++
  linker=eval c++
  app_linker=eval c++
  shlib_builder=eval c++ -shared
  dll_builder=eval c++ -shared
  shlib_suffix=so
  dll_suffix=so
  dll_prefix=lib
endif

#///////////////////////////////////////////////////////////////////////////
all :: $(bin)/snovis_program
	@echo "snovis : all ok." 

#///////////////////////////////////////////////////////////////////////////
clean ::
	/bin/rm -f $(bin)/*.o;/bin/rm -f $(bin)/*.a;/bin/rm -f $(bin)/*.so;/bin/rm -f $(bin)/*.dylib;/bin/rm -f $(bin)/*.bundle;/bin/rm $(bin)/snovis_program

include G4Lab.gmk

#///////////////////////////////////////////////////////////////////////////
# dll snovis :
#///////////////////////////////////////////////////////////////////////////

snovis_src = \
$(src)/Callbacks.cxx \
$(src)/InventorCallbacks.cxx \
$(src)/Layouts.cxx
snovis_objs = $(patsubst $(src)/%.cxx,$(bin)/%.o,$(snovis_src))

snovis_cppflags=-I.. $(g4lab_cppflags) `onx-config --iv_cppflags` `aida-config --cppflags`

snovis_linkopts=$(g4lab_libs) `onx-config --iv_libs`

$(bin)/$(dll_prefix)snovis.$(dll_suffix) : $(snovis_objs)
	$(dll_builder) -o $(bin)/$(dll_prefix)snovis.$(dll_suffix) $(snovis_objs) $(snovis_linkopts)

$(snovis_objs) : $(bin)/%.o : $(src)/%.cxx
	$(compiler) -c -o $@ $(snovis_cppflags) $<

#///////////////////////////////////////////////////////////////////////////
# application snovis_program :
#///////////////////////////////////////////////////////////////////////////

snovis_program_src = \
$(apps)/snovis_main.cxx
snovis_program_objs = $(patsubst $(apps)/%.cxx,$(bin)/%.o,$(snovis_program_src))

snovis_program_cppflags=-I.. $(g4lab_cppflags) `aida-config --cppflags` -I$(HDF5_home)/include -I$(bhep_home) -I$(snova_home) -I$(snova_home)/source/SNvertex/include -I$(snova_home)/source/GeomUtils/include -I$(snova_home)/source/SNgeom2/include

snovis_program_linkopts=-L$(snova_home)/bin_obuild -lsnova -lsngeom -lsnvertex -lgeomutils -L$(bhep_home)/bin_obuild -lbhep $(g4lab_libs) `onx-config --core_libs` `onx-config --iv_libs` -L${HDF5_home}/lib -lhdf5

$(bin)/snovis_program : $(bin)/libG4LabCore.$(shlib_suffix) $(bin)/libG4LabUIOnX.$(shlib_suffix) $(bin)/$(dll_prefix)G4Lab.$(dll_suffix) $(bin)/$(dll_prefix)snovis.$(dll_suffix) $(snovis_program_objs)
	$(app_linker) -o $(bin)/snovis_program $(snovis_program_objs) $(snovis_program_linkopts)

$(snovis_program_objs) : $(bin)/%.o : $(apps)/%.cxx
	$(compiler) -c -o $@ $(snovis_program_cppflags) $<
