# directories
#
# System directories
SYSINC_DIR = /vxworks-ppc/include

#
# Midas related directories
INC_DIR  = ../include
SRC_DIR  = ../src
DRV_DIR  = ../drivers
MXML_DIR = ../../mxml

#
# Midas operating system dependent directories
OBJ_DIR  = ppcobj

# targets
OBJS    = $(OBJ_DIR)/midas.o $(OBJ_DIR)/system.o $(OBJ_DIR)/mrpc.o $(OBJ_DIR)/odb.o $(OBJ_DIR)/ybos.o \
	$(OBJ_DIR)/mxml.o $(OBJ_DIR)/strlcpy.o
DRIVERS = $(OBJ_DIR)/hv.o $(OBJ_DIR)/multi.o \
#	  $(OBJ_DIR)/ces8210.o $(OBJ_DIR)/lrs1151.o $(OBJ_DIR)/lrs1190.o \
	  $(OBJ_DIR)/vmeio.o $(OBJ_DIR)/esone.o $(OBJ_DIR)/camacnul.o \
      $(OBJ_DIR)/camacrpc.o

LIB     = $(OBJ_DIR)/libmidas.o

#-save-temps
CC_COMPILER	 = -ansi -fstrength-reduce -fkeep-inline-functions
CC_DEBUGGING     = -g
CC_WARNINGS_ALL  = -Wall 
CC_WARNINGS_NORMAL = -Winline
CC_WARNINGS_NONE =
CC_OPTIM_NORMAL  = -g -finline-functions
CC_OPTIM_TARGET  = -O -fvolatile

CC = /vxworks-ppc/bin/ccppc
LD = /vxworks-ppc/bin/ldppc
# internally defined by X-compile
# CPU= -DPPCxxx

# Define Current Configuration
CC_OPTIM	 = $(CC_OPTIM_NORMAL)
CC_INCLUDES      = -I$(INC_DIR) -I$(MXML_DIR) -I$(SYSINC_DIR)
CC_WARNINGS	 = $(CC_WARNINGS_NORMAL)
##PAA CC_DEFINES	 = -DOS_VXWORKS $(CPU) -DPPCxxx -DDM_DUAL_THREAD
CC_DEFINES	 = -DOS_VXWORKS $(CPU) -DPPCxxx
# -DDM_DEBUG

CFLAGS = $(CC_OPTIM) $(CC_WARNINGS) $(CC_INCLUDES) $(CC_COMPILER) $(CC_DEFINES)

all: $(LIB) $(OBJ_DIR)/mfe.o $(DRIVERS) 

install:
## objects 
	@echo "... "
	@echo "... Installing standard VxWorks Midas package"
	@echo "... "
	cp $(OBJ_DIR)/libmidas.o $(SYSOBJ_DIR)
	cp $(OBJ_DIR)/mfe.o      $(SYSOBJ_DIR)

# create library and binary directories
$(OBJ_DIR):
	@if [ ! -d  $(OBJ_DIR) ] ; then \
           echo "Making directory $(OBJ_DIR)" ; \
           mkdir $(OBJ_DIR); \
        fi;

$(LIB): $(OBJ_DIR) $(OBJS)
	 rm -f $(LIB)
	 $(LD) -o $(LIB) -r $(OBJS)

$(OBJ_DIR)/midas.o: $(SRC_DIR)/midas.c $(INC_DIR)/msystem.h $(INC_DIR)/midas.h $(INC_DIR)/mrpc.h $(MXML_DIR)/strlcpy.h
	$(CC) -c $(CFLAGS) -o $(OBJ_DIR)/midas.o $(SRC_DIR)/midas.c
$(OBJ_DIR)/system.o: $(SRC_DIR)/system.c $(INC_DIR)/msystem.h $(INC_DIR)/midas.h $(INC_DIR)/mrpc.h  $(MXML_DIR)/strlcpy.h
	$(CC) -c $(CFLAGS) -o $(OBJ_DIR)/system.o $(SRC_DIR)/system.c
$(OBJ_DIR)/mrpc.o:  $(SRC_DIR)/mrpc.c $(INC_DIR)/msystem.h $(INC_DIR)/midas.h $(INC_DIR)/mrpc.h  $(MXML_DIR)/strlcpy.h
	$(CC) -c $(CFLAGS) -o $(OBJ_DIR)/mrpc.o $(SRC_DIR)/mrpc.c
