CFLAGS = -g -O2 -Wall
MFLAGS = -D__KERNEL__ -DMODULE
NIVXIPATH   = /usr/local/nivxi
FEDCPATH    = /home/daq/FEDC

FAKER_OBJS = ../faker/OBJS/levb.o \
	     ../faker/OBJS/vme_mod.o \
	     ../faker/OBJS/misc.o \
	     ../faker/OBJS/DAQMemory.o \
	     ../faker/OBJS/fakeVMEEvent.o \
	     ../faker/OBJS/eventh.o 

PVIC 	      = /home/daq/PVIC/pvic-1.4.0
PVIC_CFLAGS   = -O -g
#PVIC_CFLAGS  = -O2
PVIC_CFLAGS  += -fvolatile -DLinux
PVIC_CFLAGS  += -Wall -W -Wshadow
PVIC_INCLUDES = -I$(PVIC)/Linux/include \
		-I$(PVIC)/Linux/driver \
		-I$(PVIC)/common/include 
PVIC_LIB      = $(PVIC)/Linux/binary/libpvic.a


all:		daqctrl_up.o daqctrl_smp.o tpc_collector gril_collector cpci_collector fake_collector

tpc_collector:	collector.c include/*.h tpclib.o
		gcc $(CFLAGS) -O0 -o tpc_collector collector.c -Iinclude \
		-DTPC -DVXILINUX -DMXI \
		-I$(NIVXIPATH)/include -I$(FEDCPATH)/include tpclib.o \
		$(FEDCPATH)/lib/fedclib_ceres_mxi.o -L$(NIVXIPATH)/lib -lnivxi 

cpci_collector:	collector.c include/*.h cpcilib.o
		gcc $(CFLAGS) -O0 -DCPCI -Iinclude -o cpci_collector collector.c cpcilib.o 

gril_collector:	collector.c include/*.h grillib.o
		gcc $(CFLAGS)  -Iinclude -o gril_collector collector.c \
		-DGRIL $(PVIC_CFLAGS) -O0 $(PVIC_INCLUDES) grillib.o $(PVIC_LIB) 	

stripped_collector:	stripped_collector.c include/*.h
		gcc $(CFLAGS) -O0 -o stripped_collector stripped_collector.c \
		-Iinclude -DVXILINUX -DMXI \
		-I$(NIVXIPATH)/include -I$(FEDCPATH)/include \
		$(FEDCPATH)/lib/fedclib_ceres_mxi.o -L$(NIVXIPATH)/lib -lnivxi 

fake_collector:	fake_collector.c $(FAKER_OBJS)
		g++ $(CFLAGS) -o fake_collector fake_collector.c \
		-I../faker $(FAKER_OBJS) 

tpclib.o:	tpclib.c include/*.h
		gcc $(CFLAGS) -O0 -c tpclib.c -Iinclude \
		-I$(NIVXIPATH)/include -I$(FEDCPATH)/include \
		-DVXILINUX -DMXI -DCERES 

grillib.o:	grillib.c $(PVIC)/Linux/include/pvicOs.h include/gril.h 
		gcc $(PVIC_CFLAGS) $(PVIC_INCLUDES) -Iinclude -o $@ -c $<

cpcilib.o: 	cpcilib.c include/o2pci_header.h include/cpci.h
		gcc $(CFLAGS) -O0 -Iinclude -o $@ -c $<

daqmem_monitor:	daqmem_monitor.c include/*.h 
		gcc $(CFLAGS) -Iinclude -O0 -o daqmem_monitor daqmem_monitor.c 

daqctrl_up.o:	daqctrl.c
		gcc $(CFLAGS) $(MFLAGS) -D__BOOT_KERNEL_H_ -O2 \
			-D__BOOT_KERNEL_SMP=0 -D__BOOT_KERNEL_UP=1 \
			-o daqctrl_up.o -c daqctrl.c

daqctrl_smp.o:	daqctrl.c
		gcc $(CFLAGS) $(MFLAGS) -D__BOOT_KERNEL_H_ -O2 \
			-D__BOOT_KERNEL_SMP=1 -D__BOOT_KERNEL_UP=0 \
			-D__SMP__ -o daqctrl_smp.o -c daqctrl.c

install:	all
		cp daqctrl_up.o /home/daq/lib/modules/2.2.12-20/daqctrl.o
		cp daqctrl_smp.o /home/daq/lib/modules/2.2.12-20smp/daqctrl.o
		cp collector /home/daq/bin
		cp fake_collector /home/daq/bin
		cp dump24 /home/daq/bin

clean:
		rm -f collector fake_collector dump24 *.o *~ core
