#
# Makefile for cross-compiling libraries
#
#------------------------------------------------------------------------------
VERSION_KERNEL= $(shell uname -r)
MACHINE	      = $(shell uname -m)

SOURCEKERNEL = /usr/src/linux-2.4.20-rtai-24.1.13
SOURCEIPN    = /usr/local/ipn

# Support for VME Driver
VMELIB	      = -I $(SOURCEIPN)/vme/universe/include
VMELIB       += -I $(SOURCEIPN)/vme/universe/src

# Support for RTAI compilation
RTAILIB	      =	-I $(SOURCEKERNEL)/include

RTAIFLAGS     =	-D__KERNEL__ -D_COMPILATION_RTAI_ -fsigned-char -msoft-float -mstring  -mmultiple 
RTAIFLAGS    += -Wstrict-prototypes  -Wno-trigraphs  -Wno-uninitialized -fno-strict-aliasing -fno-common
RTAIFLAGS    += -pipe -ffixed-r2 -fomit-frame-pointer -DMODULE 

# For PPC machine 
ifeq ($(MACHINE),ppc)
RTAIFLAGS    += -DMACHINE_PPC -DON_BOARD
RTAILIB      += -I $(SOURCEIPN)/rtai-24.1.13/include
RTAILIB      += -I $(SOURCEKERNEL)/arch/ppc 
CC            = gcc-2.95

# For Others...
else
CC            = gcc
endif

#------------------------------------------------------------------------------
CFLAGS        = -O2 -Wall -ansi -pedantic $(CLIB)
#CFLAGS        = -O2 -Wall $(CLIB)
LFLAGS        = -g -lm

ObjSuf        = .o
SrcSuf        = .c
HeadSuf       = .h
ExeSuf        = .exe
OutPutOpt     = -o
#------------------------------------------------------------------------------
PATHCURRENT      = $(PWD)	        
PATHDRV          = ./Drivers
PATHACQ		 = ./Acquisition
PATHCOM	 	 = ./Common
CLIB             = -I $(PATHDRV) -I $(PATHACQ) -I $(PATHCOM) -I $(PATHCURRENT)
#------------------------------------ Driver ----------------------------------
VME_DRV          = vme_driver
VME_DRV_OBJ      = $(PATHDRV)/$(VME_DRV)$(ObjSuf)

TDC_LOW_DRV      = tdc1190_driver_low

TDC_MED_DRV      = tdc1190_driver_medium
TDC_MED_DRV_OBJ  = $(PATHDRV)/$(TDC_MED_DRV)$(ObjSuf)

TDC_HIGH_DRV     = tdc1190_driver_high
TDC_HIGH_DRV_OBJ = $(PATHDRV)/$(TDC_HIGH_DRV)$(ObjSuf)

DRIVER_OBJ	 = $(VME_DRV_OBJ) $(TDC_MED_DRV_OBJ) $(TDC_HIGH_DRV_OBJ)

#----------------------------------- Acquisition -------------------------------
TDC_E_ACQ	 = tdc_acq
TDC_E_ACQ_OBJ    = $(PATHACQ)/$(TDC_E_ACQ)$(ObjSuf)

ACQ_OBJ		 = $(TDC_E_ACQ_OBJ)
#------------------------------------ Common ------------------------------------
KEYBOARD	 = keyboard
KEYBOARD_OBJ   	 = $(PATHCOM)/$(KEYBOARD)$(ObjSuf)

COMMON_OBJ 	 = $(KEYBOARD_OBJ)
#------------------------------------------------------------------------------
SRC		 = console
SRC_OBJ          = $(SRC)$(ObjSuf)
SRC_EXE	         = $(SRC)$(ExeSuf)

ALL_OBJ          = $(DRIVER_OBJ) $(ACQ_OBJ) $(COMMON_OBJ) $(SRC_OBJ)
#------------------------------------ Link ------------------------------------
all     :      $(SRC_OBJ)
	       cd $(PATHDRV); make driver; cd $(PWD)
	       cd $(PATHACQ); make acquisition; cd $(PWD)		
	       cd $(PATHCOM); make common; cd $(PWD)
	       $(CC) $(VMELIB) $(RTAIFLAGS) $(RTAILIB) $(LFLAGS) $(ALL_OBJ) $(OutPutOpt) $(SRC_EXE)
	       echo "Test Done..."

clean:
		@rm -f core *~ *.o *.exe
		cd $(PATHDRV); make clean; cd $(PWD)
	        cd $(PATHACQ); make clean; cd $(PWD)		
	        cd $(PATHCOM); make clean; cd $(PWD)

#------------------------------ Compile with "CVS" -----------------------------
.SUFFIXES: $(SrcSuf)

###


$(SRC)$(ObjSuf): $(SRC)$(SrcSuf)

$(SrcSuf)$(ObjSuf):
		$(CC) $(CFLAGS) $(VMELIB) $(RTAIFLAGS) $(RTAILIB) -c $<
