###########################################################################
#
# File:        Makefile.in
# Revision:    $Id: Makefile.in,v 1.14 2001/11/05 21:50:41 rkowen Exp $
# Created:     94/06/18
# Author:      Leif Hedstrom<hedstrom@inf.ethz.ch>
#
# Description:
#      Makefile for the Modules project
#
###########################################################################

#### Start of system configuration section. ####

srcdir = @srcdir@
VPATH = @srcdir@

@SET_MAKE@
INSTALL		= @INSTALL@
INSTALL_PROGRAM	= $(INSTALL) -m 0555
INSTALL_DATA	= $(INSTALL) -m 0644
RUNTEST		= @RUNTEST@
RUNTESTFLAGS	= 
CC		= @CC@
SED		= sed
TAR		= tar
GZIP		= gzip
BZIP2		= bzip2
CVS		= cvs
FIND		= find
XARGS		= xargs
RM		= rm
DISTNAME	= modules-@VERSION@

# We support tclX commands only (not the TclX library handling and
# shell, so we have to first link -ltcl and then -tclx)
LIBS = -ltcl@TCL_VERSION@ @TCLX_LIBS@ @X11_LIBS@ @X_EXTRA_LIBS@ @LIBS@

# Standard definition (a'la GNU)
prefix = @prefix@
exec_prefix = @exec_prefix@
man_prefix = @prefix@

CFLAGS = @CFLAGS@ -DINSTPATH=\"$(prefix)\"
LDFLAGS = @LDFLAGS@

# Directory in which to install binaries, module files, and init files
bindir = $(exec_prefix)/bin
filedir = $(prefix)/modulefiles
initdir = $(prefix)/init

SHELL =	/bin/sh

#### End of system configuration section. ####

SRCS =	ModuleCmd_Avail.c ModuleCmd_Clear.c ModuleCmd_Display.c ModuleCmd_Help.c\
	ModuleCmd_Init.c ModuleCmd_List.c ModuleCmd_Load.c ModuleCmd_Purge.c	\
	ModuleCmd_Switch.c ModuleCmd_Update.c ModuleCmd_Use.c ModuleCmd_Whatis.c\
	cmdAlias.c cmdConflict.c cmdIsLoaded.c cmdInfo.c cmdMisc.c cmdModule.c	\
	cmdPath.c cmdSetenv.c cmdUname.c cmdXResource.c cmdUlvl.c cmdLog.c	\
	cmdTrace.c cmdVersion.c cmdVerbose.c cmdWhatis.c			\
	init.c locate_module.c utility.c main.c error.c getopt.c version.c

OBJS =	ModuleCmd_Avail.o ModuleCmd_Clear.o ModuleCmd_Display.o ModuleCmd_Help.o\
	ModuleCmd_Init.o ModuleCmd_List.o ModuleCmd_Load.o ModuleCmd_Purge.o	\
	ModuleCmd_Switch.o ModuleCmd_Update.o ModuleCmd_Use.o ModuleCmd_Whatis.o\
	cmdAlias.o cmdConflict.o cmdIsLoaded.o cmdInfo.o cmdMisc.o cmdModule.o	\
	cmdPath.o cmdSetenv.o cmdUname.o cmdXResource.o cmdUlvl.o cmdLog.o	\
	cmdTrace.o cmdVersion.o cmdVerbose.o cmdWhatis.o			\
	init.o locate_module.o utility.o main.o error.o getopt.o version.o

HDRS =	modules_def.h
ACS =	configure Makefile.in config.h.in configure.in acconfig.h aclocal.m4 

MAKEDIRS = $(bindir) $(filedir)

## X_CFLAGS, X_LIBS from AC_PATH_XTRA
ALL_CFLAGS = -I.. -I$(srcdir) @TCL_INC_DIR@ @TCLX_INC_DIR@ @X_CFLAGS@ $(CFLAGS)
ALL_LDFLAGS = @STATIC@ @TCL_LIB_DIR@ @TCLX_LIB_DIR@ @X_LIBS@ @R_OPTION@ $(LDFLAGS)

all: modulecmd

.c.o:
	$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<

depend:		$(SRCS)
	./stripmkf Makefile > tmp_makefile.$$
	$(CC) -M $(CPPFLAGS) $(ALL_CFLAGS) $(SRCS) >> tmp_makefile.$$
	mv tmp_makefile.$$ Makefile

modulecmd:	$(OBJS)
	$(CC) -o $@ $(ALL_LDFLAGS) $(OBJS) $(LIBS)

getopt:	getopt.c error.o
	$(CC) -c $(CPPFLAGS) -DTEST $(ALL_CFLAGS) getopt.c
	$(CC) -o $@ $(ALL_LDFLAGS) getopt.o error.o

${srcdir}/configure: configure.in aclocal.m4
	cd ${srcdir} && autoconf

