The Makefile to generate the test programs


The following Makefile is extracted directly from the root.cmz file. It shows the options for all currently supported platforms. You can find an instance for your platform in the root/test directory.

+DECK,Makefile.
ObjSuf        = o
SrcSuf        = cxx
ExeSuf        =
DllSuf        = so
EVENTLIB      = $(EVENTO)
OutPutOpt     = -o

ROOTLIBS      = -L$(ROOTSYS)/lib -lNew -lBase -lCint -lClib -lCont -lFunc \
                -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta -lMinuit -lNet \
                -lPostscript -lProof -lTree -lUnix -lZip
ROOTGLIBS     = -lGpad -lGui -lGX11 -lX3d

+SELF,IF=HPUX,IF=-ACC,IF=-GCC.
# HP-UX with CC
CXX           = CC
+SELF,IF=HPUX,IF=HPUX9,IF=-ACC,IF=-GCC.
CXXFLAGS      = -O +a1 +Z -I$(ROOTSYS)/include
+SELF,IF=HPUX,IF=-HPUX9,IF=-ACC,IF=-GCC.
CXXFLAGS      = -O +a1 +Z -I$(ROOTSYS)/include
+SELF,IF=HPUX,IF=-ACC,IF=-GCC.
LD            = CC
LDFLAGS       = -g +a1 -z
SOFLAGS       = -b
LIBS          = $(ROOTLIBS) -lm
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/lib/X11R5 \
                -lXpm -lX11 -lm -ldld

+SELF,IF=HPUX,IF=ACC.
# HP-UX 10.x with aCC
CXX           = aCC
CXXFLAGS      = -g +Z -I$(ROOTSYS)/include
LD            = aCC
LDFLAGS       = -g -z
SOFLAGS       = -b
LIBS          = $(ROOTLIBS) -lm
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lm -ldld

+SELF,IF=HPUX,IF=GCC.
# HP-UX 10.x with g++
CXXFLAGS      = -g -I$(ROOTSYS)/include
CXX           = g++
LD            = g++
LDFLAGS       = -g
SOFLAGS       = -b
ROOTLIBS      = -L$(ROOTSYS)/lib -lRoot
LIBS          = $(ROOTLIBS) -lg++ -lm
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/lib/X11R5 \
                -L/usr/lib -lXpm -lX11 -lg++ -lm -ldld

+SELF,IF=IBMRT,IF=-GCC.
# IBM AIX
CXX           = xlC
CXXFLAGS      = -O -qnoro -qnoroconst -qmaxmem=-1 -I$(ROOTSYS)/include
LD            = xlC
LDFLAGS       = -g
SOFLAGS       =
ROOTLIBS      = -L$(ROOTSYS)/lib -lRoot -lCint
LIBS          = $(ROOTLIBS) -lm -lcurses
GLIBS         = $(ROOTLIBS) -lXpm -lX11 -lm -lPW -lld -lcurses

+SELF,IF=IBMRT,IF=GCC.
# IBM AIX with GCC
CXX           = g++
CXXFLAGS      = -g -fsigned-char -I$(ROOTSYS)/include
LD            = g++
LDFLAGS       = -g
SOFLAGS       = -shared
ROOTLIBS      = -L$(ROOTSYS)/lib -lRoot -lCint
LIBS          = $(ROOTLIBS) -lg++ -lm -lcurses
GLIBS         = $(ROOTLIBS) -lXpm -lX11 -lg++ -lm -lPW -lld

+SELF,IF=SOLARIS,IF=-GCC.
# Solaris
CXX           = CC
CXXFLAGS      = -O -KPIC -I$(ROOTSYS)/include
LD            = CC
LDFLAGS       = -g
SOFLAGS       = -G
LIBS          = $(ROOTLIBS) -lm -lsocket -lgen -lsunmath
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/openwin/lib \
                -L/usr/ccs/lib -lXpm -lX11 -lm -lgen -ldl -lsocket -lsunmath

