#
# Platform independent part of make procedure for Nirvana phase space 
# event display, included by machine specific makefiles.
#
UNAME = $(shell uname)
ifeq "$(UNAME)" "AIX"
    CC=cc
    CPP = /lib/cpp
    AR=ar
    CFLAGS=$(DEBUG) -D_BSD -I$(STDHEP_DIR)/src/inc
    FFLAGS=$(DEBUG) -qextname
    F77=xlf
    LIBS= -lXm -lXt -lX11 -lm -lbsd -lxlf
endif
ifeq "$(UNAME)" "IRIX"
    IRIX6 = $(findstring 6,$(shell uname -r))
    CC=cc
    CPP = /lib/cpp
    AR=ar
    ifeq "$(IRIX6)" "6"
	CFLAGS=$(DEBUG) -n32 -I$(STDHEP_DIR)/src/inc
	FFLAGS=$(DEBUG) -n32
	BIGGER_STRINGS=-Wf,-XNl6000
	LIBS=-lXm -lXt -lX11 -lm -lftn -lPW -lm
    else
	CFLAGS=$(DEBUG) -I$(STDHEP_DIR)/src/inc
	FFLAGS=$(DEBUG)
	BIGGER_STRINGS=-Wf,-XNl6000
	LIBS=-lXm -lXt -lX11 -lm -lF77 -lI77 -lU77 -lisam -lsun -lPW -lm
    endif
endif
ifeq "$(UNAME)" "IRIX64"
    CC=cc
    CPP = /lib/cpp
    AR=ar
    CFLAGS=$(DEBUG) -n32 -I$(STDHEP_DIR)/src/inc
    FFLAGS=$(DEBUG) -n32
    BIGGER_STRINGS=-Wf,-XNl6000
    LIBS=-lXm -lXt -lX11 -lm -lftn -lPW -lm
endif
ifeq "$(UNAME)" "Linux"
    CC=gcc
    CPP = gcc -E
    F77=g77
    AR=ar
    CFLAGS=$(DEBUG) -I$(STDHEP_DIR)/src/inc -I/usr/X11/include
    FFLAGS=$(DEBUG)
    LIBS=-L/usr/X11/lib -lXm -lXt -lX11 -lXp -lXext -lm -lf2c
endif
ifeq "$(UNAME)" "OSF1"
    CC=cc
    CPP = cpp
    F77=f77
    AR=ar
    CFLAGS=$(DEBUG) -DUSE_DIRENT -DFUNCPROTO -DXTFUNCPROTO -I$(STDHEP_DIR)/src/inc
    LIBS=-lXm -lXt -lX11 -lm -lfor -lots
endif
ifeq "$(UNAME)" "SunOS"
    CC=/opt/SUNWspro/bin/cc
    CPP = /usr/ccs/lib/cpp
    AR=ar
    LIBS= -L/usr/openwin/lib -L/usr/dt/lib -lm -lXm -lXt -lX11 -lgen \
	   -lF77 -lM77 -lsunmath -lsocket -lnsl -R /usr/openwin/lib -R /usr/dt/lib
    CFLAGS=$(DEBUG) -Xa -I/usr/openwin/include -I/usr/dt/include \
	    -DMOTIF12 -I$(STDHEP_DIR)/src/inc
endif
ifeq "$(UNAME)" "HP-UX"
    AR=ar
    CC=cc
    CPP = /lib/cpp
    F77=f77
    CFLAGS=$(DEBUG) -Aa -I/usr/include/X11R5 -I/usr/include/Motif1.2 \
	-I$(STDHEP_DIR)/src/inc -D_HPUX_SOURCE -DMOTIF12 -DFUNCPROTO -DXTFUNCPROTO
    FFLAGS=$(DEBUG) +ppu
    BIGGER_STRINGS = -Wp,-H20000
    LIBS= -L /usr/lib/X11R5 -L /usr/lib/Motif1.2 -lm -lXm -lXt -lX11 -lU77 -lcl
endif
ifeq "$(UNAME)" "ULTRIX"
    CC= cc
    AR= ar
    CFLAGS= $(DEBUG)
    LIBS= -lXm -lXt -lX11 -lm -lF77 -lI77 -lU77 -lots -lfor -lutil -li
endif

#DEBUG=-g
#DEBUG=

NLIBDIR = ../../lib
NBINDIR = ../../bin

OBJS  =	phase.o panel.o menu.o drawEvent.o pick.o pixmaps.o settings.o \
	rotation.o hepnmg.o stdHepFortranUtil.o \
	Tree.o dispTree.o listNodeHep.o stdHepFiles.o help.o \
	panelSpace.o space.o panelPara.o Space_main.o
SRCS  =	phase.c panel.c menu.c drawEvent.c pick.c pixmaps.c settings.c \
	rotation.c help.c hepnmg.f stdHepFortranUtil.f \
	Tree.c dispTree.c listNodeHep.c stdHepFiles.c \
	panelSpace.c space.c panelPara.c Space_main.c 
INCLS =	drawEvent.h panel.h phaseP.h pixmaps.h settings.h menu.h phase.h \
	pick.h rotation.h stdHepFiles.h tree.h treeP.h dispTree.h \
	listNodeHep.h help.h \
	panelSpace.h space.h panelPara.h
INCS = $(STDHEP_DIR)/src/inc
CPPFLG = -C -P -DUNIX -I$(INCS)

all: $(NLIBDIR)/libPhaseStdHep.a $(NBINDIR)/Phase $(NBINDIR)/Space

$(NLIBDIR)/libPhaseStdHep.a: $(OBJS)
	$(AR) -urs $(NLIBDIR)/libPhaseStdHep.a $(OBJS)

