CC      = gcc
INCS    = -I. -I$(UDF_HOME)/include -I$(UDFTOOL_HOME)/GMenu/include -I$(CDF_INC)
LBS     = -L. -L$(UDF_HOME)/lib  -L$(UDFTOOL_HOME)/lib -L$(CDF_LIB)
CADD    = 
EXT     =
RANLIB  =
CTYPE   =
LIBS    = -lGmenu -lErrorMsgs -lpidf -lbase_udf -lErrorMsgs -lpidf \
          -lServer -lCfg -ldB -lcdf -lm

ifeq "$(CTYPE)" "SHARED"
CFLAGS  = $(INCS) $(LBS) $(CADD) $(CSO)
CF      = $(INCS) $(LBS) $(CADD)
LIBRARY = libUDFCDF.$(SO_EXT)

else

CFLAGS  = $(INCS) $(LBS) $(CADD)
CF      = $(INCS) $(LBS) $(CADD)
LIBRARY = libUDFCDF.a
endif

objects = BegEndSrc.o \
          CDFGAttSrcs.o CDFGAttUDF.o CDFSetUp.o CDFSkeleton.o \
          CDFSource.o CDFVarCnt.o ChkStoreMem.o CheckMem.o ChkUnits.o \
          CloseCDF.o ConsSkel.o CmpTm.o \
          DataToCDF.o DupSrc.o \
          EpochSkel.o EpochToCDF.o ErrorRpt.o \
          GetAlt.o GetData.o GetPidfInfo.o GetVidfInfo.o GrowSrcs.o \
          MenuInterface.o MenuOneUdf.o MoDayYr.o \
          NeedAlt.o \
          PaSkel.o \
          ScanEdges.o ScanSkel.o ScanToCDF.o SkelLine.o SortKeys.o \
          TransFer.o TrimString.o \
          UDFSkel.o \
          ZVarFmt.o ZVarLine.o

ifeq "$(CTYPE)" "SHARED"

.c.o:   $(CC) -c $(CFLAGS) $<

$(LIBRARY):  $(objects)
	$(LD) $(LD_FLAGS) -o $@ $(objects)

else

.PRECIOUS: $(LIBRARY)
.KEEP_STATE:

$(LIBRARY): $(objects)
	ar r $(LIBRARY) $(objects)
	ifdef $(RANLIB)
		$(RANLIB) $(LIBRARY)
	endif
endif

UdfCdf : UdfCdf.o 
	$(CC) $(CF) UdfCdf.o -o UdfCdf$(EXT) $(LIBRARY) $(LIBS)
	rm UdfCdf.o

release :
	mv UdfCdf$(EXT) ../bin
	ifeq "$(CTYPE)" "SHARED"
		cp $(LIBRARY) ../lib
	endif

clean:
	-rm -f $(LIBRARY)
	-rm -f $(objects)