+SELF,IF=SOLARIS,IF=GCC.
# Solaris gcc
CXX           = g++
CXXFLAGS      = -O -fPIC -I$(ROOTSYS)/include
LD            = CC
LDFLAGS       = -g
SOFLAGS       = -Wl,-soname,libEvent.so -shared
LIBS          = $(ROOTLIBS) -lg++ -lm -lsocket -lgen
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/openwin/lib \
                -L/usr/ccs/lib -lXpm -lX11 -lg++ -lm -lgen -ldl -lsocket

+SELF,IF=SOLARISPC.
# Solaris
CXX           = CC
CXXFLAGS      = -KPIC -I$(ROOTSYS)/include
LD            = CC
LDFLAGS       = -g
SOFLAGS       = -G
LIBS          = $(ROOTLIBS) -lm -lsocket -lgen
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/openwin/lib \
                -L/usr/ccs/lib -lXpm -lX11 -lm -lgen -ldl -lsocket

+SELF,IF=SGI,IF=-GCC,IF=-KCC.
# SGI
CXX           = CC
CXXFLAGS      = -O -I$(ROOTSYS)/include
LD            = CC
LDFLAGS       = -g
SOFLAGS       = -Wl,-soname,libEvent.so -shared
LIBS          = $(ROOTLIBS) -lm -ldl
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lm -lPW -ldl

+SELF,IF=SGI,IF=GCC.
# SGI with GCC
CXX           = g++
CXXFLAGS      = -fsigned-char -fPIC -I$(ROOTSYS)/include
LD            = g++
LDFLAGS       = -g -Wl,-u,__builtin_new -Wl,-u,__builtin_delete -Wl,-u,__nw__FUiPv
SOFLAGS       = -Wl,-soname,libEvent.so -shared
LIBS          = $(ROOTLIBS) -lg++ -lm -ldl
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lg++ -lm -lPW -ldl


+SELF,IF=SGI,IF=KCC.
# SGI with KCC
CXX           = KCC
CXXFLAGS      = -I$(ROOTSYS)/include --signed_chars --display_error_number --diag_suppress 68 --diag_suppress 191
LD            = KCC
LDFLAGS       = -g -Wl,-u,__builtin_new -Wl,-u,__builtin_delete -Wl,-u,__nw__FUiPv
SOFLAGS       = -Wl,-soname,libEvent.so
ROOTLIBS      = -L$(ROOTSYS)/lib -lBase -lCint -lClib -lCont -lFunc \
                -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta -lMinuit -lNet \
                -lPostscript -lProof -lTree -lUnix -lZip
LIBS          = $(ROOTLIBS) -lm -ldl
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lm -lPW -ldl

+SELF,IF=ALPHA,IF=GCC.
# Alpha/OSF with g++
CXX           = g++
CXXFLAGS      = -O -I$(ROOTSYS)/include
LD            = g++
LDFLAGS       = -g
SOFLAGS       = -Wl,-soname,libEvent.so -Wl,-expect_unresolved,* -shared
LIBS          = $(ROOTLIBS) -lg++ -lm
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lg++ -lm -lPW

+SELF,IF=ALPHA,IF=CXX.
# Alpha/OSF with cxx
CXX           = cxx
CXXFLAGS      = -O -D__osf__ -D__alpha -I$(ROOTSYS)/include
LD            = cxx
LDFLAGS       = -g
SOFLAGS       = -Wl,-expect_unresolved,* -call_shared
LIBS          = $(ROOTLIBS) -lm
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lm -lPW

+SELF,IF=LINUX,IF=-EGCS.
# Linux
CXX           = g++
CXXFLAGS      = -O -Wall -fPIC -I$(ROOTSYS)/include
LD            = g++
LDFLAGS       = -g
SOFLAGS       = -Wl,-soname,libEvent.so -shared
LIBS          = $(ROOTLIBS) -lg++ -lm -ldl -rdynamic
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/X11R6/lib \
                -lXpm -lX11 -lg++ -lm -ldl -rdynamic