# autoheader might not change config.h.in, so touch a stamp file.
${srcdir}/config.h.in: stamp-h.in
${srcdir}/stamp-h.in: configure.in aclocal.m4 acconfig.h
	cd ${srcdir} && autoheader
	date > ${srcdir}/stamp-h.in

config.h: stamp-h
stamp-h: config.h.in config.status
	./config.status

Makefile: ${srcdir}/Makefile.in config.status
	./config.status

config.status: configure
	./config.status --recheck

install:	all install-dirs
	$(INSTALL_PROGRAM) modulecmd $(bindir)/modulecmd
	(cd init;         $(MAKE) install)
	(cd doc;          $(MAKE) install)
	(cd etc;          $(MAKE) install)
	if [ x@DOT_EXT@ != x ]; then \
	(cd ext;          $(MAKE) install) \
	fi
	(cd modulefiles;  $(MAKE) install)

install-dirs:
	@for i in $(MAKEDIRS) ; do \
		echo Making $$i... ; \
		parent=`echo $$i | ${SED} -e 's@/[^/]*$$@@' | ${SED} -e 's@^$$@/@'`; \
		if [ -d $$parent ] ; then true ; else mkdir $$parent ; fi ; \
		if [ ! -d $$i ] ; then \
			if mkdir $$i ; then \
				true ; \
			else \
				exit 1 ; \
			fi ; \
		else \
			true ; \
		fi ; \
	done

ctags:	CTAGS
CTAGS:	$(SRCS)
	ctags $(SRCS)

test: check

check:	modulecmd
	(cd testsuite; $(RUNTEST) $(RUNTESTFLAGS) --tool=modules)

cxref:
	cxref $(SRCS)
	@echo "==============================="
	@echo "You may need to run this twice!"
	@echo "==============================="

dist: distgz distbz2

distgz : ${DISTNAME}.tar.gz

distbz2 : ${DISTNAME}.tar.bz2

${DISTNAME}.tar.gz : $(srcdir)/configure 
	@echo "checking out ${DISTNAME} into directory modules"
	${CVS} -f checkout -r \
	 `${SED} -n -e 's/^.*NEW TAG.*"\(.*\)".*$$/\1/p' ${srcdir}/version.c` \
	 modules
	@echo "renaming directory to ${DISTNAME}"
	mv modules ${DISTNAME}
	@echo "cleaning out unnecessary directories in ${DISTNAME}"
	${FIND} ${DISTNAME} -type d -name CVS -print | ${XARGS} ${RM} -rf
# need this CVS to pass testsuite for distribution build
	mkdir ${DISTNAME}/testsuite/modulefiles/trace/CVS
	@echo "Creating ${DISTNAME}.tar.gz"
	${TAR} chf - ${DISTNAME} | ${GZIP} -c --best >${DISTNAME}.tar.gz
	@echo "removing directory ${DISTNAME}"
	${RM} -r ${DISTNAME}

${DISTNAME}.tar.bz2 : ${DISTNAME}.tar.gz
	@echo "Creating ${DISTNAME}.tar.bz2"
	${GZIP} -d -c ${DISTNAME}.tar.gz | ${BZIP2} > ${DISTNAME}.tar.bz2

patch: $(srcdir)/configure
	@echo "Creating patch file -- do this after CVS tagging"
	${CVS} rdiff -c \
	 -r `${SED} -n -e 's/^.*OLD TAG.*"\(.*\)".*$$/\1/p' ${srcdir}/version.c` \
	 -r `${SED} -n -e 's/^.*NEW TAG.*"\(.*\)".*$$/\1/p' ${srcdir}/version.c` \
	modules | ${GZIP} -c \
	> modules-`${SED} -n -e 's/^.*OLD TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`-`${SED} -n -e 's/^.*NEW TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`.diff.gz
	${CVS} rdiff -c \
	 -r `${SED} -n -e 's/^.*OLD TAG.*"\(.*\)".*$$/\1/p' ${srcdir}/version.c` \
	 -r `${SED} -n -e 's/^.*NEW TAG.*"\(.*\)".*$$/\1/p' ${srcdir}/version.c` \
	modules | ${BZIP2} -c \
	> modules-`${SED} -n -e 's/^.*OLD TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`-`${SED} -n -e 's/^.*NEW TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`.diff.bz2

tag:
	@echo "CVS tagging - TAG = "\
	  `${SED} -n -e 's/^.*NEW TAG.*"\(.*\)".*$$/\1/p' ${srcdir}/version.c`
	${CVS} rtag -F \
	  `${SED} -n -e 's/^.*NEW TAG.*"\(.*\)".*$$/\1/p' ${srcdir}/version.c` \
	  modules

lsm:
# sends off the modules.lsm file to update the Linux Software Map
# this should be done by the maintainer (R.K.Owen) only!
	mail -s add modules@kooz.sj.ca.us,lsm@execpc.com < modules.lsm

