#
# make procedure for mcfio  - use gmake
# This makefile builds ntuBrowser with histoscope if $HISTO_DIR is defined.
#
# note that this latest version of mcfio only works with stdhep 3.0 or later
#
UNAME := $(shell uname)

SRCDIR = ../mcfio
BLDDIR = ../mcfio
LIBDIR = $(STDHEP_DIR)/lib
BINDIR = $(STDHEP_DIR)/bin

AR=ar
LIBS=
CCLIBS=
FFLIBS= 

ifeq "$(UNAME)" "AIX"
   CC=cc
   F77=xlf
   CFLAGS= -g -DAIX
   FFLAGS=-g -qextname
   MXTLIBS= -lXm -lXt -lX11 -lm -lbsd -lxlf
endif
ifeq "$(UNAME)" "HP-UX"
   CC=cc
   F77=fort77
   CFLAGS= -g -Aa -D_HPUX_SOURCE
   FFLAGS=-g -DHP-UX +ppu
   MXTLIBS = -lXm -lXt -lX11 -lPW -lm
endif
ifeq "$(UNAME)" "IRIX"
   IRIX6 = $(findstring 6,$(shell uname -r))
   CC=cc
   F77=f77
   MXTLIBS = -lXm -lXt -lX11 -lPW -lm
   ifeq "$(IRIX6)" "6"
     CFLAGS= -g2 -n32 -DXTFUNCPROTO -DFUNCPROTO
     FFLAGS=-g2 -n32
   else
     CFLAGS= -g2 -DXTFUNCPROTO -DFUNCPROTO
     FFLAGS=-g2
   endif
endif
ifeq "$(UNAME)" "IRIX64"
   CC=cc
   F77=f77
   CFLAGS= -g2 -n32 -DXTFUNCPROTO -DFUNCPROTO
   FFLAGS=-g2 -n32
   MXTLIBS = -lXm -lXt -lX11 -lPW -lm
endif
ifeq "$(UNAME)" "Linux"
   CC=gcc
   F77=g77
   CFLAGS= -g -I/usr/X11/include
   FFLAGS= -g -fdebug-kludge -fno-second-underscore
   MXTLIBS =  -L/usr/X11/lib -lXm -lX11 -lXt -lXp -lXext -lm
endif
ifeq "$(UNAME)" "OSF1"
   CC=cc
   F77=f77
   CFLAGS= -g2 -DXTFUNCPROTO -DFUNCPROTO
   FFLAGS=-g2
   MXTLIBS = -lXm -lXt -lX11 -lm -lfor -lots
endif
ifeq "$(UNAME)" "SunOS"
   CC=/opt/SUNWspro/bin/cc
   F77=f77
   CFLAGS=-g -I/usr/openwin/include -I/usr/dt/include -DMOTIF12
   FFLAGS=-g
   LIBS+= -L/usr/openwin/lib -L/opt/SUNWmotif/lib -lm -Bstatic -lXm \
	   -Bdynamic -lXt -lX11 -lgen -R /usr/openwin/lib -lF77
   CCLIBS+= -lm -lF77 -lsocket -lnsl
   FFLIBS += -lm -lgen -lF77 -lV77 -lnsl -lm  
   MXTLIBS = -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
endif

FINC = -I$(SRCDIR) -I$(STDHEP_DIR)/src/inc -I$(MCFAST_DIR)/inc/event
CINC = -I$(SRCDIR)
HLIB =
ifdef HISTO_DIR
   CFLAGS += -DHISTO
   CINC += -I$(HISTO_DIR)/include
   HLIB += $(HISTO_DIR)/lib/libCHisto.a
endif

CL_F_SRC    = mcfio_FPrintDictionary \
               mcf_evt_xdr mcfio_FBinding mcfio_Util1 \
               mcfio_Direct mcfio_SeqDummy mcfio_Block \
               mcf_ntubldInit mcf_ntuBldDbinc \
               mcf_NTuIOFiles  mcf_NTuIOUtils
CL_F_OBJS   = $(addprefix $(BLDDIR)/,$(addsuffix .o,$(CL_F_SRC)))

CL_NTUBLD_SRC  = \
               mcf_NTuBuildWindow mcf_NTuBldMenu \
               mcf_NTuBldHelp mcf_NTuBldFiles \
               mcf_ntubldInit mcf_ntuBldDbinc DialogF misc help \
               getfiles fileUtils