+SELF,IF=LINUX,IF=EGCS.
# Linux with egcs
CXX           = g++
CXXFLAGS      = -O -Wall -fno-rtti -fno-exceptions -fPIC -I$(ROOTSYS)/include
LD            = g++
LDFLAGS       = -g
SOFLAGS       = -Wl,-soname,libEvent.so -shared
LIBS          = $(ROOTLIBS) -lm -ldl -rdynamic
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/X11R6/lib \
                -lXpm -lX11 -lm -ldl -rdynamic

+SELF,IF=HIUX.
# Hitachi HIUX
DllSuf        = sl
CXX           = g++
CXXFLAGS      = -O2 -fno-rtti -fno-exceptions -fPIC -I$(ROOTSYS)/include
LD            = g++
LDFLAGS       = -Wl,+s
SOFLAGS       = -Wl,-b,-E -nostdlib -nostartfiles
LIBS          = $(ROOTLIBS) -lm -ldld
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lm -ldld

+SELF.

#------------------------------------------------------------------------------

EVENTO        = Event.$(ObjSuf) \
                EventCint.$(ObjSuf)

EVENTS        = Event.$(SrcSuf) \
                EventCint.$(SrcSuf)

MAINEVENTO    = MainEvent.$(ObjSuf)
MAINEVENTS    = MainEvent.$(SrcSuf)

EVENT         = Event$(ExeSuf)
EVENTSO       = libEvent.$(DllSuf)

HWORLDO       = hworld.$(ObjSuf)
HWORLDS       = hworld.$(SrcSuf)
HWORLD        = hworld$(ExeSuf)

HSIMPLEO      = hsimple.$(ObjSuf)
HSIMPLES      = hsimple.$(SrcSuf)
HSIMPLE       = hsimple$(ExeSuf)

MINEXAMO      = minexam.$(ObjSuf)
MINEXAMS      = minexam.$(SrcSuf)
MINEXAM       = minexam$(ExeSuf)

TSTRINGO      = tstring.$(ObjSuf)
TSTRINGS      = tstring.$(SrcSuf)
TSTRING       = tstring$(ExeSuf)

TCOLLEXO      = tcollex.$(ObjSuf)
TCOLLEXS      = tcollex.$(SrcSuf)
TCOLLEX       = tcollex$(ExeSuf)

TCOLLBMO      = tcollbm.$(ObjSuf)
TCOLLBMS      = tcollbm.$(SrcSuf)
TCOLLBM       = tcollbm$(ExeSuf)

VVECTORO      = vvector.$(ObjSuf)
VVECTORS      = vvector.$(SrcSuf)
VVECTOR       = vvector$(ExeSuf)

VMATRIXO      = vmatrix.$(ObjSuf)
VMATRIXS      = vmatrix.$(SrcSuf)
VMATRIX       = vmatrix$(ExeSuf)

VLAZYO        = vlazy.$(ObjSuf)
VLAZYS        = vlazy.$(SrcSuf)
VLAZY         = vlazy$(ExeSuf)

GUITESTO      = guitest.$(ObjSuf)
GUITESTS      = guitest.$(SrcSuf)
GUITEST       = guitest$(ExeSuf)

OBJS          = $(EVENTO) $(MAINEVENTO) $(HWORLDO) $(HSIMPLEO) $(MINEXAMO) \
                $(TSTRINGO) $(TCOLLEXO) $(VVECTORO) $(VMATRIXO) $(VLAZYO) \
                $(GUITESTO)

PROGRAMS      = $(EVENT) $(HWORLD) $(HSIMPLE) $(MINEXAM) $(TSTRING) \
                $(TCOLLEX) $(VVECTOR) $(VMATRIX) $(VLAZY) $(GUITEST)

all:            $(PROGRAMS)

