view lib-src/Makefile.in @ 107777:13c077500eb3

2010-04-04 John Wiegley <jwiegley@gmail.com> * ido.el (ido-use-virtual-buffers): New variable to indicate whether "virtual buffer" support is enabled for IDO. Essentially it works as follows: Say you are visiting a file and the buffer gets cleaned up by mignight.el. Later, you want to switch to that buffer, but find it's no longer open. With virtual buffers enabled, the buffer name stays in the buffer list (using the ido-virtual face, and always at the end), and if you select it, it opens the file back up again. This allows you to think less about whether recently opened files are still open or not. Most of the time you can quit Emacs, restart, and then switch to a file buffer that was previously open as if it still were. NOTE: This feature has been present in iswitchb for several years now, and I'm porting the same logic to IDO. (ido-virtual): Face used to indicate virtual buffers in the list. (ido-buffer-internal): If a buffer is chosen, and no such buffer exists, but a virtual buffer of that name does (which would be why it was in the list), recreate the buffer by reopening the file. (ido-make-buffer-list): If virtual buffers are being used, call `ido-add-virtual-buffers-to-list' before the make list hook. (ido-virtual-buffers): New variable which contains a copy of the current contents of the `recentf-list', albeit pared down for the sake of speed, and with proper faces applied. (ido-add-virtual-buffers-to-list): Using the `recentf-list', create a list of "virtual buffers" to present to the user in addition to the currently open set. Note that this logic could get rather slow if that list is too large. With the default `recentf-max-saved-items' of 200, there is little speed penalty.
author jwiegley@gmail.com
date Sun, 04 Apr 2010 02:55:19 -0400
parents db38deea3cef
children 3879f5eab4e9
line wrap: on
line source

# Makefile for lib-src subdirectory in GNU Emacs.
# Copyright (C) 1985, 1987, 1988, 1993, 1994, 2001, 2002, 2003, 2004,
#               2005, 2006, 2007, 2008, 2009, 2010
#               Free Software Foundation, Inc.

# This file is part of GNU Emacs.

# GNU Emacs 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 3 of the License, or
# (at your option) any later version.

# GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.


# Avoid trouble on systems where the `SHELL' variable might be
# inherited from the environment.
SHELL = /bin/sh

# Following ../lisp/Makefile.in.
EMACS = ../src/emacs
EMACSOPT = -batch --no-site-file --multibyte

# ==================== Things `configure' will edit ====================

CC=@CC@
CFLAGS=@CFLAGS@
version=@version@
configuration=@configuration@
EXEEXT=@EXEEXT@

# Program name transformation.
TRANSFORM = @program_transform_name@

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

# The default location for installation.  Everything is placed in
# subdirectories of this directory.  The default values for many of
# the variables below are expressed in terms of this one, so you may
# not need to change them.  This is set with the --prefix option to
# `../configure'.
prefix=@prefix@

# Like `prefix', but used for architecture-specific files.  This is
# set with the --exec-prefix option to `../configure'.
exec_prefix=@exec_prefix@

# Where to install Emacs and other binaries that people will want to
# run directly (like etags).  This is set with the --bindir option
# to `../configure'.
bindir=@bindir@

# Where to install and expect executable files to be run by Emacs
# rather than directly by users, and other architecture-dependent
# data.  ${archlibdir} is usually below this.  This is set with the
# --libexecdir option to `../configure'.
libexecdir=@libexecdir@

# Directory for local state files for all programs.
localstatedir=@localstatedir@

# Where to find the source code.  This is set by the configure
# script's `--srcdir' option.  However, the value of ${srcdir} in
# this makefile is not identical to what was specified with --srcdir,
# since the variable here has `/lib-src' added at the end.

# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
srcdir=@srcdir@
VPATH=@srcdir@

# The top-level source directory, also set by configure.
top_srcdir=@top_srcdir@

# ==================== Emacs-specific directories ====================

# These variables hold the values Emacs will actually use.  They are
# based on the values of the standard Make variables above.

# Where to put executables to be run by Emacs rather than the user.
# This path usually includes the Emacs version and configuration name,
# so that multiple configurations for multiple versions of Emacs may
# be installed at once.  This can be set with the --archlibdir option
# to `../configure'.
archlibdir=@archlibdir@

gamedir=@gamedir@
gameuser=@gameuser@

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

# ../configure figures out the correct values for these.
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
# By default, we uphold the dignity of our programs.
INSTALL_STRIP =

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

