# File:  Makefile
# Date:  11-Aug-97 S. Schirripa
#
#        CIFOBJ Builder classes and examples
#
#----------------------------------------------------------------------------
# Project specific path defintions.
#----------------------------------------------------------------------------
SHELL = /bin/sh
INSTALLDIR  = ../lib
LIBINCLDIR  = ../include

PROJDIR    = .


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

CIFDB	   =  mmcif_std.odb
STANDARD_DICT_NAME = mmcif_std.dic

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

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

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

TARGET1  =   $(BIN)/CifBuilderTest
TARGET2  =   $(BIN)/CifBuilderTest2
ALLTARGETS = $(TARGET1) $(TARGET2)

HFILES  = $(INCL)/CifBuilder.h \
          $(INCL)/CifBuildReorganizer.h

SRCFILES = 	$(SRC)/CifBuildReorganizer.C \
		$(SRC)/CifBuilderTest.C \
		$(SRC)/CifBuilderTest2.C \
		$(SRC)/CifBuilder.C

TESTFILES = $(TEST)/mmcif_std.odb

OBJ1    = $(OBJ)/CifBuildReorganizer.o

OBJ2    = $(OBJ)/CifBuilder.o

OBJ3    = $(OBJ)/CifBuilderTest.o

OBJ4    = $(OBJ)/CifBuilderTest2.o

OBJS    = $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4)

CIFOBJLIB   = $(INSTALLDIR)/libcifobj.a
CIFBUILDLIB = $(LIB)/libcifbuild.a

#
#      targets
#

all: $(ALLTARGETS) $(CIFBUILDLIB)

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

$(TARGET2): $(OBJ4) $(OBJ2) $(OBJ1) $(CIFOBJLIB)
	$(CCC)  $(C++FLAGS) -o $@ $(OBJ4) $(OBJ2) $(OBJ1) $(CIFOBJLIB) $(LDFLAGS) 

$(CIFBUILDLIB): $(OBJ1) $(OBJ2)
	$(AR) $(AR_PUTFLAGS) $(CIFBUILDLIB) $(OBJ1) $(OBJ2)
	$(RANLIB) $(CIFBUILDLIB)
	@echo $(CIFBUILDLIB) " is up to date."
#

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

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

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

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

install: $(ALLTARGETS) $(CIFBUILDLIB)
	$(INSTALL) $(INSTALLOPTS) $(HFILES) $(LIBINCLDIR)/.
	$(INSTALL) $(INSTALLOPTS) $(CIFBUILDLIB) $(INSTALLDIR)/.

test:  $(CIFOBJLIB) $(ALLTARGETS)
	@echo Running test 1
	@cd $(TEST); ../bin/CifBuilderTest  $(CIFDB) $(STANDARD_DICT_NAME) > builder1.out
	@echo Running test 2
	@cd $(TEST); ../bin/CifBuilderTest2 $(CIFDB) $(STANDARD_DICT_NAME) > builder2.out

clean:
	@rm -f core $(OBJS) $(TEST)/builder1.out $(TEST)/builder2.out
	@rm -f $(OBJ)/*.o
	@rm -rf $(OBJ)/ii_files
	@rm -f $(ALLTARGETS) $(CIFBUILDLIB)

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)
	@cd $(EXPORT_DIR); mkdir -p $(OBJ)
	@cd $(EXPORT_DIR); mkdir -p $(LIB)
	@cp Makefile $(EXPORT_DIR)/Makefile