ftp-local:
# this should be done by the maintainer (R.K.Owen) only!
	@echo "placing $(DISTNAME).tar.{gz|bz2}"
	-@if [ -e $(DISTNAME).tar.gz ]; then \
		cp $(DISTNAME).tar.gz /u/ftp/pub/rkowen/modules; \
	else echo "Can't find $(DISTNAME).tar.gz"; fi
	-@if [ -e $(DISTNAME).tar.bz2 ]; then \
		cp $(DISTNAME).tar.bz2 /u/ftp/pub/rkowen/modules; \
	else echo "Can't find $(DISTNAME).tar.bz2"; fi
	-@XXX=modules-`${SED} -n -e 's/^.*OLD TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`-`${SED} -n -e 's/^.*NEW TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`.diff.gz ; \
	echo "placing $$XXX"; \
	if [ -e $$XXX ]; then \
		cp $$XXX /u/ftp/pub/rkowen/modules; \
	else echo "Can't find $$XXX"; fi
	-@XXX=modules-`${SED} -n -e 's/^.*OLD TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`-`${SED} -n -e 's/^.*NEW TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`.diff.bz2 ; \
	echo "placing $$XXX"; \
	if [ -e $$XXX ]; then \
		cp $$XXX /u/ftp/pub/rkowen/modules; \
	else echo "Can't find $$XXX"; fi
	-@echo "placing modules.lsm"
	-@if [ -e modules.lsm ]; then \
		cp modules.lsm /u/ftp/pub/rkowen/modules; \
	else echo "Can't find modules.lsm"; fi

ftp: ftp-sunsite ftp-sourceforge-rko

ftp-sunsite:
# do local files first ... mostly to verify their existence
# this should be done by the maintainer (R.K.Owen) only!
	@echo "placing sunsite.unc.edu files";
	-@XXX=modules-`${SED} -n -e 's/^.*OLD TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`-`${SED} -n -e 's/^.*NEW TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`.diff."*" ; \
	echo "placing modules.lsm $$XXX $(DISTNAME).tar.*"; \
	./.ftp modules.lsm $$XXX $(DISTNAME).tar.*;

ftp-sourceforge-rko:
	@echo "placing modules.sourceforge.net files";
	-@XXX=modules-`${SED} -n -e 's/^.*OLD TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`-`${SED} -n -e 's/^.*NEW TAG.*"modules-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)".*$$/\1.\2.\3/p' ${srcdir}/version.c`.diff."*" ; \
	echo "placing modules.lsm $$XXX $(DISTNAME).tar."*""; \
	scp modules.lsm $$XXX $(DISTNAME).tar.* rkowen@shell.sourceforge.net:ftp

clean:
	rm -f modulecmd *.o core
	(cd init;         $(MAKE) clean)
	(cd doc;          $(MAKE) clean)
	(cd etc;          $(MAKE) clean)
	(cd ext;          $(MAKE) clean)
	(cd modulefiles;  $(MAKE) clean)

mostlyclean: clean

distclean:	clean
	(cd init;         $(MAKE) distclean)
	(cd doc;          $(MAKE) distclean)
	(cd etc;          $(MAKE) distclean)
	(cd ext;          $(MAKE) distclean)
	(cd modulefiles;  $(MAKE) distclean)
	rm -f Makefile config.status config.cache config.log config.h \
		stamp-h .spec testsuite/modules.00-init/015-version.exp \
		testsuite/modules.50-cmds/100-loglevel.exp \
		testsuite/.modulesbeginenv testsuite/modules.sum \
		testsuite/modules.log doc/Makefile

realclean:	distclean
	rm -f TAGS
	(cd init;         $(MAKE) realclean)
	(cd doc;          $(MAKE) realclean)
	(cd etc;          $(MAKE) realclean)
	(cd ext;          $(MAKE) realclean)
	(cd modulefiles;  $(MAKE) realclean)
	rm -f modules.lsm config.h.in stamp-h.in configure
	(cd xref; rm -f *.c.html cxref.*)

help:
	@echo ""
	@echo "make           - compiles sources to executable"
	@echo "make all       - same as above"
	@echo "make check     - runs test suite - needs dejagnu runtest"
	@echo "make install   - copy program & man pages to destination"
	@echo "make clean     - cleans out most useless files"
	@echo "make distclean - cleans & removes most made files"
	@echo "make disthelp  - extra help for developers"
	@echo ""

disthelp:
	@echo "make ctags     - creates the vi ctags file"
	@echo "make cxref     - makes the xref HTML files - needs cxref"
	@echo "================ requires CVS access ======================="
	@echo "make tag       - does a CVS rtag"
	@echo "make dist      - creates a distribution tarball after tagging"
	@echo "make patch     - creates a patch file after tagging"
	@echo "================ maintainers only =========================="
	@echo "make lsm       - send off to the Linux Software Map"
	@echo "make ftp-local - upload tarball (good test)"
	@echo "make ftp       - upload tarball to sunsite & sourceforge"
	@echo ""

######### The following is automatically generated. DO NOT EDIT #########
########### Do not delete this line ... 'make depend' uses it ###########


syntax highlighted by Code2HTML, v. 0.9.1