$(NBINDIR)/Phase: Phase.o TestParticles.o $(NLIBDIR)/libPhaseStdHep.a
	$(CC) $(CFLAGS)  Phase.o  TestParticles.o \
	      $(NLIBDIR)/libPhaseStdHep.a  $(NLIBDIR)/libSpin.a $(NLIBDIR)/libNUtil.a \
	      -L$(STDHEP_DIR)/lib -lstdhep -lstdhepC -lFmcfio \
	      -L$(CERN_DIR)/lib -lpacklib \
	      -o $@ $(LIBS)
      
$(NBINDIR)/Space: Space_main.o $(NLIBDIR)/libPhaseStdHep.a
	$(CC) $(CFLAGS) Space_main.o \
	      $(NLIBDIR)/libPhaseStdHep.a $(NLIBDIR)/libSpin.a $(NLIBDIR)/libNUtil.a \
	      -L$(STDHEP_DIR)/lib -lstdhep -lstdhepC -lFmcfio \
	      $(CERN_DIR)/lib/libpacklib.a \
	      -o $@ $(LIBS)

help.o: help.c
	$(CC) $(CFLAGS) $(BIGGER_STRINGS) -c help.c -o $@

install:
	-mv libPhaseStdHep.a $(NLIBDIR)/.
	-mv Phase $(NBINDIR)/.
	-mv Space $(NBINDIR)/.

clean:
	rm -f *.o
	
realclean:
	rm -f *.o
	rm -f $(NBINDIR)/Phase $(NBINDIR)/Space $(NLIBDIR)/libPhaseStdHep.a
	
depend:
	$(MAKEDEPEND) -fGNUmakefile -- $(CFLAGS) -- $(SRCS) Phase.c \
		     space.c TestParticles.c

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

.SUFFIXES : .o .c .F .f

.F.o:
	$(CPP) $(CPPFLG) $< > $*.f
	$(F77) $(FFLAGS) -c $*.f
	rm -f $*.f

# DO NOT DELETE THIS LINE -- make depend depends on it.

phase.o: spin/Spin.h
phase.o: phase.h
phase.o: space.h
phase.o: phaseP.h
phase.o: panel.h
phase.o: pixmaps.h
phase.o: pick.h
phase.o: drawEvent.h
phase.o: dispTree.h
panel.o: spin/Spin.h
panel.o: util/DialogF.h
panel.o: phase.h
panel.o: space.h
panel.o: phaseP.h
panel.o: panel.h
panel.o: menu.h
panel.o: pick.h
panel.o: rotation.h
menu.o: phase.h
menu.o: space.h
menu.o: phaseP.h
menu.o: menu.h
menu.o: panel.h
menu.o: settings.h
menu.o: rotation.h
menu.o: stdHepFiles.h
menu.o: pick.h
menu.o: dispTree.h
menu.o: util/printUtils.h
menu.o: util/getfiles.h
menu.o: util/DialogF.h
menu.o: util/misc.h
menu.o: spin/Spin.h
menu.o: util/help.h
menu.o: help.h
drawEvent.o: spin/Spin.h
drawEvent.o: util/stringUtils.h
drawEvent.o: phase.h
drawEvent.o: space.h
drawEvent.o: phaseP.h
drawEvent.o: drawEvent.h
pick.o: spin/Spin.h
pick.o: util/stringUtils.h
pick.o: phase.h
pick.o: space.h
pick.o: phaseP.h
pick.o: pick.h
pick.o: drawEvent.h
pick.o: dispTree.h
pixmaps.o: pixmaps.h
settings.o: phase.h
settings.o: space.h
settings.o: phaseP.h
rotation.o: phase.h
rotation.o: space.h
rotation.o: phaseP.h
help.o: util/help.h
help.o: help.h
Tree.o: tree.h
Tree.o: treeP.h
dispTree.o: tree.h
dispTree.o: phase.h
dispTree.o: space.h
dispTree.o: phaseP.h
dispTree.o: dispTree.h
dispTree.o: pick.h
dispTree.o: spin/Spin.h
dispTree.o: drawEvent.h
dispTree.o: listNodeHep.h
dispTree.o: util/stringUtils.h
listNodeHep.o: phase.h
listNodeHep.o: space.h
listNodeHep.o: phaseP.h
listNodeHep.o: dispTree.h
listNodeHep.o: spin/Spin.h
listNodeHep.o: drawEvent.h
listNodeHep.o: listNodeHep.h
stdHepFiles.o: phase.h
stdHepFiles.o: space.h
stdHepFiles.o: phaseP.h
stdHepFiles.o: spin/Spin.h
stdHepFiles.o: drawEvent.h
panelSpace.o: spin/Spin.h
panelSpace.o: util/DialogF.h
panelSpace.o: phase.h
panelSpace.o: space.h
panelSpace.o: phaseP.h
panelSpace.o: panelSpace.h
panelSpace.o: menu.h
panelSpace.o: pick.h
panelSpace.o: rotation.h
panelPara.o: spin/Spin.h
panelPara.o: util/DialogF.h
panelPara.o: phase.h
panelPara.o: space.h
panelPara.o: phaseP.h
panelPara.o: panelPara.h
panelPara.o: menu.h
panelPara.o: pick.h
panelPara.o: rotation.h
space.o: spin/Spin.h
space.o: phase.h
space.o: space.h
space.o: phaseP.h
space.o: panelSpace.h
space.o: pixmaps.h
space.o: pick.h
space.o: drawEvent.h
space.o: dispTree.h
Phase.o: phase.h
Phase.o: space.h
Phase.o: phaseP.h
Phase.o: spin/Spin.h
Phase.o: drawEvent.h
TestParticles.o: phase.h