$(EVENT):       $(EVENTO) $(MAINEVENTO)
+IF,IBMRT.
		/usr/lpp/xlC/bin/makeC++SharedLib $(OutPutOpt) $(EVENTSO) $(LIBS) -p 0 $(EVENTO)
+ELSEIF,ALPHACXX.
# due to a bug in cxx/ld under osf3.xx, one cannot use cxx to generate
# a shared library. One must use ld instead.
		ld -L/usr/lib/cmplrs/cxx -rpath /usr/lib/cmplrs/cxx -expect_unresolved "*" \
 -g0 -O1 -shared /usr/lib/cmplrs/cc/crt0.o /usr/lib/cmplrs/cxx/_main.o \
 -o libEvent.so Event.o  EventCint.o -lcxxstd -lcxx -lexc -lots -lc
+ELSE
		$(LD) $(SOFLAGS) $(LDFLAGS) $(EVENTO) $(OutPutOpt) $(EVENTSO)
+ENDIF.
		$(LD) $(LDFLAGS) $(MAINEVENTO) $(EVENTLIB) $(LIBS) $(OutPutOpt) $(EVENT)
		@echo "$(EVENT) done"

$(HWORLD):      $(HWORLDO)
		$(LD) $(LDFLAGS) $(HWORLDO) $(GLIBS) $(OutPutOpt) $(HWORLD)
		@echo "$(HWORLD) done"

$(HSIMPLE):     $(HSIMPLEO)
		$(LD) $(LDFLAGS) $(HSIMPLEO) $(LIBS) $(OutPutOpt) $(HSIMPLE)
		@echo "$(HSIMPLE) done"

$(MINEXAM):     $(MINEXAMO)
		$(LD) $(LDFLAGS) $(MINEXAMO) $(LIBS) $(OutPutOpt) $(MINEXAM)
		@echo "$(MINEXAM) done"

$(TSTRING):     $(TSTRINGO)
		$(LD) $(LDFLAGS) $(TSTRINGO) $(LIBS) $(OutPutOpt) $(TSTRING)
		@echo "$(TSTRING) done"

$(TCOLLEX):     $(TCOLLEXO)
		$(LD) $(LDFLAGS) $(TCOLLEXO) $(LIBS) $(OutPutOpt) $(TCOLLEX)
		@echo "$(TCOLLEX) done"

$(TCOLLBM):     $(TCOLLBMO)
		$(LD) $(LDFLAGS) $^ $(LIBS) $(OutPutOpt) $@
		@echo "$@ done"

$(VVECTOR):     $(VVECTORO)
		$(LD) $(LDFLAGS) $(VVECTORO) $(LIBS) $(OutPutOpt) $(VVECTOR)
		@echo "$(VVECTOR) done"

$(VMATRIX):     $(VMATRIXO)
		$(LD) $(LDFLAGS) $(VMATRIXO) $(LIBS) $(OutPutOpt) $(VMATRIX)
		@echo "$(VMATRIX) done"

$(VLAZY):       $(VLAZYO)
		$(LD) $(LDFLAGS) $(VLAZYO) $(LIBS) $(OutPutOpt) $(VLAZY)
		@echo "$(VLAZY) done"

$(GUITEST):     $(GUITESTO)
		$(LD) $(LDFLAGS) $(GUITESTO) $(GLIBS) $(OutPutOpt) $(GUITEST)
		@echo "$(GUITEST) done"

clean:
		@rm -f $(OBJS) EventCint.$(SrcSuf) EventCint.h core

.SUFFIXES: .$(SrcSuf)

###

Event.o: Event.h
MainEvent.o: Event.h

EventCint.$(SrcSuf): Event.h LinkDef.h
	@echo "Generating dictionary ..."
	@$(ROOTSYS)/bin/rootcint -f EventCint.$(SrcSuf) -c Event.h LinkDef.h

.$(SrcSuf).$(ObjSuf):
	$(CXX) $(CXXFLAGS) -c $<

Rene Brun, Fons Rademakers
Last update 14/01/97 by Rene Brun