#
#               Builds dictionary object loader...
#
#----------------------------------------------------------------------------
# Project specific path defintions.
#----------------------------------------------------------------------------
INSTALLDIR  = ../lib
LIBINCLDIR  = ../include
BINDIR      = ../bin

PROJDIR    = .

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


#----------------------------------------------------------------------------
# LINCLUDES and LDEFINES are appended to CFLAGS and C++FLAGS
#----------------------------------------------------------------------------
LINCLUDES = -I$(INCL) -I$(LIBINCLDIR)
LDEFINES  = -DNO_RANGE_CHECK

#----------------------------------------------------------------------------
# Include the appropriate compiler/platform definitions ...
#----------------------------------------------------------------------------
include ../etc/Makefile.platform

#----------------------------------------------------------------------------
#  Target definitions.
#----------------------------------------------------------------------------

TARGET1  =   $(BIN)/CifLoader
ALLTARGETS = $(TARGET1) $(BIN)/LoadDictObject.csh

#
#      List of template header and object files
#

OBJ1 = $(OBJ)/CifInterface.o

OBJLOADER = $(OBJ)/CifLoader.o

OBJ2    = $(OBJ)/CifLoadReorganizer.o

OBJS  = $(OBJ1) $(OBJ2) $(OBJLOADER)

SRCFILES =  $(SRC)/CifInterface.C \
				$(SRC)/CifLoadReorganizer.C \
				$(SRC)/CifLoader.C

HFILES = $(INCL)/CifInterface.h \
			$(INCL)/CifLoadReorganizer.h\
			$(INCL)/CifDefs.h

TESTFILES = $(TEST)/mmcif_ddl.dic \
				$(TEST)/mmcif_std.dic \
				$(TEST)/test.sh


CIFLIB_COMMONLIB = $(INSTALLDIR)/libcifstr.a \
				$(INSTALLDIR)/libistable.a $(INSTALLDIR)/libtblindex.a  \
				$(INSTALLDIR)/libciffileobj.a $(INSTALLDIR)/libndbmisc.a 

CIFOBJLIB = $(INSTALLDIR)/libcifobj.a $(INSTALLDIR)/libregex.a

#
#      targets
#

all: $(TARGET1)

$(TARGET1): $(OBJLOADER) $(OBJ1) $(OBJ2) $(CIFLIB) $(CIFLIB_COMMONLIB) $(CIFOBJLIB)
	$(CCC) $(C++FLAGS) -o $@  $(OBJLOADER) $(OBJ1) $(OBJ2) $(CIFLIB_COMMONLIB) $(CIFOBJLIB) $(LDFLAGS)

#
#      making object files
#

$(OBJ)/CifLoadReorganizer.o: $(SRC)/CifLoadReorganizer.C
	$(CCC) $(C++FLAGS) -c $(SRC)/CifLoadReorganizer.C -o $@

$(OBJ)/CifLoader.o: $(SRC)/CifLoader.C
	$(CCC) $(C++FLAGS)  -c $(SRC)/CifLoader.C -o $@

$(OBJ)/CifInterface.o: $(SRC)/CifInterface.C
	$(CCC) $(C++FLAGS) -c $(SRC)/CifInterface.C -o $@

install: $(TARGET1)
	$(INSTALL) -m 0755  $(ALLTARGETS)     $(BINDIR)/.
#
test: $(TARGET1)
	@sh -c 'cd $(TEST); ./test.sh'

##

clean:
	@rm -f $(OBJS) $(TARGET1) core
	@rm -rf $(OBJ)/ii_files
	@rm -f  $(TEST)/*.log $(TEST)/*.odb



spotless:  clean
##

export:
	mkdir -p $(EXPORT_DIR)
	@cd $(EXPORT_DIR); mkdir -p $(INCL)
	$(EXPORT) $(EXPORT_LIST) $(HFILES) $(EXPORT_DIR)/$(INCL)
	@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)
	@cp $(BIN)/LoadDictObject.csh $(EXPORT_DIR)/$(BIN)
	@cd $(EXPORT_DIR); mkdir -p $(OBJ)
	@cp Makefile $(EXPORT_DIR)