CL_NTUBLD_OBJS   = $(addprefix $(BLDDIR)/,$(addsuffix .o,$(CL_NTUBLD_SRC)))

CL_BROWSER_SRC = mcf_BrowseMainPanel mcf_BrowseMainMenu \
               mcf_BrowseHelp  mcf_BrowseMainProgram \
               mcf_BrowseUtil1 mcf_BrowseUtil2
CL_BROWSER_OBJS   = $(addprefix $(BLDDIR)/,$(addsuffix .o,$(CL_BROWSER_SRC)))
               
SRCS_RBIO  =   mcfio_FPrintDictionary.f \
               mcf_evt_xdr.c mcfio_FBinding.c mcfio_Util1.c \
               mcfio_Direct.c mcfio_Block.c mcfio_Sequential.c
CL_F_OBJS_RBIO = $(BLDDIR)/mcfio_FPrintDictionary.o $(BLDDIR)/mcf_evt_xdr.o \
                 $(BLDDIR)/mcfio_FBinding.o $(BLDDIR)/mcfio_Util1.o \
                 $(BLDDIR)/mcfio_Direct.o $(BLDDIR)/mcfio_Block.o \
                 $(BLDDIR)/mcfio_Sequential.o
               
#--------------------------

all: $(LIBDIR)/libFmcfio.a $(BINDIR)/ntuBuild $(BINDIR)/ntuBrowser 

$(LIBDIR)/libFmcfio.a: $(CL_F_OBJS) 
	$(AR) -urs $(LIBDIR)/libFmcfio.a $(CL_F_OBJS) 
	
$(LIBDIR)/libFmcfioRbio.a: $(CL_F_OBJS_RBIO) 
	$(AR) -urs $(LIBDIR)/libFmcfioRbio.a $(CL_F_OBJS_RBIO) 

$(BINDIR)/ntuBuild: $(CL_NTUBLD_OBJS) $(LIBDIR)/libFmcfio.a \
                 $(BLDDIR)/mcf_BrowseUtil1.o $(BLDDIR)/mcf_nTupleBuild.o
	$(CC) $(CFLAGS) -o $@ \
	$(BLDDIR)/mcf_nTupleBuild.o \
	$(CL_NTUBLD_OBJS) \
	$(BLDDIR)/mcf_BrowseUtil1.o \
	$(LIBDIR)/libFmcfio.a \
        $(MXTLIBS)

$(BINDIR)/ntuBrowser: $(CL_BROWSER_OBJS) $(CL_NTUBLD_OBJS) $(LIBDIR)/libFmcfio.a
	$(CC) $(CFLAGS) -o $@ \
	$(CL_BROWSER_OBJS) \
	$(CL_NTUBLD_OBJS) \
	$(LIBDIR)/libFmcfio.a $(HLIB) \
        $(MXTLIBS)
        
cleanobjs:
	rm -f $(BLDDIR)/*.o
	       
clean:
	rm -f $(BLDDIR)/*.o
	rm -f $(LIBDIR)/libFmcfio.a
	rm -f $(BINDIR)/ntuBuild
	rm -f $(BINDIR)/ntuBrowser

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

$(BLDDIR)/%.o: $(SRCDIR)/%.f
	$(F77) -c -o $(BLDDIR)/$*.o $(FFLAGS) $(SRCDIR)/$*.f

$(BLDDIR)/%.o: $(SRCDIR)/%.c
	$(CC) -c -o $(BLDDIR)/$*.o $(CFLAGS) $(CINC) $(SRCDIR)/$*.c

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

.PHONY: clean cleanobjs

.SUFFIXES : .F .f .c .o

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

# Fortran dependencies
tN1: mcfio.inc glob22.inc glo23.inc
tN2: mcfio.inc glob22.inc glo23.inc


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

mcf_evt_xdr.o: mcf_xdr.h
mcfio_Direct.o: mcf_xdr.h mcfio_Dict.h mcfio_Util1.h mcfio_Direct.h
mcfio_SeqDummy.c:mcfio_Sequential.h
mcfio_Util1.o: mcf_xdr.h mcfio_Dict.h mcfio_Util1.h mcfio_Direct.h \
                mcfio_Sequential.h
mcfio_block.o: mcf_xdr.h mcfio_Dict.h mcfio_Util1.h mcfio_Block.h              

