2005-09-20 13:26:39 +00:00
#
# Copyright (C) 2005 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.
#
# This program 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 this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
2006-02-04 13:09:14 +00:00
#
# @configure_input@
#
2005-09-20 13:26:39 +00:00
#
# Makefile for the fish shell. Can build fish and associated
# applications, install them, recalculate dependencies and also create
# binary distributions in tar.bz2 tar.gz and rpm formats.
#
#
# The fish buildprocess is quite complex. Do not stare directly into
# the Makefile. Doing so may cause nausea, dizziness and
# hallucinations.
#
2006-01-23 11:38:07 +00:00
# Programs
2005-09-20 13:26:39 +00:00
CC := @CC@
2006-01-23 11:38:07 +00:00
INSTALL := @INSTALL@
2006-03-05 21:23:30 +00:00
#
# Compiler flags:
#
2006-03-09 11:56:38 +00:00
#
2006-03-05 21:23:30 +00:00
# -fno-optimize-sibling-calls seems to work around a bug where sending
2006-03-09 11:56:38 +00:00
# a SIGWINCH to fish on NetBSD causes fish to exit when compiled with
# GCC 3.3.3. This is probably either a compiler bug or a libc bug, but
# adding this flag seems to fix things for now. Long term, the real
# problem should be tracked down and truly fixed, at which point we
# can remove this silly flag. This bug has been verified to not exist
# on Linux using GCC 3.3.3.
2006-03-05 21:23:30 +00:00
#
# -Wall is there to keep me on my toes
#
2006-03-06 18:49:24 +00:00
CFLAGS := @CFLAGS@ -Wall -fno-optimize-sibling-calls
2005-09-20 13:26:39 +00:00
CPPFLAGS = @CPPFLAGS@
2006-01-30 16:57:06 +00:00
LDFLAGS := @LIBS@ @LDFLAGS@
2005-09-20 13:26:39 +00:00
2006-01-22 21:35:48 +00:00
# Installation directories
2005-09-20 13:26:39 +00:00
prefix = @prefix@
exec_prefix = @exec_prefix@
2006-01-04 12:51:02 +00:00
datadir = @datadir@
2005-09-20 13:26:39 +00:00
bindir = @bindir@
mandir = @mandir@
sysconfdir = @sysconfdir@
fishinputfile = @fishinputfile@
docdir = @docdir@
2006-02-17 10:13:39 +00:00
#etc files to install
2006-02-17 10:35:40 +00:00
ETC_DIR_INSTALL = etc/fish_interactive.fish
2006-01-22 21:07:56 +00:00
2006-01-22 21:35:48 +00:00
# Set to 1 if we have gettext
2006-01-04 12:51:02 +00:00
HAVE_GETTEXT = @HAVE_GETTEXT@
2006-02-28 13:17:16 +00:00
CORE_OBJS := util.o common.o halloc.o halloc_util.o fallback.o
2006-02-09 15:50:20 +00:00
2005-09-20 13:26:39 +00:00
# All objects used by fish, that are compiled from an ordinary .c file
# using an ordinary .h file.
2006-02-09 15:50:20 +00:00
COMMON_OBJS := function .o builtin.o complete.o env.o exec.o \
2005-09-20 13:26:39 +00:00
expand.o highlight.o history.o kill.o parser.o proc.o reader.o \
2006-02-09 15:50:20 +00:00
sanity.o tokenizer.o wildcard.o wgetopt.o wutil.o input.o \
2005-10-05 22:37:08 +00:00
output.o intern.o env_universal.o env_universal_common.o \
2006-02-06 14:25:02 +00:00
input_common.o event.o signal.o io.o translate.o parse_util.o \
2006-02-09 15:50:20 +00:00
$( CORE_OBJS)
2005-09-20 13:26:39 +00:00
# builtin_help.h exists, but builtin_help.c is autogenerated
COMMON_OBJS_WITH_HEADER := builtin_help.o
# main.c exists, but main.h does not, etc.
2006-01-22 21:35:48 +00:00
COMMON_OBJS_WITH_CODE := builtin_set.o builtin_commandline.o \
builtin_ulimit.c builtin_complete.o
2005-09-20 13:26:39 +00:00
# All objects that the system needs to build fish
2006-01-22 21:35:48 +00:00
FISH_OBJS := $( COMMON_OBJS) $( COMMON_OBJS_WITH_CODE) \
$( COMMON_OBJS_WITH_HEADER) main.o
# All objects that the system needs to build fish_pager
2006-02-09 15:50:20 +00:00
FISH_PAGER_OBJS := fish_pager.o output.o wutil.o \
2006-01-22 21:35:48 +00:00
tokenizer.o input_common.o env_universal.o env_universal_common.o \
2006-02-09 15:50:20 +00:00
translate.o $( CORE_OBJS)
2005-09-20 13:26:39 +00:00
2006-01-22 21:35:48 +00:00
# All objects that the system needs to build fish_tests
FISH_TESTS_OBJS := $( COMMON_OBJS) $( COMMON_OBJS_WITH_CODE) \
$( COMMON_OBJS_WITH_HEADER) fish_tests.o
# All objects that the system needs to build fishd
2006-02-09 15:50:20 +00:00
FISHD_OBJS := fishd.o env_universal_common.o wutil.o \
doc_src/fishd.o $( CORE_OBJS)
2005-09-20 13:26:39 +00:00
2006-01-22 21:35:48 +00:00
# All objects needed to build mimedb
2006-02-09 15:50:20 +00:00
MIME_OBJS := mimedb.o xdgmimealias.o xdgmime.o xdgmimeglob.o \
2006-03-01 01:28:18 +00:00
xdgmimeint.o xdgmimemagic.o xdgmimeparent.o wutil.o $( CORE_OBJS)
2005-09-20 13:26:39 +00:00
#
# Files containing documentation for builtins. Should be listed
# alphabetically, since this is the order in which they will be written
# in the help file.
#
BUILTIN_DOC_SRC := doc_src/source.txt doc_src/and.txt \
doc_src/begin.txt doc_src/bg.txt doc_src/bind.txt \
2005-12-11 22:21:01 +00:00
doc_src/block.txt doc_src/break.txt doc_src/builtin.txt \
doc_src/case.txt doc_src/cd.txt doc_src/command.txt \
doc_src/commandline.txt doc_src/complete.txt doc_src/continue.txt \
doc_src/else.txt doc_src/end.txt doc_src/eval.txt doc_src/exec.txt \
doc_src/exit.txt doc_src/fg.txt doc_src/for.txt \
doc_src/function.txt doc_src/functions.txt doc_src/if.txt \
doc_src/jobs.txt doc_src/not.txt doc_src/or.txt doc_src/random.txt \
2005-09-20 13:26:39 +00:00
doc_src/return.txt doc_src/read.txt doc_src/set.txt \
2005-10-14 22:33:01 +00:00
doc_src/status.txt doc_src/switch.txt doc_src/ulimit.txt \
doc_src/while.txt
2005-09-20 13:26:39 +00:00
#
# 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. Should be listed
# alphabetically, since this is the order in which they will be written
# in the help file.
#
2006-01-26 17:34:37 +00:00
CMD_DOC_SRC := doc_src/contains.txt doc_src/count.txt doc_src/dirh.txt \
doc_src/dirs.txt doc_src/fish_pager.txt doc_src/fishd.txt \
doc_src/help.txt doc_src/mimedb.txt doc_src/nextd.txt \
doc_src/open.txt doc_src/popd.txt doc_src/prevd.txt \
doc_src/psub.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
2005-09-20 13:26:39 +00:00
#
# Files generated by running doxygen on the files in $(CMD_DOC_SRC)
#
CMD_DOC_HDR := $( CMD_DOC_SRC:.txt= .doxygen)
2006-01-22 21:35:48 +00:00
#
# Files in the test directory
#
2005-09-20 13:26:39 +00:00
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) doc_src/fish.1.in
# Files in ./
MAIN_DIR_FILES := Doxyfile Doxyfile.user Makefile.in configure \
configure.ac config.h.in install-sh set_color.c count.c \
2006-01-10 16:36:03 +00:00
key_reader.c gen_hdr.sh gen_hdr2.c $( MIME_OBJS:.o= .h) \
2005-09-20 13:26:39 +00:00
$( MIME_OBJS:.o= .c) $( COMMON_OBJS_WITH_HEADER:.o= .h) \
$( COMMON_OBJS:.o= .h) $( COMMON_OBJS_WITH_CODE:.o= .c) \
$( COMMON_OBJS:.o= .c) builtin_help.hdr fish.spec.in INSTALL README \
user_doc.head.html xsel-0.9.6.tar ChangeLog config.sub \
2006-01-22 21:07:56 +00:00
config.guess fish_tests.c main.c fish_pager.c fishd.c seq.in
2005-09-20 13:26:39 +00:00
2006-02-17 10:13:39 +00:00
# Files in ./etc/
2006-02-17 10:35:40 +00:00
ETC_DIR_FILES := etc/fish.in etc/fish_inputrc \
2006-02-17 10:13:39 +00:00
etc/fish_interactive.fish.in
# Files in ./share/
SHARE_DIR_FILES := share/fish
2005-09-20 13:26:39 +00:00
# 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
2006-02-17 10:13:39 +00:00
COMPLETIONS_DIR_FILES := $( wildcard share/completions/*.fish)
2005-09-20 13:26:39 +00:00
2006-02-17 10:13:39 +00:00
FUNCTIONS_DIR_FILES := $( wildcard share/functions/*.fish)
2006-02-08 09:20:05 +00:00
2005-09-20 13:26:39 +00:00
# Programs to build
2006-01-22 21:07:56 +00:00
PROGRAMS := fish set_color @XSEL@ @SEQ_FALLBACK@ mimedb count fish_pager fishd
2005-09-20 13:26:39 +00:00
# Manuals to install
MANUALS := doc_src/fish.1 @XSEL_MAN_PATH@ \
doc_src/builtin_doc/man/man1/mimedb.1 \
doc_src/builtin_doc/man/man1/set_color.1 \
2006-01-23 16:25:34 +00:00
doc_src/builtin_doc/man/man1/count.1 \
2006-01-24 18:07:29 +00:00
doc_src/builtin_doc/man/man1/fishd.1 \
doc_src/builtin_doc/man/man1/fish_pager.1
2005-09-20 13:26:39 +00:00
2006-01-04 12:51:02 +00:00
#All translation message catalogs
TRANSLATIONS_SRC := $( wildcard po/*.po)
TRANSLATIONS := $( TRANSLATIONS_SRC:.po= .gmo)
2005-09-20 13:26:39 +00:00
#Make everything needed for installing fish
2006-01-04 12:51:02 +00:00
all : $( PROGRAMS ) user_doc
2006-01-18 13:11:43 +00:00
@echo fish has now been built.
@echo Use \' make install\' to install fish.
2006-01-23 20:40:14 +00:00
.PHONY : all
2005-09-20 13:26:39 +00:00
2006-01-16 13:41:50 +00:00
debug :
2006-03-06 18:49:24 +00:00
make fish CFLAGS = "-O0 -Wno-unused -Werror -g -Wall -fno-optimize-sibling-calls"
2006-01-23 20:40:14 +00:00
.PHONY : debug
2006-01-16 13:41:50 +00:00
2005-09-20 13:26:39 +00:00
# User documentation, describing the features of the fish shell.
user_doc : doc .h Doxyfile .user user_doc .head .html
doxygen Doxyfile.user
2006-01-23 20:40:14 +00:00
# Source code documentation. Also includes user documentation.
2005-09-20 13:26:39 +00:00
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;
mv refman.pdf ..;
cd ../..;
rm -r doc/latex;
test : $( PROGRAMS ) fish_tests
./fish_tests; cd tests; ../fish <test.fish;
2006-01-23 20:40:14 +00:00
.PHONY : test
2005-09-20 13:26:39 +00:00
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;
cat $( BUILTIN_DOC_SRC) >>doc.h;
echo "*/" >>doc.h
echo "/** \page commands External commands" >>doc.h;
echo "\c fish is shipped with commands which do not use any internal parts of the shell, and are therefore not written as builtins, but separate commands." >>doc.h
cat $( CMD_DOC_SRC) >>doc.h;
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 >>$@ ;
echo "*/" >>$@
2006-01-04 12:51:02 +00:00
# Compile translation file
2006-01-23 17:47:42 +00:00
%.gmo :
2006-01-04 12:51:02 +00:00
if test $( HAVE_GETTEXT) = 1; then \
msgfmt $* .po -o $* .gmo; \
fi
# Update existing po file or copy messages.pot
2006-01-23 17:47:42 +00:00
%.po : messages .pot
2006-01-04 12:51:02 +00:00
if test $( HAVE_GETTEXT) = 1; then \
if test -f $* .po; then \
2006-01-18 16:59:17 +00:00
msgmerge -U --backup= existing $* .po messages.pot; \
2006-01-04 12:51:02 +00:00
else \
cp messages.pot $* .po; \
fi ; \
fi
# Create a template translation object
2006-02-18 02:33:32 +00:00
messages.pot : *.c *.h etc /*.in share /fish share /completions /*.fish share /functions /*.fish seq
2006-01-04 12:51:02 +00:00
if test $( HAVE_GETTEXT) = 1; then \
2006-03-01 16:53:47 +00:00
xgettext -k_ -kN_ *.c *.h -o messages.pot; \
if ! xgettext -j -k_ -kN_ -LShell etc/*.in share/fish share/completions/*.fish share/functions/*.fish seq -o messages.pot; then \
2006-01-18 16:59:17 +00:00
echo "Your xgettext version is too old to build the messages.pot file" \
2006-01-23 11:38:07 +00:00
rm messages.pot\
2006-01-18 16:59:17 +00:00
false; \
fi ; \
2006-01-04 12:51:02 +00:00
fi
2005-09-20 13:26:39 +00:00
# Generate the internal help functions by making doxygen create
# man-pages which are then converted into C code. The convertion path
# looks like this:
#
# .txt file
# ||
# (make)
# ||
# \/
# .doxygen file
# ||
# (doxygen)
# ||
# \/
# man file
# ||
# (man)
# ||
# \/
# formated text
# with escape
# sequences
# ||
# \/
# (gen_hdr2)
# ||
# \/
# .c file
#
# Which is an awful, clunky and ugly way of producing
# documentation. There ought to be something simpler.
builtin_help.c : $( BUILTIN_DOC_HDR ) doc_src /count .doxygen gen_hdr 2 gen_hdr .sh builtin_help .hdr $( CMD_DOC_HDR )
cd doc_src; doxygen; cd ..;
cp builtin_help.hdr builtin_help.c;
2006-01-23 11:38:07 +00:00
chmod 755 gen_hdr.sh
2005-09-20 13:26:39 +00:00
for i in $( BUILTIN_DOC_HDR) doc_src/count.doxygen ; do \
echo ' hash_put( &tbl, L"' ` basename $$ i .doxygen` '",' >>$@ ; \
./gen_hdr.sh $$ i >>$@ ; \
echo " );" >>$@ ; \
echo >>$@ ; \
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.
#
%.c : %.doxygen gen_hdr 2 builtin_help .c
echo "// This file was automatically generated, do not edit" >$@
echo "#include <stdlib.h>" >>$@
echo "#include <stdio.h>" >>$@
echo >>$@
echo "void print_help()" >>$@
echo "{" >>$@
echo ' printf( "%s",' >>$@
2006-01-23 11:38:07 +00:00
chmod 755 gen_hdr.sh
2005-09-20 13:26:39 +00:00
./gen_hdr.sh $* .doxygen >>$@
echo ");" >>$@
echo "}" >>$@
#man -- doc_src/builtin_doc/man/man1/`basename $@ .c`.1 | cat -s | ./gen_hdr2 >>$@
2006-01-23 20:40:14 +00:00
#
2006-02-23 15:35:56 +00:00
# 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 \
echo; \
echo ERROR; \
echo; \
echo An older fish installation using an incompatible filesystem hierarchy was detected; \
echo You must uninstall this fish version before installing proceeding; \
echo type \' make uninstall-legacy\' to uninstall these files,; \
echo or type \' make force-install\' to force installation.; \
echo The latter may result in a broken installation.; \
echo; \
false; \
fi ;
.PHONY : check -uninstall
# Try to install after checking for incompatible installed versions
install : all check -uninstall install -force
.PHONY : install
2006-01-23 20:40:14 +00:00
2006-02-23 15:35:56 +00:00
# Force installation, even in presense of incompatible previous
# version
install-force : all install -translations
2005-09-20 13:26:39 +00:00
$( INSTALL) -m 755 -d $( DESTDIR) $( bindir)
for i in $( PROGRAMS) ; do \
$( INSTALL) -m 755 $$ i $( DESTDIR) $( bindir) ; \
done ;
2006-02-17 10:13:39 +00:00
$( INSTALL) -m 755 -d $( DESTDIR) $( sysconfdir) /fish.d
$( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish
$( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/completions
$( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/functions
$( INSTALL) -m 644 etc/fish $( DESTDIR) $( sysconfdir) /fish
$( INSTALL) -m 644 share/fish $( DESTDIR) $( datadir) /fish
for i in $( ETC_DIR_INSTALL) ; do \
$( INSTALL) -m 644 $$ i $( DESTDIR) $( sysconfdir) /fish.d; \
2005-09-20 13:26:39 +00:00
done ;
for i in $( COMPLETIONS_DIR_FILES) ; do \
2006-02-17 10:13:39 +00:00
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/completions/; \
2005-09-20 13:26:39 +00:00
done ;
2006-02-08 09:20:05 +00:00
for i in $( FUNCTIONS_DIR_FILES) ; do \
2006-02-17 10:13:39 +00:00
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/functions/; \
2006-02-08 09:20:05 +00:00
done ;
2006-02-17 10:13:39 +00:00
$( INSTALL) -m 644 etc/fish_inputrc $( DESTDIR) $( sysconfdir) /fish_inputrc;
2005-09-20 13:26:39 +00:00
$( INSTALL) -m 755 -d $( DESTDIR) $( docdir)
for i in user_doc/html/* ChangeLog; do \
2005-12-09 02:49:23 +00:00
if test -f $$ i; then \
$( INSTALL) -m 644 $$ i $( DESTDIR) $( docdir) ; \
fi ; \
2005-09-20 13:26:39 +00:00
done ;
$( INSTALL) -m 755 -d $( DESTDIR) $( mandir) /man1
for i in $( MANUALS) ; do \
$( INSTALL) -m 644 $$ i $( DESTDIR) $( mandir) /man1/; \
done ;
2006-01-18 13:11:43 +00:00
@echo fish is now installed on your system.
@echo To run fish, type \' fish\' in your terminal.
@echo
@echo To use fish as your login shell:
@echo \* add the line \' $( DESTDIR) $( bindir) /fish\' to the file \' /etc/shells\' .
@echo \* use the command \' chsh -s $( DESTDIR) $( bindir) /fish\' .
@echo
@echo Have fun!
2006-02-23 15:35:56 +00:00
.PHONY : force -install
# Uninstall this fish version
2005-09-20 13:26:39 +00:00
2006-01-04 12:51:02 +00:00
uninstall : uninstall -translations
2005-09-20 13:26:39 +00:00
for i in $( PROGRAMS) ; do \
rm -f $( DESTDIR) $( bindir) /$$ i; \
done ;
rm -f $( DESTDIR) $( bindir) /xsel
2006-02-17 10:13:39 +00:00
rm -f $( DESTDIR) $( sysconfdir) /fish
rm -f $( DESTDIR) $( sysconfdir) /fish_inputrc
2006-02-23 15:35:56 +00:00
if test -d $( DESTDIR) $( datadir) /fish; then \
rm -r $( DESTDIR) $( datadir) /fish; \
fi
if test -d $( DESTDIR) $( docdir) ; then \
rm -r $( DESTDIR) $( docdir) ; \
fi
for i in fish.1 @XSEL_MAN@ mimedb.1 fishd.1 set_color.1 count.1; do \
rm -f $( DESTDIR) $( mandir) /man1/$$ i*; \
2005-09-20 13:26:39 +00:00
done ;
2006-01-23 20:40:14 +00:00
.PHONY : uninstall
2005-09-20 13:26:39 +00:00
2006-02-23 15:35:56 +00:00
# Uninstall 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.
uninstall-legacy : uninstall
rm -f $( DESTDIR) $( sysconfdir) /fish.d/fish_interactive.fish
rm -f $( DESTDIR) $( sysconfdir) /fish.d/fish_complete.fish
rm -f $( DESTDIR) $( sysconfdir) /fish.d/fish_function.fish
if test -d $( DESTDIR) $( sysconfdir) /fish.d/completions; then \
for i in $( COMPLETIONS_DIR_FILES) ; do \
basename = ` basename $$ i` ; \
if test -f $( DESTDIR) $( sysconfdir) /fish.d/completions/$$ basename; then \
rm $( DESTDIR) $( sysconfdir) /fish.d/completions/$$ basename; \
fi ; \
done ; \
fi ;
rmdir $( DESTDIR) $( sysconfdir) /fish.d/completions; true
rmdir $( DESTDIR) $( sysconfdir) /fish.d; true
2006-03-05 21:26:30 +00:00
@echo The previous fish installation has been removed.
2006-02-23 15:35:56 +00:00
2006-01-04 13:52:30 +00:00
install-translations : $( TRANSLATIONS )
2006-01-04 12:51:02 +00:00
if test $( HAVE_GETTEXT) = 1; then \
for i in $( TRANSLATIONS) ; do \
2006-01-21 16:01:17 +00:00
$( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /locale/` basename $$ i .gmo` /LC_MESSAGES; \
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /locale/` basename $$ i .gmo` /LC_MESSAGES/fish.mo; \
echo $( DESTDIR) $( datadir) /locale/` basename $$ i .gmo` /LC_MESSAGES/fish.mo; \
2006-01-04 12:51:02 +00:00
done ; \
2006-02-23 15:35:56 +00:00
fi ;
2006-01-23 20:40:14 +00:00
.PHONY : install -translations
2006-01-04 12:51:02 +00:00
2006-01-04 13:52:30 +00:00
uninstall-translations :
2006-01-04 12:51:02 +00:00
if test $( HAVE_GETTEXT) = 1; then \
for i in $( TRANSLATIONS_SRC) ; do \
2006-02-23 15:35:56 +00:00
rm -f $( DESTDIR) $( datadir) /locale/*/LC_MESSAGES/fish.mo; \
2006-01-04 12:51:02 +00:00
done ; \
fi
2006-01-23 20:40:14 +00:00
.PHONY : uninstall -translations
#
# The build rules for all the commands
#
2006-01-04 12:51:02 +00:00
2005-09-20 13:26:39 +00:00
fish : $( FISH_OBJS )
$( CC) $( FISH_OBJS) $( LDFLAGS) -o $@
fish_pager : $( FISH_PAGER_OBJS )
$( CC) $( FISH_PAGER_OBJS) $( LDFLAGS) -o $@
2006-01-23 16:25:34 +00:00
fishd : $( FISHD_OBJS )
2005-09-20 13:26:39 +00:00
$( CC) $( FISHD_OBJS) $( LDFLAGS) -o $@
fish_tests : $( FISH_TESTS_OBJS )
$( CC) $( FISH_TESTS_OBJS) $( LDFLAGS) -o $@
2006-03-01 01:28:18 +00:00
mimedb : $( MIME_OBJS ) doc_src /mimedb .c
$( CC) ${ MIME_OBJS } doc_src/mimedb.c $( LDFLAGS) -o $@
2005-09-20 13:26:39 +00:00
set_color : set_color .o doc_src /set_color .c
$( CC) set_color.o doc_src/set_color.c $( LDFLAGS) -o $@
# Test program for the tokenizer library
tokenizer_test : tokenizer .c tokenizer .h util .o wutil .o common .o
$( CC) ${ CFLAGS } tokenizer.c util.o wutil.o common.o -D TOKENIZER_TEST $( LDFLAGS) -o $@
2006-01-23 20:40:14 +00:00
# Neat little program to show output from terminal
2005-09-22 20:16:52 +00:00
key_reader : key_reader .o input_common .o common .o env_universal .o env_universal_common .o util .o wutil .o
$( CC) key_reader.o input_common.o common.o env_universal.o env_universal_common.o util.o wutil.o $( LDFLAGS) -o $@
2006-01-23 20:40:14 +00:00
#
# Update dependencies
#
2005-09-20 13:26:39 +00:00
depend :
makedepend -fMakefile.in -Y *.c
2006-01-23 20:40:14 +00:00
.PHONY : depend
2005-09-20 13:26:39 +00:00
# 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
2006-02-23 15:35:56 +00:00
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
2005-09-20 13:26:39 +00:00
rm -rf fish-@PACKAGE_VERSION@
$( INSTALL) -d fish-@PACKAGE_VERSION@
$( INSTALL) -d fish-@PACKAGE_VERSION@/doc_src
2006-02-17 10:13:39 +00:00
$( INSTALL) -d fish-@PACKAGE_VERSION@/etc
$( INSTALL) -d fish-@PACKAGE_VERSION@/share
$( INSTALL) -d fish-@PACKAGE_VERSION@/share/completions
$( INSTALL) -d fish-@PACKAGE_VERSION@/share/functions
2005-09-20 13:26:39 +00:00
$( INSTALL) -d fish-@PACKAGE_VERSION@/tests
2006-01-04 13:52:30 +00:00
$( INSTALL) -d fish-@PACKAGE_VERSION@/po
2005-09-20 13:26:39 +00:00
cp -f $( DOC_SRC_DIR_FILES) fish-@PACKAGE_VERSION@/doc_src
cp -f $( MAIN_DIR_FILES) fish-@PACKAGE_VERSION@/
2006-02-17 10:13:39 +00:00
cp -f $( ETC_DIR_FILES) fish-@PACKAGE_VERSION@/etc/
cp -f $( SHARE_DIR_FILES) fish-@PACKAGE_VERSION@/share/
cp -f $( COMPLETIONS_DIR_FILES) fish-@PACKAGE_VERSION@/share/completions/
cp -f $( FUNCTIONS_DIR_FILES) fish-@PACKAGE_VERSION@/share/functions/
2005-09-20 13:26:39 +00:00
cp -f $( TESTS_DIR_FILES) fish-@PACKAGE_VERSION@/tests/
2006-01-04 13:52:30 +00:00
cp -f $( TRANSLATIONS_SRC) fish-@PACKAGE_VERSION@/po/
2005-09-20 13:26:39 +00:00
tar -c fish-@PACKAGE_VERSION@ >fish-@PACKAGE_VERSION@.tar
rm -rf fish-@PACKAGE_VERSION@
fish-@PACKAGE_VERSION@.tar.gz : fish -@PACKAGE_VERSION @.tar
gzip -f --best -c fish-@PACKAGE_VERSION@.tar >fish-@PACKAGE_VERSION@.tar.gz
fish-@PACKAGE_VERSION@.tar.bz2 : fish -@PACKAGE_VERSION @.tar
bzip2 -f --best -k fish-@PACKAGE_VERSION@.tar
# Create .rpm file for the current systems architecture and an
# .src.rpm file.
rpm : fish -@PACKAGE_VERSION @.tar .bz 2
cp fish.spec /usr/src/redhat/SPECS/
cp fish-@PACKAGE_VERSION@.tar.bz2 /usr/src/redhat/SOURCES/
rpmbuild -ba --clean /usr/src/redhat/SPECS/fish.spec
mv /usr/src/redhat/RPMS/*/fish*@PACKAGE_VERSION@*.rpm .
mv /usr/src/redhat/SRPMS/fish*@PACKAGE_VERSION@*.src.rpm .
2006-01-23 20:40:14 +00:00
.PHONY : rpm
#
# Cleanup targets
#
2005-09-20 13:26:39 +00:00
2005-11-03 17:03:48 +00:00
distclean : clean
rm -f fish.spec doc_src/fish.1 doc_src/Doxyfile
2006-03-02 01:26:54 +00:00
rm -f etc/fish etc/fish_interactive.fish seq
2005-11-03 17:03:48 +00:00
rm -f config.status config.log config.h Makefile
2006-01-23 20:40:14 +00:00
.PHONY : distclean
2005-11-03 17:03:48 +00:00
2005-09-20 13:26:39 +00:00
clean :
rm -f *.o doc.h doc_src/*.doxygen doc_src/*.c builtin_help.c
2005-11-03 17:03:48 +00:00
rm -f tests/tmp.err tests/tmp.out tests/tmp.status tests/foo.txt
2006-01-10 16:36:03 +00:00
rm -f tokenizer_test fish key_reader set_color gen_hdr2 mimedb
2006-03-05 21:27:06 +00:00
rm -f fishd fish_pager count fish_tests
2005-09-20 13:26:39 +00:00
rm -f fish-@PACKAGE_VERSION@.tar
rm -f fish-@PACKAGE_VERSION@.tar.gz
rm -f fish-@PACKAGE_VERSION@.tar.bz2
rm -rf doc;
rm -rf user_doc;
rm -rf doc_src/builtin_doc
rm -rf fish-@PACKAGE_VERSION@
rm -rf xsel-0.9.6/
2006-01-10 17:49:07 +00:00
rm -f $( TRANSLATIONS)
2006-01-23 20:40:14 +00:00
.PHONY : clean
2005-09-20 13:26:39 +00:00
# DO NOT DELETE THIS LINE -- make depend depends on it.
builtin.o : config .h util .h wutil .h builtin .h function .h complete .h proc .h
2006-02-18 02:34:32 +00:00
builtin.o : io .h parser .h event .h reader .h env .h common .h wgetopt .h sanity .h
2005-09-20 13:26:39 +00:00
builtin.o : tokenizer .h builtin_help .h wildcard .h input_common .h input .h
2006-02-18 02:34:32 +00:00
builtin.o : intern .h signal .h translate .h halloc .h halloc_util .h parse_util .h
builtin.o : expand .h
builtin_commandline.o : signal .h config .h util .h wutil .h builtin .h common .h
builtin_commandline.o : wgetopt .h reader .h proc .h io .h parser .h event .h
builtin_commandline.o : tokenizer .h input_common .h input .h translate .h
builtin_commandline.o : parse_util .h
builtin_complete.o : signal .h config .h util .h wutil .h builtin .h common .h
builtin_complete.o : complete .h wgetopt .h parser .h proc .h io .h event .h
builtin_complete.o : reader .h translate .h
2005-09-20 13:26:39 +00:00
builtin_help.o : config .h util .h common .h builtin_help .h
2006-02-18 02:34:32 +00:00
builtin_set.o : signal .h config .h util .h wutil .h builtin .h env .h expand .h
builtin_set.o : common .h wgetopt .h proc .h io .h parser .h event .h translate .h
2006-01-04 13:52:30 +00:00
builtin_ulimit.o : config .h util .h builtin .h common .h wgetopt .h translate .h
2006-02-18 02:34:32 +00:00
common.o : config .h util .h wutil .h common .h expand .h proc .h io .h wildcard .h
common.o : parser .h event .h
2006-01-04 12:51:02 +00:00
complete.o : signal .h config .h util .h tokenizer .h wildcard .h proc .h io .h
2006-02-18 02:34:32 +00:00
complete.o : parser .h event .h function .h complete .h builtin .h env .h exec .h
complete.o : expand .h common .h reader .h history .h intern .h translate .h
complete.o : parse_util .h halloc_util .h wutil .h
2006-01-04 12:51:02 +00:00
env.o : config .h signal .h util .h wutil .h proc .h io .h common .h env .h sanity .h
2006-02-18 02:34:32 +00:00
env.o : expand .h history .h reader .h parser .h event .h env_universal .h
env.o : env_universal_common .h input_common .h translate .h complete .h
2006-01-04 12:51:02 +00:00
env_universal.o : config .h signal .h util .h common .h wutil .h
env_universal.o : env_universal_common .h env_universal .h
2006-02-18 02:34:32 +00:00
env_universal_common.o : config .h signal .h util .h common .h wutil .h
2006-01-04 12:51:02 +00:00
env_universal_common.o : env_universal_common .h
2006-02-18 02:34:32 +00:00
event.o : signal .h config .h util .h wutil .h function .h proc .h io .h parser .h
event.o : event .h common .h translate .h halloc_util .h
2006-01-04 12:51:02 +00:00
exec.o : signal .h config .h util .h common .h wutil .h proc .h io .h exec .h parser .h
2006-02-18 02:34:32 +00:00
exec.o : event .h builtin .h function .h env .h wildcard .h sanity .h expand .h
exec.o : env_universal .h env_universal_common .h translate .h halloc .h
exec.o : halloc_util .h parse_util .h
2006-01-04 12:51:02 +00:00
expand.o : signal .h config .h util .h common .h wutil .h env .h proc .h io .h
2006-02-18 02:34:32 +00:00
expand.o : parser .h event .h expand .h wildcard .h exec .h tokenizer .h complete .h
expand.o : translate .h parse_util .h halloc_util .h
fishd.o : config .h signal .h util .h common .h wutil .h env_universal_common .h
2006-01-04 12:51:02 +00:00
fish_pager.o : config .h signal .h util .h wutil .h common .h complete .h output .h
2006-02-18 02:34:32 +00:00
fish_pager.o : input_common .h env_universal .h env_universal_common .h halloc .h
fish_pager.o : halloc_util .h
2006-01-04 12:51:02 +00:00
fish_tests.o : config .h signal .h util .h common .h proc .h io .h reader .h
fish_tests.o : builtin .h function .h complete .h wutil .h env .h expand .h parser .h
2006-02-18 02:34:32 +00:00
fish_tests.o : event .h tokenizer .h output .h exec .h halloc_util .h
function.o : signal .h config .h wutil .h util .h function .h proc .h io .h parser .h
function.o : event .h common .h intern .h reader .h parse_util .h env .h expand .h
halloc.o : config .h util .h common .h halloc .h
halloc_util.o : config .h util .h common .h halloc .h
2006-01-04 12:51:02 +00:00
highlight.o : signal .h config .h util .h wutil .h highlight .h tokenizer .h proc .h
2006-02-18 02:34:32 +00:00
highlight.o : io .h parser .h event .h parse_util .h builtin .h function .h env .h
highlight.o : expand .h sanity .h common .h complete .h output .h
2005-09-20 13:26:39 +00:00
history.o : config .h util .h wutil .h history .h common .h reader .h env .h sanity .h
2006-02-18 02:34:32 +00:00
history.o : signal .h
2006-01-04 12:51:02 +00:00
input.o : config .h signal .h util .h wutil .h reader .h proc .h io .h common .h
2006-02-18 02:34:32 +00:00
input.o : sanity .h input_common .h input .h parser .h event .h env .h expand .h
input.o : translate .h output .h
2005-09-20 13:26:39 +00:00
input_common.o : config .h util .h common .h wutil .h input_common .h
input_common.o : env_universal .h env_universal_common .h
2006-02-18 02:34:32 +00:00
intern.o : config .h util .h wutil .h common .h intern .h
2006-01-04 13:52:30 +00:00
io.o : config .h util .h wutil .h exec .h proc .h io .h common .h translate .h
2006-02-18 02:34:32 +00:00
io.o : halloc .h
2006-01-04 12:51:02 +00:00
key_reader.o : input_common .h
kill.o : signal .h config .h util .h wutil .h kill .h proc .h io .h sanity .h common .h
2006-02-18 02:34:32 +00:00
kill.o : env .h exec .h parser .h event .h
2006-01-04 12:51:02 +00:00
main.o : config .h signal .h util .h common .h reader .h builtin .h function .h
2006-02-18 02:34:32 +00:00
main.o : complete .h wutil .h env .h sanity .h proc .h io .h parser .h event .h
main.o : expand .h intern .h exec .h output .h translate .h halloc_util .h
2005-09-20 13:26:39 +00:00
mimedb.o : config .h xdgmime .h util .h
2006-01-04 12:51:02 +00:00
output.o : config .h signal .h util .h wutil .h expand .h common .h output .h
2006-02-18 02:34:32 +00:00
output.o : halloc_util .h highlight .h
2006-01-04 12:51:02 +00:00
parser.o : signal .h config .h util .h common .h wutil .h proc .h io .h parser .h
2006-02-18 02:34:32 +00:00
parser.o : event .h tokenizer .h exec .h wildcard .h function .h builtin .h
parser.o : builtin_help .h env .h expand .h reader .h sanity .h env_universal .h
parser.o : env_universal_common .h translate .h intern .h parse_util .h halloc .h
parser.o : halloc_util .h
parse_util.o : config .h util .h wutil .h common .h tokenizer .h parse_util .h
parse_util.o : expand .h intern .h exec .h proc .h io .h env .h halloc_util .h
2006-01-04 12:51:02 +00:00
proc.o : config .h signal .h util .h wutil .h proc .h io .h common .h reader .h
2006-02-18 02:34:32 +00:00
proc.o : sanity .h env .h parser .h event .h translate .h halloc .h halloc_util .h
proc.o : output .h
2006-01-04 12:51:02 +00:00
reader.o : config .h signal .h util .h wutil .h highlight .h reader .h proc .h io .h
2006-02-18 02:34:32 +00:00
reader.o : parser .h event .h complete .h history .h common .h sanity .h env .h
reader.o : exec .h expand .h tokenizer .h kill .h input_common .h input .h
reader.o : function .h output .h translate .h parse_util .h
refcount.o : config .h util .h wutil .h common .h refcount .h
2006-01-04 12:51:02 +00:00
sanity.o : signal .h config .h util .h common .h sanity .h proc .h io .h history .h
2006-02-18 02:34:32 +00:00
sanity.o : reader .h kill .h wutil .h translate .h
2005-09-20 13:26:39 +00:00
set_color.o : config .h
2006-01-04 12:51:02 +00:00
signal.o : config .h signal .h common .h util .h wutil .h event .h reader .h proc .h
2006-01-04 13:52:30 +00:00
signal.o : io .h translate .h
2005-09-20 13:26:39 +00:00
tokenizer.o : config .h util .h wutil .h tokenizer .h common .h wildcard .h
2006-01-04 13:52:30 +00:00
tokenizer.o : translate .h
2006-02-18 02:34:32 +00:00
translate.o : config .h common .h util .h halloc_util .h
2005-09-20 13:26:39 +00:00
util.o : config .h util .h common .h wutil .h
2006-02-18 02:34:32 +00:00
wgetopt.o : config .h wgetopt .h wutil .h translate .h
2005-09-20 13:26:39 +00:00
wildcard.o : config .h util .h wutil .h complete .h common .h wildcard .h reader .h
2006-01-04 13:52:30 +00:00
wildcard.o : expand .h translate .h
2005-09-20 13:26:39 +00:00
wutil.o : config .h util .h common .h wutil .h
xdgmimealias.o : xdgmimealias .h xdgmime .h xdgmimeint .h
xdgmime.o : xdgmime .h xdgmimeint .h xdgmimeglob .h xdgmimemagic .h xdgmimealias .h
xdgmime.o : xdgmimeparent .h
xdgmimeglob.o : xdgmimeglob .h xdgmime .h xdgmimeint .h
xdgmimeint.o : xdgmimeint .h xdgmime .h
xdgmimemagic.o : xdgmimemagic .h xdgmime .h xdgmimeint .h
xdgmimeparent.o : xdgmimeparent .h xdgmime .h xdgmimeint .h