package snovis
version v1r1

#//////////////////////////////////////////////////
#/// Uses needed to build this package ////////////
#//////////////////////////////////////////////////

use OpenScientist v1r16p0 Interfaces

use snova v2r*

#////////////////////////////////////////////////////////////
#////////////////////////////////////////////////////////////
#////////////////////////////////////////////////////////////

# Darwin : to build dlls properly :
macro make_shlib "$(make_shlib)" Darwin "$(SNOVISROOT)/cmt/cmt_make_shlib_common.sh extract"

#//////////////////////////////////////////////////
#//////////////////////////////////////////////////
#//////////////////////////////////////////////////

build_strategy no_prototypes
include_path none

include_dirs $(SNOVISROOT)

#//////////////////////////////////////////////////
#/// G4Lab ////////////////////////////////////////
#//////////////////////////////////////////////////

# Over Geant4, HEPVis and Inventor :
library G4LabCore -s=../source/G4Lab/cxx \
  Transform3D.cxx \
  Polyhedron.cxx \
  GeometryVisitor.cxx \
  Tree.cxx \
  Trajectory.cxx \
  State.cxx \
  SteppingAction.cxx \
  TrackingAction.cxx \
  SoG4RunManager.cxx \
  SoVisitedVolume.cxx \
  SoG4Trajectories.cxx \
  PhysicalVolumeAccessor.cxx \
  TrajectoryContainerAccessor.cxx \
  TrajectoryAccessor.cxx \
  PhysicsTableAccessor.cxx \
  HitsCollectionAccessor.cxx \
  DigitsCollectionAccessor.cxx \
  Manager.cxx
macro G4LabCore_cppflags "-I../source ${OSC_AIDA_incs} ${OSC_OnX_incs} ${OSC_Inventor_incs}"
macro G4LabCore_linkopts "-L${SNOVISROOT}/$(CMTCONFIG) -lG4LabCore" WIN32 "${SNOVISROOT}\$(CMTCONFIG)\G4LabCore.lib"

# G4LabUIOnX :
# A Geant4 G4UISession for OnX.
# It needs OnX. Avoid establishing a relationship with G4interfaces
# that may be reconstructed with various GUI drivers.
library G4LabUIOnX ../source/G4Lab/cxx/UIOnX.cxx
macro G4LabUIOnX_cppflags "-I../source ${OSC_OnX_incs} ${Geant4_include}"
macro G4LabUIOnX_linkopts "-L${SNOVISROOT}/$(CMTCONFIG) -lG4LabUIOnX" WIN32 "${SNOVISROOT}\$(CMTCONFIG)\G4LabUIOnX.lib"

# DLD callbacks :
# Over Lib only :
macro G4Lab_kind "dll"
library G4Lab ../source/G4Lab/cxx/Callbacks.cxx
macro lib_G4Lab_cppflags "-I../source ${OSC_AIDA_incs} ${OSC_OnX_incs} ${OSC_Inventor_incs}"
macro G4Lab_shlibflags "${OSC_Inventor_linkopts} ${OSC_OnX_linkopts}"

#//////////////////////////////////////////////////
#/// DLD callbacks ////////////////////////////////
#//////////////////////////////////////////////////

# Must not use Geant4 singletons if having not Geant4 shared libs.
macro snovis_kind "dll"
library snovis ../source/*.cxx
macro snovis_cppflags "-I../source ${OSC_AIDA_incs} ${OSC_OnX_incs} ${OSC_Inventor_incs}"
macro snovis_shlibflags "${OSC_Inventor_linkopts} ${OSC_OnX_linkopts}"

#//////////////////////////////////////////////////
#/// Applications /////////////////////////////////
#//////////////////////////////////////////////////

# debug :
#application prog_snova ../applications/prog_snova2.cxx use_linkopts='"${snova_ui_linkopts} ${snova_linkopts} ${Geant4_interfaces_linkopts} ${Geant4_vis_management_linkopts} ${Geant4_modeling_linkopts} ${Geant4_Tree_linkopts} ${Geant4_linkopts} ${snvertex_linkopts} ${sngeom_linkopts} ${geomutils_linkopts} ${bhep_linkopts} ${CLHEP_linkopts}"'

# Over G4Lab :
application prog_snovis ../applications/snovis_session.cc use_linkopts='"${snova_linkopts} ${snvertex_linkopts} ${sngeom_linkopts} ${geomutils_linkopts} ${bhep_linkopts} ${G4LabUIOnX_linkopts} ${G4LabCore_linkopts} ${Geant4_linkopts} ${CLHEP_linkopts} ${OSC_Inventor_linkopts} ${OSC_OnX_linkopts}"' 
macro prog_snovislinkopts "" Darwin "-bind_at_load"

#//////////////////////////////////////////////////
#//////////////////////////////////////////////////
#//////////////////////////////////////////////////

private
macro build_library_links "true" WIN32 ""
macro remove_library_links "true" WIN32 ""

# 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"

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

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

set G4LABROOT	"$(SNOVISROOT)/Resources/G4Lab" WIN32 ""

apply_pattern setup_paths

