#####################################################################
#
#  Name:         Makefile
#  Created by:   Pierre-Andre Amaudruz
#
#  Contents:     Makefile for MIDAS under VxWorks
#
#  Revision history
#  ------------------------------------------------------------------
#  date         by    modification
#  ---------    ---   -----------------------------------------------
#
#####################################################################

#--------------------------------------------------------------------
# The following lines contain specific switches for different UNIX
# systems. Find the one which matches your OS and outcomment the 
# lines below.

#-------------------------------------------------------------------
# The following lines define directories. Adjust if necessary
#                 
# User obj directory
OBJ_DIR 	= 68kobj
# VxWorks include directory
SYSINC_DIR      = /vxworks/include
# VxWorks Cross-compiler directory
VXW_DIR         = /vxworks
# Midas system include
INC_DIR 	= ../include
# Midas system source
SRC_DIR 	= ../src
# Midas VxWorks obj directory 
LIB_DIR 	= ($OBJ_DIR)
# Midas drivers directory (should after install /midas/drivers)
DRV_DIR         = ../drivers

# targets
OBJS    = $(OBJ_DIR)/midas.o $(OBJ_DIR)/system.o $(OBJ_DIR)/mrpc.o $(OBJ_DIR)/odb.o $(OBJ_DIR)/ybos.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

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 = cc68k
LD = ld68k
CPU= MC68040

# Define Current Configuration
CC_OPTIM	 = $(CC_OPTIM_NORMAL)
CC_INCLUDES      = -I$(INC_DIR) -I$(SYSINC_DIR)
CC_WARNINGS	 = $(CC_WARNINGS_NORMAL)
##PAA CC_DEFINES	 = -DOS_VXWORKS -m68040 -DCPU=$(CPU) -DDM_DUAL_THREAD
CC_DEFINES	 = -DOS_VXWORKS -m68040 -DCPU=$(CPU) $(DEFINE_CC) $(EXTRA_DEFINE)
# -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
	$(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
	$(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
	$(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
	$(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
	$(CC) -c $(CFLAGS) -o $(OBJ_DIR)/ybos.o $(SRC_DIR)/ybos.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)/bus/esone.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/esone.o $(DRV_DIR)/bus/esone.c
$(OBJ_DIR)/camacnul.o:     $(DRV_DIR)/bus/camacnul.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/camacnul.o $(DRV_DIR)/bus/camacnul.c
$(OBJ_DIR)/camacrpc.o:     $(DRV_DIR)/bus/camacrpc.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/camacrpc.o $(DRV_DIR)/bus/camacrpc.c
$(OBJ_DIR)/ces8210.o:   $(DRV_DIR)/bus/ces8210.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/ces8210.o $(DRV_DIR)/bus/ces8210.c
$(OBJ_DIR)/vmeio.o:     $(DRV_DIR)/divers/vmeio.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/vmeio.o $(DRV_DIR)/divers/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 *~ \#*