# Things that a user might actually run,
# which should be installed in bindir.
INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} b2m${EXEEXT} ebrowse${EXEEXT} @LIB_SRC_EXTRA_INSTALLABLES@
INSTALLABLE_SCRIPTS = rcs-checkin grep-changelog

# Things that Emacs runs internally, or during the build process,
#  which should not be installed in bindir.
UTILITIES=  profile${EXEEXT} digest-doc${EXEEXT} sorted-doc${EXEEXT} \
            movemail${EXEEXT} fakemail${EXEEXT} \
            hexl${EXEEXT} update-game-score${EXEEXT}

DONT_INSTALL= test-distrib${EXEEXT} make-docfile${EXEEXT}

# Like UTILITIES, but they're not system-dependent, and should not be
#  deleted by the distclean target.
SCRIPTS= rcs2log vcdiff

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

# Specify additional -D flags for movemail. Options:
# -DMAIL_USE_FLOCK or -DMAIL_USE_LOCKF (use flock or lockf for file locking).
# See the comments about locking in movemail.c.  Normally the values
# in ../src/[ms]/*.h should be correct and you should not need to do anything.
# If neither flag is set, blessmail is used.
MOVE_FLAGS=

## -lkrb if HAVE_LIBKRB or -lkrb4 if HAVE_LIBKRB4
KRB4LIB=@KRB4LIB@
## -ldes if HAVE_LIBDES or -ldes425 if HAVE_LIBDES425
DESLIB=@DESLIB@
## -lkrb5 if HAVE_LIBKRB5
KRB5LIB=@KRB5LIB@
## -lk5crypto if HAVE_LIBK5CRYPTO or -lcrypto if HAVE_LIBCRYPTO
CRYPTOLIB=@CRYPTOLIB@
## -lcom_err if HAVE_LIBCOM_ERR
COM_ERRLIB=@COM_ERRLIB@
## -lhesiod if HAVE_LIBHESIOD
LIBHESIOD=@LIBHESIOD@
## -lresolv if HAVE_LIBRESOLV
LIBRESOLV=@LIBRESOLV@
## -llockfile if HAVE_LIBLOCKFILE or -lmail if HAVE_LIBMAIL
LIBS_MAIL=@LIBS_MAIL@

## Extra libraries to use when linking movemail.
LIBS_MOVE = $(LIBS_MAIL) $(KRB4LIB) $(DESLIB) $(KRB5LIB) $(CRYPTOLIB) $(COM_ERRLIB) $(LIBHESIOD) $(LIBRESOLV)


# ========================== start of cpp stuff =======================
/* From here on, comments must be done in C syntax.  */

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

/* Some s/SYSTEM.h files define this to request special libraries.  */
#ifndef LIBS_SYSTEM
#define LIBS_SYSTEM
#endif

/* Some m/MACHINE.h files define this to request special libraries.  */
#ifndef LIBS_MACHINE
#define LIBS_MACHINE
#endif

#ifndef C_SWITCH_SYSTEM
#define C_SWITCH_SYSTEM
#endif

#ifndef C_SWITCH_MACHINE
#define C_SWITCH_MACHINE
#endif

#undef MOVEMAIL_NEEDS_BLESSING
#ifndef MAIL_USE_FLOCK
#ifndef MAIL_USE_LOCKF
#define MOVEMAIL_NEEDS_BLESSING
#endif
#endif

#ifdef MOVEMAIL_NEEDS_BLESSING
#define BLESSMAIL blessmail
#else
#define BLESSMAIL
#endif

LOADLIBES=LIBS_SYSTEM LIBS_MACHINE

/* Those files shared with other GNU utilities need HAVE_CONFIG_H
   defined before they know they can take advantage of the information
   in ../src/config.h.  */
ALL_CFLAGS = C_SWITCH_SYSTEM C_SWITCH_MACHINE -DHAVE_CONFIG_H \
   -I. -I../src -I${srcdir} -I${srcdir}/../src ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
LINK_CFLAGS = C_SWITCH_SYSTEM C_SWITCH_MACHINE -DHAVE_CONFIG_H \
   -I. -I../src -I${srcdir} -I${srcdir}/../src ${LDFLAGS} ${CFLAGS}
CPP_CFLAGS = C_SWITCH_SYSTEM C_SWITCH_MACHINE -DHAVE_CONFIG_H \
   -I. -I../src -I${srcdir} -I${srcdir}/../src ${CPPFLAGS} ${CFLAGS}

.SUFFIXES: .m

