#
# make procedure for mcfio  - use gmake
# This makefile will only build libFmcfio by default
#      -- gmake ntu if you want to build ntuBrowser and ntuBuild
#      -- ntuBrowser is built with histoscope if $HISTO_DIR is defined.
#
#
UNAME := $(shell uname)

LIBDIR = ../../lib
BINDIR = ../../bin

include ../arch_mcfio

FFLAGS += -std=legacy
CFLAGS += -Wno-implicit-function-declaration -Wno-incompatible-pointer-types

FINC = -I.
CINC = -I. -I/usr/include/tirpc
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 \
	       mcfio_UserDictionary
CL_F_OBJS   = $(addsuffix $(SFX).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   = $(addsuffix $(SFX).o,$(CL_NTUBLD_SRC))

CL_BROWSER_SRC = mcf_BrowseMainPanel mcf_BrowseMainMenu \
               mcf_BrowseHelp  mcf_BrowseMainProgram \
               mcf_BrowseUtil1 mcf_BrowseUtil2
CL_BROWSER_OBJS   = $(addsuffix $(SFX).o,$(CL_BROWSER_SRC))
               
LIBLIST = $(LIBDIR)/libFmcfio$(SFX).a
ifdef BUILD_SHARED
  LIBLIST += $(LIBDIR)/libFmcfio$(SFX).$(SHEXT)
  SHCL_F_OBJS   = $(patsubst %$(SFX).o,%$(SHX)$(SFX).o,$(CL_F_OBJS))
endif
               
#--------------------------

all: $(LIBLIST) 

ntu: $(BINDIR)/ntuBuild$(SFX) $(BINDIR)/ntuBrowser$(SFX)

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

$(LIBDIR)/libFmcfio$(SFX).$(SHEXT): $(SHCL_F_OBJS)
	@echo Creating shared library $@ ...
	@$(RM) $@
	$(CC) -Wl,-soname,$(@F) -shared -o $@ \
		$(SHCL_F_OBJS)

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

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

glib:
	@echo "libraries are debug by default"

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

%.o: %.F
	$(F77) -c -o $*.o -DUNIX $(FINC) $(FFLAGS) $<

%_g.o: %.F
	$(F77) -c -o $*_g.o -DUNIX $(FINC) $(FFLAGS) $(DFLG) $<

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

%_g.o: %.c
	$(CC) -c -o $*_g.o $(CFLAGS) $(DFLG) $(CINC) $*.c

%_s.o: %.F
	$(F77) -c -o $@ -DUNIX $(FINC) $(FFLAGS) $(SHFLAG) $<

%_s_g.o: %.F
	$(F77) -c -o $@ -DUNIX $(FINC) $(FFLAGS) $(SHFLAG) $(DFLG) $<

%_s.o: %.c
	$(CC) -c -o $@ $(CFLAGS) $(CINC) $(SHFLAG) $*.c

%_s_g.o: %.c
	$(CC) -c -o $@ $(CFLAGS) $(DFLG) $(CINC) $(SHFLAG) $*.c

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

.PHONY: realclean clean glib

.SUFFIXES : 		# cancel implicit rules
.SUFFIXES : .o .c .F

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


# 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.o: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              
mcf_evt_xdr_g.o: mcf_xdr.h
mcfio_Direct_g.o: mcf_xdr.h mcfio_Dict.h mcfio_Util1.h mcfio_Direct.h
mcfio_SeqDummy_g.o:mcfio_Sequential.h
mcfio_Util1_g.o: mcf_xdr.h mcfio_Dict.h mcfio_Util1.h mcfio_Direct.h \
                mcfio_Sequential.h
mcfio_block_g.o: mcf_xdr.h mcfio_Dict.h mcfio_Util1.h mcfio_Block.h              
