aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile.in
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-10-31 12:06:56 +1000
committerGravatar axel <axel@liljencrantz.se>2006-10-31 12:06:56 +1000
commitc4a8f4c890231980b367277707bd39fbc1d2e53d (patch)
tree602945221a8215e13cbd8f026e488180f8dc30b0 /Makefile.in
parentc098cb5c87c2ac0d1e6d4401339c113e2b0a02da (diff)
Code beutification in build files
darcs-hash:20061031020656-ac50b-2385bb51d7df624e5691b7659120596600fd1d5d.gz
Diffstat (limited to 'Makefile.in')
-rw-r--r--Makefile.in304
1 files changed, 275 insertions, 29 deletions
diff --git a/Makefile.in b/Makefile.in
index b6759aa7..9afbfd64 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,10 +1,10 @@
#
-# Copyright (C) 2005 Axel Liljencrantz
+# Copyright (C) 2005-2006 Axel Liljencrantz
#
# This program 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
-# of the License, or (at your option) any later version.
+# as published by the Free Software Foundation; version 2
+# of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -32,11 +32,19 @@
# hallucinations.
#
+
+#
# Programs
+#
+
CC := @CC@
INSTALL:=@INSTALL@
+
+#
# Installation directories
+#
+
prefix = @prefix@
exec_prefix = @exec_prefix@
datadir = @datadir@
@@ -47,51 +55,87 @@ docdir = @docdir@
localedir = @localedir@
prefix = @prefix@
optbindirs = @optbindirs@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
+
+
+#
+# Various flags
+#
MACROS=-DLOCALEDIR=\"$(localedir)\" -DPREFIX=L\"$(prefix)\" -DDATADIR=L\"$(datadir)\" -DSYSCONFDIR=L\"$(sysconfdir)\"
CFLAGS=@CFLAGS@ $(MACROS)
CPPFLAGS=@CPPFLAGS@
LDFLAGS= @LIBS@ @LDFLAGS@
+
+#
# Set to 1 if we have gettext
+#
+
HAVE_GETTEXT=@HAVE_GETTEXT@
+
+#
#Additional .c files used by common.o. These also have a corresponding
#.h file.
+#
+
COMMON_FILES := util.c halloc.c halloc_util.c fallback.c
+
+#
# All objects that the system needs to build fish, except main.o
-FISH_OBJS := function.o builtin.o complete.o env.o exec.o \
- expand.o highlight.o history.o kill.o parser.o proc.o reader.o \
- sanity.o tokenizer.o wildcard.o wgetopt.o wutil.o input.o \
- output.o intern.o env_universal.o env_universal_common.o \
- input_common.o event.o signal.o io.o parse_util.o common.o screen.o\
- path.o
+#
+
+FISH_OBJS := function.o builtin.o complete.o env.o exec.o expand.o \
+ highlight.o history.o kill.o parser.o proc.o reader.o sanity.o \
+ tokenizer.o wildcard.o wgetopt.o wutil.o input.o output.o intern.o \
+ env_universal.o env_universal_common.o input_common.o event.o \
+ signal.o io.o parse_util.o common.o screen.o path.o
+
+#
# Additional files used by builtin.o
+#
+
BUILTIN_FILES := builtin_help.c builtin_set.c builtin_commandline.c \
builtin_ulimit.c builtin_complete.c builtin_jobs.c
+
+#
# All objects that the system needs to build fish_pager
-FISH_PAGER_OBJS := fish_pager.o output.o wutil.o \
- tokenizer.o input_common.o env_universal.o env_universal_common.o \
- common.o
+#
+
+FISH_PAGER_OBJS := fish_pager.o output.o wutil.o tokenizer.o \
+ input_common.o env_universal.o env_universal_common.o common.o
+
+#
# All objects that the system needs to build fish_tests
+#
+
FISH_TESTS_OBJS := $(FISH_OBJS) fish_tests.o
+
+#
# All objects that the system needs to build fishd
+#
+
FISHD_OBJS := fishd.o env_universal_common.o wutil.o \
doc_src/fishd.o common.o
+
+#
# All objects needed to build mimedb
+#
+
MIME_OBJS := mimedb.o xdgmimealias.o xdgmime.o xdgmimeglob.o \
xdgmimeint.o xdgmimemagic.o xdgmimeparent.o wutil.o common.o
+
#
# Files containing documentation for builtins.
#
+
BUILTIN_DOC_SRC := doc_src/source.txt doc_src/and.txt \
doc_src/begin.txt doc_src/bg.txt doc_src/bind.txt \
doc_src/block.txt doc_src/break.txt doc_src/builtin.txt \
@@ -105,14 +149,18 @@ BUILTIN_DOC_SRC := doc_src/source.txt doc_src/and.txt \
doc_src/status.txt doc_src/switch.txt doc_src/ulimit.txt \
doc_src/while.txt
+
#
# Files generated by running doxygen on the files in $(BUILTIN_DOC_SRC)
#
+
BUILTIN_DOC_HDR := $(BUILTIN_DOC_SRC:.txt=.doxygen)
+
#
# Files containing documentation for external commands.
#
+
CMD_DOC_SRC := doc_src/contains.txt doc_src/count.txt doc_src/dirh.txt \
doc_src/dirs.txt doc_src/fish.txt doc_src/fish_pager.txt \
doc_src/fishd.txt doc_src/help.txt doc_src/isatty.txt \
@@ -121,25 +169,39 @@ CMD_DOC_SRC := doc_src/contains.txt doc_src/count.txt doc_src/dirh.txt \
doc_src/pushd.txt doc_src/set_color.txt doc_src/trap.txt \
doc_src/type.txt doc_src/umask.txt doc_src/vared.txt
+
#
# Files generated by running doxygen on the files in $(CMD_DOC_SRC)
#
+
CMD_DOC_HDR := $(CMD_DOC_SRC:.txt=.doxygen)
+
#
# Files in the test directory
#
+
TEST_IN := $(wildcard tests/test*.in)
+
#
# Files that should be added to the tar archives
#
+#
# Files in ./doc_src/
+#
+
DOC_SRC_DIR_FILES := doc_src/Doxyfile.in doc_src/doc.hdr \
$(BUILTIN_DOC_SRC) $(CMD_DOC_SRC)
-# Files in ./
+
+#
+# Files in ./. There is some overlap between the variables in the
+# list, so when copying these files, cp will complain that some files
+# are specified more than once.
+#
+
MAIN_DIR_FILES := Doxyfile Doxyfile.user Makefile.in configure \
configure.ac config.h.in install-sh set_color.c count.c \
key_reader.c gen_hdr.sh gen_hdr2.c $(MIME_OBJS:.o=.h) \
@@ -149,27 +211,54 @@ MAIN_DIR_FILES := Doxyfile Doxyfile.user Makefile.in configure \
xsel-0.9.6.tar ChangeLog config.sub config.guess fish_tests.c \
main.c fish_pager.c fishd.c seq.in
+
+#
# Files in ./etc/
+#
+
ETC_DIR_FILES :=etc/config.fish.in etc/fish_inputrc
+#
# Files in ./share/
+#
+
SHARE_DIR_FILES :=share/config.fish.in share/config_interactive.fish.in
+
+#
# Files in ./tests/
+#
+
TESTS_DIR_FILES := $(TEST_IN) $(TEST_IN:.in=.out) $(TEST_IN:.in=.err) \
$(TEST_IN:.in=.status) tests/test.fish tests/gen_output.fish
+
+#
# Files in ./share/completions/
+#
+
COMPLETIONS_DIR_FILES := $(wildcard share/completions/*.fish)
+
+#
# Files in ./share/functions/
+#
+
FUNCTIONS_DIR_FILES := $(wildcard share/functions/*.fish)
-# Programs to build
+
+#
+# Programs to install
+#
+
PROGRAMS:=fish set_color @XSEL@ @SEQ_FALLBACK@ mimedb count fish_pager fishd
-# Manuals to install
+
+#
+# Manual pagess to install
+#
+
MANUALS:=doc_src/builtin_doc/man/man1/fish.1 @XSEL_MAN_PATH@ \
doc_src/builtin_doc/man/man1/mimedb.1 \
doc_src/builtin_doc/man/man1/set_color.1 \
@@ -177,40 +266,69 @@ MANUALS:=doc_src/builtin_doc/man/man1/fish.1 @XSEL_MAN_PATH@ \
doc_src/builtin_doc/man/man1/fishd.1 \
doc_src/builtin_doc/man/man1/fish_pager.1
-#All translation message catalogs
+
+#
+# All translation message catalogs
+#
+
TRANSLATIONS_SRC := $(wildcard po/*.po)
TRANSLATIONS := $(TRANSLATIONS_SRC:.po=.gmo)
-#Make everything needed for installing fish
+
+#
+# Make everything needed for installing fish
+#
+
all: $(PROGRAMS) user_doc etc/config.fish share/config.fish share/config_interactive.fish $(TRANSLATIONS)
@echo fish has now been built.
@echo Use \'make install\' to install fish.
.PHONY: all
+
+#
+# These dependencies make sure that autoconf and configure are run
+# when the source code for the build configuration has changed.
+#
+
configure: configure.ac
./config.status --recheck
Makefile: Makefile.in configure
./config.status
-fish.spec: fish.spec.in
- ./config.status
+
+#
+# Build fish with some debug flags specified. This is GCC specific,
+# and should only be used when debuging fish.
+#
debug:
make fish CFLAGS="@CFLAGS@ $(MACROS) -O0 -Wno-unused -Werror -g"
.PHONY: debug
+
+#
# User documentation, describing the features of the fish shell.
+#
+
user_doc: doc_src/doc.hdr Doxyfile.user user_doc.head.html $(CMD_DOC_SRC) $(BUILTIN_DOC_SRC)
$(MAKE) doc.h # Depend on the source (doc.hdr) and manually make the intermediate as needed
doxygen Doxyfile.user
touch user_doc
+
+#
# Source code documentation. Also includes user documentation.
+#
+
doc: *.h *.c doc.h Doxyfile builtin_help.c
doxygen;
+
+#
# PDF version of the source code documentation.
+#
+
doc/refman.pdf: doc
cd doc/latex;
make;
@@ -218,20 +336,34 @@ doc/refman.pdf: doc
cd ../..;
rm -r doc/latex;
+
+#
+# This target runs both the low level code tests and the high level script tests.
+#
+
test: $(PROGRAMS) fish_tests
./fish_tests; cd tests; ../fish <test.fish;
.PHONY: test
+
+#
+# Build the xsel program, which is maintained in its own tarball
+#
+
xsel-0.9.6:
tar -xf xsel-0.9.6.tar
xsel-0.9.6/xsel: xsel-0.9.6
cd xsel-0.9.6; ./configure; make
+
+#
# doc.h is a compilation of the various snipptes of text used both for
# the user documentation and for internal help functions into a single
# file that can be parsed dy Doxygen to generate the user
# documentation.
+#
+
doc.h:$(BUILTIN_DOC_SRC) $(CMD_DOC_SRC) doc_src/doc.hdr
cat doc_src/doc.hdr >doc.h;
echo "/** \page builtins Builtin commands" >>doc.h;
@@ -248,10 +380,14 @@ doc.h:$(BUILTIN_DOC_SRC) $(CMD_DOC_SRC) doc_src/doc.hdr
done
echo "*/" >>doc.h
+
+#
# This rule creates complete doxygen headers from each of the various
# snipptes of text used both for the user documentation and for
# internal help functions, that can be parsed to Doxygen to generate
# the internal help function text.
+#
+
%.doxygen:%.txt
echo "/** \page " `basename $*` >$@;
cat $*.txt >>$@;
@@ -261,13 +397,21 @@ doc.h:$(BUILTIN_DOC_SRC) $(CMD_DOC_SRC) doc_src/doc.hdr
sed <$@.in >$@ -e "s,@sysconfdir\@,$(sysconfdir),g" -e "s,@datadir\@,$(datadir),g" -e "s,@docdir\@,$(docdir),g" -e "s|@configure_input\@|$@, generated from $@.in by the Makefile. DO NOT MANUALLY EDIT THIS FILE!|g" -e "s,@prefix\@,$(prefix),g" -e "s,@optbindirs\@,$(optbindirs),g"
#-e "s,@\@,$(),"
-# Compile translation file
+
+#
+# Compile translation files to binary format
+#
+
%.gmo:
if test $(HAVE_GETTEXT) = 1; then \
msgfmt -o $*.gmo $*.po; \
fi
+
+#
# Update existing po file or copy messages.pot
+#
+
%.po:messages.pot
if test $(HAVE_GETTEXT) = 1;then \
if test -f $*.po; then \
@@ -277,7 +421,11 @@ doc.h:$(BUILTIN_DOC_SRC) $(CMD_DOC_SRC) doc_src/doc.hdr
fi; \
fi
+
+#
# Create a template translation object
+#
+
messages.pot: *.c *.h etc/*.in share/fish share/completions/*.fish share/functions/*.fish seq
if test $(HAVE_GETTEXT) = 1;then \
xgettext -k_ -kN_ *.c *.h -o messages.pot; \
@@ -292,6 +440,8 @@ builtin.o: $(BUILTIN_FILES)
common.o: $(COMMON_FILES)
+
+#
# Generate the internal help functions by making doxygen create
# man-pages which are then converted into C code. The convertion path
# looks like this:
@@ -323,6 +473,7 @@ common.o: $(COMMON_FILES)
#
# Which is an awful, clunky and ugly way of producing
# documentation. There ought to be something simpler.
+#
doc_src/builtin_doc: $(BUILTIN_DOC_SRC) doc_src/count.txt builtin_help.hdr $(CMD_DOC_SRC)
for i in $(BUILTIN_DOC_SRC) $(CMD_DOC_SRC); do \
@@ -350,11 +501,12 @@ builtin_help.c: doc_src/builtin_doc gen_hdr.sh
done;
echo "}" >>builtin_help.c
+
#
# Generate help texts for external fish commands, like set_color and
-# mimedb. Depends on builtin_help.c to make sure doxygen gets run to
-# generate the man files.
+# mimedb.
#
+
%.c : %.doxygen
$(MAKE) gen_hdr2 builtin_help.c # These should really be filed as dependencis for %.c above instead, but that seems to confuse make
echo "// This file was automatically generated, do not edit" >$@
@@ -373,8 +525,10 @@ builtin_help.c: doc_src/builtin_doc gen_hdr.sh
# The build rules for installing/uninstalling fish
#
+#
# Check for an incompatible installed fish version, and fail with an
# error if found
+#
check-uninstall:
if test -f $(DESTDIR)$(sysconfdir)/fish.d/fish_function.fish -o -f $(DESTDIR)$(sysconfdir)/fish.d/fish_complete.fish; then \
@@ -402,16 +556,31 @@ check-uninstall:
fi;
.PHONY: check-uninstall
+
+#
+# This check makes sure that the install-sh script is executable. The
+# darcs repo doesn't preserve the executable bit, so this needs to be
+# run after checkout.
+#
+
install-sh:
if test -x install-sh; then true; else chmod 755 install-sh; fi
.PHONY: install-sh
-# Try to install after checking for incompatible installed versions
+
+#
+# Try to install after checking for incompatible installed versions.
+#
+
install: all install-sh check-uninstall install-force
.PHONY: install
+
+#
# Force installation, even in presense of incompatible previous
-# version
+# version. This may fail.
+#
+
install-force: all install-translations
$(INSTALL) -m 755 -d $(DESTDIR)$(bindir)
for i in $(PROGRAMS); do\
@@ -452,7 +621,9 @@ install-force: all install-translations
.PHONY: install-force
+#
# Uninstall this fish version
+#
uninstall: uninstall-translations
-for i in $(PROGRAMS); do \
@@ -473,9 +644,13 @@ uninstall: uninstall-translations
done;
.PHONY: uninstall
-# Uninstall older fish release. This is not the default uninstall
+
+#
+# Uninstall an older fish release. This is not the default uninstall
# since there is a slight chance that it removes a file put in place by
-# the sysadmin.
+# the sysadmin. But if 'make install' detects a file confligt, it
+# suggests using this target.
+#
uninstall-legacy: uninstall
-rm -f $(DESTDIR)$(sysconfdir)/fish.d/fish_interactive.fish
@@ -513,41 +688,87 @@ uninstall-translations:
fi
.PHONY: uninstall-translations
+
#
# The build rules for all the commands
#
+#
+# Build the fish program.
+#
+
fish: $(FISH_OBJS) main.o
$(CC) $(FISH_OBJS) main.o $(LDFLAGS) -o $@
+
+#
+# Build the fish_pager program.
+#
+
fish_pager: $(FISH_PAGER_OBJS)
$(CC) $(FISH_PAGER_OBJS) $(LDFLAGS) -o $@
+
+#
+# Build the fishd program.
+#
+
fishd: $(FISHD_OBJS)
$(CC) $(FISHD_OBJS) $(LDFLAGS) -o $@
+
+#
+# Build the fish_tests program.
+#
+
fish_tests: $(FISH_TESTS_OBJS)
$(CC) $(FISH_TESTS_OBJS) $(LDFLAGS) -o $@
-# mimedb does not need any libraries, so we don't use LDFLAGS here
+
+#
+# Build the mimedb program.
+#
+# mimedb does not need any libraries, so we don't use LDFLAGS here.
+#
+
mimedb: $(MIME_OBJS) doc_src/mimedb.o
$(CC) $(MIME_OBJS) doc_src/mimedb.o $(LDFLAGS) -o $@
-# count does not need any libraries, so we don't use LDFLAGS here
+
+#
+# Build the count program.
+#
+# count does not need any libraries, so we don't use LDFLAGS here.
+#
+
count: count.o
$(CC) count.o -o $@
+
+#
+# Build the set_color program
+#
+
set_color: set_color.o doc_src/set_color.o common.o
$(CC) set_color.o doc_src/set_color.o common.o wutil.o $(LDFLAGS) -o $@
+
+#
# Test program for the tokenizer library
+#
+
tokenizer_test: tokenizer.c tokenizer.h wutil.o common.o
$(CC) $(CFLAGS) tokenizer.c wutil.o common.o -D TOKENIZER_TEST $(LDFLAGS) -o $@
+
+#
# Neat little program to show output from terminal
+#
+
key_reader: key_reader.o input_common.o common.o env_universal.o env_universal_common.o wutil.o
$(CC) key_reader.o input_common.o common.o env_universal.o env_universal_common.o wutil.o $(LDFLAGS) -o $@
+
#
# Update dependencies
#
@@ -556,12 +777,16 @@ depend:
./config.status
.PHONY: depend
+
+#
# Copy all the source files into a new directory and use tar to create
# an archive from it. Simplest way I could think of to make an archive
# witout backups, autogenerated files, etc.
#
# Uses install instead of mkdir so build won't fail if the directory
# exists
+#
+
fish-@PACKAGE_VERSION@.tar: $(DOC_SRC_DIR_FILES) $(MAIN_DIR_FILES) $(ETC_DIR_FILES) $(TEST_DIR_FILES) $(SHARE_DIR_FILES) $(FUNCTIONS_DIR_FILES) $(COMPLETIONS_DIR_FILES) ChangeLog user_doc doc_src/builtin_doc
rm -rf fish-@PACKAGE_VERSION@
$(INSTALL) -d fish-@PACKAGE_VERSION@
@@ -586,9 +811,19 @@ fish-@PACKAGE_VERSION@.tar: $(DOC_SRC_DIR_FILES) $(MAIN_DIR_FILES) $(ETC_DIR_FIL
tar -c fish-@PACKAGE_VERSION@ >fish-@PACKAGE_VERSION@.tar
rm -rf fish-@PACKAGE_VERSION@
+
+#
+# Just an alias for fish-@PACKAGE_VERSION@.tar
+#
+
tar: fish-@PACKAGE_VERSION@.tar
.PHONY: tar
+
+#
+# Make compressed tar archives
+#
+
fish-@PACKAGE_VERSION@.tar.gz: fish-@PACKAGE_VERSION@.tar
gzip -f --best -c fish-@PACKAGE_VERSION@.tar >fish-@PACKAGE_VERSION@.tar.gz
@@ -598,8 +833,19 @@ fish-@PACKAGE_VERSION@.tar.bz2: fish-@PACKAGE_VERSION@.tar
dist: fish-@PACKAGE_VERSION@.tar.bz2
.PHONY: dist
+#
+# Build the RPM spec file.
+#
+
+fish.spec: fish.spec.in
+ ./config.status
+
+
+#
# Create .rpm file for the current systems architecture and an
# .src.rpm file.
+#
+
rpm: fish-@PACKAGE_VERSION@.tar.bz2 fish.spec
@if which rpmbuild; then true; else \
echo Could not find the rpmbuild command, needed to build an rpm; \