/* 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 ${CPP_CFLAGS} $<

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

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

/* These targets copy the scripts into the build directory
so that they can be run from there in an uninstalled Emacs.
The "-" is prepended because some versions of cp barf when
srcdir is the current directory, and thus the file will be
copied into itself.  */
rcs2log: $(srcdir)/rcs2log
	-cp -p $(srcdir)/rcs2log rcs2log

rcs-checkin: $(srcdir)/rcs-checkin
	-cp -p $(srcdir)/rcs-checkin rcs-checkin

grep-changelog: $(srcdir)/grep-changelog
	-cp -p $(srcdir)/grep-changelog grep-changelog

vcdiff: $(srcdir)/vcdiff
	-cp -p $(srcdir)/vcdiff vcdiff

#ifdef MOVEMAIL_NEEDS_BLESSING
blessmail:
	$(EMACS) $(EMACSOPT) -l $(srcdir)/../lisp/mail/blessmail.el
	chmod +x blessmail
#endif

maybe-blessmail: BLESSMAIL
#ifdef MOVEMAIL_NEEDS_BLESSING
/* Don\'t charge ahead and do it!  Let the installer decide.
	  ./blessmail $(DESTDIR)${archlibdir}/movemail${EXEEXT}  */
	@if [ `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 $(DESTDIR)${archlibdir}/movemail${EXEEXT}; \
	  echo as root, to give  movemail${EXEEXT}  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.  */
$(DESTDIR)${archlibdir}: all
	@echo
	@echo "Installing utilities run internally by Emacs."
	umask 022; $(top_srcdir)/mkinstalldirs $(DESTDIR)${archlibdir}
	if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` != `/bin/pwd` ]; then \
	  for file in ${UTILITIES}; do \
	    $(INSTALL_PROGRAM) $(INSTALL_STRIP) $$file $(DESTDIR)${archlibdir}/$$file ; \
	  done ; \
        fi
	umask 022; $(top_srcdir)/mkinstalldirs $(DESTDIR)${gamedir}; \
	touch $(DESTDIR)${gamedir}/snake-scores; \
	touch $(DESTDIR)${gamedir}/tetris-scores
/* If the following commands fail, that is not a big deal.
   update-game-score will detect at runtime that it is not setuid,
   and handle things accordingly. */
	-if chown ${gameuser} $(DESTDIR)${archlibdir}/update-game-score && chmod u+s $(DESTDIR)${archlibdir}/update-game-score; then \
	  chown ${gameuser} $(DESTDIR)${gamedir}; \
	  chmod u=rwx,g=rwx,o=rx $(DESTDIR)${gamedir}; \
	fi
        if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` \
             != `(cd ${srcdir} && /bin/pwd)` ]; then \
	  for file in ${SCRIPTS}; do \
	    $(INSTALL_SCRIPT) ${srcdir}/$$file $(DESTDIR)${archlibdir}/$$file; \
	  done ; \
	fi

install: $(DESTDIR)${archlibdir}
	@echo
	@echo "Installing utilities for users to run."
	for file in ${INSTALLABLES} ; do \
	  $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \
	  chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \
	done
	for file in ${INSTALLABLE_SCRIPTS} ; do \
	  $(INSTALL_SCRIPT) ${srcdir}/$${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`  ; \
	  chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \
	done

uninstall:
	(cd $(DESTDIR)${bindir}; \
	for file in ${INSTALLABLES} ${INSTALLABLE_SCRIPTS}; do \
	  rm -f $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \
	done)
	if [ -d $(DESTDIR)${archlibdir} ]; then \
	  (cd $(DESTDIR)${archlibdir} && \
	   rm -f ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}) \
	fi

mostlyclean:
	-rm -f core *.o getopt.h getopt.h-t

clean: mostlyclean
	-rm -f ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL}
	-rm -f fns*.el *.tab.c *.tab.h

distclean: clean
	-rm -f TAGS
	-rm -f Makefile Makefile.c blessmail

maintainer-clean: distclean
	true

extraclean: maintainer-clean
	-rm -f *~ \#*

/* Test the contents of the directory.  */
check:
	@echo "We don't have any tests for GNU Emacs yet."

tags: TAGS
TAGS: etags${EXEEXT}
	etags *.[ch]

/* This verifies that the non-ASCII characters in the file \`testfile\'
   have not been clobbered by whatever means were used to copy and
   distribute Emacs.  If they were clobbered, all the .elc files were
   clobbered too.  */
test-distrib${EXEEXT}: ${srcdir}/test-distrib.c
	$(CC) ${ALL_CFLAGS} -o test-distrib ${srcdir}/test-distrib.c
	./test-distrib ${srcdir}/testfile

/* We need the following in order to create a <getopt.h> when the system
   does not have one that works with the given compiler.  */
