#
# Description:  This is a makefile for the CIFLIB C API demo programs.
#
#----------------------------------------------------------------------------
# Project specific path defintions.
#----------------------------------------------------------------------------
LIBINCLDIR = ../include
CIFLIB     = ../lib/libcif.a
CIFLIB_COMMONLIB     = ../lib/libcifstr.a ../lib/libregex.a

PROJDIR    = .
SRC        = $(PROJDIR)/src
PLATDIR    = $(PROJDIR)
INCL       = 
BIN        = $(PLATDIR)/bin
OBJ        = $(PLATDIR)/obj
TEST       = $(PLATDIR)/test

#----------------------------------------------------------------------------
# LINCLUDES and LDEFINES are appended to CFLAGS and C++FLAGS
#----------------------------------------------------------------------------
LINCLUDES = -I$(LIBINCLDIR)
#
LDEFINES  = 
#
#----------------------------------------------------------------------------
# Include the appropriate compiler/platform definitions ...
#----------------------------------------------------------------------------
include ../etc/Makefile.platform


LIBHFILES  = $(LIBINCLDIR)/ciflib.h 

#----------------------------------------------------------------------------
#  Target definitions.
#----------------------------------------------------------------------------
TARGET0 = $(BIN)/ciflib_demo.csh
TARGET1 = $(BIN)/demo1
TARGET2 = $(BIN)/demo2
TARGET3 = $(BIN)/demo3
TARGET4 = $(BIN)/ciflib_check_dict.csh
TARGET5 = $(BIN)/ciflib_check_dict_xxx.csh
TARGET6 = $(BIN)/ciflib_check_data_file.csh
ALLTARGETS = $(TARGET0) $(TARGET1) $(TARGET2) $(TARGET3) $(TARGET4) \
	     $(TARGET5) $(TARGET6) 

TOBJ  =  $(OBJ)/demoGetArgs.o 
TOBJ1 =  $(OBJ)/demo1.o 
TOBJ2 =  $(OBJ)/demo2.o 
TOBJ3 =  $(OBJ)/demo3.o 
TOBJS =  $(TOBJ) $(TOBJ1) $(TOBJ2) $(TOBJ3)

SRCFILES = $(SRC)/demo1.c \
			$(SRC)/demo2.c \
			$(SRC)/demo3.c \
			$(SRC)/demoGetArgs.c \
			$(SRC)/ciflib_demo.csh \
			$(SRC)/ciflib_check_dict.csh \
			$(SRC)/ciflib_check_dict_xxx.csh \
			$(SRC)/ciflib_check_data_file.csh

TESTFILES = $(TEST)/BDL001.cif \
				$(TEST)/ADH041.cif \
				$(TEST)/BDLB13.cif \
				$(TEST)/DDF040.cif \
				$(TEST)/cif-public-example.cif \
				$(TEST)/ddl_core \
				$(TEST)/cif_mm.dic

#----------------------------------------------------------------------------
#  Build test programs.
#----------------------------------------------------------------------------
all: $(ALLTARGETS)

$(TARGET0): $(SRC)/ciflib_demo.csh
	cp $(SRC)/ciflib_demo.csh $(BIN)/ciflib_demo.csh
	chmod 755 $(BIN)/ciflib_demo.csh

$(TARGET1): $(TOBJ) $(TOBJ1) $(CIFLIB) $(CIFLIB_COMMONLIB)
	$(CCC) $(C++FLAGS) $(TOBJ) $(TOBJ1) $(CIFLIB)  $(CIFLIB_COMMONLIB) -o $@ $(LDFLAGS)

$(TARGET2): $(TOBJ) $(TOBJ2) $(CIFLIB) $(CIFLIB_COMMONLIB)
	$(CCC) $(C++FLAGS) $(TOBJ) $(TOBJ2) $(CIFLIB) $(CIFLIB_COMMONLIB) -o $@ $(LDFLAGS)

$(TARGET3): $(TOBJ) $(TOBJ3) $(CIFLIB) $(CIFLIB_COMMONLIB)
	$(CCC) $(C++FLAGS) $(TOBJ) $(TOBJ3) $(CIFLIB) $(CIFLIB_COMMONLIB) -o $@ $(LDFLAGS)

$(TARGET4): $(SRC)/ciflib_check_dict.csh
	cp $(SRC)/ciflib_check_dict.csh $(BIN)/ciflib_check_dict.csh
	chmod 755 $(BIN)/ciflib_check_dict.csh

$(TARGET5): $(SRC)/ciflib_check_dict_xxx.csh
	cp $(SRC)/ciflib_check_dict_xxx.csh $(BIN)/ciflib_check_dict_xxx.csh
	chmod 755 $(BIN)/ciflib_check_dict_xxx.csh

$(TARGET6): $(SRC)/ciflib_check_data_file.csh
	cp $(SRC)/ciflib_check_data_file.csh $(BIN)/ciflib_check_data_file.csh
	chmod 755 $(BIN)/ciflib_check_data_file.csh

$(OBJ)/demoGetArgs.o: $(LIBHFILES) $(SRC)/demoGetArgs.c
	$(CC) $(CFLAGS_NONANSI) -c $(SRC)/demoGetArgs.c -o $@

$(OBJ)/demo1.o: $(LIBHFILES) $(SRC)/demo1.c
	$(CC) $(CFLAGS_NONANSI) -c $(SRC)/demo1.c -o $@

$(OBJ)/demo2.o: $(LIBHFILES) $(SRC)/demo2.c
	$(CC) $(CFLAGS_NONANSI) -c $(SRC)/demo2.c -o $@

$(OBJ)/demo3.o: $(LIBHFILES) $(SRC)/demo3.c
	$(CC) $(CFLAGS_NONANSI) -c $(SRC)/demo3.c -o $@

test:	all $(ALLTARGETS)
	@echo "Beginning in $(TEST)"
	-cd $(TEST) ; ../bin/ciflib_demo.csh 

check : $(ALLTARGETS)
	@echo "Beginning dictionary check in $(TEST)"
	-cd $(TEST) ; ../bin/ciflib_check_dict.csh 

install:  $(ALLTARGETS)

clean :
	@rm -f core  $(TOBJS)
	@rm -f  $(TEST)/*.out
	@rm -f  $(ALLTARGETS)
	@rm -rf Template.DB

spotless :  clean
##

export:
	mkdir -p $(EXPORT_DIR)
	@cd $(EXPORT_DIR); mkdir -p $(SRC)
	$(EXPORT) $(EXPORT_LIST) $(SRCFILES) $(EXPORT_DIR)/$(SRC)
	@cd $(EXPORT_DIR); mkdir -p $(TEST)
	@cp $(TESTFILES) $(EXPORT_DIR)/$(TEST)
	@cd $(EXPORT_DIR); mkdir -p $(BIN)
	@cd $(EXPORT_DIR); mkdir -p $(OBJ)
	@cp Makefile $(EXPORT_DIR)
