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

ROOT = ..

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

LIBUTIL_DIRECTORY = $(ROOT)/libutil
STIPPLE_DIRECTORY = $(ROOT)/stipple
STC_DIRECTORY = $(STIPPLE_DIRECTORY)/stc
LIBSTIPPLE_DIRECTORY = $(STIPPLE_DIRECTORY)/libstipple
LIBXLIB_DIRECTORY = $(STIPPLE_DIRECTORY)/libxlib
NSTC_DIRECTORY = $(STIPPLE_DIRECTORY)/nstc

STC = $(STC_DIRECTORY)/$(PLATFORM)/stc
STL = $(STC_DIRECTORY)/$(PLATFORM)/stl
NSTC = $(NSTC_DIRECTORY)/$(PLATFORM)/nstc

STC_INCLUDES =					\
	-I $(LIBSTIPPLE_DIRECTORY)/$(PLATFORM)	\
	-I $(LIBXLIB_DIRECTORY)/$(PLATFORM)	\
	-I $(PLATFORM)
STC_FLAGS = $(STC_OPTIONS) $(STC_INCLUDES)

#OS_LDOPT_SX11 = -L/usr/X11/lib

COMMON_BASES =		\
	bitmap		\
	layout		\
	stepper		\
	surface
COMMON_SOURCES = ${COMMON_BASES:%=%.sts}
COMMON_INTERFACES = ${COMMON_BASES:%=$(PLATFORM)/%.sti}
COMMON_OBJECTS = ${COMMON_BASES:%=$(PLATFORM)/%.o}
COMMON_HTMLS = ${COMMON_BASES:%=%.html}

MRDESIGN_BASES =	\
	layout_test
MRDESIGN_SOURCES = ${MRDESIGN_BASES:%=%.sts}
MRDESIGN_INTERFACES = ${MRDESIGN_BASES:%=$(PLATFORM)/%.sti}
MRDESIGN_OBJECTS = ${MRDESIGN_BASES:%=$(PLATFORM)/%.o}
MRDESIGN_HTMLS = ${MRDESIGN_BASES:%=%.html}
MRDESIGN_LIBRARIES =						\
	`cat $(LIBXLIB_DIRECTORY)/$(PLATFORM)/libxlib.stlib`	\
	$(OS_LDOPTS_X11) -lX11
MRDESIGN = $(PLATFORM)/mrdesign

MTN_BASES =		\
	mtn
MTN_SOURCES = ${MTN_BASES:%=%.sts}
MTN_INTERFACES = ${MTN_BASES:%=$(PLATFORM)/%.sti}
MTN_OBJECTS = ${MTN_BASES:%=$(PLATFORM)/%.o}
MTN_HTMLS = ${MTN_BASES:%=%.html}
MTN_LIBRARIES =							\
	`cat $(LIBXLIB_DIRECTORY)/$(PLATFORM)/libxlib.stlib`	\
	$(OS_LDOPTS_X11) -lX11
MTN = $(PLATFORM)/mtn

PRINT_TEST_BASES =	\
	print_test
PRINT_TEST_SOURCES = ${PRINT_TEST_BASES:%=%.sts}
PRINT_TEST_INTERFACES = ${PRINT_TEST_BASES:%=$(PLATFORM)/%.sti}
PRINT_TEST_OBJECTS = ${PRINT_TEST_BASES:%=$(PLATFORM)/%.o}
PRINT_TEST_HTMLS = ${PRINT_TEST_BASE:%=%.html}
PRINT_TEST_LIBRARIES =
PRINT_TEST = $(PLATFORM)/print_test

ALL_BASES =			\
	${COMMON_BASES}		\
	${MRDESIGN_BASES}	\
	${MTN_BASES}		\
	${PRINT_TEST_BASES}

HTML_SOURCES =			\
	2do.html		\
	documentation.html	\
	index.html
GENERATED_HTMLS =		\
	${COMMON_HTMLS}		\
	${MRDESIGN_HTMLS}	\
	${MTN_HTMLS}		\
	${PRINT_TEST_HTMLS}
HTMLS =				\
	${HTML_SOURCES}		\
	${GENERATED_HTMLS}	\
	source.html

OTHER_SOURCES =			\
	icon_bitmap		\
	Makefile
