mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 05:13:10 +00:00
1b3427acd9
This about doubles the size of fish. These things are huge. We may not want to ship it like this.
1033 lines
30 KiB
Makefile
1033 lines
30 KiB
Makefile
|
|
# 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 version 2 as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
#
|
|
# @configure_input@
|
|
#
|
|
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
# Used by docdir
|
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
|
|
#
|
|
# Programs
|
|
#
|
|
|
|
CXX := @CXX@
|
|
INSTALL:=@INSTALL@
|
|
|
|
|
|
#
|
|
# Installation directories
|
|
#
|
|
|
|
prefix = @prefix@
|
|
exec_prefix = @exec_prefix@
|
|
datarootdir = @datarootdir@
|
|
datadir = @datadir@
|
|
bindir = @bindir@
|
|
mandir = @mandir@
|
|
sysconfdir = @sysconfdir@
|
|
docdir = @docdir@
|
|
localedir = @localedir@
|
|
prefix = @prefix@
|
|
optbindirs = @optbindirs@
|
|
|
|
#
|
|
# Various flags
|
|
#
|
|
|
|
MACROS = -DLOCALEDIR=\"$(localedir)\" -DPREFIX=L\"$(prefix)\" -DDATADIR=L\"$(datadir)\" -DSYSCONFDIR=L\"$(sysconfdir)\"
|
|
CXXFLAGS = @CXXFLAGS@ $(MACROS) $(EXTRA_CXXFLAGS)
|
|
LDFLAGS = @LIBS@ @LDFLAGS@
|
|
LDFLAGS_FISH = ${LDFLAGS} @LIBS_FISH@ @LDFLAGS_FISH@
|
|
LDFLAGS_FISH_INDENT = ${LDFLAGS} @LIBS_FISH_INDENT@
|
|
LDFLAGS_FISH_PAGER = ${LDFLAGS} @LIBS_FISH_PAGER@
|
|
LDFLAGS_FISHD = ${LDFLAGS} @LIBS_FISHD@
|
|
LDFLAGS_MIMEDB = ${LDFLAGS} @LIBS_MIMEDB@
|
|
LDFLAGS_SET_COLOR = ${LDFLAGS} @LIBS_SET_COLOR@
|
|
|
|
#
|
|
# Set to 1 if we have gettext
|
|
#
|
|
|
|
HAVE_GETTEXT=@HAVE_GETTEXT@
|
|
|
|
|
|
#
|
|
#Additional .cpp files used by common.o. These also have a corresponding
|
|
#.h file.
|
|
#
|
|
|
|
COMMON_FILES := util.cpp halloc.cpp halloc_util.cpp fallback.cpp
|
|
|
|
|
|
#
|
|
# All objects that the system needs to build fish, except fish.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 \
|
|
parser_keywords.o iothread.o builtin_scripts.o
|
|
|
|
FISH_INDENT_OBJS := fish_indent.o print_help.o common.o \
|
|
parser_keywords.o wutil.o tokenizer.o
|
|
|
|
#
|
|
# Additional files used by builtin.o
|
|
#
|
|
|
|
BUILTIN_FILES := builtin_set.cpp builtin_commandline.cpp \
|
|
builtin_ulimit.cpp builtin_complete.cpp builtin_jobs.cpp
|
|
|
|
|
|
#
|
|
# All objects that the system needs to build fish_pager
|
|
#
|
|
|
|
FISH_PAGER_OBJS := fish_pager.o output.o wutil.o \
|
|
input_common.o env_universal.o env_universal_common.o common.o \
|
|
print_help.o iothread.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 print_help.o \
|
|
common.o
|
|
|
|
|
|
#
|
|
# All objects needed to build mimedb
|
|
#
|
|
|
|
MIME_OBJS := mimedb.o print_help.o xdgmimealias.o xdgmime.o \
|
|
xdgmimeglob.o xdgmimeint.o xdgmimemagic.o xdgmimeparent.o wutil.o \
|
|
common.o
|
|
|
|
|
|
#
|
|
# Files containing user documentation
|
|
#
|
|
|
|
#
|
|
# These files are the source files, they contain a few @FOO@-style substitutions
|
|
#
|
|
|
|
HDR_FILES_SRC := doc_src/index.hdr.in doc_src/commands.hdr.in doc_src/design.hdr doc_src/license.hdr doc_src/faq.hdr
|
|
|
|
|
|
#
|
|
# These are the generated result files
|
|
#
|
|
|
|
HDR_FILES := $(subst .hdr.in,.hdr,$(HDR_FILES_SRC))
|
|
|
|
#
|
|
# Internalized scripts
|
|
#
|
|
|
|
GENERATED_INTERN_SCRIPT_FILES := builtin_scripts.h builtin_scripts.cpp
|
|
|
|
# Use a pattern rule so that Make knows to only issue one invocation
|
|
# per http://www.gnu.org/software/make/manual/make.html#Pattern-Intro
|
|
builtin%scripts.h builtin%scripts.cpp: internalize_scripts.py
|
|
./internalize_scripts.py share/functions/*.fish share/completions/*.fish
|
|
|
|
|
|
#
|
|
# Files containing documentation for external commands.
|
|
#
|
|
|
|
HELP_SRC := $(wildcard doc_src/*.txt)
|
|
|
|
|
|
#
|
|
# 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 := $(HDR_FILES_SRC) $(HELP_SRC)
|
|
|
|
|
|
#
|
|
# Files in ./
|
|
#
|
|
|
|
MAIN_DIR_FILES_UNSORTED := Doxyfile Doxyfile.user Doxyfile.help.in \
|
|
Makefile.in configure configure.ac config.h.in install-sh \
|
|
set_color.cpp key_reader.cpp $(MIME_OBJS:.o=.h) \
|
|
$(MIME_OBJS:.o=.cpp) $(FISH_OBJS:.o=.h) $(BUILTIN_FILES) \
|
|
$(COMMON_FILES) $(COMMON_FILES:.cpp=.h) $(FISH_OBJS:.o=.cpp) \
|
|
fish.spec.in INSTALL README user_doc.head.html xsel-0.9.6.tar \
|
|
ChangeLog config.sub config.guess fish_tests.cpp fish.cpp fish_pager.cpp \
|
|
fishd.cpp seq.in make_vcs_completions.fish $(FISH_INDENT_OBJS:.o=.cpp)
|
|
|
|
#
|
|
# The sorting is not meaningful in itself, but it has the side effect
|
|
# of removing duplicates, which means there will be fewer warnings
|
|
# during building.
|
|
#
|
|
|
|
MAIN_DIR_FILES := $(sort $(MAIN_DIR_FILES_UNSORTED))
|
|
|
|
|
|
#
|
|
# Files in ./etc/
|
|
#
|
|
|
|
ETC_DIR_FILES :=etc/config.fish.in
|
|
|
|
|
|
#
|
|
# Files in ./share/
|
|
#
|
|
|
|
SHARE_DIR_FILES :=share/config.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 install
|
|
#
|
|
|
|
SIMPLE_PROGRAMS := fish set_color mimedb fish_pager fishd fish_indent
|
|
PROGRAMS := $(SIMPLE_PROGRAMS) @XSEL_BIN@ @SEQ_FALLBACK@
|
|
|
|
|
|
#
|
|
# Manual pages to install
|
|
#
|
|
|
|
MANUALS := $(addsuffix .1, $(addprefix share/man/, \
|
|
$(SIMPLE_PROGRAMS))) @XSEL_MAN_PATH@
|
|
|
|
|
|
#
|
|
# All translation message catalogs
|
|
#
|
|
|
|
TRANSLATIONS_SRC := $(wildcard po/*.po)
|
|
TRANSLATIONS := $(TRANSLATIONS_SRC:.po=.gmo)
|
|
|
|
|
|
#
|
|
# Extra util
|
|
#
|
|
|
|
XSEL := @XSEL@
|
|
XSEL_BIN := @XSEL_BIN@
|
|
|
|
#
|
|
# Make everything needed for installing fish
|
|
#
|
|
|
|
all: $(PROGRAMS) user_doc share/man etc/config.fish share/config.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
|
|
|
|
|
|
#
|
|
# Build fish with some debug flags specified. This is GCC specific,
|
|
# and should only be used when debuging fish.
|
|
#
|
|
|
|
debug:
|
|
$(MAKE) fish EXTRA_CXXFLAGS="-O0 -Wno-unused -g"
|
|
.PHONY: debug
|
|
|
|
prof:
|
|
$(MAKE) all EXTRA_CXXFLAGS="-pg" LDFLAGS="-pg"
|
|
.PHONY: prof
|
|
|
|
#
|
|
# User documentation, describing the features of the fish shell.
|
|
#
|
|
|
|
# Depend on the sources (*.hdr.in) and manually make the
|
|
# intermediate *.hdr and doc.h files if needed
|
|
|
|
user_doc: $(HDR_FILES_SRC) Doxyfile.user user_doc.head.html $(HELP_SRC)
|
|
$(MAKE) doc.h $(HDR_FILES)
|
|
doxygen Doxyfile.user
|
|
touch user_doc
|
|
|
|
|
|
#
|
|
# Source code documentation. Also includes user documentation.
|
|
#
|
|
|
|
doc: *.h *.cpp doc.h Doxyfile
|
|
doxygen;
|
|
|
|
|
|
#
|
|
# PDF version of the source code documentation.
|
|
#
|
|
|
|
doc/refman.pdf: doc
|
|
cd doc/latex;
|
|
make;
|
|
mv refman.pdf ..;
|
|
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_BIN):
|
|
$(MAKE) -C $(XSEL) || echo "Failed to build xsel - either add the required dependencies or use './configure --without-xsel' to disable it."
|
|
|
|
|
|
#
|
|
# commands.hdr collects documentation on all commands, functions and
|
|
# builtins
|
|
#
|
|
|
|
doc_src/commands.hdr:$(HELP_SRC) doc_src/commands.hdr.in
|
|
-rm command_list.tmp $@
|
|
for i in `printf "%s\n" $(HELP_SRC)|sort`; do \
|
|
echo "<hr>" >>command_list.tmp; \
|
|
cat $$i >>command_list.tmp; \
|
|
echo >>command_list.tmp; \
|
|
echo >>command_list.tmp; \
|
|
echo "Back to <a href='index.html#toc-commands'>index</a>". >>command_list.tmp; \
|
|
done
|
|
mv command_list.tmp command_list.txt
|
|
cat $@.in | awk '{if ($$0 ~ /@command_list@/){ system("cat command_list.txt");} else{ print $$0;}}' >$@
|
|
|
|
|
|
toc.txt: $(subst index.hdr,index.hdr.in,$(HDR_FILES))
|
|
-rm toc.tmp $@
|
|
for i in $(subst index.hdr,index.hdr.in,$(HDR_FILES)); do\
|
|
NAME=`basename $$i .hdr`; \
|
|
NAME=`basename $$NAME .hdr.in`; \
|
|
sed <$$i >>toc.tmp -n \
|
|
-e 's,.*\\page *\([^ ]*\) *\(.*\)$$,- <a href="'$$NAME'.html" name="toc-'$$NAME'">\2</a>,p' \
|
|
-e 's,.*\\section *\([^ ]*\) *\(.*\)$$, - <a href="'$$NAME'.html#\1" name="toc-'$$NAME'">\2</a>,p'; \
|
|
done
|
|
mv toc.tmp $@
|
|
|
|
doc_src/index.hdr: toc.txt doc_src/index.hdr.in
|
|
cat $@.in | awk '{if ($$0 ~ /@toc@/){ system("cat toc.txt");} else{ print $$0;}}' >$@
|
|
|
|
|
|
#
|
|
# 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: $(HDR_FILES)
|
|
cat $(HDR_FILES) >$@
|
|
|
|
#
|
|
# 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 "*/" >>$@
|
|
|
|
%: %.in
|
|
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 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 \
|
|
msgmerge -U --backup=existing $*.po messages.pot;\
|
|
else \
|
|
cp messages.pot $*.po;\
|
|
fi; \
|
|
fi
|
|
|
|
|
|
#
|
|
# Create a template translation object
|
|
#
|
|
|
|
messages.pot: *.cpp *.h etc/*.in share/*.in share/completions/*.fish share/functions/*.fish seq
|
|
if test $(HAVE_GETTEXT) = 1;then \
|
|
xgettext -k_ -kN_ *.cpp *.h -o messages.pot; \
|
|
if xgettext -j -k_ -kN_ -k--description -LShell etc/*.in share/*.in share/completions/*.fish share/functions/*.fish seq -o messages.pot; then true; else \
|
|
echo "Your xgettext version is too old to build the messages.pot file"\
|
|
rm messages.pot\
|
|
false;\
|
|
fi; \
|
|
fi
|
|
|
|
builtin.o: $(BUILTIN_FILES)
|
|
|
|
common.o: $(COMMON_FILES)
|
|
|
|
|
|
#
|
|
# Generate the internal help functions by making doxygen create
|
|
# man-pages. The convertion path looks like this:
|
|
#
|
|
# .txt file
|
|
# ||
|
|
# (make)
|
|
# ||
|
|
# \/
|
|
# .doxygen file
|
|
# ||
|
|
# (doxygen)
|
|
# ||
|
|
# \/
|
|
# roff file
|
|
# ||
|
|
# (__fish_print_help)
|
|
# ||
|
|
# \/
|
|
# formated text
|
|
# with escape
|
|
# sequences
|
|
#
|
|
#
|
|
# There ought to be something simpler.
|
|
#
|
|
|
|
share/man: $(HELP_SRC)
|
|
-rm doc_src/*.doxygen # Remove temp files from previous run
|
|
-rm -r help_doc
|
|
-mkdir share/man
|
|
touch share/man
|
|
for i in $(HELP_SRC); do \
|
|
FILE=doc_src/`basename $$i .txt`.doxygen; \
|
|
echo "/** \page" `basename $$i .txt` >$$FILE; \
|
|
cat $$i >>$$FILE; \
|
|
echo "*/" >>$$FILE; \
|
|
done
|
|
doxygen Doxyfile.help
|
|
for i in $(HELP_SRC); do \
|
|
CMD_NAME=`basename $$i .txt`; \
|
|
sed -e "s/\(.\)\\.SH/\1/" -e "s/$$CMD_NAME *\\\\- *\"\(.*\)\"/\1/" <help_doc/man/man1/$$CMD_NAME.1 >share/man/$$CMD_NAME.1; \
|
|
done
|
|
rm doc_src/*.doxygen # Clean up intermediate files in doc_src/
|
|
rm -r help_doc # Clean up intermediate help_doc tree
|
|
|
|
#
|
|
# 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 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;
|
|
if test -f $(DESTDIR)$(sysconfdir)/fish; then \
|
|
echo;\
|
|
echo ERROR;\
|
|
echo;\
|
|
echo An older fish installation using an incompatible filesystem hierarchy was detected;\
|
|
echo You must remove the file $(DESTDIR)$(sysconfdir)/fish before proceeding;\
|
|
echo type \'$(MAKE) uninstall-legacy\' to uninstall this file,;\
|
|
echo or remove it manually using \'rm $(DESTDIR)$(sysconfdir)/fish\'.;\
|
|
echo;\
|
|
false;\
|
|
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 $@; then true; else chmod 755 $@; fi
|
|
.PHONY: install-sh
|
|
|
|
|
|
#
|
|
# 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. This may fail.
|
|
#
|
|
|
|
install-force: all install-translations
|
|
$(INSTALL) -m 755 -d $(DESTDIR)$(bindir)
|
|
for i in $(PROGRAMS); do\
|
|
$(INSTALL) -m 755 $$i $(DESTDIR)$(bindir) ; \
|
|
done;
|
|
$(INSTALL) -m 755 -d $(DESTDIR)$(sysconfdir)/fish
|
|
$(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 755 -d $(DESTDIR)$(datadir)/fish/man
|
|
$(INSTALL) -m 644 etc/config.fish $(DESTDIR)$(sysconfdir)/fish/
|
|
$(INSTALL) -m 644 share/config.fish $(DESTDIR)$(datadir)/fish/
|
|
for i in $(COMPLETIONS_DIR_FILES); do \
|
|
$(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/fish/completions/; \
|
|
done;
|
|
for i in $(FUNCTIONS_DIR_FILES); do \
|
|
$(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/fish/functions/; \
|
|
done;
|
|
for i in share/man/*.1; do \
|
|
$(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/fish/man/; \
|
|
done;
|
|
$(INSTALL) -m 755 -d $(DESTDIR)$(docdir)
|
|
for i in user_doc/html/* ChangeLog; do \
|
|
if test -f $$i; then \
|
|
$(INSTALL) -m 644 $$i $(DESTDIR)$(docdir); \
|
|
fi; \
|
|
done;
|
|
$(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1
|
|
for i in $(MANUALS); do \
|
|
$(INSTALL) -m 644 $$i $(DESTDIR)$(mandir)/man1/; \
|
|
done;
|
|
@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!
|
|
.PHONY: install-force
|
|
|
|
|
|
#
|
|
# Uninstall this fish version
|
|
#
|
|
|
|
uninstall: uninstall-translations
|
|
-for i in $(PROGRAMS); do \
|
|
rm -f $(DESTDIR)$(bindir)/$$i; \
|
|
done;
|
|
-rm -f $(DESTDIR)$(bindir)/xsel
|
|
-rm -f $(DESTDIR)$(sysconfdir)/fish/config.fish
|
|
-rmdir $(DESTDIR)$(sysconfdir)/fish
|
|
-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 $(MANUALS); do \
|
|
rm -f $(DESTDIR)$(mandir)/man1/`basename $$i`*; \
|
|
done;
|
|
.PHONY: 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. 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
|
|
-rm -f $(DESTDIR)$(sysconfdir)/fish.d/fish_complete.fish
|
|
-rm -f $(DESTDIR)$(sysconfdir)/fish.d/fish_function.fish
|
|
-rm -f $(DESTDIR)$(sysconfdir)/fish/fish_inputrc
|
|
-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
|
|
-rmdir $(DESTDIR)$(sysconfdir)/fish.d
|
|
-rm $(DESTDIR)$(sysconfdir)/fish
|
|
@echo The previous fish installation has been removed.
|
|
.PHONY: uninstall-legacy
|
|
|
|
install-translations: $(TRANSLATIONS)
|
|
if test $(HAVE_GETTEXT) = 1; then \
|
|
for i in $(TRANSLATIONS); do \
|
|
$(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;\
|
|
done; \
|
|
fi;
|
|
.PHONY: install-translations
|
|
|
|
uninstall-translations:
|
|
if test $(HAVE_GETTEXT) = 1; then \
|
|
for i in $(TRANSLATIONS_SRC); do \
|
|
rm -f $(DESTDIR)$(datadir)/locale/*/LC_MESSAGES/fish.mo; \
|
|
done; \
|
|
fi
|
|
.PHONY: uninstall-translations
|
|
|
|
|
|
#
|
|
# The build rules for all the commands
|
|
#
|
|
|
|
#
|
|
# Build the fish program.
|
|
#
|
|
|
|
fish: $(FISH_OBJS) fish.o
|
|
$(CXX) $(FISH_OBJS) fish.o $(LDFLAGS_FISH) -o $@
|
|
|
|
|
|
#
|
|
# Build the fish_pager program.
|
|
#
|
|
|
|
fish_pager: $(FISH_PAGER_OBJS)
|
|
$(CXX) $(FISH_PAGER_OBJS) $(LDFLAGS_FISH_PAGER) -o $@
|
|
|
|
|
|
#
|
|
# Build the fishd program.
|
|
#
|
|
|
|
fishd: $(FISHD_OBJS)
|
|
$(CXX) $(FISHD_OBJS) $(LDFLAGS_FISHD) -o $@
|
|
|
|
|
|
#
|
|
# Build the fish_tests program.
|
|
#
|
|
|
|
fish_tests: $(FISH_TESTS_OBJS)
|
|
$(CXX) $(FISH_TESTS_OBJS) $(LDFLAGS_FISH) -o $@
|
|
|
|
|
|
#
|
|
# Build the mimedb program.
|
|
#
|
|
# mimedb does not need any libraries, so we don't use LDFLAGS here.
|
|
#
|
|
|
|
mimedb: $(MIME_OBJS)
|
|
$(CXX) $(MIME_OBJS) $(LDFLAGS_MIMEDB) -o $@
|
|
|
|
|
|
#
|
|
# Build the set_color program
|
|
#
|
|
|
|
set_color: set_color.o print_help.o common.o
|
|
$(CXX) set_color.o print_help.o common.o wutil.o $(LDFLAGS_SET_COLOR) -o $@
|
|
|
|
|
|
#
|
|
# Test program for the tokenizer library
|
|
#
|
|
|
|
tokenizer_test: tokenizer.cpp tokenizer.h wutil.o common.o
|
|
$(CXX) $(CXXFLAGS) tokenizer.cpp wutil.o common.o -D TOKENIZER_TEST $(LDFLAGS) -o $@
|
|
|
|
|
|
#
|
|
# Build the fish_indent program.
|
|
#
|
|
|
|
fish_indent: $(FISH_INDENT_OBJS)
|
|
$(CXX) $(FISH_INDENT_OBJS) $(LDFLAGS_FISH_INDENT) -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
|
|
$(CXX) key_reader.o input_common.o common.o env_universal.o env_universal_common.o wutil.o $(LDFLAGS_FISH) -o $@
|
|
|
|
|
|
#
|
|
# Update dependencies
|
|
#
|
|
depend:
|
|
makedepend -fMakefile.in -Y *.cpp
|
|
./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 share/man
|
|
rm -rf fish-@PACKAGE_VERSION@
|
|
$(INSTALL) -d fish-@PACKAGE_VERSION@
|
|
$(INSTALL) -d fish-@PACKAGE_VERSION@/doc_src
|
|
$(INSTALL) -d fish-@PACKAGE_VERSION@/user_doc
|
|
$(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
|
|
$(INSTALL) -d fish-@PACKAGE_VERSION@/share/man
|
|
$(INSTALL) -d fish-@PACKAGE_VERSION@/tests
|
|
$(INSTALL) -d fish-@PACKAGE_VERSION@/po
|
|
cp -f $(DOC_SRC_DIR_FILES) fish-@PACKAGE_VERSION@/doc_src
|
|
cp -f $(MAIN_DIR_FILES) fish-@PACKAGE_VERSION@/
|
|
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/
|
|
cp -f $(TESTS_DIR_FILES) fish-@PACKAGE_VERSION@/tests/
|
|
cp -f $(TRANSLATIONS_SRC) fish-@PACKAGE_VERSION@/po/
|
|
cp -f share/man/*.1 fish-@PACKAGE_VERSION@/share/man/
|
|
cp -rf user_doc fish-@PACKAGE_VERSION@/
|
|
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
|
|
|
|
fish-@PACKAGE_VERSION@.tar.bz2: fish-@PACKAGE_VERSION@.tar
|
|
bzip2 -f --best -k 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; \
|
|
echo You may be able to install it using the following command:; \
|
|
echo \'yum install rpm-build\'; \
|
|
false; \
|
|
fi
|
|
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 .
|
|
.PHONY: rpm
|
|
|
|
|
|
#
|
|
# Cleanup targets
|
|
#
|
|
|
|
#
|
|
# distclean should restore the tree to the state right after extracting a tarball.
|
|
#
|
|
|
|
distclean: clean
|
|
rm -f fish.spec Doxyfile.help
|
|
rm -f etc/config.fish seq share/config.fish
|
|
rm -f config.status config.log config.h Makefile
|
|
rm -rf $(XSEL)
|
|
.PHONY: distclean
|
|
|
|
|
|
#
|
|
# clean removes everything built by the makefile, but not things that
|
|
# are created by the configure script.
|
|
#
|
|
|
|
clean:
|
|
rm -f *.o doc.h doc.tmp doc_src/*.doxygen doc_src/*.cpp doc_src/*.o doc_src/commands.hdr
|
|
rm -f $(GENERATED_INTERN_SCRIPT_FILES)
|
|
rm -f tests/tmp.err tests/tmp.out tests/tmp.status tests/foo.txt
|
|
rm -f $(PROGRAMS) fish_tests tokenizer_test key_reader
|
|
rm -f share/config.fish etc/config.fish doc_src/index.hdr doc_src/commands.hdr
|
|
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 fish-@PACKAGE_VERSION@
|
|
rm -f $(TRANSLATIONS)
|
|
test ! -d "$(XSEL)" || make -C $(XSEL) clean
|
|
.PHONY: clean
|
|
|
|
|
|
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
|
|
|
builtin.o: config.h fallback.h util.h wutil.h builtin.h io.h function.h
|
|
builtin.o: complete.h proc.h parser.h event.h common.h reader.h env.h
|
|
builtin.o: wgetopt.h sanity.h tokenizer.h wildcard.h input_common.h input.h
|
|
builtin.o: intern.h signal.h exec.h highlight.h halloc.h halloc_util.h
|
|
builtin.o: parse_util.h parser_keywords.h expand.h path.h builtin_set.cpp
|
|
builtin.o: builtin_commandline.cpp builtin_complete.cpp builtin_ulimit.cpp
|
|
builtin.o: builtin_jobs.cpp
|
|
builtin_commandline.o: config.h signal.h fallback.h util.h wutil.h builtin.h
|
|
builtin_commandline.o: io.h common.h wgetopt.h reader.h proc.h parser.h
|
|
builtin_commandline.o: event.h tokenizer.h input_common.h input.h
|
|
builtin_commandline.o: parse_util.h
|
|
builtin_complete.o: config.h signal.h fallback.h util.h wutil.h builtin.h
|
|
builtin_complete.o: io.h common.h complete.h wgetopt.h parser.h proc.h
|
|
builtin_complete.o: event.h reader.h
|
|
builtin_jobs.o: config.h fallback.h util.h wutil.h builtin.h io.h proc.h
|
|
builtin_jobs.o: parser.h event.h common.h wgetopt.h
|
|
builtin_scripts.o: builtin_scripts.h
|
|
builtin_set.o: config.h signal.h fallback.h util.h wutil.h builtin.h io.h
|
|
builtin_set.o: env.h common.h expand.h wgetopt.h proc.h parser.h event.h
|
|
builtin_ulimit.o: config.h fallback.h util.h builtin.h io.h common.h
|
|
builtin_ulimit.o: wgetopt.h
|
|
common.o: config.h fallback.h util.h wutil.h common.h expand.h proc.h io.h
|
|
common.o: wildcard.h parser.h event.h util.cpp halloc.cpp halloc.h
|
|
common.o: halloc_util.cpp fallback.cpp
|
|
complete.o: config.h signal.h fallback.h util.h tokenizer.h wildcard.h
|
|
complete.o: common.h proc.h io.h parser.h event.h function.h complete.h
|
|
complete.o: builtin.h env.h exec.h expand.h reader.h history.h intern.h
|
|
complete.o: parse_util.h parser_keywords.h halloc.h halloc_util.h wutil.h
|
|
complete.o: path.h
|
|
env.o: config.h signal.h fallback.h util.h wutil.h proc.h io.h common.h env.h
|
|
env.o: sanity.h expand.h history.h reader.h parser.h event.h env_universal.h
|
|
env.o: env_universal_common.h input_common.h path.h halloc.h halloc_util.h
|
|
env.o: complete.h
|
|
env_universal.o: config.h signal.h fallback.h util.h common.h wutil.h
|
|
env_universal.o: env_universal_common.h env_universal.h
|
|
env_universal_common.o: config.h signal.h fallback.h util.h common.h wutil.h
|
|
env_universal_common.o: env_universal_common.h
|
|
event.o: config.h signal.h fallback.h util.h wutil.h function.h proc.h io.h
|
|
event.o: parser.h event.h common.h halloc_util.h
|
|
exec.o: config.h signal.h fallback.h util.h common.h wutil.h proc.h io.h
|
|
exec.o: exec.h parser.h event.h builtin.h function.h env.h wildcard.h
|
|
exec.o: sanity.h expand.h halloc.h halloc_util.h parse_util.h
|
|
expand.o: config.h signal.h fallback.h util.h common.h wutil.h env.h proc.h
|
|
expand.o: io.h parser.h event.h expand.h wildcard.h exec.h tokenizer.h
|
|
expand.o: complete.h parse_util.h halloc.h halloc_util.h
|
|
fallback.o: config.h fallback.h util.h
|
|
fish.o: config.h signal.h fallback.h util.h common.h reader.h io.h builtin.h
|
|
fish.o: function.h complete.h wutil.h env.h sanity.h proc.h parser.h event.h
|
|
fish.o: expand.h intern.h exec.h output.h halloc.h halloc_util.h history.h
|
|
fish.o: path.h
|
|
fish_indent.o: config.h fallback.h util.h common.h wutil.h halloc.h
|
|
fish_indent.o: halloc_util.h tokenizer.h print_help.h parser_keywords.h
|
|
fish_pager.o: config.h signal.h fallback.h util.h wutil.h common.h complete.h
|
|
fish_pager.o: output.h input_common.h env_universal.h env_universal_common.h
|
|
fish_pager.o: halloc.h halloc_util.h print_help.h
|
|
fish_tests.o: config.h signal.h fallback.h util.h common.h proc.h io.h
|
|
fish_tests.o: reader.h builtin.h function.h complete.h wutil.h env.h expand.h
|
|
fish_tests.o: parser.h event.h tokenizer.h output.h exec.h path.h halloc.h
|
|
fish_tests.o: halloc_util.h
|
|
fishd.o: config.h signal.h fallback.h util.h common.h wutil.h
|
|
fishd.o: env_universal_common.h halloc.h halloc_util.h path.h print_help.h
|
|
function.o: config.h signal.h wutil.h fallback.h util.h function.h proc.h
|
|
function.o: io.h parser.h event.h common.h intern.h reader.h parse_util.h
|
|
function.o: parser_keywords.h env.h expand.h halloc.h halloc_util.h
|
|
halloc.o: config.h fallback.h util.h common.h halloc.h
|
|
halloc_util.o: config.h fallback.h util.h common.h halloc.h
|
|
highlight.o: config.h signal.h fallback.h util.h wutil.h highlight.h env.h
|
|
highlight.o: common.h tokenizer.h proc.h io.h parser.h event.h parse_util.h
|
|
highlight.o: parser_keywords.h builtin.h function.h expand.h sanity.h
|
|
highlight.o: complete.h output.h halloc.h halloc_util.h wildcard.h path.h
|
|
history.o: config.h fallback.h util.h wutil.h history.h common.h halloc.h
|
|
history.o: halloc_util.h intern.h path.h signal.h
|
|
input.o: config.h signal.h fallback.h util.h wutil.h reader.h io.h proc.h
|
|
input.o: common.h sanity.h input_common.h input.h parser.h event.h env.h
|
|
input.o: expand.h output.h intern.h halloc.h halloc_util.h
|
|
input_common.o: config.h fallback.h util.h common.h wutil.h input_common.h
|
|
input_common.o: env_universal.h env_universal_common.h iothread.h
|
|
intern.o: config.h fallback.h util.h wutil.h common.h intern.h
|
|
io.o: config.h fallback.h util.h wutil.h exec.h proc.h io.h common.h halloc.h
|
|
iothread.o: iothread.h
|
|
key_reader.o: config.h fallback.h input_common.h
|
|
kill.o: config.h signal.h fallback.h util.h wutil.h kill.h proc.h io.h
|
|
kill.o: sanity.h common.h env.h exec.h halloc.h path.h
|
|
mimedb.o: config.h xdgmime.h fallback.h util.h print_help.h
|
|
output.o: config.h signal.h fallback.h util.h wutil.h expand.h common.h
|
|
output.o: output.h halloc_util.h highlight.h env.h
|
|
parse_util.o: config.h fallback.h util.h wutil.h common.h tokenizer.h
|
|
parse_util.o: parse_util.h expand.h intern.h exec.h proc.h io.h env.h
|
|
parse_util.o: signal.h wildcard.h halloc_util.h builtin_scripts.h
|
|
parser.o: config.h signal.h fallback.h util.h common.h wutil.h proc.h io.h
|
|
parser.o: parser.h event.h parser_keywords.h tokenizer.h exec.h wildcard.h
|
|
parser.o: function.h builtin.h env.h expand.h reader.h sanity.h
|
|
parser.o: env_universal.h env_universal_common.h intern.h parse_util.h
|
|
parser.o: halloc.h halloc_util.h path.h
|
|
parser_keywords.o: config.h fallback.h common.h util.h parser_keywords.h
|
|
path.o: config.h fallback.h util.h common.h env.h wutil.h halloc.h
|
|
path.o: halloc_util.h path.h expand.h
|
|
print_help.o: print_help.h
|
|
proc.o: config.h signal.h fallback.h util.h wutil.h proc.h io.h common.h
|
|
proc.o: reader.h sanity.h env.h parser.h event.h halloc.h halloc_util.h
|
|
proc.o: output.h
|
|
reader.o: config.h signal.h fallback.h util.h wutil.h highlight.h env.h
|
|
reader.o: common.h reader.h io.h proc.h parser.h event.h complete.h history.h
|
|
reader.o: sanity.h exec.h expand.h tokenizer.h kill.h input_common.h input.h
|
|
reader.o: function.h output.h screen.h halloc.h halloc_util.h iothread.h
|
|
reader.o: parse_util.h
|
|
sanity.o: config.h signal.h fallback.h util.h common.h sanity.h proc.h io.h
|
|
sanity.o: history.h reader.h kill.h wutil.h
|
|
screen.o: config.h fallback.h common.h util.h wutil.h output.h highlight.h
|
|
screen.o: env.h screen.h
|
|
set_color.o: config.h fallback.h print_help.h
|
|
signal.o: config.h signal.h common.h util.h fallback.h wutil.h event.h
|
|
signal.o: reader.h io.h proc.h
|
|
tokenizer.o: config.h fallback.h util.h wutil.h tokenizer.h common.h
|
|
util.o: config.h fallback.h util.h common.h wutil.h
|
|
wgetopt.o: config.h wgetopt.h wutil.h fallback.h
|
|
wildcard.o: config.h fallback.h util.h wutil.h complete.h common.h wildcard.h
|
|
wildcard.o: reader.h io.h expand.h exec.h proc.h halloc_util.h
|
|
wutil.o: config.h fallback.h util.h common.h wutil.h halloc.h halloc_util.h
|
|
xdgmime.o: xdgmime.h xdgmimeint.h xdgmimeglob.h xdgmimemagic.h xdgmimealias.h
|
|
xdgmime.o: xdgmimeparent.h
|
|
xdgmimealias.o: xdgmimealias.h xdgmime.h xdgmimeint.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
|