# =============================================================
#  Makefile
#  04-December-2001
#  Go Iwai [iwai@hep.sc.niigata-u.ac.jp]
# =============================================================
PREFIX			:= $(PWD)

CC			:= g++
LIB_DIR			:= $(PREFIX)
INC_DIR			:= $(PREFIX)
LIB_NAME		:= ExVME
LIB_FILE		:= lib$(LIB_NAME).a
INC_FLAGS		:= -I$(INC_DIR)
LIB_FLAGS		:= -L$(LIB_DIR) -l$(LIB_NAME)

COMPILE_FLAGS		:= -c -g -O3
# DO COMMENT OUT NEXT LINE ! if you worried about messages from compiler.
#COMPILE_FLAGS		+= -Wall -ansi -pedantic
COMPILE_FLAGS		+= $(INC_FLAGS)
COMPILE			:= $(CC) $(COMPILE_FLAGS)

LINK_FLAGS		:= -g -O3
# DO COMMENT OUT NEXT LINE ! if you worried about messages from compiler.
#LINK_FLAGS		+= -Wall -ansi -pedantic
LINK_FLAGS		+= $(INC_FLAGS)
LINK_FLAGS		+= $(LIB_FLAGS)
LINK                    := $(CC) -o

OBJ_FILES		:= TObjectFile.o TStreamableObject.o
OBJ_FILES		+= TInputObjectFile.o TOutputObjectFile.o
#OBJ_FILES		+= ExVMEReadoutList.o
#OBJ_FILES		+= ExVMEReadoutModule.o ExVMEReadoutChannel.o
#OBJ_FILES		+= ExVMECrate.o ExVMEModule.o ExVMERPV130Module.o
#OBJ_FILES		+= ExVMEInterruptAction.o

TARGET			:= $(LIB_FILE)
TARGET			+= exTest
#TARGET			+= exOutputFile exInputFile
#TARGET			+= exTest exInterrupt exReadoutRPV130

all: $(TARGET)

.cc.o:
	@echo "Compiling $< ....."
	$(COMPILE) $<
	$(AR) $(ARFLAGS) $(LIB_FILE) $@
	@echo "Done !"

.cc:
	@echo "Linking $@ using granular library $(LIB_FILE) ....."
	$(LINK) $@ $< $(LINK_FLAGS)
	@echo "Done !"


$(LIB_FILE): $(OBJ_FILES)


# dependency for object files
ExInputObjectFile.o: ExInputObjectFile.cc ExInputObjectFile.hh \
 ExObjectFile.hh ExStreamableObject.hh
ExObjectFile.o: ExObjectFile.cc ExObjectFile.hh
ExOutputObjectFile.o: ExOutputObjectFile.cc ExOutputObjectFile.hh \
 ExObjectFile.hh ExStreamableObject.hh
ExStreamableObject.o: ExStreamableObject.cc ExStreamableObject.hh
ExVMECrate.o: ExVMECrate.cc ExVMECrate.hh
ExVMEInterruptAction.o: ExVMEInterruptAction.cc \
 ExVMEInterruptAction.hh
ExVMEModule.o: ExVMEModule.cc ExVMEModule.hh
ExVMERPV130Module.o: ExVMERPV130Module.cc ExVMERPV130Module.hh \
 ExVMEModule.hh
ExVMEReadoutChannel.o: ExVMEReadoutChannel.cc ExVMEReadoutChannel.hh \
 ExStreamableObject.hh ExObjectFile.hh
ExVMEReadoutList.o: ExVMEReadoutList.cc ExVMEReadoutList.hh \
 ExStreamableObject.hh ExObjectArray.hh ExObjectArray.cc \
 ExVMEReadoutModule.hh ExVMEReadoutChannel.hh ExObjectFile.hh
ExVMEReadoutModule.o: ExVMEReadoutModule.cc ExVMEReadoutModule.hh \
 ExStreamableObject.hh ExObjectArray.hh ExObjectArray.cc \
 ExVMEReadoutChannel.hh ExObjectFile.hh


# dependency for demo programs
#exOutputFile: exOutputFile.cc $(LIB_FILE)
#exInputFile: exInputFile.cc $(LIB_FILE)
#exReadoutRPV130: exReadoutRPV130.cc $(LIB_FILE)
#exInterrupt: exInterrupt.cc $(LIB_FILE)
exTest: exTest.cc $(LIB_FILE)

strip: $(TARGET)
	@echo "Discard symbols ....."
	@-strip $(TARGET)
	@echo "Done !"

clean:
	@echo "Cleaning ....."
	@-rm -f *~ *.o a.out core *.obj $(TARGET)
	@echo "Done !"
