## Copyright (C) 1996 DIMACS Center, Rutgers, The State University of New Jersey
## Author(s): Jonathan Berry
## This software is copyrighted by the DIMACS Center at Rutgers, The State
## University of New Jersey.  IT IS PROVIDED AS IS, AND THE AUTHORS, DIMACS, AND
## RUTGERS, THE STATE UNIVERSITY OF NEW JERSEY  DISCLAIM
## ALL LIABILITY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
## DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
## DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
## POSSIBILITY OF SUCH DAMAGE.
## THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
## FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
## IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
## NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
## MODIFICATIONS.
## The authors hereby grant permission to use, copy, modify, distribute,
## and license this software and its documentation for any purpose, provided
## that existing copyright notices are retained in all copies and that this
## notice is included verbatim in any distributions. No written agreement,
## license, or royalty fee is required for any of the authorized uses.
## Modifications to this software may be copyrighted by their authors
## and need not follow the licensing terms described here, provided that
## the new terms are clearly indicated on the first page of each file where
## they apply.
## Last File Update: 6-Aug-1997
## 
DIR = basic

.SUFFIXES : .cpp

.cpp.o:
	(cd ..; $(LINK_COMPILE.cpp) $(GNUFLAGS) $(DIR)/$<; mv $@ $(DIR))
STK_OBJECTS   = autogenSTkMethods/basicInitSTkFiles.o \
                manualSTkMethods/basicManualSTkFiles.o 
## important:   use lorder() and tsort() to establish correct order
SOURCES.cpp = \
	DJSet.cpp \
	Location.cpp \
	Permutation.cpp \
	Point.cpp \
	Error.cpp \
	count.cpp \
	InitRand.cpp \
	basicUtils.cpp \
	basicTemplate.cpp
OBJECTS = \
	$(SOURCES.cpp:%.cpp=%.o)
all:	objects
make_extra:
	cd linkTemplates;  \
				$(MAKE) -f Make.basiclinkTemplates \
				LINK_COMPILE.cpp="$(LINK_COMPILE.cpp)"\
				GNUFLAGS="$(GNUFLAGS)" sources.macro; \
				$(MAKE) -f Make.basiclinkTemplates \
				LINK_COMPILE.cpp="$(LINK_COMPILE.cpp)"\
				GNUFLAGS="$(GNUFLAGS)" all
make_extra_stk:
	cd STkTemplates;  \
				$(MAKE) -f Make.basicSTkTemplates \
				LINK_COMPILE.cpp="$(LINK_COMPILE.cpp)"\
				GNUFLAGS="$(GNUFLAGS)" sources.macro; \
				$(MAKE) -f Make.basicSTkTemplates \
				LINK_COMPILE.cpp="$(LINK_COMPILE.cpp)"\
				GNUFLAGS="$(GNUFLAGS)" all
	cd manualSTkMethods;  $(MAKE) -f Make.basicmanualSTkMethods init
	cd autogenSTkMethods; $(MAKE) -f Make.basicautogenSTkMethods \
				LINK_COMPILE.cpp="$(LINK_COMPILE.cpp)"\
				GNUFLAGS="$(GNUFLAGS)" all
	cd manualSTkMethods;  $(MAKE) -f Make.basicmanualSTkMethods \
				LINK_COMPILE.cpp="$(LINK_COMPILE.cpp)"\
				GNUFLAGS="$(GNUFLAGS)" all
../libLINKbasic.a: $(OBJECTS) make_extra
	ar cr ../libLINKbasic.a $(OBJECTS) linkTemplates/*.o
	ranlib ../libLINKbasic.a
../libLINKgui.a: make_extra_stk
	ar cr ../libLINKgui.a $(STK_OBJECTS) STkTemplates/*.o
	ranlib ../libLINKgui.a
objects: $(SOURCES.cpp) $(OBJECTS) 

win32-init:
	cd linkTemplates; make -f Make.basiclinkTemplates win32-init
	cd STkTemplates; make -f Make.basicSTkTemplates win32-init
	cd manualSTkMethods;  $(MAKE) -f Make.basicmanualSTkMethods \
		LINK_COMPILE.cpp="$(LINK_COMPILE.cpp)"\
		GNUFLAGS="$(GNUFLAGS)" init
	
clean:
	-$(RM) $(OBJECTS) $(EXTRA_OBJECTS) $(STK_OBJECTS) \
	../libLINKgui.a ../libLINK.a
	-$(RM) linkTemplates/*.cpp linkTemplates/*.o linkTemplates/*.macro
	-$(RM) STkTemplates/*.cpp STkTemplates/*.o STkTemplates/*.macro
	cd autogenSTkMethods; make -f Make.basicautogenSTkMethods clean
	cd manualSTkMethods; make -f Make.basicmanualSTkMethods clean
print:
	hsp -p $(SOURCES.cpp)
wc:
	wc $(SOURCES.cpp)
depend:
	makedepend -fMake.basic $(DEPENDFLAGS) $(SOURCES.cpp)
# DO NOT DELETE THIS LINE -- make depend depends on it.
