view lib-src/Makefile.in.in @ 171:929b76928fce r20-3b12

Import from CVS: tag r20-3b12
author cvs
date Mon, 13 Aug 2007 09:47:52 +0200
parents 85ec50267440
children 8eaf7971accc
line wrap: on
line source

##   Makefile for lib-src subdirectory in XEmacs.
##   Copyright (C) 1985, 1987, 1988, 1993, 1994 Free Software Foundation, Inc.
##   Copyright (C) 1996, 1997 Sun Microsystems, Inc.

## This file is part of XEmacs.

## XEmacs is free software; you can redistribute it and/or modify it
## under the terms of the GNU General Public License as published by the
## Free Software Foundation; either version 2, or (at your option) any
## later version.

## XEmacs is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
## for more details.

## You should have received a copy of the GNU General Public License
## along with XEmacs; see the file COPYING.  If not, write to
## the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
## Boston, MA 02111-1307, USA.

## Note: FSF Makefile.in.in does something weird so that the comments
## above a certain point in this file are in shell format instead of
## in C format.  How the hell is this supposed to work? */

SHELL = /bin/sh
RM = rm -f

## For performance and consistency, no built-in rules
.SUFFIXES:
.SUFFIXES: .c .o .i .h
## ==================== Things "configure" will edit ====================

CC=@CC@
CPP=@CPP@
CFLAGS=@CFLAGS@
CPPFLAGS=@CPPFLAGS@
LDFLAGS=@LDFLAGS@
ALLOCA=@ALLOCA@
YACC=@YACC@
LN_S=@LN_S@
version=@version@

## ==================== Where To Install Things ====================

prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
libdir=@libdir@
srcdir=@srcdir@
archlibdir=@archlibdir@

## ==================== Utility Programs for the Build =================

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

## ========================== Lists of Files ===========================

## Things that a user might actually run,
## which should be installed in bindir.
INSTALLABLES = etags ctags b2m gnuclient
INSTALLABLE_SCRIPTS = rcs-checkin pstogif install-sid send-pr gnudoit gnuattach

## Things that Emacs runs internally, or during the build process,
## which should not be installed in bindir.
UTILITIES= make-path wakeup profile make-docfile digest-doc \
	sorted-doc movemail cvtmail fakemail yow hexl \
	gnuserv mmencode
## These need to be conditional on I18N3 make-msgfile make-po

## Like UTILITIES, but they are not system-dependent, and should not be
## deleted by the distclean target.
TM_SCRIPTS=tm-au tm-file tm-html tm-image tm-mpeg tm-plain tm-ps tmdecode
SCRIPTS= rcs2log vcdiff gzip-el.sh install-sid send-pr $(TM_SCRIPTS)

EXECUTABLES= ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}

SOURCES = COPYING ChangeLog Makefile.in.in README aixcc.lex emacs.csh \
	makedoc.com *.[chy] $(SCRIPTS)
## Additional -D flags for movemail (add to MOVE_FLAGS if desired):
## MAIL_USE_POP		Support mail retrieval from a POP mailbox.
## MAIL_USE_MMDF		Support MMDF mailboxes.
## MAIL_USE_FLOCK	Use flock for file locking (see the comments
##			about locking in movemail.c)
## MAIL_UNLINK_SPOOL	Unlink the user spool mailbox after reading
##			it (instead of just emptying it).
## KERBEROS		Support Kerberized POP.
## KRB5			Support Kerberos Version 5 pop instead of
##			Version 4 (define this in addition to
##			KERBEROS).
## HESIOD		Support Hesiod lookups of user mailboxes.
## MAILHOST		A string, the host name of the default POP
##			mail host for the site.

MOVE_FLAGS=
##
## Additional libraries for movemail:
## For KERBEROS
## MOVE_LIBS= -lkrb -ldes -lcom_err
## For KERBEROS + KRB5
## MOVE_LIBS= -lkrb5 -lcrypto -lisode -lcom_err
## Add "-lhesiod" if HESIOD is defined.

MOVE_LIBS=

## ========================== start of cpp stuff =======================

#define NO_SHORTNAMES
#define NOT_C_CODE
#include "../src/config.h"

#ifdef USE_GNU_MAKE
vpath %.c @srcdir@
vpath %.h @srcdir@
#else
VPATH=@srcdir@
#endif

c_switch_general=@c_switch_general@
c_switch_window_system=@c_switch_window_system@
c_switch_all=@c_switch_all@
ld_switch_general=@ld_switch_general@
ld_switch_window_system=@ld_switch_window_system@
ld_switch_all=@ld_switch_all@
ld_libs_general=@ld_libs_general@
ld_libs_window_system=@ld_libs_window_system@
ld_libs_all=@ld_libs_all@

## We need to #define emacs to get the right versions of some files.

lib_src_cppflags = -Demacs -I../src -I${srcdir} -I${srcdir}/../src $(CPPFLAGS)
lib_src_cppflags = -Demacs -I../src $(CPPFLAGS)
cflags  = $(CFLAGS) $(lib_src_cppflags) $(c_switch_all)
ldflags = $(LDFLAGS) $(ld_switch_all) $(ld_libs_general)