$(OBJ_DIR)/odb.o:   $(SRC_DIR)/odb.c $(INC_DIR)/msystem.h $(INC_DIR)/midas.h $(INC_DIR)/mrpc.h $(MXML_DIR)/strlcpy.h
	$(CC) -c $(CFLAGS) -o $(OBJ_DIR)/odb.o $(SRC_DIR)/odb.c
$(OBJ_DIR)/ybos.o:   $(SRC_DIR)/ybos.c $(INC_DIR)/msystem.h $(INC_DIR)/midas.h $(INC_DIR)/mrpc.h $(MXML_DIR)/strlcpy.h
	$(CC) -c $(CFLAGS) -o $(OBJ_DIR)/ybos.o $(SRC_DIR)/ybos.c
$(OBJ_DIR)/mxml.o:$(MXML_DIR)/mxml.c
	$(CC) -c $(CFLAGS) $(OSFLAGS) -o $@ $(MXML_DIR)/mxml.c
$(OBJ_DIR)/strlcpy.o:$(MXML_DIR)/strlcpy.c
	$(CC) -c $(CFLAGS) $(OSFLAGS) -o $@ $(MXML_DIR)/strlcpy.c

#
#  Frontend Midas kernel to be used for user code linking
$(OBJ_DIR)/mfe.o:   $(SRC_DIR)/mfe.c
	$(CC) -c $(CFLAGS) -o $(OBJ_DIR)/mfe.o $(SRC_DIR)/mfe.c

## General purpose drivers 
$(OBJ_DIR)/null.o:      $(DRV_DIR)/device/null.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/null.o $(DRV_DIR)/device/null.c
$(OBJ_DIR)/hv.o:     $(DRV_DIR)/class/hv.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/hv.o $(DRV_DIR)/class/hv.c
$(OBJ_DIR)/multi.o:  $(DRV_DIR)/class/multi.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/multi.o $(DRV_DIR)/class/multi.c
$(OBJ_DIR)/lrs4032.o:   $(DRV_DIR)/divers/lrs4032.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/lrs4032.o $(DRV_DIR)/divers/lrs4032.c
$(OBJ_DIR)/lrs1151.o:   $(DRV_DIR)/divers/lrs1151.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/lrs1151.o $(DRV_DIR)/divers/lrs1151.c
$(OBJ_DIR)/lrs1190.o:   $(DRV_DIR)/divers/lrs1190.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/lrs1190.o $(DRV_DIR)/divers/lrs1190.c
$(OBJ_DIR)/esone.o:     $(DRV_DIR)/camac/esone.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/esone.o $(DRV_DIR)/camac/esone.c
$(OBJ_DIR)/camacnul.o:     $(DRV_DIR)/camac/camacnul.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/camacnul.o $(DRV_DIR)/camac/camacnul.c
$(OBJ_DIR)/camacrpc.o:     $(DRV_DIR)/camac/camacrpc.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/camacrpc.o $(DRV_DIR)/camac/camacrpc.c
#$(OBJ_DIR)/ces8210.o:   $(DRV_DIR)/camac/ces8210.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/ces8210.o $(DRV_DIR)/camac/ces8210.c
$(OBJ_DIR)/vmeio.o:     $(DRV_DIR)/vme/vmeio.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/vmeio.o $(DRV_DIR)/vme/vmeio.c

#$(OBJ_DIR)/sc: $(OBJ) $(SRC_DIR)/mfe.c $(WORK_DIR)/frontend.c $(DRV_DIR)/lrs4032.c
#	$(CC) $(CFLAGS) -c -o $(OBJ_DIR)/mfe.o $(SRC_DIR)/mfe.c
#	$(CC) $(CFLAGS) -c -o $(OBJ_DIR)/frontend.o $(DRV_DIR)/frontend.c
#	$(CC) $(CFLA1ffe7e0GS) -c -o $(OBJ_DIR)/caen170a.o $(DRV_DIR)/caen170a.c
#	$(CC) $(CFLAGS) -c -o $(OBJ_DIR)/lrs4032.o $(DRV_DIR)/lrs4032.c
#	$(LD) -o $(OBJ_DIR)/mfe.o -r $(OBJ_DIR)/mfe.o $(OBJ_DIR)/frontend.o\
#			 $(OBJ_DIR)/lrs4032.o $(OBJ_DIR)/caen170a.o 

clean:
	rm -f $(OBJ_DIR)/*.o *~ \#*
