# Copyright (c) 1998-2005 by Wayne C. Gramlich.
# All rights reserved.

ROOT = ..

include $(ROOT)/Makefile_common.mk
include $(ROOT)/Makefile_private.mk

STIPPLE_DIRECTORY := ../stipple
STC_DIRECTORY := $(STIPPLE_DIRECTORY)/stc
STC_PLATFORM := $(STC_DIRECTORY)/$(PLATFORM)
STC := $(STC_PLATFORM)/stc
STL := $(STC_PLATFORM)/stl

LIBSTIPPLE_DIRECTORY := $(STIPPLE_DIRECTORY)/libstipple
LIBSTIPPLE_PLATFORM := $(LIBSTIPPLE_DIRECTORY)/$(PLATFORM)

STC_INCLUDES :=					\
	-I $(LIBSTIPPLE_PLATFORM)		\
	-I $(PLATFORM)
STC_FLAGS := ${STC_OPTIONS} ${STC_INCLUDES}

NSTC_DIRECTORY := $(STIPPLE_DIRECTORY)/nstc
NSTC_PLATFORM := $(NSTC_DIRECTORY)/$(PLATFORM)
NSTC = $(NSTC_PLATFORM)/nstc

PIC_BASES :=		\
	bogus		\
	pic		\
	program		\
	opcodes		\
	types
PIC_SOURCES := ${PIC_BASES:%=%.sts}
PIC_INTERFACES := ${PIC_BASES:%=$(PLATFORM)/%.sti}
PIC_OBJECTS := ${PIC_BASES:%=$(PLATFORM)/%.o}
PIC_HTMLS := ${PIC_BASES:%=%.html}
PIC_LIBRARY := $(PLATFORM)/libpic.stlib

EXAMPLE1_BASES :=		\
	example1
EXAMPLE1_SOURCES := ${EXAMPLE1_BASES:%=%.sts}
EXAMPLE1_INTERFACES := ${EXAMPLE1_BASES:%=$(PLATFORM)/%.sti}
EXAMPLE1_OBJECTS := ${EXAMPLE1_BASES:%=$(PLATFORM)/%.o}
EXAMPLE1_HTMLS := ${EXAMPLE1_BASES:%=%.o}
EXAMPLE1 := $(PLATFORM)/example1

EXAMPLE2_BASES :=		\
	example2
EXAMPLE2_SOURCES := ${EXAMPLE2_BASES:%=%.sts}
EXAMPLE2_INTERFACES := ${EXAMPLE2_BASES:%=$(PLATFORM)/%.sti}
EXAMPLE2_OBJECTS := ${EXAMPLE2_BASES:%=$(PLATFORM)/%.o}
EXAMPLE2_HTMLS := ${EXAMPLE2_BASES:%=%.o}
EXAMPLE2 := $(PLATFORM)/example2

STS_BASES :=			\
	${PIC_BASES}		\
	${EXAMPLE1_BASES}	\
	${EXAMPLE2_BASES}
STS_HTMLS := ${STS_BASES:%=%.html}
STS_SOURCES := ${STS_BASES:%=%.sts}

SOURCES :=			\
	${STS_SOURCES}		\
	index.html		\
	Makefile
ALL_SOURCES :=			\
	${SOURCES}		\
	source.html
PROGRAM_BASES :=		\
	example1		\
	example2
PROGRAMS := ${PROGRAM_BASES:%=$(PLATFORM)/%}
PROGRAM_LISTINGS := ${PROGRAM_BASES:%=%.lst}

# Some targets:

.PHONY: all deep everything_else clean spell

all: $(PLATFORM) ${SOURCES} $(WAIT) $(PIC_LIBRARY) $(WAIT) ${PROGRAMS}	\
    $(WAIT) ${STS_HTMLS} $(WAIT) source.html $(WAIT) ${PROGRAM_LISTINGS}

# Library:

$(PIC_LIBRARY): ${PIC_INTERFACES} ${PIC_OBJECTS}
	rm -f $@
	ls ${PIC_INTERFACES} ${PIC_OBJECTS} | sed "s,^,`pwd`/,g" > $@

# Programs:

$(EXAMPLE1): $(PIC_LIBRARY) $(WAIT) ${EXAMPLE1_SOURCES} $(WAIT)		\
    ${EXAMPLE1_INTERFACES} $(WAIT) ${EXAMPLE1_OBJECTS}
	$(STL) -o $@ -E $(PLATFORM) ${EXAMPLE_INTERFACES}		\
	    ${EXAMPLE1_OBJECTS} `cat $(PIC_LIBRARY)`

example1.lst: $(EXAMPLE1)
	$(EXAMPLE1) -l $@

$(EXAMPLE2): $(PIC_LIBRARY) $(WAIT) ${EXAMPLE2_SOURCES} $(WAIT)		\
    ${EXAMPLE2_INTERFACES} $(WAIT) ${EXAMPLE2_OBJECTS}
	$(STL) -o $@ -E $(PLATFORM) ${EXAMPLE_INTERFACES}		\
	    ${EXAMPLE2_OBJECTS} `cat $(PIC_LIBRARY)`

example2.lst: $(EXAMPLE2)
	$(EXAMPLE2) -l $@

clean:
	rm -rf ${STS_HTMLS} source.html $(PLATFORM) STDB ${PROGRAM_LISTINGS}
	$(CLEAN)

source.html: ${STS_SOURCES} ${STS_HTMLS} Makefile
	@echo -n "Generating $@..."
	@rm -f $@
	@echo '<HTML>' > $@
	@echo '<Head>' >> $@
	@echo '<Title>PIC Library Source Files</Title>' >> $@
	@echo '</Head>' >> $@
	@echo '<Body>' >> $@
	@echo '<P>These are the source files for the' >> $@
	@echo '<A HRef="index.html">PIC Library</A>.</P>' >> $@
	@echo '<H1>' >> $@
	@echo 'PIC Library Source Files' >> $@
	@echo '</H1>' >> $@
	@echo '<P>The following extracted documentation is available:</P>'>> $@
	@echo '<UL>' >> $@
	@for i in ${STS_BASES} ; do					\
		echo "  <LI><A HRef='$$i.html'>$$i</A></LI>" >> $@ ;	\
		done
	@echo '</UL>' >> $@
	@echo '<P>The following source files are available:</P>' >> $@
	@echo '<UL>' >> $@
	@for i in Makefile ${STS_SOURCES} ; do			\
		echo "  <LI><A HRef='$$i'>$$i</A></LI>" >> $@ ;	\
		done
	@echo '</UL>' >> $@
	@echo '<P>The following generated listing files exist:</P>' >> $@
	@echo '<UL>' >> $@
	@for i in ${PROGRAM_LISTINGS} ; do			\
		echo "  <LI><A HRef='$$i'>$$i</A></LI>" >> $@ ; \
		done
	@echo '</UL>' >> $@
	@echo '<HR>' >> $@
	@echo '<Address>' >> $@
	@echo '<A HRef="../../copyright.html">' >> $@
	@echo 'Copyright</A> (c) 1997, 1998 by' >> $@
	@echo '<A HRef="../../gramlich.html">' >> $@
	@echo 'Wayne Gramlich</A> All rights reserved.' >> $@
	@echo '</Address>' >> $@
	@echo '</Body>' >> $@
	@echo '</HTML>' >> $@
	@echo "Done"

