# --------------------------------------------------------------
# GNUmakefile for creating exampleR05: Using the Geant4
# hit mechanism with ROOT.
# Note that as of 30-Oct-2000, it has only been tested with
# ROOT 2.25/03, Geant 4.2.0ref2, on a Linux Redhat 6.2 system.
# --------------------------------------------------------------

# Note: To adapt this example for working code, you not only have to
# edit the name of the main program, but you also have to edit the
# ROOT class definitions and implementions below.
name := exampleR05
G4TARGET := $(name)
G4EXLIB := true

ifndef G4INSTALL
  G4INSTALL = ../../..
endif

.PHONY: all
all: lib bin

include $(G4INSTALL)/config/architecture.gmk

ROOTCFLAGS = `root-config --cflags`
CPPFLAGS += $(ROOTCFLAGS)
LDFLAGS += `root-config --nonew --libs`

# Before we compile, use rootcint to create the dictionary files for
# our ROOT classes.  This example will create src/ExR05Dict.cc and
# src/ExR05Dict.h.
$(G4TARGET).cc: src/ExR05Dictionary.cc
src/ExR05Dictionary.cc: include/ExR05RootEvent.hh include/ExR05RootHit.hh
	@echo "Generating dictionary ExR05Dictionary..."
	@rootcint -f src/ExR05Dictionary.cc -c $(ROOTCFLAGS) -I./include ExR05RootEvent.hh ExR05RootHit.hh

# Standard G4 compilation:
include $(G4INSTALL)/config/binmake.gmk

# After G4 programs have compiled, create the ROOT shared library.
RootShared = ExR05.so
RootObjs = $(G4TMPDIR)/ExR05RootEvent.o $(G4TMPDIR)/ExR05RootHit.o $(G4TMPDIR)/ExR05Dictionary.o
bin: $(RootShared)
$(RootShared): $(RootObjs)
	@echo "Making ROOT shared library..."
	@$(CXX) -shared -O $(RootObjs) -o $@
	@echo "$@ done"

# For cleaning the ROOT files, add a command to the standard G4 "make clean":
clean: clean_root
clean_root:
	@echo "Deleting old dictionaries, shared libraries, output files, documentation and analysis classes..."
	@rm -f *.so src/*Dictionary.* *MakeClass* *.root
	@rm -rf htmldoc/