SOURCES =			\
	${COMMON_SOURCES}	\
	${MRDESIGN_SOURCES}	\
	${MTN_SOURCES}		\
	${PRINT_TEST_SOURCES}	\
	${HTML_SOURCES}		\
	${OTHER_SOURCES}
INTERFACES =			\
	${MTN_INTERFACES}	\
	${MRDESIGN_INTERFACES}	\
	${PRINT_TEST_INTERFACES}
OBJECTS =			\
	${MTN_OBJECTS}		\
	${MRDESIGN_OBJECTS}	\
	${PRINT_TEST_OBJECTS}
PROGRAM_BASES =			\
	mrdesign		\
	mtn			\
	print_test
PROGRAMS =			\
	$(MRDESIGN)		\
	$(MTN)			\
	$(PRINT_TEST)

CLEAN_LIST =			\
	${GENERATED_HTMLS}	\
	source.html		\
	$(PLATFORM)		\
	STDB
COPY_LIST =			\
	${SOURCES}		\
	${GENERATED_HTMLS}	\
	source.html
SOURCE_LIST =			\
	${COMMON_SOURCES}	\
	${MRDESIGN_SOURCES}	\
	${MTN_SOURCES}		\
	${PRINT_SOURCES}	\
	${OTHER_SOURCES}

.PHONY: all clean copy deep deep2 spell

# Some targets:

all: $(PLATFORM) $(WAIT) ${SOURCES} $(WAIT) ${PROGRAMS} $(WAIT) source.html

deep: everything_else $(WAIT) all

deep2:
	$(MAKE) -C $(LIBUTIL_DIRECTORY)
	$(MAKE) -C $(STC_DIRECTORY)
	$(MAKE) -C $(LIBSTIPPLE_DIRECTORY)
	$(MAKE) -C $(LIBXLIB_DIRECTORY)

$(MRDESIGN): ${MRDESIGN_INTERFACES} ${COMMON_INTERFACES} $(WAIT) \
    ${MRDESIGN_OBJECTS} ${COMMON_OBJECTS}
	$(STL) -o $@ -E $(PLATFORM) ${MRDESIGN_INTERFACES} \
	    ${COMMON_INTERFACES} ${MRDESIGN_OBJECTS} ${COMMON_OBJECTS} \
	    ${MRDESIGN_LIBRARIES}

$(MTN): ${MTN_INTERFACES} ${COMMON_OBJECTS} $(WAIT) \
    ${MTN_OBJECTS} ${COMMON_OBJECTS}
	$(STL) -o $@ -E $(PLATFORM) ${MTN_INTERFACES} ${COMMON_INTERFACES} \
		${MTN_OBJECTS} ${COMMON_OBJECTS} ${MTN_LIBRARIES}

$(PRINT_TEST): ${PRINT_TEST_INTERFACES} $(WAIT) ${PRINT_TEST_OBJECTS}
	$(STL) -o $@ -E $(PLATFORM) ${PRINT_TEST_INTERFACES} \
		${PRINT_TEST_OBJECTS} ${PRINT_TEST_LIBRAIES}

clean:
	rm -rf ${CLEAN_LIST}
	$(CLEAN)

source.html: ${SOURCE_LIST} $(NSTC) $(WAIT) ${GENERATED_HTMLS}
	@echo -n "Generating $@..."
	@rm -f $@
	@echo '<HTML>' > $@
	@echo '<Head>' >> $@
	@echo '<Title>TCP Monitor Source Files</Title>' >> $@
	@echo '</Head>' >> $@
	@echo '<Body>' >> $@
	@echo '<P>These are the source files for the' >> $@
	@echo '<A HRef="index.html">TCP Monitoring Program</A>.</P>' >> $@
	@echo '<H1>' >> $@
	@echo 'TCP Monitor Source Files' >> $@
	@echo '</H1>' >> $@
	@echo '<P>The following extracted documentation is available:</P>'>> $@
	@echo '<UL>' >> $@
	@for i in ${ALL_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 `ls ${SOURCE_LIST} | sort`; 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 by' >> $@
	@echo '<A HRef="../../../gramlich.html">' >> $@
	@echo 'Wayne Gramlich</A> All rights reserved.' >> $@
	@echo '</Address>' >> $@
	@echo '</Body>' >> $@
	@echo '</HTML>' >> $@
	@echo "Done"
