Re: RootApps Linux Makefiles

From: Jacek M. Holeczek (holeczek@us.edu.pl)
Date: Tue Jun 08 1999 - 09:39:04 MEST


> Since the makefiles for RootApps such as Event and, FastMC, etc. only have
> make file options for SunOS, and AIX, what modifications can I make to get
> it to work for Linux?  Thank you for your time.  Peace.
You can get these "options" looking into the .../root/src/Makefile.* for
the appropriate platform.
Another solution is : you need to download the appropriate binary release
of root ( for your platform ) and then look into .../root/test/Makefile
which contains "options" used in this release on your platform.
You can also prepare a multi-platform Makefile ( the gnu make is required,
but it's anyhow required to compile root, I think ).
Have a look at the attachment which is a dual-platform Makefile for Linux
and AIX ( note - the "options" are not current, you need to modify them ).
The main difference between AIX and other unix systems is the way a shared
library is built ( see how the H309SO is built in the attached Makefile ).
Jacek.


SrcSuf        = cxx
IncSuf        = hxx

ObjSuf        = o
ExeSuf        =
DllSuf        = so
OutPutOpt     = -o

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

OSNAME        = $(shell uname)

ifeq ($(OSNAME),Linux)
# Linux with egcs
EGCS          = /opt/egcs/pro
CXX           = g++
CXXFLAGS      = -g -O2 -Wall -fno-rtti -fno-exceptions -fPIC -I$(ROOTSYS)/include
LD            = g++
LDFLAGS       = -g -O2 -Wl,-rpath,$(EGCS)/lib:$(ROOTSYS)/lib
SOFLAGS       = -shared
#SOFLAGS       = -Wl,-soname,h309.$(DllSuf) -shared
LIBS          = $(ROOTLIBS) -lm -ldl -rdynamic
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/X11R6/lib \
                -lXpm -lX11 -lm -ldl -rdynamic
endif

ifeq ($(OSNAME),AIX)
# IBM AIX
CXX           = xlC
CXXFLAGS      = -O2 -w -qnoro -qnoroconst -qmaxmem=-1 -I$(ROOTSYS)/include
LD            = xlC
LDFLAGS       = -O2
SOFLAGS       =
ROOTLIBS      = -L$(ROOTSYS)/lib -lRoot -lCint
LIBS          = $(ROOTLIBS) -lm -lcurses
GLIBS         = $(ROOTLIBS) -lXm -lXt -lX11 -lm -lPW -lld -lcurses
endif

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

H309O         = h309.$(ObjSuf) h309Dict.$(ObjSuf)
H309S         = h309.$(SrcSuf) h309Dict.$(SrcSuf)
H309SO        = h309.$(DllSuf)

OBJS          = $(H309O)

PROGRAMS      = $(H309SO)

all:            $(PROGRAMS)

$(H309SO):      $(H309O)
ifeq ($(OSNAME),Linux)
	$(LD) $(SOFLAGS) $(LDFLAGS) $(H309O) $(OutPutOpt) $(H309SO)
endif
ifeq ($(OSNAME),AIX)
	/usr/lpp/xlC/bin/makeC++SharedLib $(OutPutOpt) $(H309SO) $(LIBS) -p 0 $(H309O)
endif
	@echo "$(H309SO) for $(OSNAME) done"

clean:
		@rm -f $(OBJS) *Dict.* *~ .*~ core

.SUFFIXES: .$(SrcSuf)

###

h309.$(ObjSuf): h309.$(SrcSuf) h309.$(IncSuf)
h309Dict.$(SrcSuf): h309.$(IncSuf)
	@echo "Generating dictionary h309Dict..."
	@$(ROOTSYS)/bin/rootcint -f h309Dict.$(SrcSuf) -c h309.$(IncSuf)

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



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:34 MET