## This is the default compilation command.
## But we should never rely on it, because some make version
## failed to find it for getopt.o.
## Using an explicit command made it work.
.c.o:
	${CC} -c $(cflags) $<

all: ${UTILITIES} ${INSTALLABLES} ${SCRIPTS}

## Make symlinks for shell scripts if using --srcdir */
rcs2log:
	${LN_S} ${srcdir}/$@ $@
vcdiff:
	${LN_S} ${srcdir}/$@ $@
tm-au :
	${LN_S} ${srcdir}/$@ $@
tm-file :
	${LN_S} ${srcdir}/$@ $@
tm-html :
	${LN_S} ${srcdir}/$@ $@
tm-image :
	${LN_S} ${srcdir}/$@ $@
tm-mpeg :
	${LN_S} ${srcdir}/$@ $@
tm-plain :
	${LN_S} ${srcdir}/$@ $@
tm-ps :
	${LN_S} ${srcdir}/$@ $@
tmdecode :
	${LN_S} ${srcdir}/$@ $@
gzip-el.sh:
	${LN_S} ${srcdir}/$@ $@
install-sid:
	${LN_S} ${srcdir}/$@ $@
send-pr:
	${LN_S} ${srcdir}/$@ $@


#undef MOVEMAIL_NEEDS_BLESSING
#if !defined (MAIL_USE_FLOCK) && ! defined (MAIL_USE_LOCKF)
#define MOVEMAIL_NEEDS_BLESSING
blessmail = blessmail
blessmail:
	../src/emacs -batch -l ../lisp/blessmail.el
	chmod +x $@
#endif /* movemail needs blessing */

maybe-blessmail: $(blessmail)
#ifdef MOVEMAIL_NEEDS_BLESSING
## Do not charge ahead and do it!  Let the installer decide.
	  ./blessmail ${archlibdir}/movemail  */
	@if test `wc -l <blessmail` != 2; then \
	  dir=`sed -n -e 's/echo mail directory = \(.*\)/\1/p' blessmail`; \
	  echo "Assuming $$dir is really the mail spool directory, you should"; \
	  echo "run  lib-src/blessmail ${archlibdir}/movemail"; \
	  echo "as root, to give  movemail  appropriate permissions."; \
	  echo "Do that after running  make install."; \
	fi
#endif

## Install the internal utilities.  Until they are installed, we can
## just run them directly from lib-src.
${archlibdir}: all
	@echo; echo "Installing utilities run internally by XEmacs."
	./make-path ${archlibdir}
	if test `(cd ${archlibdir} && /bin/pwd)` != `/bin/pwd`; then \
	  for file in ${UTILITIES}; do \
	    (cd .. && $(INSTALL_PROGRAM) lib-src/$$file ${archlibdir}/$$file) ; \
	  done ; \
	fi
	if test `(cd ${archlibdir} && /bin/pwd)` \
	     != `(cd ${srcdir} && /bin/pwd)`; then \
	  for file in ${SCRIPTS}; do \
	    (cd .. && $(INSTALL_PROGRAM) ${srcdir}/$$file ${archlibdir}/$$file); \
	  done ; \
	fi

## We do not need to install "wakeup" explicitly, because it will be
## copied when this whole directory is copied.
.PHONY : all maybe-blessmail install uninstall
install: ${archlibdir}
	@echo; echo "Installing utilities for users to run."
	for file in ${INSTALLABLES} ; do \
	  (cd .. && $(INSTALL_PROGRAM) lib-src/$${file} ${bindir}/$${file}) ; \
	done
	for file in ${INSTALLABLE_SCRIPTS} ; do \
	  (cd .. && $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file}) ; \
	done

uninstall:
	(cd ${bindir} && \
	 $(RM) ${INSTALLABLES} ${INSTALLABLE_SCRIPTS})
	(cd ${archlibdir} && \
	 $(RM) ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS})

.PHONY: mostlyclean clean distclean realclean extraclean
mostlyclean:
	$(RM) *.o *.i core
clean: mostlyclean
	$(RM) ${INSTALLABLES} ${UTILITIES}
distclean: clean
	$(RM) DOC *.tab.c *.tab.h aixcc.c TAGS
	$(RM) Makefile Makefile.in blessmail
realclean: distclean
extraclean: distclean
	$(RM) *~ \#*

.PHONY: unlock relock check
unlock:
	chmod u+w $(SOURCES)
relock:
	chmod u-w $(SOURCES)

## Test the contents of the directory.
check:
	@echo "We don't have any tests for XEmacs yet."

TAGS: etags
	etags *.[ch]

GETOPTOBJS = getopt.o getopt1.o $(ALLOCA)
GETOPTDEPS = $(GETOPTOBJS) ${srcdir}/getopt.h
getopt.o: ${srcdir}/getopt.c ${srcdir}/getopt.h
	${CC} -c $(cflags) ${srcdir}/getopt.c
getopt1.o: ${srcdir}/getopt1.c ${srcdir}/getopt.h
	${CC} -c $(cflags) ${srcdir}/getopt1.c
