#####################################################################################
#
#  Makefile for <program_name>
#
#  Environment variables:
#	OS = 'operating system'
#	INCLUDE = 'include path'
#	LDFLAGS = 'library path'
#	PET_BIN = 'where to install binaries'
#	PET_ARCHIVE = 'where to archive sources'
#	PET_WW_ARCHIVE = 'where to put www content'
#
#  Main targets:
#	compile: compile the program
#	install: install the program
#	www: create the html documentation and distribute sources and exes
#	archive: archive the source code
#	clean & clobber: clean the directory
#
#  Date:
#  2005-05-19 Jarkko Johansson
#
#####################################################################################
# ------------- General settings:---------------------------------------------------#
PROGRAM		= <program_name>
SOURCES1  	= <program_name>.c
OBJECTS1  	= ${SOURCES1:.c=.o}
CC       	= gcc
CFLAGS   	= -s -Wall -O2 ${INCLUDE}
LIBS      	= <libraries to be linked>
ZIP		= zip
PRVERS		= progvers_0_3_0
ADDDATE		= adddate_0_3_3
PDOC2HTML	= pdoc2htm_1_2_0

# ------------- OS/terminal dependent settings:--------------------------------------#
ifeq ($(OS),Windows_NT)
SYS		= dos
PROGRAM1 	= ${PROGRAM}.exe
endif
ifeq ($(OSTYPE),msys)
SYS		= dos
WD_NAME		= `basename ${PWD}`
PROGRAM1  	= ${PROGRAM}.exe
endif
ifeq ($(OSTYPE),solaris)
SYS		= sol
WD_NAME		= `basename ${PWD}`
PROGRAM1  	= ${PROGRAM}
endif

# ------------- Compilation: --------------------------------------------------------#
compile: ${PROGRAM1}

${PROGRAM1}: ${OBJECTS1}
	 ${LINK.c} -o ${PROGRAM1} ${CFLAGS} ${LDFLAGS} ${OBJECTS1} ${LIBS}

# ------------- Version information: ------------------------------------------------#
progversion: ${PROGRAM}.version

${PROGRAM}.version: ${PROGRAM1}
	${PRVERS} ${PROGRAM1} ${PROGRAM}.version

# ------------- Installation: -------------------------------------------------------#
install: progversion
	${ADDDATE} -i=${PROGRAM}.version -o=${PET_BIN} -nodate ${PROGRAM1}

# ------------- WWW: ---------------------------------------------------------------#
www: html execarchive srcarchive

html: ${PROGRAM1}
	@ echo .
	@ echo "Creating html help file..."
	@ ./${PROGRAM1} > tmp.txt
	@ ${PDOC2HTML} tmp.txt ${PET_WWW_ARCHIVE}/doc/${PROGRAM}.html
	@ rm -f tmp.txt
	@ echo "html help "${PET_WWW_ARCHIVE}/doc/${PROGRAM}.html" added."
	@ echo .

srcarchive: progversion clobber
ifdef WD_NAME
	@ echo .
	@ echo "Archiving sources..."
	@ ${ZIP} -r ${PET_WWW_ARCHIVE}/${PROGRAM}_src.zip ../${WD_NAME}
	@ echo "sources archived in "${PET_WWW_ARCHIVE}/"."
	@ echo .
else
	@ echo "ERROR: run 'make srarchive' only on UNIX/Linux/MSYS."
endif

execarchive: ${PROGRAM1}
	@ echo .
	@ echo "Archiving executables..."
	@ ${ZIP} ${PET_WWW_ARCHIVE}/${PROGRAM}_${SYS}.zip ${PROGRAM1}
	@ echo "executable archived in "${PET_WWW_ARCHIVE}/${PROGRAM}_${SYS}.zip"."
ifneq ($(SYS),dos)
	@ echo "Remember to distribute executable for Windows also."
else
	@ echo "Remember to distribute executable for Solaris also."	
endif
	@ echo .

#---------- Archiving (SORRY, does not work on dos command prompt): ----------------#
archive: progversion clobber
ifdef WD_NAME
	@ echo .
	@ echo "Archiving sources..."
	@ ${ZIP} -r ../${PROGRAM}.zip ../${WD_NAME}
	@ ${ADDDATE} -i=${PROGRAM}.version -o=${PET_ARCHIVE}/programs ../${PROGRAM}.zip
	@ echo "sources archived in "${PET_ARCHIVE}"/programs".
	@ echo .
else
	@ echo "ERROR: run 'make archive' only on UNIX/Linux/MSYS."
endif

# ------------- Cleanup: ------------------------------------------------------------#
clean:
	rm -f ${PROGRAM1} ${OBJECTS1}

clobber: clean
	rm -f *~ *.exe

