CC = gcc
CFLAGS = -O3 -o $@ -I. -I../include

#
# more aggressive compilation with Intel C Compiler
#
# CC = icc
# CFLAGS = -O3 -o $@ -I. -I../include -no-ipo -rcd -DICC_RCD 
# -xK: P3
# -xW: P4
# -xN: P4, more effort than -xW
# -xB: Pentium M
# -xP: P4 w SSE3
# on EM64T, default is -xW
# -ip: Enables more interprocedural optimizations for single file compilation.
# -axP: generate both generic & EM64T-specific code

LIBPATH  = ../lib
LDFLAGS  = -L$(LIBPATH)
LIBOBJ   = g5util.o g5futil.o
LIBNBOBJ = g5nbutil.o g5nbfutil.o
TARGET   = libg75.a libg75nb.a g5test pfpgaconf

all:		$(TARGET)

# G5PIPE
#
libg75.a:	$(LIBOBJ) g5util.h
		ar ruv libg75.a $(LIBOBJ)
		ranlib libg75.a

g5util.o:	g5util.c g5util.h
		$(CC) $(FLAGS) $(CFLAGS) -c g5util.c

g5futil.o:	g5futil.c g5util.h
		$(CC) $(FLAGS) $(CFLAGS) -c g5futil.c

# G5nbPIPE
#
libg75nb.a:	$(LIBNBOBJ) g5nbutil.h g5util.h
		ar ruv libg75nb.a $(LIBNBOBJ)
		ranlib libg75nb.a

g5nbutil.o:	g5nbapi.c g5util.c g5nbutil.h g5util.h
		$(CC) $(FLAGS) $(CFLAGS) -DG5NBUTIL -c g5util.c

g5nbfutil.o:	g5nbfapi.c g5futil.c g5nbutil.h g5util.h
		$(CC) $(FLAGS) $(CFLAGS) -DG5NBUTIL -c g5futil.c

g5test:		g5util.c g5test.c $(LIBPATH)/libhib.a
		$(CC) $(LDFLAGS) $(CFLAGS) -o $@ g5util.c g5test.c $(LIBOBJS) -lhib -lm

# FPGA configuration
#
pfpgaconf:
		cd config && make;

# house keeping
#
clean:
	-rm *.o *~ core $(TARGET)
	cd config; make clean;

bak:
	-tar cvfz g5util.tar.gz ./*.[hc] ./*.pl ./*.csh ./*.awk ./Makefile
