2006-10-31 12:06:56 +10:00
# Copyright (C) 2005-2006 Axel Liljencrantz
2005-09-20 23:26:39 +10:00
#
2006-11-02 00:47:47 +10:00
# 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.
2005-09-20 23:26:39 +10:00
#
# 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
2013-12-13 21:51:52 +01:00
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
2005-09-20 23:26:39 +10:00
#
2006-02-04 23:09:14 +10:00
#
# @configure_input@
#
2005-09-20 23:26:39 +10:00
#
# Makefile for the fish shell. Can build fish and associated
2013-11-30 15:11:05 +08:00
# applications, install them, and recalculate dependencies.
2005-09-20 23:26:39 +10:00
#
2016-07-18 13:48:15 -07:00
# Verbosity
# make V=1 causes a noisy make, V=0 is silent/quiet. If one uses (lower case v)
2016-09-15 23:55:02 -07:00
# $v as a substitute for @, it will be replaced with an empty string for the
2016-08-08 19:31:02 -07:00
# default (V=1) case and replaced with @ in the V=0 case. You can use a bare @
# for things that should almost never print.
2016-07-18 13:48:15 -07:00
V := 0
2016-07-16 11:48:11 -07:00
2016-04-27 14:56:46 -07:00
#
2010-11-22 19:05:06 +08:00
# Used by docdir
2016-04-27 14:56:46 -07:00
#
2016-09-15 23:55:02 -07:00
PACKAGE_TARNAME := @PACKAGE_TARNAME@
2006-10-31 12:06:56 +10:00
2016-09-15 18:37:37 -07:00
# The default: /bin/sh
# Fish won't work.
2016-09-15 23:55:02 -07:00
SHELL := @SHELL@
2016-09-15 18:37:37 -07:00
2006-01-23 21:38:07 +10:00
# Programs
2006-10-31 12:06:56 +10:00
#
2016-09-15 18:37:37 -07:00
CXX := @CXX@
2016-08-08 19:31:02 -07:00
INSTALL := @INSTALL@
2016-09-15 18:37:37 -07:00
LN_S := @LN_S@
2014-09-18 20:29:49 +08:00
SED := @SED@
2016-09-15 18:37:37 -07:00
MKDIR_P := @MKDIR_P@
AWK := @AWK@
GREP := @GREP@
FGREP := @FGREP@
2006-01-23 21:38:07 +10:00
2006-10-31 12:06:56 +10:00
#
2006-01-23 07:35:48 +10:00
# Installation directories
2006-10-31 12:06:56 +10:00
#
2005-09-20 23:26:39 +10:00
prefix = @prefix@
exec_prefix = @exec_prefix@
2010-11-22 19:05:06 +08:00
datarootdir = @datarootdir@
2006-01-04 22:51:02 +10:00
datadir = @datadir@
2005-09-20 23:26:39 +10:00
bindir = @bindir@
mandir = @mandir@
sysconfdir = @sysconfdir@
docdir = @docdir@
2006-07-20 00:41:04 +10:00
localedir = @localedir@
2016-04-04 14:33:35 +08:00
extra_completionsdir = @extra_completionsdir@
extra_functionsdir = @extra_functionsdir@
2016-04-05 22:22:12 +08:00
extra_confdir = @extra_confdir@
2006-10-31 12:06:56 +10:00
2015-09-12 12:59:40 -07:00
#
# pcre2
#
PCRE2_WIDTH = @WCHAR_T_BITS@
2016-04-14 22:21:36 -07:00
PCRE2_DIR = pcre2-10.21
2015-09-12 12:59:40 -07:00
PCRE2_LIBDIR = $( PCRE2_DIR) /.libs
PCRE2_LIB = $( PCRE2_LIBDIR) /libpcre2-$( PCRE2_WIDTH) .a
PCRE2_H = $( PCRE2_DIR) /src/pcre2.h
2015-10-01 16:33:23 +08:00
EXTRA_PCRE2 = @EXTRA_PCRE2@
2015-09-12 12:59:40 -07:00
2006-10-31 12:06:56 +10:00
#
# Various flags
#
2016-08-08 19:31:02 -07:00
CXXFLAGS = @CXXFLAGS@ $( EXTRA_CXXFLAGS)
CPPFLAGS = -DLOCALEDIR= \" $( localedir) \" -DPREFIX= L\" $( prefix) \" -DDATADIR= L\" $( datadir) \" -DSYSCONFDIR= L\" $( sysconfdir) \" -DBINDIR= L\" $( bindir) \" -DDOCDIR= L\" $( docdir) \" -iquote. -iquote./src/
2013-11-09 19:43:32 +08:00
LDFLAGS = @LDFLAGS@
2015-10-01 16:33:23 +08:00
LIBS = @LIBS@
2014-03-29 23:28:11 +08:00
LDFLAGS_FISH = ${ LDFLAGS } @LDFLAGS_FISH@
2006-10-31 12:06:56 +10:00
#
2006-01-23 07:35:48 +10:00
# Set to 1 if we have gettext
2006-10-31 12:06:56 +10:00
#
2006-01-04 22:51:02 +10:00
HAVE_GETTEXT = @HAVE_GETTEXT@
2013-06-19 23:59:13 +08:00
#
# Set to 1 if we have doxygen
#
HAVE_DOXYGEN = @HAVE_DOXYGEN@
2006-10-31 12:06:56 +10:00
#
2008-01-13 05:21:35 +10:00
# All objects that the system needs to build fish, except fish.o
2006-10-31 12:06:56 +10:00
#
2016-04-27 14:56:46 -07:00
FISH_OBJS := obj/autoload.o obj/builtin.o obj/builtin_commandline.o \
obj/builtin_complete.o obj/builtin_jobs.o obj/builtin_printf.o \
obj/builtin_set.o obj/builtin_set_color.o obj/builtin_string.o \
obj/builtin_test.o obj/builtin_ulimit.o obj/color.o obj/common.o \
obj/complete.o obj/env.o obj/env_universal_common.o obj/event.o \
obj/exec.o obj/expand.o obj/fallback.o obj/fish_version.o \
obj/function.o obj/highlight.o obj/history.o obj/input.o \
obj/input_common.o obj/intern.o obj/io.o obj/iothread.o obj/kill.o \
obj/output.o obj/pager.o obj/parse_execution.o \
obj/parse_productions.o obj/parse_tree.o obj/parse_util.o \
obj/parser.o obj/parser_keywords.o obj/path.o obj/postfork.o \
obj/proc.o obj/reader.o obj/sanity.o obj/screen.o obj/signal.o \
obj/tokenizer.o obj/utf8.o obj/util.o obj/wcstringutil.o \
obj/wgetopt.o obj/wildcard.o obj/wutil.o
2006-02-10 01:50:20 +10:00
2016-04-04 13:43:37 +01:00
FISH_INDENT_OBJS := obj/fish_indent.o obj/print_help.o $( FISH_OBJS)
2006-10-31 12:06:56 +10:00
2016-07-03 05:04:19 -07:00
FISH_KEYREAD_OBJS := obj/fish_key_reader.o obj/print_help.o $( FISH_OBJS)
2006-10-31 12:06:56 +10:00
#
2006-01-23 07:35:48 +10:00
# All objects that the system needs to build fish_tests
2006-10-31 12:06:56 +10:00
#
2015-07-24 00:50:58 -07:00
FISH_TESTS_OBJS := $( FISH_OBJS) obj/fish_tests.o
2006-01-23 07:35:48 +10:00
2006-10-31 12:06:56 +10:00
#
2015-07-25 15:15:54 -07:00
# All of the sources that produce object files
# (that is, are not themselves #included in other source files)
2006-10-31 12:06:56 +10:00
#
2016-09-15 18:37:37 -07:00
FISH_ALL_OBJS := $( sort $( FISH_OBJS) $( FISH_INDENT_OBJS) $( FISH_TESTS_OBJS) $( FISH_KEYREAD_OBJS) obj/fish.o)
2006-01-23 07:35:48 +10:00
2005-09-20 23:26:39 +10:00
#
2006-11-20 11:06:20 +10:00
# Files containing user documentation
2005-09-20 23:26:39 +10:00
#
2006-10-31 12:06:56 +10:00
2006-11-23 04:53:33 +10:00
#
# These files are the source files, they contain a few @FOO@-style substitutions
2013-10-05 00:37:44 -07:00
# Note that this order defines the order that they appear in the documentation
2006-11-23 04:53:33 +10:00
#
2016-09-15 18:37:37 -07:00
HDR_FILES_SRC := doc_src/index.hdr.in doc_src/tutorial.hdr doc_src/design.hdr doc_src/license.hdr doc_src/commands.hdr.in doc_src/faq.hdr
2006-11-23 04:53:33 +10:00
#
# These are the generated result files
#
2013-03-30 12:21:49 -07:00
HDR_FILES := $( HDR_FILES_SRC:.hdr.in= .hdr)
2006-10-31 12:06:56 +10:00
2012-01-06 10:23:38 -08:00
# 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
2012-06-01 14:00:04 -07:00
2005-09-20 23:26:39 +10:00
#
2010-09-18 10:18:26 +08:00
# Files containing documentation for external commands.
2005-09-20 23:26:39 +10:00
#
2006-11-23 04:53:33 +10:00
HELP_SRC := $( wildcard doc_src/*.txt)
2005-09-20 23:26:39 +10:00
2014-08-01 03:37:32 +01:00
#
# HTML includes needed for HTML help
#
2016-09-15 18:37:37 -07:00
HTML_SRC := doc_src/user_doc.header.html doc_src/user_doc.footer.html doc_src/user_doc.css
2006-10-31 12:06:56 +10:00
2006-01-23 07:35:48 +10:00
#
# Files in the test directory
#
2005-09-20 23:26:39 +10:00
TEST_IN := $( wildcard tests/test*.in)
2006-10-31 12:06:56 +10:00
#
2006-03-29 10:25:00 +10:00
# Files in ./share/completions/
2006-10-31 12:06:56 +10:00
#
2013-10-28 09:57:36 +08:00
COMPLETIONS_DIR_FILES := $( wildcard share/completions/*.fish) share/completions/..fish
2005-09-20 23:26:39 +10:00
2006-10-31 12:06:56 +10:00
#
2006-03-29 10:25:00 +10:00
# Files in ./share/functions/
2006-10-31 12:06:56 +10:00
#
2006-02-17 20:13:39 +10:00
FUNCTIONS_DIR_FILES := $( wildcard share/functions/*.fish)
2006-02-08 19:20:05 +10:00
2006-10-31 12:06:56 +10:00
#
# Programs to install
#
2016-05-06 21:22:28 -07:00
PROGRAMS := fish fish_indent fish_key_reader
2006-10-31 12:06:56 +10:00
#
2006-11-23 04:53:33 +10:00
# Manual pages to install
2006-10-31 12:06:56 +10:00
#
2016-07-16 11:48:11 -07:00
MANUALS := $( addsuffix .1, $( addprefix share/man/man1/, $( PROGRAMS) ) )
2005-09-20 23:26:39 +10:00
2006-10-31 12:06:56 +10:00
#
# All translation message catalogs
#
2006-01-04 22:51:02 +10:00
TRANSLATIONS_SRC := $( wildcard po/*.po)
2014-11-17 17:27:25 +08:00
i f d e f H A V E _ G E T T E X T
TRANSLATIONS := $( TRANSLATIONS_SRC:.po= .gmo)
e l s e
TRANSLATIONS :=
e n d i f
2006-01-04 22:51:02 +10:00
2013-06-19 23:59:13 +08:00
#
# If Doxygen is not available, don't attempt to build the documentation
#
i f e q ( $( HAVE_DOXYGEN ) , 1 )
2016-03-31 14:51:58 +08:00
user_doc = doc
2013-09-02 13:05:55 +08:00
share_man = share/man
2013-06-19 23:59:13 +08:00
e l s e
user_doc =
2013-09-02 13:05:55 +08:00
share_man =
2013-06-19 23:59:13 +08:00
e n d i f
2006-10-31 12:06:56 +10:00
2016-09-15 18:37:37 -07:00
2016-09-15 23:40:54 -07:00
t_co := $( shell tput colors || echo '' ) 2> /dev/null
green := $( shell ( tput setaf 2 || tput AF 2 ) 2> /dev/null )
yellow := $( shell ( tput setaf 3 || tput AF 3 ) 2> /dev/null )
cyan := $( shell ( tput setaf 6 || tput AF 6 ) 2> /dev/null )
red := $( shell ( tput setaf 1 || tput AF 1 ) 2> /dev/null )
bo := $( shell ( tput bold || tput md ) 2> /dev/null )
2016-09-01 07:38:18 -07:00
# * Italic: Rarely defined - it's common for it to work despite
2016-09-01 06:58:51 -07:00
# terminfo entries and isn't known to cause any recent > 256-color terminals
# to explode. If terminfo says a terminal supports 256 colors - it's fancy enough
# and won't have trouble the escape.
2016-09-15 23:40:54 -07:00
i f e q ( $( t_co ) , 2 5 6 )
em := $( shell ( tput sitm || tput ZH || echo "\\033[3m" ) 2> /dev/null )
2016-09-15 23:55:02 -07:00
# * Half-bright/faint 'dim' mode - rarely works - rarely in terminfo when it does
# but it's cool. Use it with one of the basic colors to get a fainter version
# of it. We use this to shade the output from any reconfigures we trigger.
2016-09-15 23:40:54 -07:00
dim := $( shell ( tput dim || tput mh || [ $( TERM_PROGRAM) = Apple_Terminal ] && echo "\\033[2m" ) 2> /dev/null )
2016-08-08 19:31:02 -07:00
e l s e
2016-09-15 23:40:54 -07:00
em := $( shell ( tput sitm || tput ZH ) 2> /dev/null )
dim := $( shell ( tput dim || tput mh) 2> /dev/null )
2016-08-08 19:31:02 -07:00
e n d i f
2016-09-01 06:58:51 -07:00
2016-09-15 23:40:54 -07:00
sgr0 := $( shell ( tput sgr0 || tput me) 2> /dev/null )
2016-09-01 06:58:51 -07:00
2016-08-08 19:31:02 -07:00
#
2016-09-15 23:55:02 -07:00
# A target that shows VAR='$(VAR)' (properly escaped)
2016-08-08 19:31:02 -07:00
# Cool trick: `make show-$var` (e.g. make show-HAVE_DOXYGEN) to quickly see what $var is.
#
show-% :
2016-09-15 23:40:54 -07:00
@echo " $* = $( em) $( cyan) ' $( subst ',' '' ,$( $* ) ) ' $( sgr0) " || :
2006-10-31 12:06:56 +10:00
#
# Make everything needed for installing fish
#
2016-08-08 19:31:02 -07:00
all : show -CXX show -CXXFLAGS $( PROGRAMS ) $( user_doc ) $( share_man ) $( TRANSLATIONS ) fish .pc share /__fish_build_paths .fish
2016-09-15 18:37:37 -07:00
i f n e q ( , $( findstring install ,$ ( MAKECMDGOALS ) ) )
2016-09-15 23:40:54 -07:00
# Fish has been built, but if the goal was 'install', we aren't done yet and this output isnt't desirable
@echo " $( green) fish has now been built. $( sgr0) "
@echo " Run $( yellow) $( notdir $( MAKE) ) install $( sgr0) to install fish. $( sgr0) "
2016-09-15 18:37:37 -07:00
e n d i f
2006-01-24 06:40:14 +10:00
.PHONY : all
2005-09-20 23:26:39 +10:00
2013-06-24 18:12:09 +08:00
#
# Pull version information
#
2016-09-15 23:40:54 -07:00
FISH-BUILD-VERSION-FILE : FORCE | show -FISH_BUILD_VERSION
2016-09-15 23:55:02 -07:00
$v build_tools/git_version_gen.sh 2> /dev/null
2013-06-24 18:12:09 +08:00
- i n c l u d e F I S H - B U I L D - V E R S I O N - F I L E
2016-08-08 19:31:02 -07:00
CPPFLAGS += -DFISH_BUILD_VERSION= \" $( FISH_BUILD_VERSION) \"
2013-06-24 18:12:09 +08:00
.PHONY : FORCE
2016-03-31 22:19:27 +01:00
obj/fish_version.o : FISH -BUILD -VERSION -FILE
2013-06-24 18:12:09 +08:00
2006-10-31 12:06:56 +10:00
#
# These dependencies make sure that autoconf and configure are run
# when the source code for the build configuration has changed.
#
2006-04-02 21:15:25 +10:00
configure : configure .ac
2016-09-15 23:40:54 -07:00
@echo " Rechecking config.status; rerunning ./configure if necessary... $( dim) "
2016-09-15 23:55:02 -07:00
$v ./config.status --recheck
2016-09-15 23:40:54 -07:00
@echo " $( sgr0) "
2006-04-02 21:15:25 +10:00
Makefile : Makefile .in configure
2016-09-15 23:40:54 -07:00
@echo " Checking config.status... $( dim) "
2016-09-15 23:55:02 -07:00
$v ./config.status
2016-09-15 23:40:54 -07:00
@echo " $( sgr0) "
2006-04-02 21:15:25 +10:00
2006-10-31 12:06:56 +10:00
#
# Build fish with some debug flags specified. This is GCC specific,
2016-08-08 19:31:02 -07:00
# and should only be used when debugging fish.
2006-10-31 12:06:56 +10:00
#
2012-07-08 15:20:39 -07:00
prof : EXTRA_CXXFLAGS += -pg
prof : LDFLAGS += -pg
prof : all
2010-10-05 02:23:18 +08:00
.PHONY : prof
2006-10-31 12:06:56 +10:00
#
2005-09-20 23:26:39 +10:00
# User documentation, describing the features of the fish shell.
2006-10-31 12:06:56 +10:00
#
2016-03-30 15:35:14 -07:00
# Depend on the sources (*.hdr.in) and manually make the intermediate *.hdr
# and doc.h files if needed. The sed command deletes everything including and
# after the first -, for simpler version numbers. Cleans up the user_doc/html
# directory once Doxygen is done.
2006-10-31 12:06:56 +10:00
#
2016-10-03 14:35:14 -07:00
doc : $( HDR_FILES_SRC ) Doxyfile .user $( HTML_SRC ) $( HELP_SRC ) doc .h $( HDR_FILES ) lexicon_filter
2016-09-15 23:40:54 -07:00
@echo " SED doxygen $( em) user_doc $( sgr0) "
2016-09-15 23:55:02 -07:00
$v ( cat Doxyfile.user; echo INPUT_FILTER = ./lexicon_filter; echo PROJECT_NUMBER = $( FISH_BUILD_VERSION) | $( SED) "s/-.*//" ) | doxygen - && touch user_doc
2016-09-18 04:22:44 -07:00
$v rm -f $( wildcard $( addprefix ./user_doc/html/,arrow*.png bc_s.png bdwn.png closed.png doc.png folder*.png ftv2*.png nav*.png open.png splitbar.png sync_*.png tab*.* doxygen.* dynsections.js jquery.js pages.html) )
2006-10-31 12:06:56 +10:00
#
2005-09-20 23:26:39 +10:00
# PDF version of the source code documentation.
2006-10-31 12:06:56 +10:00
#
2010-09-18 10:18:26 +08:00
doc/refman.pdf : doc
2016-09-15 23:40:54 -07:00
@echo " MAKE $( em) doc/latex $( sgr0) "
2016-09-15 23:55:02 -07:00
$v cd doc/latex
$v $( MAKE) V = $( V)
$v mv refman.pdf ..
2005-09-20 23:26:39 +10:00
2016-04-27 14:56:46 -07:00
#
2016-02-06 18:08:22 -08:00
# Prep the environment for running the unit tests. When specifying DESTDIR on
# the command line (e.g., `make DESTDIR=/usr/local/`) you must have previously
# installed fish using the same prefix; e.g., `./configure --prefix=/usr/local`
# followed by `make install`.
2016-04-27 14:56:46 -07:00
#
2016-09-15 23:55:02 -07:00
test-prep : show -DESTDIR show -LN_S show -FISH_VERSION
$v rm -rf test
$v $( MKDIR_P) test/data test/home test/temp
2016-02-06 18:08:22 -08:00
i f d e f D E S T D I R
2016-09-15 23:55:02 -07:00
$v $( LN_S) $( DESTDIR) test/root
2016-02-06 18:08:22 -08:00
e l s e
2016-09-15 23:55:02 -07:00
$v $( MKDIR_P) test/root
2016-02-06 18:08:22 -08:00
e n d i f
.PHONY : test -prep
2006-10-31 12:06:56 +10:00
2016-04-27 14:56:46 -07:00
#
2016-02-06 18:08:22 -08:00
# The test target runs both the low level code tests and the high level script
# tests.
2006-10-31 12:06:56 +10:00
#
2016-02-06 18:08:22 -08:00
# Note that doing `make DESTDIR=/some/path/ test` overrides this assignment.
2016-04-27 14:56:46 -07:00
#
2016-02-06 18:08:22 -08:00
test : DESTDIR = $( PWD ) /test /root /
test : prefix = .
test : test -prep install -force test_low_level test_high_level
2016-09-15 23:55:02 -07:00
$v rm -f /tmp/file_truncation_test.txt /tmp/tee_test.txt /tmp/fish_foo.txt
$v rm -rf /tmp/is_potential_path_test
2006-01-24 06:40:14 +10:00
.PHONY : test
2005-09-20 23:26:39 +10:00
2016-04-27 14:56:46 -07:00
#
2014-09-23 16:29:36 -07:00
# We want the various tests to run serially so their output doesn't mix
# We can do that by adding ordering dependencies based on what goals are being used.
2016-04-27 14:56:46 -07:00
#
2014-09-23 16:29:36 -07:00
test_goals := test_low_level test_fishscript test_interactive
2016-04-27 14:56:46 -07:00
#
2014-09-23 16:29:36 -07:00
# The following variables define targets that depend on the tests. If any more targets
# are added that depend, directly or indirectly, on tests, they need to be recorded here.
2016-04-27 14:56:46 -07:00
#
2014-09-23 16:29:36 -07:00
test_test_deps = test_low_level $( test_high_level_test_deps)
test_high_level_test_deps = test_fishscript test_interactive
active_test_goals = $( filter $( test_goals) ,$( foreach a,$( or $( MAKECMDGOALS) ,$( .DEFAULT_GOAL) ) ,$( a) $( $( a) _test_deps) ) )
2016-09-20 12:03:03 -07:00
filter_up_to = $( eval b:= 1) $( foreach a,$( 2) ,$( and $( b) ,$( if $( subst $( 1) ,,$( a) ) ,$( a) ,$( eval b:= ) ) ) )
2014-09-23 16:29:36 -07:00
2016-07-13 22:46:46 -07:00
# The values for XDG_DATA_HOME and XDG_CONFIG_HOME mimic those from tests/test_util.fish.
2014-09-23 16:29:36 -07:00
test_low_level : fish_tests $( call filter_up_to ,test_low_level ,$ ( active_test_goals ) )
2016-09-15 23:55:02 -07:00
$v rm -rf test/data test/home
2016-09-15 18:37:37 -07:00
$( MKDIR_P) test/data test/home
2016-07-13 22:46:46 -07:00
env XDG_DATA_HOME = test/data XDG_CONFIG_HOME = test/home ./fish_tests
2014-09-04 22:26:10 -07:00
.PHONY : test_low_level
2014-09-23 16:29:36 -07:00
test_high_level : test_fishscript test_interactive
.PHONY : test_high_level
2016-02-06 18:08:22 -08:00
test_fishscript : $( call filter_up_to ,test_fishscript ,$ ( active_test_goals ) )
cd tests; ../test/root/bin/fish test.fish
2014-09-04 22:26:10 -07:00
.PHONY : test_fishscript
2016-02-06 18:08:22 -08:00
test_interactive : $( call filter_up_to ,test_interactive ,$ ( active_test_goals ) )
cd tests; ../test/root/bin/fish interactive.fish
2014-09-23 16:29:36 -07:00
.PHONY : test_interactive
2006-11-01 01:36:14 +10:00
#
# commands.hdr collects documentation on all commands, functions and
# builtins
#
2016-09-15 18:37:37 -07:00
doc_src/commands.hdr : $( HELP_SRC ) doc_src /commands .hdr .in |
2016-09-15 23:40:54 -07:00
@echo " CAT AWK $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v rm -f command_list.tmp command_list_toc.tmp $@
$v for i in $( sort $( HELP_SRC) ) ; do \
2006-11-23 04:53:33 +10:00
echo "<hr>" >>command_list.tmp; \
cat $$ i >>command_list.tmp; \
echo >>command_list.tmp; \
echo >>command_list.tmp; \
2013-10-05 00:37:44 -07:00
NAME = ` basename $$ i .txt` ; \
echo '- <a href="#' $$ NAME'">' $$ NAME'</a>' >> command_list_toc.tmp; \
2016-09-15 18:37:37 -07:00
echo "Back to <a href='index.html#toc-commands'>command index</a>" . >>command_list.tmp; \
2010-09-18 10:18:26 +08:00
done
2016-09-15 23:55:02 -07:00
$v mv command_list.tmp command_list.txt
$v mv command_list_toc.tmp command_list_toc.txt
$v cat $@ .in | $( AWK) '{if ($$0 ~ /@command_list_toc@/) { system("cat command_list_toc.txt"); } else if ($$0 ~ /@command_list@/){ system("cat command_list.txt");} else{ print $$0;}}' >$@
2006-11-23 04:53:33 +10:00
2016-09-15 18:37:37 -07:00
toc.txt : $( HDR_FILES :index .hdr =index .hdr .in ) | show -SED
2016-09-15 23:40:54 -07:00
@echo " SED $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v rm -f toc.tmp $@
2016-07-16 11:48:11 -07:00
# Ugly hack to set the toc initial title for the main page
2016-09-15 23:55:02 -07:00
$v echo '- <a href="index.html" id="toc-index">fish shell documentation - $FISH_BUILD_VERSION</a>' > toc.tmp
2016-07-16 11:48:11 -07:00
# The first sed command captures the page name, followed by the description
# The second sed command captures the command name \1 and the description \2, but only up to a dash
# This is to reduce the size of the TOC in the command listing on the main page
2016-09-15 23:55:02 -07:00
$v for i in $( HDR_FILES:index.hdr= index.hdr.in) ; do \
2006-11-23 04:53:33 +10:00
NAME = ` basename $$ i .hdr` ; \
NAME = ` basename $$ NAME .hdr.in` ; \
2014-09-18 20:29:49 +08:00
$( SED) <$$ i >>toc.tmp -n \
2012-12-18 22:30:28 +08:00
-e 's,.*\\page *\([^ ]*\) *\(.*\)$$,- <a href="' $$ NAME'.html" id="toc-' $$ NAME'">\2</a>,p' \
2013-10-05 00:37:44 -07:00
-e 's,.*\\section *\([^ ]*\) *\([^-]*\)\(.*\)$$, - <a href="' $$ NAME'.html#\1">\2</a>,p' ; \
2006-11-23 04:53:33 +10:00
done
2016-09-15 23:55:02 -07:00
$v mv toc.tmp $@
2006-11-23 04:53:33 +10:00
2016-09-15 18:37:37 -07:00
doc_src/index.hdr : toc .txt doc_src /index .hdr .in | show -AWK
2016-09-15 23:40:54 -07:00
@echo " AWK CAT $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v cat $@ .in | $( AWK) '{if ($$0 ~ /@toc@/){ system("cat toc.txt");} else{ print $$0;}}' >$@
2006-11-01 01:36:14 +10:00
2014-08-01 03:37:32 +01:00
#
# To enable the lexicon filter, we first need to be aware of what fish
# considers to be a command, function, or external binary. We use
# command_list_toc.txt for the base commands. Scan the share/functions
# directory for other functions, some of which are mentioned in the docs, and
# use /share/completions to find a good selection of binaries. Additionally,
# colour defaults from __fish_config_interactive to set the docs colours when
# used in a 'cli' style context.
#
2016-09-15 18:37:37 -07:00
lexicon.txt : doc_src /commands .hdr $( FUNCTIONS_DIR_FILES ) $( COMPLETIONS_DIR_FILES ) share /functions /__fish_config_interactive .fish | show -SED show -FGREP
2016-09-15 23:55:02 -07:00
$v rm -f lexicon.tmp lexicon_catalog.tmp lexicon_catalog.txt $@
2016-07-16 11:48:11 -07:00
# Scan sources for commands/functions/binaries/colours. If GNU sed was portable, this could be much smarter.
2016-09-18 04:22:44 -07:00
@echo " SEDFGREP $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v $( SED) <command_list_toc.txt >>lexicon.tmp -n \
2014-08-01 03:37:32 +01:00
-e "s|^.*>\([a-z][a-z_]*\)</a>|'\1'|w lexicon_catalog.tmp" \
2016-09-15 18:37:37 -07:00
-e "s|'\(.*\)'|bltn \1|p" ; mv lexicon_catalog.tmp lexicon_catalog.txt
2016-09-15 23:55:02 -07:00
$v printf "%s\n" $( COMPLETIONS_DIR_FILES) | $( SED) -n \
2016-09-15 18:37:37 -07:00
-e "s|[^ ]*/\([a-z][a-z_-]*\).fish|'\1'|p" | $( FGREP) -vx -f lexicon_catalog.txt | $( SED) >>lexicon.tmp -n \
2014-08-01 03:37:32 +01:00
-e 'w lexicon_catalog.tmp' \
2016-09-15 18:37:37 -07:00
-e "s|'\(.*\)'|cmnd \1|p" ; cat lexicon_catalog.tmp >> lexicon_catalog.txt;
2016-09-15 23:55:02 -07:00
$v printf "%s\n" $( FUNCTIONS_DIR_FILES) | $( SED) -n \
2016-09-15 18:37:37 -07:00
-e "s|[^ ]*/\([a-z][a-z_-]*\).fish|'\1'|p" | $( FGREP) -vx -f lexicon_catalog.txt | $( SED) >>lexicon.tmp -n \
2014-08-01 03:37:32 +01:00
-e 'w lexicon_catalog.tmp' \
2016-09-15 18:37:37 -07:00
-e "s|'\(.*\)'|func \1|p" ;
2016-09-15 23:55:02 -07:00
$v $( SED) <share/functions/__fish_config_interactive.fish >>lexicon.tmp -n \
2014-08-01 13:25:41 +01:00
-e '/set_default/s/.*\(fish_[a-z][a-z_]*\).*$$/clrv \1/p' ; \
2016-09-18 04:22:44 -07:00
$( SED) <lexicon_filter.in >>lexicon.tmp -n \
2016-09-15 18:37:37 -07:00
-e '/^#.!#/s/^#.!# \(.... [a-z][a-z_]*\)/\1/p' ;
2016-09-15 23:55:02 -07:00
$v mv lexicon.tmp lexicon.txt; rm -f lexicon_catalog.tmp lexicon_catalog.txt;
2014-08-01 03:37:32 +01:00
#
# Compile Doxygen Input Filter from the lexicon. This is an executable sed
# script as Doxygen opens it via popen()(3) Input (doc.h) is piped through and
# matching words inside /fish../endfish blocks are marked up, contextually,
# with custom Doxygen commands in the form of @word_type{content}. These are
# trapped by ALIASES in the various Doxyfiles, allowing the content to be
# transformed depending on output type (HTML, man page, developer docs). In
# HTML, a style context can be applied through the /fish{style} block and
# providing suitable CSS in user_doc.css.in
#
2016-08-08 19:31:02 -07:00
lexicon_filter : lexicon .txt lexicon_filter .in | show -SED
2016-09-15 23:55:02 -07:00
$v rm -f $@ .tmp $@
2016-09-15 23:40:54 -07:00
@echo " SED $( em) $@ .tmp $( sgr0) "
2016-07-16 11:48:11 -07:00
# Set the shebang as sed can reside in multiple places.
2016-09-15 23:55:02 -07:00
$v $( SED) <$@ .in >$@ .tmp -e 's|@sed@|' $( SED) '|'
2016-07-16 11:48:11 -07:00
# Scan through the lexicon, transforming each line to something useful to Doxygen.
2016-09-15 23:55:02 -07:00
$v if echo x | $( SED) "/[[:<:]]x/d" 2>/dev/null; then \
2014-08-08 03:44:37 +01:00
WORDBL = '[[:<:]]' ; WORDBR = '[[:>:]]' ; \
2014-09-08 06:54:03 +01:00
else \
2014-10-01 18:02:01 -07:00
WORDBL = '\\<' ; WORDBR = '\\>' ; \
2016-10-22 18:23:03 -07:00
fi ; $( SED) <lexicon.txt >>$@ .tmp -n -e " s|^\([a-z][a-z][a-z][a-z]\) \([a-z_-]*\) $$ |s, $$ WORDBL\2 $$ WORDBR,@\1{\2},g|p " -e '$$G;s/.*\n/b tidy/p' ;
2016-10-22 18:37:11 -07:00
$v mv $@ .tmp $@ ; test -x $@ || chmod a+x $@ ;
2016-09-15 18:37:37 -07:00
2006-11-01 01:36:14 +10:00
2006-10-31 12:06:56 +10:00
#
2005-09-20 23:26:39 +10:00
# 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
2014-08-01 03:37:32 +01:00
# file that can be parsed by Doxygen to generate the user
2005-09-20 23:26:39 +10:00
# documentation.
2006-10-31 12:06:56 +10:00
#
2006-11-23 04:53:33 +10:00
doc.h : $( HDR_FILES )
2016-09-15 23:40:54 -07:00
@echo " HDR_FILES $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v cat $( HDR_FILES) >$@
2006-10-31 12:06:56 +10:00
#
2005-09-20 23:26:39 +10:00
# 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.
2006-10-31 12:06:56 +10:00
#
2005-09-20 23:26:39 +10:00
%.doxygen : %.txt
2016-09-15 23:40:54 -07:00
@echo " cat * $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v echo "/** \page " ` basename $* ` >$@ ;
$v cat $* .txt >>$@ ;
$v echo "*/" >>$@
2005-09-20 23:26:39 +10:00
2016-04-27 14:56:46 -07:00
#
2014-10-06 19:02:43 -07:00
# Depend on Makefile because I don't see a better way of rebuilding
# if any of the paths change.
2016-04-27 14:56:46 -07:00
#
2016-08-08 19:31:02 -07:00
% : %.in Makefile FISH -BUILD -VERSION -FILE | show -prefix show -sysconfdir show -docdir show -extra_completionsdir show -extra_functionsdir show -extra_confdir show -prefix show -FISH_BUILD_VERSION
2016-09-15 23:40:54 -07:00
@echo " SED $( em) $@ $( sgr0) "
2016-09-15 18:37:37 -07:00
2016-09-15 23:55:02 -07:00
$v $( SED) <$< >$@ \
2006-11-11 20:53:14 +10:00
-e " s,@sysconfdir\@, $( sysconfdir) ,g " \
-e " s,@datadir\@, $( datadir) ,g " \
-e " s,@docdir\@, $( docdir) ,g " \
2016-04-04 14:33:35 +08:00
-e " s,@extra_completionsdir\@, $( extra_completionsdir) ,g " \
-e " s,@extra_functionsdir\@, $( extra_functionsdir) ,g " \
2016-04-05 22:22:12 +08:00
-e " s,@extra_confdir\@, $( extra_confdir) ,g " \
2006-11-11 20:53:14 +10:00
-e " s|@configure_input\@| $@ , generated from $@ .in by the Makefile. DO NOT MANUALLY EDIT THIS FILE!|g " \
-e " s,@prefix\@, $( prefix) ,g " \
2014-10-01 22:02:55 +08:00
-e " s,@fish_build_version\@, $( FISH_BUILD_VERSION) ,g " \
2006-07-19 02:41:55 +10:00
2006-10-31 12:06:56 +10:00
#
# Compile translation files to binary format
#
2006-01-24 03:47:42 +10:00
%.gmo :
2016-09-15 23:40:54 -07:00
@echo " msgfmt $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v msgfmt -o $@ $* .po
2006-10-31 12:06:56 +10:00
#
2006-01-04 22:51:02 +10:00
# Update existing po file or copy messages.pot
2006-10-31 12:06:56 +10:00
#
2006-01-24 03:47:42 +10:00
%.po : messages .pot
2016-09-15 23:40:54 -07:00
@echo " msgmerge $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v if test -f $* .po; then \
2014-11-17 17:27:25 +08:00
msgmerge -U --backup= existing $* .po messages.pot; \
else \
cp messages.pot $* .po; \
2006-01-04 22:51:02 +10:00
fi
2006-10-31 12:06:56 +10:00
#
2006-01-04 22:51:02 +10:00
# Create a template translation object
2006-10-31 12:06:56 +10:00
#
2016-09-15 18:37:37 -07:00
messages.pot : $( wildcard src /*.cpp src /*.h share /completions /*.fish share /functions /*.fish )
2016-09-15 23:40:54 -07:00
@echo " xgettext $( em) $@ $( sgr0) "
2016-09-15 18:37:37 -07:00
xgettext -k_ -kN_ $( wildcard src/*.cpp src/*.h) -o messages.pot
2016-09-15 23:55:02 -07:00
$v xgettext -j -k_ -kN_ -k--description -LShell --from-code= UTF-8 $( wildcard share/completions/*.fish share/functions/*.fish) share/fish.config -o messages.pot
2006-01-04 22:51:02 +10:00
2015-10-02 15:29:08 +08:00
i f d e f E X T R A _ P C R E 2
2015-09-12 12:59:40 -07:00
src/builtin_string.cpp : $( PCRE 2_H )
2015-10-02 15:29:08 +08:00
e n d i f
2006-10-31 12:06:56 +10:00
#
2005-09-20 23:26:39 +10:00
# Generate the internal help functions by making doxygen create
2006-11-18 02:24:38 +10:00
# man-pages. The convertion path looks like this:
2005-09-20 23:26:39 +10:00
#
# .txt file
# ||
# (make)
# ||
# \/
# .doxygen file
# ||
# (doxygen)
# ||
# \/
2006-11-18 02:24:38 +10:00
# roff file
2005-09-20 23:26:39 +10:00
# ||
2006-11-18 02:24:38 +10:00
# (__fish_print_help)
2005-09-20 23:26:39 +10:00
# ||
# \/
2010-09-18 10:18:26 +08:00
# formated text
# with escape
2005-09-20 23:26:39 +10:00
# sequences
#
2006-11-18 02:24:38 +10:00
#
# There ought to be something simpler.
2006-10-31 12:06:56 +10:00
#
2016-08-08 19:31:02 -07:00
share/man : $( HELP_SRC ) lexicon_filter | show -FISH_BUILD_VERSION show -SED
2016-09-15 23:55:02 -07:00
-$v $( MKDIR_P) share/man
2016-09-15 23:40:54 -07:00
@echo " doxygen $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v touch share/man
-$v rm -Rf share/man/man1
$v echo " $( dim) " && PROJECT_NUMBER = ` echo $( FISH_BUILD_VERSION) \
2016-09-15 23:40:54 -07:00
| $( SED) "s/-.*//" ` INPUT_FILTER = ./lexicon_filter build_tools/build_documentation.sh Doxyfile.help ./doc_src ./share;
2006-06-13 23:43:28 +10:00
2006-01-24 06:40:14 +10:00
#
2006-02-24 01:35:56 +10:00
# The build rules for installing/uninstalling fish
#
2013-04-12 13:46:27 -07:00
check-legacy-binaries :
2016-08-09 06:06:09 -07:00
@echo "Checking for legacy binaries..."
2016-09-15 23:55:02 -07:00
$v KR_LOC = $( prefix) /bin/key_reader; \
2016-08-08 19:31:02 -07:00
if test -x " $$ KR_LOC " && env TERM = dumb " $$ KR_LOC " cr | grep -q 26; then \
2016-09-15 23:40:54 -07:00
echo " $( red) A key_reader binary was found. You might want to remove this, and use 'fish_key_reader': " ; \
echo " ' $$ KR_LOC' $( sgr0) " ; \
2016-08-08 19:31:02 -07:00
fi ;
2016-09-15 23:55:02 -07:00
$v SEQLOC = $( prefix) /bin/seq; \
2013-04-12 13:46:27 -07:00
if test -f " $$ SEQLOC " && grep -q '\(^#!/.*/fish\|^#!/usr/bin/env fish\)' " $$ SEQLOC " ; then \
2016-09-15 23:40:54 -07:00
echo " $( red) An outdated seq from a previous fish install was found. You should remove it with: " ; \
echo " rm ' $$ SEQLOC' $( sgr0) " ; \
2013-04-12 13:46:27 -07:00
fi ;
2016-09-15 23:55:02 -07:00
$v SETCOLOR_LOC = $( prefix) /bin/set_color; \
2013-02-15 15:38:08 -08:00
if test -x " $$ SETCOLOR_LOC " && $$ SETCOLOR_LOC -v 2>& 1 >/dev/null | grep -q "^set_color, version " ; then \
2016-09-15 23:40:54 -07:00
echo " $( red) An outdated set_color from a previous fish install was found. You should remove it with: " ; \
echo " rm ' $$ SETCOLOR_LOC' $( sgr0) " ; \
2013-04-12 13:46:27 -07:00
fi ;
2016-09-15 23:55:02 -07:00
$v MIMEDB_LOC = $( prefix) /bin/mimedb; \
2015-07-24 15:56:21 +08:00
if test -x " $$ MIMEDB_LOC " && $$ MIMEDB_LOC --version 2>& 1 | grep -q "^mimedb, version " ; then \
2016-09-15 23:40:54 -07:00
echo " $( red) An outdated mimedb binary from a previous fish install was found. You should remove it with: " ; \
echo " rm ' $$ MIMEDB_LOC' $( sgr0) " ; \
2015-07-24 15:56:21 +08:00
fi ;
2016-09-15 23:55:02 -07:00
$v FISHD_LOC = $( prefix) /bin/fishd; \
2015-07-24 15:56:21 +08:00
if test -x " $$ FISHD_LOC " && $$ FISHD_LOC --version 2>& 1 | grep -q "^fishd: fishd, version " ; then \
2016-09-15 23:40:54 -07:00
echo " $( red) An outdated fishd binary from a previous fish install was found. You should remove it with: " ; \
echo " rm ' $$ FISHD_LOC' $( sgr0) " ; \
2015-07-24 15:56:21 +08:00
fi ;
2016-09-15 23:55:02 -07:00
$v true;
2013-04-12 13:46:27 -07:00
.PHONY : check -legacy -binaries
2016-08-08 19:31:02 -07:00
install : all install -force | check -legacy -binaries
2016-07-18 13:48:15 -07:00
@echo
2016-09-15 23:40:54 -07:00
@echo " $( bo) fish is now installed on your system. $( sgr0) "
@echo " To run fish, type $( bo) $( green) fish $( sgr0) in your terminal. "
@echo " $( T_YELLOW) Even if you are already in fish, you should now start a new fish session. $( sgr0) "
2016-02-06 18:08:22 -08:00
@echo
@if type chsh >/dev/null 2>& 1; then \
echo To use fish as your login shell:; \
2016-08-08 19:31:02 -07:00
grep -q -- " $( DESTDIR) $( bindir) /fish " /etc/shells || echo \* add the line \' $( DESTDIR) $( bindir) /fish\' to the file \' /etc/shells\' ; \
2016-09-15 23:40:54 -07:00
echo " * run $( yellow) chsh -s $( DESTDIR) $( bindir) /fish $( sgr0) " ; \
2016-02-06 18:08:22 -08:00
echo; \
fi ;
@if type chcon >/dev/null 2>& 1; then \
echo If you have SELinux enabled, you may need to manually update the security policy:; \
echo \* use the command \' chcon -t shell_exec_t $( DESTDIR) $( bindir) /fish\' .; \
echo; \
fi ;
2016-09-15 23:40:54 -07:00
@echo " To set your colors, run $( green) $( bo) fish_config $( sgr0) "
@echo " To scan your man pages for completions, run $( green) $( bo) fish_update_completions $( sgr0) "
@echo " To accept autosuggestions (in $( dim) grey $( sgr0) ) as you type, hit $( bo) ctrl-F $( sgr0) or right arrow key. "
2016-02-06 18:08:22 -08:00
@echo
2016-09-15 23:40:54 -07:00
@echo " $( bo) Have fun! <>< $( sgr0) "
2006-02-24 01:35:56 +10:00
.PHONY : install
2006-01-24 06:40:14 +10:00
2012-12-01 20:05:35 -08:00
#
# Xcode install
#
xcode-install :
2016-08-08 19:31:02 -07:00
rm -Rf /tmp/fish_build
2016-09-15 18:37:37 -07:00
xcrun xcodebuild install DSTROOT = /tmp/fish_build
2016-08-08 19:31:02 -07:00
ditto /tmp/fish_build
2012-12-01 20:05:35 -08:00
.PHONY : xcode -install
2006-10-31 12:06:56 +10:00
#
2016-08-08 19:31:02 -07:00
# Actually do the installation. These '||true', '||:' lines are to prevent installs
2016-07-09 11:02:50 +08:00
# from failing for (e.g.) missing man pages or extra_dirs outside the
# writeable prefix.
2006-10-31 12:06:56 +10:00
#
2016-09-08 22:26:40 -07:00
install-force : all install -translations | show -datadir show -sysconfdir show -extra_completionsdir show -extra_functionsdir show -extra_confdir show -mandir
2016-09-15 23:55:02 -07:00
$v $( INSTALL) -m 755 -d $( DESTDIR) $( bindir)
$v for i in $( PROGRAMS) ; do \
2016-08-08 19:31:02 -07:00
$( INSTALL) -m 755 $$ i $( DESTDIR) $( bindir) ; \
2016-09-15 23:40:54 -07:00
echo " Installing $( bo) $$ i $( sgr0) " ; \
2012-02-09 16:36:35 -08:00
true ; \
2005-09-20 23:26:39 +10:00
done ;
2016-09-08 22:26:40 -07:00
@echo "Creating sysconfdir tree"
2016-09-15 23:55:02 -07:00
$v $( INSTALL) -m 755 -d $( DESTDIR) $( sysconfdir) /fish
$v $( INSTALL) -m 755 -d $( DESTDIR) $( sysconfdir) /fish/conf.d
$v $( INSTALL) -m 644 etc/config.fish $( DESTDIR) $( sysconfdir) /fish/
2016-09-08 22:26:40 -07:00
@echo "Creating datadir tree"
2016-09-15 23:55:02 -07:00
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/completions
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/functions
2016-10-19 13:35:30 -07:00
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/groff
2016-09-15 23:55:02 -07:00
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/man/man1
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/tools
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/tools/web_config
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/tools/web_config/js
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/tools/web_config/partials
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /fish/tools/web_config/sample_prompts
$v $( INSTALL) -m 644 share/config.fish $( DESTDIR) $( datadir) /fish/
$v $( INSTALL) -m 644 share/__fish_build_paths.fish $( DESTDIR) $( datadir) /fish/
$v $( INSTALL) -m 755 -d $( DESTDIR) $( datadir) /pkgconfig
2016-09-15 18:37:37 -07:00
@echo "Creating placeholder vendor/'extra_' directories"
2016-09-15 23:55:02 -07:00
$v $( INSTALL) -m 755 -d $( DESTDIR) $( extra_completionsdir) || :
$v $( INSTALL) -m 755 -d $( DESTDIR) $( extra_functionsdir) || :
$v $( INSTALL) -m 755 -d $( DESTDIR) $( extra_confdir) || :
2016-09-08 22:26:40 -07:00
@echo "Installing pkgconfig file"
2016-09-15 23:55:02 -07:00
$v $( INSTALL) -m 644 fish.pc $( DESTDIR) $( datadir) /pkgconfig
2016-09-19 17:18:43 -07:00
@echo " Installing the $( bo) fish completion library $( sgr0) ... " ;
2016-09-15 23:55:02 -07:00
$v for i in $( COMPLETIONS_DIR_FILES:%= '%' ) ; do \
2006-02-17 20:13:39 +10:00
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/completions/; \
2005-09-20 23:26:39 +10:00
done ;
2016-09-15 23:40:54 -07:00
@echo " Installing $( bo) fish functions $( sgr0) " ;
2016-09-15 23:55:02 -07:00
$v for i in $( FUNCTIONS_DIR_FILES:%= '%' ) ; do \
2006-02-17 20:13:39 +10:00
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/functions/; \
2006-02-08 19:20:05 +10:00
done ;
2016-09-15 23:40:54 -07:00
@echo " Installing $( bo) man pages $( sgr0) " ;
2016-10-19 13:35:30 -07:00
$v $( INSTALL) -m 644 share/groff/* $( DESTDIR) $( datadir) /fish/groff/
2016-09-15 23:55:02 -07:00
$v for i in $( wildcard share/man/man1/*.1) ; do \
2012-06-12 09:22:45 +02:00
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/man/man1/; \
2006-11-18 02:24:38 +10:00
done ;
2016-09-15 18:37:37 -07:00
@echo "Installing helper tools" ;
2016-09-15 23:55:02 -07:00
$v for i in $( wildcard share/tools/*.py) ; do \
2012-03-25 18:38:33 -07:00
$( INSTALL) -m 755 $$ i $( DESTDIR) $( datadir) /fish/tools/; \
done ;
2016-09-15 23:55:02 -07:00
$v for i in share/tools/web_config/*.*; do \
2012-03-25 18:38:33 -07:00
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/tools/web_config/; \
true; \
done ;
2016-09-15 23:55:02 -07:00
$v for i in share/tools/web_config/js/*.*; do \
2014-01-04 10:32:33 +05:30
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/tools/web_config/js/; \
true; \
done ;
2016-09-15 23:55:02 -07:00
$v for i in share/tools/web_config/partials/*; do \
2014-01-04 10:32:33 +05:30
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/tools/web_config/partials/; \
true; \
done ;
2016-09-15 23:55:02 -07:00
$v for i in share/tools/web_config/sample_prompts/*.fish; do \
2012-09-06 01:40:15 -07:00
$( INSTALL) -m 644 $$ i $( DESTDIR) $( datadir) /fish/tools/web_config/sample_prompts/; \
true; \
done ;
2016-09-15 23:55:02 -07:00
$v for i in share/tools/web_config/*.py; do \
2012-03-25 18:38:33 -07:00
$( INSTALL) -m 755 $$ i $( DESTDIR) $( datadir) /fish/tools/web_config/; \
true; \
done ;
2016-09-15 18:37:37 -07:00
@echo "Installing online user documentation" ;
2016-09-15 23:55:02 -07:00
$v $( INSTALL) -m 755 -d $( DESTDIR) $( docdir)
$v for i in user_doc/html/* CHANGELOG.md; do \
2005-12-09 12:49:23 +10:00
if test -f $$ i; then \
$( INSTALL) -m 644 $$ i $( DESTDIR) $( docdir) ; \
fi ; \
2005-09-20 23:26:39 +10:00
done ;
2016-09-08 22:26:40 -07:00
@echo "Installing more man pages" ;
2016-09-15 23:55:02 -07:00
$v $( INSTALL) -m 755 -d $( DESTDIR) $( mandir) /man1;
$v for i in $( MANUALS) ; do \
2005-09-20 23:26:39 +10:00
$( INSTALL) -m 644 $$ i $( DESTDIR) $( mandir) /man1/; \
2012-02-09 16:36:35 -08:00
true; \
2005-09-20 23:26:39 +10:00
done ;
2006-04-21 01:00:28 +10:00
.PHONY : install -force
2006-02-24 01:35:56 +10:00
2006-10-31 12:06:56 +10:00
#
2006-02-24 01:35:56 +10:00
# Uninstall this fish version
2006-10-31 12:06:56 +10:00
#
2016-09-08 22:26:40 -07:00
uninstall : uninstall -translations | show -prefix show -bindir show -sysconfdir show -datadir show -docdir show -mandir
@echo
2016-09-15 23:40:54 -07:00
@echo " $( bo) $( yellow) Uninstalling fish $( sgr0) from configured \$ $prefix : $( bo) $( prefix) $( sgr0) "
2016-09-08 22:26:40 -07:00
@echo
2016-09-15 23:40:54 -07:00
@echo " Deleting programs: [ $( bo) $( PROGRAMS) $( sgr0) ] in $( em) $( bindir) $( sgr0) "
2016-09-15 23:55:02 -07:00
-$v for i in $( PROGRAMS) ; do \
2005-09-20 23:26:39 +10:00
rm -f $( DESTDIR) $( bindir) /$$ i; \
done ;
2016-09-15 23:40:54 -07:00
@echo " Deleting configuration: $( bo) $( DESTDIR) $( sysconfdir) /fish/* $( sgr0) "
2016-09-15 23:55:02 -07:00
-$v rm -rf $( DESTDIR) $( sysconfdir) /fish
2016-09-08 22:26:40 -07:00
@echo
2016-09-15 23:40:54 -07:00
@echo " In 5 seconds, $( red) all data $( sgr0) (includes functions, completions, tools) in "
@echo $$ " \t $( bo) $( DESTDIR) $( datadir) /fish $( sgr0) will be deleted! "
2016-09-08 22:26:40 -07:00
@echo
2016-09-15 23:40:54 -07:00
@echo $$ " If you put things there, $( red) stop now! $( sgr0) $( bo) \\c "
@echo $$ " $( bo) 5 $( sgr0) \\c "
2016-09-08 22:26:40 -07:00
@sleep 1
2016-09-15 23:40:54 -07:00
@echo $$ " $( bo) 4 $( sgr0) \\c "
2016-09-08 22:26:40 -07:00
@sleep 1
2016-09-15 23:40:54 -07:00
@echo $$ " $( bo) 3 $( sgr0) \\c "
2016-09-08 22:26:40 -07:00
@sleep 1
2016-09-15 23:40:54 -07:00
@echo $$ " $( bo) 2 $( sgr0) \\c "
2016-09-08 22:26:40 -07:00
@sleep 1
2016-09-15 23:40:54 -07:00
@echo $$ " $( bo) 1 $( sgr0) \\c "
2016-09-08 22:26:40 -07:00
@sleep 1
@echo ...
@sleep 2
2016-09-15 23:40:54 -07:00
@echo " ... deleting $( bo) $( DESTDIR) $( datadir) /fish/* $( sgr0) "
2016-09-15 23:55:02 -07:00
-$v if test -d $( DESTDIR) $( datadir) /fish; then \
2016-09-08 22:26:40 -07:00
rm -rf $( DESTDIR) $( datadir) /fish; \
2006-02-24 01:35:56 +10:00
fi
2016-09-08 22:26:40 -07:00
@echo
2016-09-15 23:40:54 -07:00
@echo " Deleting documentation: $( bo) $( DESTDIR) $( docdir) /* $( sgr0) "
2016-09-15 23:55:02 -07:00
-$v if test -d $( DESTDIR) $( docdir) ; then \
2012-07-08 15:20:39 -07:00
rm -rf $( DESTDIR) $( docdir) ; \
2006-02-24 01:35:56 +10:00
fi
2016-09-08 22:26:40 -07:00
@echo
2016-09-15 23:40:54 -07:00
@echo " Deleting pkgconfig file: $( bo) $( DESTDIR) $( datadir) /pkgconfig/fish.pc $( sgr0) "
2016-09-15 23:55:02 -07:00
-$v if test -f $( DESTDIR) $( datadir) /pkgconfig/fish.pc; then \
2014-11-23 14:41:22 +08:00
rm -f $( DESTDIR) $( datadir) /pkgconfig/fish.pc; \
fi
2016-09-08 22:26:40 -07:00
@echo
@echo $$ "Deleting \\c"
2016-09-15 23:40:54 -07:00
@echo " [ $( bo) " $( basename $( MANUALS) ) $( sgr0) $$ "] in \\c"
@echo " $( em) $( mandir) /man1 $( sgr0) "
2016-09-15 23:55:02 -07:00
-$v for i in $( MANUALS) ; do \
2016-09-15 18:37:37 -07:00
rm -rf " $( DESTDIR) $( mandir) /man1/ " $$ $( basename $i ) $$ $( wildcard .*) ;
2005-09-20 23:26:39 +10:00
done ;
2016-09-08 22:26:40 -07:00
@echo
2016-09-15 23:40:54 -07:00
@echo " $( green) Fish (likely) unintalled $( sgr0) "
2016-09-08 22:26:40 -07:00
@echo
2016-09-15 23:40:54 -07:00
@echo " $( bo) ./configure --prefix= $( sgr0) to uninstall fish from a different prefix "
2006-01-24 06:40:14 +10:00
.PHONY : uninstall
2005-09-20 23:26:39 +10:00
2016-09-15 18:37:37 -07:00
install-translations : $( TRANSLATIONS ) | show -HAVE_GETTEXT
2014-11-17 17:27:25 +08:00
i f d e f H A V E _ G E T T E X T
2016-08-09 06:06:09 -07:00
@echo "Installing translations..."
2016-09-15 23:55:02 -07:00
$v for i in $( TRANSLATIONS) ; do \
2014-11-17 17:27:25 +08:00
$( INSTALL) -m 755 -d $( DESTDIR) $( localedir) /` basename $$ i .gmo` /LC_MESSAGES; \
$( INSTALL) -m 644 $$ i $( DESTDIR) $( localedir) /` basename $$ i .gmo` /LC_MESSAGES/fish.mo; \
done
e n d i f
2006-01-24 06:40:14 +10:00
.PHONY : install -translations
2006-01-04 22:51:02 +10:00
2016-09-15 18:37:37 -07:00
uninstall-translations : show -DESTDIR show -localedir
2016-09-15 23:55:02 -07:00
$v rm -f $( DESTDIR) $( localedir) /*/LC_MESSAGES/fish.mo
2006-01-24 06:40:14 +10:00
.PHONY : uninstall -translations
#
# The build rules for all the commands
#
2006-01-04 22:51:02 +10:00
2015-07-24 00:50:58 -07:00
#
# How basic files get compiled
#
2016-09-15 18:37:37 -07:00
obj/%.o : src /%.cpp | show -CXX show -CXXFLAGS show -CPPFLAGS obj
2016-09-15 23:40:54 -07:00
@echo " CXX $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v $( CXX) $( CPPFLAGS) $( CXXFLAGS) -c $< -o $@
2016-02-06 18:08:22 -08:00
2015-07-24 00:50:58 -07:00
#
# obj directory
#
2016-09-15 18:37:37 -07:00
obj : | show -MKDIR_P
2016-09-15 23:55:02 -07:00
@echo " MKDIR_P $( em) $@ $( sgr0) "
$v $( MKDIR_P) obj
2015-07-24 00:50:58 -07:00
2006-10-31 12:06:56 +10:00
#
# Build the fish program.
#
2016-04-27 14:56:46 -07:00
fish : obj /fish .o $( FISH_OBJS ) $( EXTRA_PCRE 2)
2016-09-15 23:40:54 -07:00
@echo " CXX LD $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v $( CXX) $( CPPFLAGS) $( CXXFLAGS) $( LDFLAGS_FISH) $( FISH_OBJS) obj/fish.o $( LIBS) -o $@
2005-09-20 23:26:39 +10:00
2015-09-12 12:59:40 -07:00
$(PCRE2_LIB) : $( PCRE 2_H )
2016-09-15 23:40:54 -07:00
@echo " MAKE $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v $( MAKE) V = $( V) -C $( PCRE2_DIR) libpcre2-$( PCRE2_WIDTH) .la
2015-10-02 15:29:08 +08:00
$(PCRE2_H) :
2016-09-15 23:40:54 -07:00
@echo " autoconf $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v ( cd $( PCRE2_DIR) && ./config.status)
2015-10-02 15:29:08 +08:00
2006-10-31 12:06:56 +10:00
#
# Build the fish_tests program.
#
2015-10-01 16:33:23 +08:00
fish_tests : $( FISH_TESTS_OBJS ) $( EXTRA_PCRE 2)
2016-09-15 23:40:54 -07:00
@echo " CXX LD $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v $( CXX) $( CXXFLAGS) $( LDFLAGS_FISH) $( FISH_TESTS_OBJS) $( LIBS) -o $@
2005-09-20 23:26:39 +10:00
2007-04-22 20:03:12 +10:00
#
# Build the fish_indent program.
#
2015-10-01 16:33:23 +08:00
fish_indent : $( FISH_INDENT_OBJS ) $( EXTRA_PCRE 2)
2016-09-15 23:40:54 -07:00
@echo " CXX LD $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v $( CXX) $( CXXFLAGS) $( LDFLAGS) $( FISH_INDENT_OBJS) $( LIBS) -o $@
2007-04-22 20:03:12 +10:00
2006-10-31 12:06:56 +10:00
#
2016-07-03 05:04:19 -07:00
# Build the fish_key_reader program to show input from the terminal.
2006-10-31 12:06:56 +10:00
#
2016-07-03 05:04:19 -07:00
fish_key_reader : $( FISH_KEYREAD_OBJS ) $( EXTRA_PCRE 2)
2016-09-15 23:40:54 -07:00
@echo " CXX LD $( em) $@ $( sgr0) "
2016-09-15 23:55:02 -07:00
$v $( CXX) $( CXXFLAGS) $( LDFLAGS_FISH) $^ $( LIBS) -o $@
2005-09-23 06:16:52 +10:00
2006-01-24 06:40:14 +10:00
#
# Update dependencies
2015-07-25 15:15:54 -07:00
# Unfortunately makedepend cannot handle source files in one directory
# and object files in another. So we have to cons up a fake directory
# tree and run it there. Note that some .cpp files do not result in
# objects because they are #include'd directly. In that case we need to
# leave them in the 'header' directory, so they get picked up by the
# dependencies. So we put everything in the header directory and move out
# exactly the files that result in objects, leaving the #include'd files
# behind.
2006-01-24 06:40:14 +10:00
#
2016-09-15 23:55:02 -07:00
depend : | show -MKDIR_P
@echo " CXX LD $( em) $@ $( sgr0) "
$v $( MKDIR_P) /tmp/fish_make_depend/src
# This is ran only once in a blue moon - full verbosity so we are reminded what it does.
2016-09-15 18:37:37 -07:00
cp $( wildcard src/*.cpp src/*.h) /tmp/fish_make_depend/src
cp config.h /tmp/fish_make_depend/
mv $( subst obj/,/tmp/fish_make_depend/src/,$( FISH_ALL_OBJS:.o= .cpp) ) /tmp/fish_make_depend/
cd /tmp/fish_make_depend && makedepend -f$( CURDIR) /Makefile.in -pobj/ -Y -Isrc *.cpp
rm -Rf /tmp/fish_make_depend
2016-09-15 23:55:02 -07:00
$v ./config.status
2006-01-24 06:40:14 +10:00
.PHONY : depend
2005-09-20 23:26:39 +10:00
2016-04-27 14:56:46 -07:00
#
2016-09-01 06:58:51 -07:00
# Lint the code. This only deals with C++
2016-09-15 23:55:02 -07:00
# TODO - why not have the Makefile run lint.fish on actual files itself (generate a report target?)
2016-04-27 14:56:46 -07:00
#
2016-04-01 16:28:36 -07:00
lint :
2016-09-15 23:55:02 -07:00
$v build_tools/lint.fish $( CXX) $( CXXFLAGS) $( CPPFLAGS)
2016-04-01 16:28:36 -07:00
lint-all :
2016-09-15 23:55:02 -07:00
$v build_tools/lint.fish $( CXX) --all $( CXXFLAGS) $( CPPFLAGS)
2016-04-01 16:28:36 -07:00
.PHONY : lint lint -all
2016-04-27 14:56:46 -07:00
#
2016-04-01 20:48:11 -07:00
# Run the code through the style refomatter. This handles both C++ files and
# fish scripts (*.fish).
2016-04-27 14:56:46 -07:00
#
2016-04-01 20:48:11 -07:00
style :
2016-09-15 23:55:02 -07:00
$v build_tools/style.fish
2016-04-01 20:48:11 -07:00
style-all :
2016-09-15 23:55:02 -07:00
$v build_tools/style.fish --all
2016-06-13 21:33:27 +08:00
.PHONY : style style -all
2016-04-01 20:48:11 -07:00
2016-04-27 14:56:46 -07:00
#
2016-02-06 18:08:22 -08:00
# Restore the source tree to the state right after extracting a tarball.
2016-04-27 14:56:46 -07:00
#
2005-11-04 03:03:48 +10:00
distclean : clean
2016-09-15 23:55:02 -07:00
$v $( MAKE) V = $( V) -C $( PCRE2_DIR) distclean || :
$v rm -f config.status config.log config.h Makefile
2006-01-24 06:40:14 +10:00
.PHONY : distclean
2005-11-04 03:03:48 +10:00
2016-04-27 14:56:46 -07:00
#
2016-02-06 18:08:22 -08:00
# Remove everything built by the Makefile, but not things that are created by
# the configure script.
2006-11-01 01:36:14 +10:00
#
2016-02-06 18:08:22 -08:00
# Don't delete the docs unless we have Doxygen installed We provide pre-built
# docs in the tarball, and if they get deleted we won't be able to regenerate
# them.
2016-04-27 14:56:46 -07:00
#
2005-09-20 23:26:39 +10:00
clean :
2016-09-15 23:40:54 -07:00
@echo " $( bo) Removing everything built by the Makefile... $( sgr0) "
2016-08-08 19:31:02 -07:00
# PCRE's make clean has a few slightly annoying exceptions to the V= rule. If V=0
# send all output to /dev/null - unless there's an error, in which case run it again not silenced.
i f e q ( $( V ) , 0 )
$( MAKE) -C $( PCRE2_DIR) clean || :
e l s e
@$( MAKE) -s -C $( PCRE2_DIR) clean > /dev/null || $( MAKE) -s -C $( PCRE2_DIR) clean || :
e n d i f
2016-09-15 23:55:02 -07:00
$v rm -f obj/*.o *.o doc.h doc.tmp
$v rm -f doc_src/*.doxygen doc_src/*.cpp doc_src/*.o doc_src/commands.hdr
$v rm -f tests/tmp.err tests/tmp.out tests/tmp.status tests/foo.txt
$v rm -f $( PROGRAMS) fish_tests fish_key_reader
$v rm -f command_list.txt command_list_toc.txt toc.txt
$v rm -f doc_src/index.hdr doc_src/commands.hdr
$v rm -f lexicon_filter lexicon.txt lexicon.log
$v rm -f compile_commands.json xcodebuild.log
$v rm -f FISH-BUILD-VERSION-FILE fish.pc share/__fish_build_paths.fish
$v if test " $( HAVE_DOXYGEN) " = 1; then \
2012-07-09 19:41:51 -07:00
rm -rf doc user_doc share/man; \
fi
2016-09-15 23:55:02 -07:00
$v rm -f po/*.gmo
$v rm -rf obj build test
2006-01-24 06:40:14 +10:00
.PHONY : clean
2005-09-20 23:26:39 +10:00
2016-08-08 19:31:02 -07:00
# For silent build
2016-09-15 23:55:02 -07:00
# These rules need to stay at the end - $v won't work after this.
2016-08-08 19:31:02 -07:00
# if V=0:
2016-09-15 23:55:02 -07:00
# $v cmd ⇒ @cmd
2016-07-18 13:48:15 -07:00
V0 := @
2016-08-08 19:31:02 -07:00
# if V=1
2016-09-15 23:55:02 -07:00
# $v cmd ⇒ cmd
2016-08-08 19:31:02 -07:00
V1 :=
2016-07-18 13:48:15 -07:00
v = $( V$( V) )
2005-09-20 23:26:39 +10:00
# DO NOT DELETE THIS LINE -- make depend depends on it.
2012-01-05 14:10:02 -08:00
2016-07-03 05:04:19 -07:00
obj/autoload.o : config .h src /autoload .h src /common .h src /fallback .h
2016-04-19 19:49:15 -07:00
obj/autoload.o : src /signal .h src /lru .h src /env .h src /exec .h src /wutil .h
2016-07-03 05:04:19 -07:00
obj/builtin.o : config .h src /builtin .h src /common .h src /fallback .h
2016-04-19 19:49:15 -07:00
obj/builtin.o : src /signal .h src /builtin_commandline .h src /builtin_complete .h
obj/builtin.o : src /builtin_jobs .h src /builtin_printf .h src /builtin_set .h
obj/builtin.o : src /builtin_set_color .h src /builtin_string .h
obj/builtin.o : src /builtin_test .h src /builtin_ulimit .h src /complete .h
obj/builtin.o : src /env .h src /event .h src /exec .h src /expand .h
obj/builtin.o : src /parse_constants .h src /function .h src /highlight .h
obj/builtin.o : src /color .h src /history .h src /wutil .h src /input .h src /intern .h
obj/builtin.o : src /io .h src /parse_util .h src /tokenizer .h src /parser .h
2016-07-03 05:04:19 -07:00
obj/builtin.o : src /parse_tree .h src /proc .h src /parser_keywords .h src /path .h
2016-04-19 19:49:15 -07:00
obj/builtin.o : src /reader .h src /wcstringutil .h src /wgetopt .h
2016-07-03 05:04:19 -07:00
obj/builtin_commandline.o : config .h src /builtin .h src /common .h src /fallback .h
2016-04-19 19:49:15 -07:00
obj/builtin_commandline.o : src /signal .h src /input .h src /env .h src /io .h
obj/builtin_commandline.o : src /parse_util .h src /parse_constants .h
obj/builtin_commandline.o : src /tokenizer .h src /proc .h src /parse_tree .h
obj/builtin_commandline.o : src /reader .h src /complete .h src /highlight .h
obj/builtin_commandline.o : src /color .h src /util .h src /wgetopt .h src /wutil .h
2016-07-03 05:04:19 -07:00
obj/builtin_complete.o : config .h src /builtin .h src /common .h src /fallback .h
2016-04-19 19:49:15 -07:00
obj/builtin_complete.o : src /signal .h src /complete .h src /env .h src /io .h
obj/builtin_complete.o : src /parse_constants .h src /parse_util .h
2016-07-03 05:04:19 -07:00
obj/builtin_complete.o : src /tokenizer .h src /parser .h src /event .h src /expand .h
obj/builtin_complete.o : src /parse_tree .h src /proc .h src /reader .h
obj/builtin_complete.o : src /highlight .h src /color .h src /wgetopt .h src /wutil .h
2016-04-19 19:49:15 -07:00
obj/builtin_jobs.o : config .h src /builtin .h src /common .h src /fallback .h
obj/builtin_jobs.o : src /signal .h src /io .h src /proc .h src /parse_tree .h
2016-07-03 05:04:19 -07:00
obj/builtin_jobs.o : src /parse_constants .h src /tokenizer .h src /wgetopt .h
2016-04-19 19:49:15 -07:00
obj/builtin_jobs.o : src /wutil .h
2016-07-03 05:04:19 -07:00
obj/builtin_printf.o : config .h src /builtin .h src /common .h src /fallback .h
2016-04-19 19:49:15 -07:00
obj/builtin_printf.o : src /signal .h src /io .h src /proc .h src /parse_tree .h
2016-07-03 05:04:19 -07:00
obj/builtin_printf.o : src /parse_constants .h src /tokenizer .h src /wutil .h
obj/builtin_set.o : config .h src /builtin .h src /common .h src /fallback .h
2016-04-19 19:49:15 -07:00
obj/builtin_set.o : src /signal .h src /env .h src /expand .h src /parse_constants .h
obj/builtin_set.o : src /io .h src /proc .h src /parse_tree .h src /tokenizer .h
obj/builtin_set.o : src /wgetopt .h src /wutil .h
obj/builtin_set_color.o : config .h src /builtin .h src /common .h src /fallback .h
obj/builtin_set_color.o : src /signal .h src /color .h src /io .h src /output .h
2016-07-03 05:04:19 -07:00
obj/builtin_set_color.o : src /proc .h src /parse_tree .h src /parse_constants .h
obj/builtin_set_color.o : src /tokenizer .h src /wgetopt .h src /wutil .h
2016-04-19 19:49:15 -07:00
obj/builtin_string.o : config .h src /builtin .h src /common .h src /fallback .h
obj/builtin_string.o : src /signal .h src /io .h src /parse_util .h
obj/builtin_string.o : src /parse_constants .h src /tokenizer .h src /wgetopt .h
2016-07-03 05:04:19 -07:00
obj/builtin_string.o : src /wildcard .h src /complete .h src /expand .h src /wutil .h
obj/builtin_test.o : config .h src /builtin .h src /common .h src /fallback .h
2016-04-19 19:49:15 -07:00
obj/builtin_test.o : src /signal .h src /io .h src /proc .h src /parse_tree .h
2016-07-03 05:04:19 -07:00
obj/builtin_test.o : src /parse_constants .h src /tokenizer .h src /wutil .h
obj/builtin_ulimit.o : config .h src /builtin .h src /common .h src /fallback .h
2016-04-19 19:49:15 -07:00
obj/builtin_ulimit.o : src /signal .h src /io .h src /util .h src /wgetopt .h
obj/builtin_ulimit.o : src /wutil .h
2016-07-03 05:04:19 -07:00
obj/color.o : config .h src /color .h src /common .h src /fallback .h src /signal .h
obj/common.o : config .h src /signal .h src /common .h src /fallback .h src /expand .h
obj/common.o : src /parse_constants .h src /wildcard .h src /complete .h src /wutil .h
obj/complete.o : config .h src /autoload .h src /common .h src /fallback .h
obj/complete.o : src /signal .h src /lru .h src /builtin .h src /complete .h src /env .h
obj/complete.o : src /exec .h src /expand .h src /parse_constants .h src /function .h
obj/complete.o : src /event .h src /iothread .h src /parse_tree .h src /tokenizer .h
obj/complete.o : src /parse_util .h src /parser .h src /proc .h src /io .h src /path .h
obj/complete.o : src /util .h src /wildcard .h src /wutil .h
obj/env.o : config .h src /common .h src /fallback .h src /signal .h src /env .h
obj/env.o : src /env_universal_common .h src /wutil .h src /event .h src /expand .h
obj/env.o : src /parse_constants .h src /fish_version .h src /history .h src /input .h
obj/env.o : src /input_common .h src /path .h src /proc .h src /io .h src /parse_tree .h
obj/env.o : src /tokenizer .h src /reader .h src /complete .h src /highlight .h
obj/env.o : src /color .h src /sanity .h
obj/env_universal_common.o : config .h src /common .h src /fallback .h src /signal .h
obj/env_universal_common.o : src /env .h src /env_universal_common .h src /wutil .h
obj/env_universal_common.o : src /utf 8.h src /util .h
obj/event.o : config .h src /signal .h src /common .h src /fallback .h src /event .h
obj/event.o : src /input_common .h src /io .h src /parser .h src /expand .h
obj/event.o : src /parse_constants .h src /parse_tree .h src /tokenizer .h
obj/event.o : src /proc .h src /wutil .h
obj/exec.o : config .h src /signal .h src /builtin .h src /common .h src /fallback .h
obj/exec.o : src /env .h src /exec .h src /function .h src /event .h src /io .h
obj/exec.o : src /parse_tree .h src /parse_constants .h src /tokenizer .h
obj/exec.o : src /parser .h src /expand .h src /proc .h src /postfork .h src /reader .h
obj/exec.o : src /complete .h src /highlight .h src /color .h src /wutil .h
obj/expand.o : config .h src /common .h src /fallback .h src /signal .h
obj/expand.o : src /complete .h src /env .h src /exec .h src /expand .h
obj/expand.o : src /parse_constants .h src /iothread .h src /parse_util .h
obj/expand.o : src /tokenizer .h src /path .h src /proc .h src /io .h src /parse_tree .h
obj/expand.o : src /util .h src /wildcard .h src /wutil .h
2016-04-27 14:56:46 -07:00
obj/fallback.o : config .h src /signal .h src /fallback .h src /util .h
2016-07-03 05:04:19 -07:00
obj/fish.o : config .h src /builtin .h src /common .h src /fallback .h src /signal .h
obj/fish.o : src /env .h src /event .h src /expand .h src /parse_constants .h
obj/fish.o : src /fish_version .h src /function .h src /history .h src /wutil .h
obj/fish.o : src /input .h src /input_common .h src /io .h src /parser .h
obj/fish.o : src /parse_tree .h src /tokenizer .h src /proc .h src /path .h
obj/fish.o : src /reader .h src /complete .h src /highlight .h src /color .h
obj/fish.o : src /wildcard .h
obj/fish_indent.o : config .h src /color .h src /common .h src /fallback .h
obj/fish_indent.o : src /signal .h src /env .h src /fish_version .h src /highlight .h
obj/fish_indent.o : src /input .h src /output .h src /parse_constants .h
2016-04-19 19:49:15 -07:00
obj/fish_indent.o : src /parse_tree .h src /tokenizer .h src /print_help .h
2016-07-03 05:04:19 -07:00
obj/fish_indent.o : src /wutil .h
obj/fish_key_reader.o : config .h src /signal .h src /common .h src /fallback .h
2016-09-05 02:04:25 -07:00
obj/fish_key_reader.o : src /env .h src /input .h src /input_common .h
obj/fish_key_reader.o : src /print_help .h src /proc .h src /io .h src /parse_tree .h
obj/fish_key_reader.o : src /parse_constants .h src /tokenizer .h src /reader .h
2016-07-03 05:04:19 -07:00
obj/fish_key_reader.o : src /complete .h src /highlight .h src /color .h src /wutil .h
obj/fish_tests.o : config .h src /signal .h src /builtin .h src /common .h
obj/fish_tests.o : src /fallback .h src /color .h src /complete .h src /env .h
obj/fish_tests.o : src /env_universal_common .h src /wutil .h src /event .h
obj/fish_tests.o : src /expand .h src /parse_constants .h src /function .h
obj/fish_tests.o : src /highlight .h src /history .h src /input .h
obj/fish_tests.o : src /input_common .h src /io .h src /iothread .h src /lru .h
obj/fish_tests.o : src /pager .h src /reader .h src /screen .h src /parse_tree .h
obj/fish_tests.o : src /tokenizer .h src /parse_util .h src /parser .h src /proc .h
obj/fish_tests.o : src /path .h src /utf 8.h src /wcstringutil .h src /wildcard .h
2015-07-25 13:23:18 -07:00
obj/fish_version.o : src /fish_version .h
2016-07-03 05:04:19 -07:00
obj/function.o : config .h src /autoload .h src /common .h src /fallback .h
obj/function.o : src /signal .h src /lru .h src /env .h src /event .h src /function .h
obj/function.o : src /intern .h src /parser_keywords .h src /reader .h
obj/function.o : src /complete .h src /highlight .h src /color .h
obj/function.o : src /parse_constants .h src /wutil .h
obj/highlight.o : config .h src /builtin .h src /common .h src /fallback .h
obj/highlight.o : src /signal .h src /color .h src /env .h src /expand .h
obj/highlight.o : src /parse_constants .h src /function .h src /event .h
obj/highlight.o : src /highlight .h src /history .h src /wutil .h src /output .h
obj/highlight.o : src /parse_tree .h src /tokenizer .h src /parse_util .h src /path .h
obj/highlight.o : src /wildcard .h src /complete .h
obj/history.o : config .h src /common .h src /fallback .h src /signal .h src /env .h
2016-09-05 02:04:25 -07:00
obj/history.o : src /history .h src /wutil .h src /io .h src /iothread .h src /lru .h
2016-04-19 19:49:15 -07:00
obj/history.o : src /parse_constants .h src /parse_tree .h src /tokenizer .h
obj/history.o : src /path .h src /reader .h src /complete .h src /highlight .h
2016-09-05 02:04:25 -07:00
obj/history.o : src /color .h
2016-07-03 05:04:19 -07:00
obj/input.o : config .h src /common .h src /fallback .h src /signal .h src /env .h
obj/input.o : src /event .h src /input .h src /input_common .h src /io .h src /output .h
obj/input.o : src /color .h src /parser .h src /expand .h src /parse_constants .h
obj/input.o : src /parse_tree .h src /tokenizer .h src /proc .h src /reader .h
obj/input.o : src /complete .h src /highlight .h src /wutil .h
obj/input_common.o : config .h src /common .h src /fallback .h src /signal .h
obj/input_common.o : src /env .h src /env_universal_common .h src /wutil .h
obj/input_common.o : src /input_common .h src /iothread .h src /util .h
obj/intern.o : config .h src /common .h src /fallback .h src /signal .h src /intern .h
obj/io.o : config .h src /common .h src /fallback .h src /signal .h src /exec .h
obj/io.o : src /io .h src /wutil .h
obj/iothread.o : config .h src /signal .h src /common .h src /fallback .h
obj/iothread.o : src /iothread .h
obj/kill.o : config .h src /common .h src /fallback .h src /signal .h
obj/output.o : config .h src /color .h src /common .h src /fallback .h src /signal .h
obj/output.o : src /env .h src /output .h src /wutil .h
obj/pager.o : config .h src /common .h src /fallback .h src /signal .h src /complete .h
obj/pager.o : src /highlight .h src /color .h src /env .h src /pager .h src /reader .h
obj/pager.o : src /parse_constants .h src /screen .h src /util .h src /wutil .h
obj/parse_execution.o : config .h src /builtin .h src /common .h src /fallback .h
obj/parse_execution.o : src /signal .h src /complete .h src /env .h src /event .h
obj/parse_execution.o : src /exec .h src /expand .h src /parse_constants .h
obj/parse_execution.o : src /function .h src /io .h src /parse_execution .h
obj/parse_execution.o : src /parse_tree .h src /tokenizer .h src /proc .h
obj/parse_execution.o : src /parse_util .h src /parser .h src /path .h src /reader .h
obj/parse_execution.o : src /highlight .h src /color .h src /util .h src /wildcard .h
obj/parse_execution.o : src /wutil .h
obj/parse_productions.o : config .h src /common .h src /fallback .h src /signal .h
2016-04-19 19:49:15 -07:00
obj/parse_productions.o : src /parse_constants .h src /parse_productions .h
2016-07-03 05:04:19 -07:00
obj/parse_productions.o : src /parse_tree .h src /tokenizer .h
obj/parse_tree.o : config .h src /common .h src /fallback .h src /signal .h
2015-09-12 12:59:40 -07:00
obj/parse_tree.o : src /parse_constants .h src /parse_productions .h
2016-07-03 05:04:19 -07:00
obj/parse_tree.o : src /parse_tree .h src /tokenizer .h src /proc .h src /io .h
obj/parse_tree.o : src /wutil .h
obj/parse_util.o : config .h src /builtin .h src /common .h src /fallback .h
obj/parse_util.o : src /signal .h src /expand .h src /parse_constants .h
obj/parse_util.o : src /parse_tree .h src /tokenizer .h src /parse_util .h
obj/parse_util.o : src /util .h src /wildcard .h src /complete .h src /wutil .h
obj/parser.o : config .h src /common .h src /fallback .h src /signal .h src /env .h
obj/parser.o : src /event .h src /expand .h src /parse_constants .h src /function .h
obj/parser.o : src /intern .h src /parse_execution .h src /io .h src /parse_tree .h
obj/parser.o : src /tokenizer .h src /proc .h src /parse_util .h src /parser .h
obj/parser.o : src /reader .h src /complete .h src /highlight .h src /color .h
obj/parser.o : src /sanity .h src /wutil .h
obj/parser_keywords.o : config .h src /common .h src /fallback .h src /signal .h
2016-04-19 19:49:15 -07:00
obj/parser_keywords.o : src /parser_keywords .h
2016-07-03 05:04:19 -07:00
obj/path.o : config .h src /common .h src /fallback .h src /signal .h src /env .h
obj/path.o : src /expand .h src /parse_constants .h src /path .h src /wutil .h
obj/postfork.o : config .h src /signal .h src /common .h src /fallback .h src /exec .h
obj/postfork.o : src /io .h src /iothread .h src /postfork .h src /proc .h
obj/postfork.o : src /parse_tree .h src /parse_constants .h src /tokenizer .h
obj/postfork.o : src /wutil .h
obj/print_help.o : config .h src /common .h src /fallback .h src /signal .h
2015-07-25 13:23:18 -07:00
obj/print_help.o : src /print_help .h
2016-07-03 05:04:19 -07:00
obj/proc.o : config .h src /signal .h src /common .h src /fallback .h src /event .h
obj/proc.o : src /io .h src /output .h src /color .h src /parse_tree .h
obj/proc.o : src /parse_constants .h src /tokenizer .h src /parser .h src /expand .h
obj/proc.o : src /proc .h src /reader .h src /complete .h src /highlight .h src /env .h
obj/proc.o : src /sanity .h src /util .h src /wutil .h
obj/reader.o : config .h src /signal .h src /color .h src /common .h src /fallback .h
obj/reader.o : src /complete .h src /env .h src /event .h src /exec .h src /expand .h
obj/reader.o : src /parse_constants .h src /function .h src /highlight .h
obj/reader.o : src /history .h src /wutil .h src /input .h src /input_common .h
obj/reader.o : src /intern .h src /io .h src /iothread .h src /kill .h src /output .h
obj/reader.o : src /pager .h src /reader .h src /screen .h src /parse_tree .h
obj/reader.o : src /tokenizer .h src /parse_util .h src /parser .h src /proc .h
obj/reader.o : src /sanity .h src /util .h
obj/sanity.o : config .h src /common .h src /fallback .h src /signal .h src /history .h
obj/sanity.o : src /wutil .h src /kill .h src /proc .h src /io .h src /parse_tree .h
obj/sanity.o : src /parse_constants .h src /tokenizer .h src /reader .h
obj/sanity.o : src /complete .h src /highlight .h src /color .h src /env .h
obj/sanity.o : src /sanity .h
obj/screen.o : config .h src /common .h src /fallback .h src /signal .h src /env .h
obj/screen.o : src /highlight .h src /color .h src /output .h src /pager .h
obj/screen.o : src /complete .h src /reader .h src /parse_constants .h src /screen .h
obj/screen.o : src /util .h
obj/signal.o : config .h src /signal .h src /common .h src /fallback .h src /event .h
obj/signal.o : src /proc .h src /io .h src /parse_tree .h src /parse_constants .h
obj/signal.o : src /tokenizer .h src /reader .h src /complete .h src /highlight .h
obj/signal.o : src /color .h src /env .h src /wutil .h
obj/tokenizer.o : config .h src /common .h src /fallback .h src /signal .h
obj/tokenizer.o : src /tokenizer .h src /wutil .h
obj/utf8.o : config .h src /utf 8.h
obj/util.o : config .h src /common .h src /fallback .h src /signal .h src /util .h
2016-04-27 14:56:46 -07:00
obj/util.o : src /wutil .h
2016-07-03 05:04:19 -07:00
obj/wcstringutil.o : config .h src /common .h src /fallback .h src /signal .h
2016-04-19 19:49:15 -07:00
obj/wcstringutil.o : src /wcstringutil .h
2015-07-26 10:20:13 +08:00
obj/wgetopt.o : config .h src /common .h src /fallback .h src /signal .h
obj/wgetopt.o : src /wgetopt .h src /wutil .h
2016-07-03 05:04:19 -07:00
obj/wildcard.o : config .h src /common .h src /fallback .h src /signal .h
obj/wildcard.o : src /complete .h src /expand .h src /parse_constants .h
obj/wildcard.o : src /reader .h src /highlight .h src /color .h src /env .h
obj/wildcard.o : src /wildcard .h src /wutil .h
2016-04-19 19:49:15 -07:00
obj/wutil.o : config .h src /common .h src /fallback .h src /signal .h src /wutil .h