alloca.o: ${srcdir}/../src/alloca.c
	${CC} -c ${ALLOCA_CFLAGS} ${srcdir}/../src/alloca.c

#ifdef REGEXP_IN_LIBC
REGEXOBJ =
REGEXDEPS =
#else
REGEXOBJ = regex.o
REGEXDEPS = $(REGEXOBJ) ${srcdir}/../src/regex.h
#endif

regex.o: ${srcdir}/../src/regex.c ${srcdir}/../src/regex.h
	$(CC) -c `echo ${cflags} | sed 's/-Demacs/ /'` \
		-DINHIBIT_STRING_HEADER ${srcdir}/../src/regex.c

etags: ${srcdir}/etags.c $(GETOPTDEPS) $(REGEXDEPS) ../src/config.h
	$(CC) ${cflags} -DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) $(REGEXOBJ) $(ldflags) -o etags

## We depend on etags to assure that parallel makes do not write two
## etags.o files on top of each other.
ctags: ${srcdir}/etags.c $(GETOPTDEPS) $(REGEXDEPS) etags
	$(CC) ${cflags} -DCTAGS -DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) $(REGEXOBJ) $(ldflags) -o ctags

wakeup: ${srcdir}/wakeup.c
	$(CC) ${cflags} ${srcdir}/wakeup.c $(ldflags) -o wakeup

profile: ${srcdir}/profile.c
	$(CC) ${cflags} ${srcdir}/profile.c $(ldflags) -o profile

make-docfile: ${srcdir}/make-docfile.c
	$(CC) ${cflags} ${srcdir}/make-docfile.c $(ldflags) -o make-docfile

digest-doc: ${srcdir}/digest-doc.c
	$(CC) ${cflags} ${srcdir}/digest-doc.c $(ldflags) -o digest-doc

sorted-doc: ${srcdir}/sorted-doc.c ${ALLOCA}
	$(CC) ${cflags} ${srcdir}/sorted-doc.c ${ALLOCA} $(ldflags) -o sorted-doc

b2m: ${srcdir}/b2m.c ../src/config.h
	$(CC) ${cflags} ${srcdir}/b2m.c $(ldflags) -o b2m

movemail: ${srcdir}/movemail.c ${srcdir}/pop.c ${srcdir}/pop.h ../src/config.h
	$(CC) ${cflags} ${MOVE_FLAGS} ${srcdir}/movemail.c ${srcdir}/pop.c $(ldflags) ${MOVE_LIBS} -o movemail

cvtmail: ${srcdir}/cvtmail.c
	$(CC) ${cflags} ${srcdir}/cvtmail.c $(ldflags) -o cvtmail

fakemail: ${srcdir}/fakemail.c ../src/config.h
	$(CC) ${cflags} ${srcdir}/fakemail.c $(ldflags) -o fakemail

yow: ${srcdir}/yow.c ../src/paths.h
	$(CC) ${cflags} ${srcdir}/yow.c $(ldflags) -o yow

hexl: ${srcdir}/hexl.c
	$(CC) ${cflags} ${srcdir}/hexl.c $(ldflags) -o hexl

make-msgfile: ${srcdir}/make-msgfile.c
	$(CC) $(cflags) ${srcdir}/make-msgfile.c $(ldflags) -o make-msgfile

make-po: ${srcdir}/make-po.c
	$(CC) $(cflags) ${srcdir}/make-po.c $(ldflags) -o make-po

## Why oh why does HP not include half of the standard X distribution?

ldflags_gnuserv = $(LDFLAGS) $(ld_switch_all) @libs_xauth@ $(ld_libs_general)
gnuslib.o: ${srcdir}/gnuslib.c ${srcdir}/gnuserv.h ../src/config.h
	$(CC) -c ${cflags} ${srcdir}/gnuslib.c
gnuclient: ${srcdir}/gnuclient.c gnuslib.o ${srcdir}/gnuserv.h
	$(CC) ${cflags} -o $@ ${srcdir}/$@.c gnuslib.o ${ldflags_gnuserv}
gnuserv: ${srcdir}/gnuserv.c gnuslib.o ${srcdir}/gnuserv.h
	$(CC) ${cflags} -o $@ ${srcdir}/$@.c gnuslib.o ${ldflags_gnuserv}

## mmencode binary is used by tm - but is really part of the metamail package
## mmencode.c was merged copy of mmencode.c and codes.c of metamail
mmencode : ${srcdir}/mmencode.c
	$(CC) ${cflags} ${srcdir}/mmencode.c -o mmencode


## The timer utility (timer.c, getdate.y) is not used in XEmacs
## because XEmacs provides built-in timer facilities.

make-path: ${srcdir}/make-path.c ../src/config.h
	$(CC) $(cflags) ${srcdir}/make-path.c -o make-path

## These are NOT included in INSTALLABLES or UTILITIES.
## See ../src/Makefile.in.in.
aixcc: ${srcdir}/aixcc.c
	$(CC) $(cflags) -o aixcc ${srcdir}/aixcc.c

aixcc.c: ${srcdir}/aixcc.lex
	lex ${srcdir}/aixcc.lex
	mv lex.yy.c aixcc.c