#####################################################################
#
#  Name:         Makefile
#  Created by:   Stefan Ritt
#
#  Contents:     Makefile for MIDAS binaries and examples under VxWorks
#
#  Revision history
#  ------------------------------------------------------------------
#  date         by    modification
#  ---------    ---   -----------------------------------------------
#  11-MAR-96    SR    created
#
#####################################################################
#
# Usage:
#        gmake             To compile the MIDAS library and binaries
#        gmake install     To install the library and binaries
#        gmake examples    To compile low-level examples (not necessary)
#        gmake drivers     To compile CAMAC device drivers (not necessary)
#
#

#
# System direcotries for installation, modify if needed
#
SYSOBJ_DIR = /export/soft/wind/68k/target/lib
SYSINC_DIR = /export/soft/wind/68k/target/h

#####################################################################

#
# Midas input directories
#
INC_DIR  = ../include
SRC_DIR  = ../src
EXAM_DIR = ../examples
DRV_DIR  = ../drivers

#
# Midas output directory
#
OBJ_DIR  = obj

#
# Compiler settincs etc
#
CPU = MC68020

CC = cc68k
LD = ld68k
RM = rm
CP = cp

CFLAGS = -m68020 -msoft-float -O -fvolatile -fno-builtin \
-I$(INC_DIR) -I$(SYSINC_DIR) -I$(DRV_DIR)\
-ansi -nostdinc -DCPU=$(CPU) -g
OSFLAGS = -DOS_VXWORKS

#
# targets
#
EXAMPLES = $(OBJ_DIR)/produce.o $(OBJ_DIR)/rpc_test.o $(OBJ_DIR)/minife.o \
	$(OBJ_DIR)/minirc.o $(OBJ_DIR)/odb_test.o $(OBJ_DIR)/camacsrv.o

DRIVERS = $(OBJ_DIR)/camacnul.o $(OBJ_DIR)/ces8210.o

OBJS =  $(OBJ_DIR)/midas.o $(OBJ_DIR)/system.o $(OBJ_DIR)/mrpc.o \
	$(OBJ_DIR)/odb.o $(OBJ_DIR)/ybos.o

LIB =   $(OBJ_DIR)/libmidas.o

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

examples: $(EXAMPLES)

drivers: $(DRIVERS)

#####################################################################

#
# examples
#

$(OBJ_DIR)/produce.o: $(EXAM_DIR)/lowlevel/produce.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/produce.o $(EXAM_DIR)/lowlevel/produce.c
$(OBJ_DIR)/rpc_test.o: $(EXAM_DIR)/lowlevel/rpc_test.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/rpc_test.o $(EXAM_DIR)/lowlevel/rpc_test.c
$(OBJ_DIR)/minife.o: $(LIB) $(EXAM_DIR)/lowlevel/minife.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/minife.o $(EXAM_DIR)/basic/minife.c
$(OBJ_DIR)/minirc.o: $(LIB) $(EXAM_DIR)/lowlevel/minirc.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/minirc.o $(EXAM_DIR)/basic/minirc.c
$(OBJ_DIR)/odb_test.o: $(LIB) $(EXAM_DIR)/basic/odb_test.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/odb_test.o $(EXAM_DIR)/basic/odb_test.c
$(OBJ_DIR)/camacsrv.o: $(LIB) $(EXAM_DIR)/lowlevel/camacsrv.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/camacsrv.o $(EXAM_DIR)/lowlevel/camacsrv.c

#
# drivers
#

$(OBJ_DIR)/camacnul.o: $(DRV_DIR)/camacnul.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/camacnul.o $(DRV_DIR)/camacnul.c
$(OBJ_DIR)/ces8210.o: $(DRV_DIR)/ces8210.c
	$(CC) $(CFLAGS) $(OSFLAGS) -c -o $(OBJ_DIR)/ces8210.o $(DRV_DIR)/ces8210.c

#
# midas library
#

$(LIB): $(OBJS)
	$(RM) -f $(LIB)
	$(LD) -o $(LIB) -r $(OBJS)

#
# library objects
#

$(OBJ_DIR)/midas.o: $(SRC_DIR)/midas.c $(INC_DIR)/msystem.h $(INC_DIR)/midas.h $(INC_DIR)/midasinc.h $(INC_DIR)/mrpc.h
	$(CC) -c $(CFLAGS) $(OSFLAGS) -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)/midasinc.h $(INC_DIR)/mrpc.h
	$(CC) -c $(CFLAGS) $(OSFLAGS) -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) $(OSFLAGS) -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)/midasinc.h $(INC_DIR)/mrpc.h
	$(CC) -c $(CFLAGS) $(OSFLAGS) -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)/midasinc.h $(INC_DIR)/mrpc.h
	$(CC) -c $(CFLAGS) $(OSFLAGS) -o $(OBJ_DIR)/ybos.o $(SRC_DIR)/ybos.c

#
# frontend framework
#

$(OBJ_DIR)/mfe.o: $(SRC_DIR)/mfe.c $(INC_DIR)/msystem.h $(INC_DIR)/midas.h $(INC_DIR)/midasinc.h $(INC_DIR)/mrpc.h
	$(CC) -c $(CFLAGS) $(OSFLAGS) -o $(OBJ_DIR)/mfe.o $(SRC_DIR)/mfe.c

#####################################################################

install:

# include
	@echo "... "
	@echo "... Installing include files to $(SYSINC_DIR)"
	@echo "... "

	$(CP) $(INC_DIR)/midas.h $(SYSINC_DIR)
	$(CP) $(INC_DIR)/ybos.h $(SYSINC_DIR)

# library + objects
	@echo "... "
	@echo "... Installing library and objects to $(SYSOBJ_DIR)"
	@echo "... "

	$(CP) $(LIB) $(SYSOBJ_DIR)
	$(CP) $(OBJ_DIR)/mfe.o $(SYSOBJ_DIR)

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


