package bhep
version v1r4p2

#//////////////////////////////////////////////////
#
#  This file assumes the following 
# directory structure :
#    bhep/<version>/cmt
#    bhep/<version>/source/base/...
#    bhep/<version>/source/util/...
# and a :
#    bhep/<version>/bhep
# containing a copy of the .h from the source
# directory along with the config.h found 
# in this directory.
#
#//////////////////////////////////////////////////

#//////////////////////////////////////////////////
use zlib v1r* Interfaces
use HDF5 v1r* Interfaces
use CLHEP v1r* Interfaces
#//////////////////////////////////////////////////

build_strategy no_prototypes
include_path none

include_dirs $(BHEPROOT) $(BHEPROOT)/bhep

#//////////////////////////////////////////////////
# No dependency over other libs.

library bhep  -s=../source \
   version.cpp \
   base/event.cpp \
   base/hit.cpp \
   base/mparticle.cpp \
   base/particle.cpp \
   base/sparticle.cpp \
   base/track.cpp \
   util/material.cpp \
   util/particle_definition.cpp \
   util/ray.cpp \
   converters/event_cvt.cpp \
   converters/hit_cvt.cpp \
   converters/mparticle_cvt.cpp \
   converters/particle_cvt.cpp \
   converters/sparticle_cvt.cpp \
   converters/track_cvt.cpp \
   manager/base_reader.cpp \
   manager/bhep_svc.cpp \
   manager/brw.cpp \
   manager/converter_svc.cpp \
   manager/random_reader.cpp \
   manager/random_writer.cpp \
   manager/reader_gz.cpp \
   manager/reader_hdf5.cpp \
   manager/reader_txt.cpp \
   manager/sequential_reader.cpp \
   manager/sequential_writer.cpp \
   manager/writer_gz.cpp \
   manager/writer_hdf5.cpp \
   manager/writer_txt.cpp \
   examples/generate_event.cpp \
   tutorials/gevent.cpp \
   histos/axis.cpp \
   histos/histogram.cpp \
   tools/EventManager.cpp

macro bhep_cppflags ""
macro bhep_shlibflags "${CLHEP_linkopts} ${HDF5_linkopts} ${zlib_linkopts}"
macro bhep_linkopts "-L${BHEPROOT}/$(CMTCONFIG) -lbhep"

#//////////////////////////////////////////////////
#/// compile, link flags //////////////////////////
#//////////////////////////////////////////////////
private
# WIN32 : /GR to enable RTTI and dynamic cast.
# WIN32 : /GX to enable exception handling (for STL).
macro_append cppflags  "" WIN32 " /GX /GR"

# DEBUG :
#macro_append cflags  " -g" WIN32 " /ZI /Od"
#macro_append cppflags  " -g" WIN32 " /ZI /Od"
#macro_append cpplinkflags  " -g" WIN32 " /DEBUG /VERBOSE:LIB"

# OPTIMIZE :
macro_append cflags  " -O" WIN32 " /O2"
macro_append cppflags  " -O" WIN32 " /O2"
macro_append cpplinkflags  " -O" WIN32 ""

macro build_library_links "true" WIN32 ""
macro remove_library_links "true" WIN32 ""
public

#//////////////////////////////////////////////////
#/// Run time /////////////////////////////////////
#//////////////////////////////////////////////////

pattern setup_paths \
  path_remove LD_LIBRARY_PATH "${<PACKAGE>ROOT}/$(CMTCONFIG)" WIN32 "" Darwin "" ;\
  path_append LD_LIBRARY_PATH "${<PACKAGE>ROOT}/$(CMTCONFIG)" WIN32 "" Darwin "" ;\
  path_remove DYLD_LIBRARY_PATH "" Darwin "${<PACKAGE>ROOT}/$(CMTCONFIG)" ;\
  path_append DYLD_LIBRARY_PATH "" Darwin "${<PACKAGE>ROOT}/$(CMTCONFIG)" ;\
  path_remove PATH "${<PACKAGE>ROOT}/$(CMTCONFIG)" WIN32 "${<PACKAGE>ROOT}\$(CMTCONFIG)" ;\
  path_append PATH "${<PACKAGE>ROOT}/$(CMTCONFIG)" WIN32 "${<PACKAGE>ROOT}\$(CMTCONFIG)"

apply_pattern setup_paths




