# Parameters.

include formats.mk

PROGRAM = 
SOURCES.c = $(FORMATSOURCES) misc.c filt.c rdtape_eg.c
SOURCES.h = rdtape.h

# Derived parameters.

SOURCES = \
	$(SOURCES.h) \
	$(SOURCES.c)

TARGETS.c = main.c data_io.c spectra.c 

TARGETS.h = ../sunsort_src/sort_thread.h formats.h

TARGETS = \
	$(TARGETS.h) \
	$(TARGETS.c)

OBJECTS = \
	$(SOURCES.c:%.c=%.o) \
	$(TARGETS.c:%.c=%.o)

OPTOBJS = optional.o optuserinit.o optusersortin.o optuserfinish.o \
	optinit.o optsortin.o optfinish.o

OPTOBJS2 = optuserinitf.o optusersortinf.o optuserfinishf.o

ALLOBJS = $(OBJECTS) $(OPTOBJS) $(OPTOBJS2)

# Compiler flags.

# for solaris 2.x
COPTFLAGS = $(OPTFLAG)
CFLAGS = -DSVR4 $(COPTFLAGS) -I../sunsort_src 
CPPFLAGS += 
LDFLAGS +=
LDLIBS += -lthread

# Standard targets.

all:	 $(OBJECTS)
objects: $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(OBJECTS)
sources: $(SOURCES)
targets: $(SOURCES) $(TARGETS)

clean :
	-rm -f *.o */*.o core *~ *% *.prj

install:
	$(MAKE) formats.mk
	-rm -f $(ALLOBJS)
	-test -d optimised || mkdir optimised
	for FILE in $(ALLOBJS); do ln -s optimised/$$FILE ; done
	$(MAKE) libsunsort.a liboptsort.a liboptsort2.a
	-rm -f $(ALLOBJS)	
	-test -d debug || mkdir debug
	for FILE in $(ALLOBJS) ; do ln -s debug/$$FILE ; done
	$(MAKE) "COPTFLAGS=-g" libdbx_sunsort.a libdbx_optsort.a \
		libdbx_optsort2.a
	@echo "sunsort libraries installed ..."
	-$(MAKE) checks

checks: externs.prj llib-lsunsort.ln

externs.prj: externs.f
	../ftnchek -library -project externs.f

llib-lsunsort.ln: externs.c externs-spec.c
	-lint -I../sunsort_src -osunsort externs.c externs-spec.c

llib-loptsort.ln: optional.c
	-lint -I../sunsort_src -ooptsort optional.c

libsunsort.a libdbx_sunsort.a: objects
	-rm -f $@
	ar crv $@ `lorder $(OBJECTS) |tsort`
	@echo "make $@ ... completed"

liboptsort.a libdbx_optsort.a: $(OPTOBJS)
	-rm -f $@
	ar crv $@ `lorder $(OPTOBJS) |tsort`
	@echo "make $@ ... completed"

liboptsort2.a libdbx_optsort2.a: $(OPTOBJS2)
	-rm -f $@
	ar crv $@ `lorder $(OPTOBJS2) |tsort`
	@echo "make $@ ... completed"

lint:
	lint -DSVR4 -I../sunsort_src -m -u $(SOURCES.c) $(TARGETS.c)

formats.mk formats.h: formats.lst makeformat
	./makeformat

data_io.o: ../sunsort_src/sort_def.h ../sunsort_src/sort_thread.h
data_io.o: ../sunsort_src/sort_def.h ../sunsort_src/eg.h
filt.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h rdtape.h
filt.o: ../sunsort_src/sort_def.h formats.h
main.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h rdtape.h
main.o: ../sunsort_src/sort_def.h formats.h
rdtape_anu.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h rdtape.h
rdtape_anu.o: ../sunsort_src/sort_def.h formats.h
rdtape_demon.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
rdtape_demon.o: rdtape.h ../sunsort_src/sort_def.h formats.h rdtape_eg.h
rdtape_eg.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h rdtape.h
rdtape_eg.o: ../sunsort_src/sort_def.h formats.h rdtape_eg.h
rdtape_fsu.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h rdtape.h
rdtape_fsu.o: ../sunsort_src/sort_def.h formats.h
rdtape_fsupc.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
rdtape_fsupc.o: rdtape.h ../sunsort_src/sort_def.h formats.h
rdtape_in2p3.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
rdtape_in2p3.o: rdtape.h ../sunsort_src/sort_def.h formats.h
rdtape_megha.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
rdtape_megha.o: rdtape.h ../sunsort_src/sort_def.h formats.h rdtape_eg.h
rdtape_none.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
rdtape_none.o: rdtape.h ../sunsort_src/sort_def.h formats.h
rdtape_nscl.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
rdtape_nscl.o: rdtape.h ../sunsort_src/sort_def.h formats.h
rdtape_nsf.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
rdtape_nsf.o: rdtape.h ../sunsort_src/sort_def.h formats.h
rdtape_nsf2.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
rdtape_nsf2.o: rdtape.h ../sunsort_src/sort_def.h formats.h
spectra.o: ../sunsort_src/sort_thread.h ../sunsort_src/sort_def.h
spectra.o: ../sunsort_src/eg.h spectra.h
