# $Id: Makefile.mk,v 1.24 1996/08/02 16:24:44 deaven Exp deaven $

# $Id: machine.mk,v 1.29 1996/08/08 19:47:25 deaven Exp deaven $
# cpp macros to make standardized makefiles for different systems
# Copyright (c)1995 David Deaven

# Dave Deaven's library (libdmd) is DMDDIR (from dmdpp)
DMDDIR = /disk2/home/deaven



# #################################################################
# NetBSD open POSIX (BSD-4.4 derived)
# -----------------------------------------------------------------


ARCH_OPTIMIZE_FLAGS = -m486

CC			= gcc
C_ALWAYS_FLAGS		= -Wall -Wconversion -Wmissing-prototypes -g
C_DEBUG_FLAGS		= 
C_OPTIMIZE_FLAGS	= -O2 $(ARCH_OPTIMIZE_FLAGS)

F77			= f77
F_ALWAYS_FLAGS		=
F_DEBUG_FLAGS		= -g
F_OPTIMIZE_FLAGS	= -O2 $(ARCH_OPTIMIZE_FLAGS)

CXX			= g++
CXX_ALWAYS_FLAGS	= -fhandle-exceptions -Wall -Wconversion -Wmissing-prototypes -g
CXX_DEBUG_FLAGS		=
CXX_OPTIMIZE_FLAGS	= -O2 $(ARCH_OPTIMIZE_FLAGS)

JAVAC			= javac
JAVA_OPTIMIZE_FLAGS	= -O

LD_ALWAYS_FLAGS		= -L$(DMDDIR)/lib
LD_FORTRAN_FLAGS	= -lf2c
LD_MATH_FLAGS		= -lblas -lm

.SUFFIXES: .java .class
.java.class:
	$(JAVAC) $(JAVAFLAGS) $<









# ---------------------
# This is only for my development machine --dmd
# ---------------------











# #################################################################
# Common definitions
#



# ------ End of machine.mk ----------------------------------------

ARCH_FLAGS = -DNOIEEE

CFLAGS = $(C_ALWAYS_FLAGS) $(C_OPTIMIZE_FLAGS) $(ARCH_FLAGS)
EXELIBS = $(LD_ALWAYS_FLAGS) libdmd.a $(LD_MATH_FLAGS)

TOOLOBJS = spline.o splint.o spline2.o spline3.o spline4.o spline5.o \
	spline6.o spline7.o memory.o memory2.o error.o \
	PrintRM.o PrintCM.o linmin.o NumericalDerivative.o \
	fit.o fitmain.o fit_cg.o fit_ds.o fit_gs.o fit_mc.o \
	gentra.o transf.o cross.o norm.o ypr.o quaternion.o \
	mnbrak.o conjgrad.o random.o optdfp.o invupd.o getargv.o \
	neighbor.o element.o eishtridi.o eistql1.o anint.o \
	eistql2.o eistred2.o marquardt.o calcfermi.o dbrent.o \
	slaterkoster.o fprintnl.o nordsk.o temperature.o \
	dmdtimer.o dmdtimer2.o dmdtimer3.o \
	galloc.o gdist.o gdiff.o grrotate.o gfile.o \
	gdigitize.o gdigitize2.o matinv3.o mmul3.o matmul3.o \
	gmoment.o gprint.o gread.o greorder.o gstdorient.o gcat.o gcpy.o \
	gboxcenter.o gsetbox.o gconnect.o gcopyatom.o gseparate.o \
	gcontract.o glattice.o gvolume.o gmopac.o gmask.o gorient.o \
	gcentralcell.o gprettycell.o galignypr.o gsplit.o \
	newnl.o newnlm.o nearnb.o getcommonnl.o \
	histogram.o histogram2.o f77read.o ansiconvert.o ansiio.o \
	rgb.o amoeba.o lstsquare.o file.o findfile.o \
	performance.o iov.o setenv.o strsep.o

TOOLOBJSXX = Object.o String.o

HEAD = eisdiag.h element.h geometry.h invupd.h memory.h \
	neighbor.h random.h spline.h tools.h slaterkoster.h \
	dmdtimer.h histogram.h ansiconvert.h rgb.h \
	linguafranca.h complex.h fit.h \
	Object.h String.h \
	machine.mk

EXE = polyfit splinefit rancat histxy
TARGETS = $(EXE) libdmd.a libdmd++.a dmdman2html

default: $(TARGETS)

libinstall: libdmd.a libdmd++.a dmdman2html headstamp
	install -c libdmd.a libdmd++.a $(DMDDIR)/lib
	install -c dmdpp dmdconfig dmdman2html $(DMDDIR)/bin

maninstall:
	cd doc; make install

headstamp: $(HEAD)
	install -c $(HEAD) $(DMDDIR)/include/dmd
	touch $@

install: libinstall $(EXE) maninstall
	install -c $(EXE) $(DMDDIR)/bin

rancat: rancat.o libdmd.a
	$(CC) -o $@ rancat.o $(EXELIBS)

polyfit: polyfit.o libdmd.a
	$(CC) -o $@ polyfit.o $(EXELIBS)

splinefit: splinefit.o libdmd.a
	$(CC) -o $@ splinefit.o $(EXELIBS)

histxy: histxy.o libdmd.a
	$(CC) -o $@ histxy.o $(EXELIBS)

dmdman2html: dmdman2html.o libdmd.a
	$(CC) -o $@ dmdman2html.o $(EXELIBS)

libdmd.a: $(TOOLOBJS)
	rm -f $@ ; ar qc $@ `lorder $(TOOLOBJS) | tsort` ; ranlib $@ 

libdmd++.a: $(TOOLOBJSXX)
	rm -f $@ ; ar qc $@ `lorder $(TOOLOBJSXX) | tsort` ; ranlib $@ 

clean:
	rm -f *.o core
	rm -f $(TARGETS)
	rm -f manual.toc manual.aux manual.dvi manual.log

depend: 
	gcc -MM $(CFLAGS) *.c > depend.make
	g++ -MM $(CXXFLAGS) *.C > depend2.make
	cat depend2.make >> depend.make
	rm -f depend2.make

.include "depend.make"