GETOPT_H = @GETOPT_H@
getopt.h: getopt_.h
	cp $(srcdir)/getopt_.h $@-t
	mv $@-t $@

GETOPTOBJS = @GETOPTOBJS@
GETOPTDEPS = $(GETOPTOBJS) $(GETOPT_H)
getopt.o: ${srcdir}/getopt.c $(GETOPT_H) ${srcdir}/gettext.h
	${CC} -c ${CPP_CFLAGS} ${srcdir}/getopt.c
getopt1.o: ${srcdir}/getopt1.c $(GETOPT_H)
	${CC} -c ${CPP_CFLAGS} ${srcdir}/getopt1.c

REGEXPOBJ = regex.o
REGEXPDEPS = $(REGEXPOBJ) $(srcdir)/../src/regex.h

regex.o: $(srcdir)/../src/regex.c $(srcdir)/../src/regex.h ../src/config.h
	${CC} -c ${CPP_CFLAGS} -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER ${srcdir}/../src/regex.c

etags${EXEEXT}: ${srcdir}/etags.c $(GETOPTDEPS) $(REGEXPDEPS) ../src/config.h
	$(CC) ${ALL_CFLAGS} -DEMACS_NAME="\"GNU Emacs\"" -DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) $(REGEXPOBJ) $(LOADLIBES) -o etags

ebrowse${EXEEXT}: ${srcdir}/ebrowse.c $(GETOPTDEPS) ../src/config.h
	$(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" ${srcdir}/ebrowse.c $(GETOPTOBJS) $(LOADLIBES) -o ebrowse

/* We depend on etags to assure that parallel makes don\'t write two
   etags.o files on top of each other.  */
ctags${EXEEXT}: etags${EXEEXT}
	$(CC) ${ALL_CFLAGS} -DCTAGS -DEMACS_NAME="\"GNU Emacs\"" -DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) $(REGEXPOBJ) $(LOADLIBES) -o ctags

profile${EXEEXT}: ${srcdir}/profile.c ../src/config.h
	$(CC) ${ALL_CFLAGS} ${srcdir}/profile.c $(LOADLIBES) -o profile

make-docfile${EXEEXT}: ${srcdir}/make-docfile.c ../src/config.h
	$(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) -o make-docfile

digest-doc${EXEEXT}: ${srcdir}/digest-doc.c
	$(CC) ${ALL_CFLAGS} ${srcdir}/digest-doc.c $(LOADLIBES) -o digest-doc

sorted-doc${EXEEXT}: ${srcdir}/sorted-doc.c
	$(CC) ${ALL_CFLAGS} ${srcdir}/sorted-doc.c $(LOADLIBES) -o sorted-doc

b2m${EXEEXT}: ${srcdir}/b2m.c ../src/config.h $(GETOPTDEPS)
	$(CC) ${ALL_CFLAGS} ${srcdir}/b2m.c  -DVERSION="\"${version}\"" \
	   $(GETOPTOBJS) $(LOADLIBES) -o b2m

movemail${EXEEXT}: movemail.o pop.o $(GETOPTDEPS)
	$(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} movemail.o pop.o $(GETOPTOBJS) $(LOADLIBES) $(LIBS_MOVE) -o movemail

/*  We need to define emacs to get the right version of something (what?).  */
movemail.o: ${srcdir}/movemail.c ../src/config.h $(GETOPT_H)
	$(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/movemail.c

pop.o: ${srcdir}/pop.c  ../src/config.h
	$(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/pop.c

fakemail${EXEEXT}: ${srcdir}/fakemail.c ../src/config.h
	$(CC) ${ALL_CFLAGS} ${srcdir}/fakemail.c $(LOADLIBES) -o fakemail

emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h $(GETOPTDEPS)
	$(CC) ${ALL_CFLAGS} ${srcdir}/emacsclient.c $(GETOPTOBJS)  \
	   -DVERSION="\"${version}\"" \
	   $(LOADLIBES) -o emacsclient

hexl${EXEEXT}: ${srcdir}/hexl.c ../src/config.h
	$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl

update-game-score${EXEEXT}: update-game-score.o $(GETOPTDEPS)
	$(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} update-game-score.o $(GETOPTOBJS) $(LOADLIBES) -o update-game-score

update-game-score.o: ${srcdir}/update-game-score.c ../src/config.h $(GETOPT_H)
	$(CC) -c ${CPP_CFLAGS} ${srcdir}/update-game-score.c \
	  -DHAVE_SHARED_GAME_DIR="\"$(gamedir)\""