package snovis
version v1r1

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

use OpenScientist v16r* cmt

use snova v2r*

set G4RADIOACTIVEDATA "${OSC_G4RADIOACTIVEDATA}"
set G4LEVELGAMMADATA "${OSC_G4LEVELGAMMADATA}"
set G4LEDATA "${OSC_G4LEDATA}"
set NeutronHPCrossSections "${OSC_NeutronHPCrossSections}"

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

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

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

branches run

build_strategy no_prototypes
include_path none

include_dirs $(SNOVISROOT)

# With Geant4 global libs :
macro snovis_Geant4_incs "${OSC_Geant4_incs}"
macro snovis_Geant4_linkopts "-L${OSC_Geant4_lib} -lG4physicslists -lG4readout -lG4run -lG4event -lG4tracking -lG4processes -lG4digits_hits -lG4track -lG4particles -lG4geometry -lG4graphics_reps -lG4materials -lG4intercoms -lG4global -lCLHEP"

# Waiting Geant4 DLL on Windows...
# Darwin : problem too with dylibs.
macro snovis_libopts "" WIN32 " -no_share" Darwin " -no_share"
#macro snovis_libopts "" WIN32 ""

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

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

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

application prog_snova ../applications/prog_snova2.cxx use_linkopts='"${snova_linkopts} ${snvertex_linkopts} ${sngeom_linkopts} ${geomutils_linkopts} ${bhep_linkopts} ${Geant4_linkopts} ${CLHEP_linkopts}"'
#macro prog_snova_cppflags "${snova_cppflags}"

# Over G4Lab :
application snovis_session ../applications/snovis_session.cc use_linkopts='"${snova_linkopts} ${snvertex_linkopts} ${sngeom_linkopts} ${geomutils_linkopts} ${bhep_linkopts} ${OSC_G4Lab_linkopts} ${snovis_Geant4_linkopts} ${OSC_Inventor_linkopts} ${OSC_OnX_linkopts}"' 
macro snovis_session_cppflags "${snovis_Geant4_incs} ${snovis_batch_cppflags}"

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

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

apply_pattern setup_paths

