diff options
Diffstat (limited to 'Makefile.in')
-rw-r--r-- | Makefile.in | 452 |
1 files changed, 452 insertions, 0 deletions
diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 00000000..99ccd2a0 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,452 @@ +# +# Copyright (C) 2005 Axel Liljencrantz +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +# +# 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. +# + +# Compiler flags + +CC := @CC@ +CFLAGS := @CFLAGS@ @INCLUDEDIR@ -Wall -std=gnu99 -fno-strict-aliasing +CPPFLAGS=@CPPFLAGS@ +LDFLAGS:= -l@CURSESLIB@ @LDFLAGS@ @LIBDIR@ +INSTALL:=@INSTALL@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +mandir = @mandir@ +sysconfdir = @sysconfdir@ +fishdir = @fishdir@ +fishfile = @fishfile@ +fishinputfile = @fishinputfile@ +docdir = @docdir@ + +# All objects used by fish, that are compiled from an ordinary .c file +# using an ordinary .h file. +COMMON_OBJS := function.o builtin.o common.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 util.o wildcard.o wgetopt.o wutil.o input.o \ + output.o intern.o env_universal.o env_universal_common.o input_common.o + +# builtin_help.h exists, but builtin_help.c is autogenerated +COMMON_OBJS_WITH_HEADER := builtin_help.o + +# main.c exists, but main.h does not, etc. +COMMON_OBJS_WITH_CODE := builtin_set.o builtin_commandline.o + +# All objects that the system needs to build fish +FISH_OBJS := $(COMMON_OBJS) $(COMMON_OBJS_WITH_CODE) $(COMMON_OBJS_WITH_HEADER) main.o +FISH_PAGER_OBJS := fish_pager.o common.o output.o util.o wutil.o tokenizer.o input_common.o env_universal.o env_universal_common.o +FISH_TESTS_OBJS := $(COMMON_OBJS) $(COMMON_OBJS_WITH_CODE) $(COMMON_OBJS_WITH_HEADER) fish_tests.o +FISHD_OBJS := fishd.o env_universal_common.o common.o util.o wutil.o \ + + +#All objects that the system needs to build mimedb +MIME_OBJS := mimedb.o xdgmimealias.o xdgmime.o xdgmimeglob.o \ + xdgmimeint.o xdgmimemagic.o xdgmimeparent.o + +# +# Files containing documentation for builtins. Should be listed +# alphabetically, since this is the order in which they will be written +# in the help file. +# + +BUILTIN_DOC_SRC := doc_src/source.txt doc_src/and.txt \ + doc_src/begin.txt doc_src/bg.txt doc_src/bind.txt \ + doc_src/break.txt doc_src/builtin.txt doc_src/case.txt \ + doc_src/cd.txt doc_src/command.txt doc_src/commandline.txt \ + doc_src/complete.txt doc_src/continue.txt doc_src/else.txt \ + doc_src/end.txt doc_src/eval.txt doc_src/exec.txt doc_src/exit.txt \ + doc_src/fg.txt doc_src/for.txt doc_src/function.txt \ + doc_src/functions.txt doc_src/if.txt doc_src/jobs.txt \ + doc_src/not.txt doc_src/or.txt doc_src/random.txt \ + doc_src/return.txt doc_src/read.txt doc_src/set.txt \ + doc_src/switch.txt doc_src/while.txt + +# +# Files generated by running doxygen on the files in $(BUILTIN_DOC_SRC) +# +BUILTIN_DOC_HDR := $(BUILTIN_DOC_SRC:.txt=.doxygen) + +# +# Files containing documentation for external commands. Should be listed +# alphabetically, since this is the order in which they will be written +# in the help file. +# + +CMD_DOC_SRC := doc_src/count.txt doc_src/dirh.txt doc_src/dirs.txt \ + doc_src/help.txt doc_src/mimedb.txt doc_src/nextd.txt \ + doc_src/open.txt doc_src/popd.txt doc_src/prevd.txt \ + doc_src/pushd.txt doc_src/set_color.txt doc_src/tokenize.txt + +# +# Files generated by running doxygen on the files in $(CMD_DOC_SRC) +# +CMD_DOC_HDR := $(CMD_DOC_SRC:.txt=.doxygen) + +TEST_IN := $(wildcard tests/test*.in) + +# +# Files that should be added to the tar archives +# + +# Files in ./doc_src/ +DOC_SRC_DIR_FILES := doc_src/Doxyfile.in doc_src/doc.hdr \ + $(BUILTIN_DOC_SRC) $(CMD_DOC_SRC) doc_src/fish.1.in + +# Files in ./ +MAIN_DIR_FILES := Doxyfile Doxyfile.user Makefile.in configure \ + configure.ac config.h.in install-sh set_color.c count.c \ + key_reader.c tokenize.c gen_hdr.sh gen_hdr2.c $(MIME_OBJS:.o=.h) \ + $(MIME_OBJS:.o=.c) $(COMMON_OBJS_WITH_HEADER:.o=.h) \ + $(COMMON_OBJS:.o=.h) $(COMMON_OBJS_WITH_CODE:.o=.c) \ + $(COMMON_OBJS:.o=.c) builtin_help.hdr fish.spec.in INSTALL README \ + user_doc.head.html xsel-0.9.6.tar ChangeLog config.sub \ + config.guess fish_tests.c main.c fish_pager.c fishd.c + +# Files in ./init/ +INIT_DIR_FILES :=init/fish.in init/fish_complete.fish \ + init/fish_function.fish init/fish_inputrc \ + init/fish_interactive.fish + +# 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 + +COMPLETIONS_DIR_FILES := $(wildcard init/completions/*.fish) + +# Programs to build +PROGRAMS:=fish set_color tokenize @XSEL@ mimedb count fish_pager fishd + +# Manuals to install +MANUALS:=doc_src/fish.1 @XSEL_MAN_PATH@ \ + doc_src/builtin_doc/man/man1/mimedb.1 \ + doc_src/builtin_doc/man/man1/set_color.1 \ + doc_src/builtin_doc/man/man1/tokenize.1 \ + doc_src/builtin_doc/man/man1/count.1 + +#Make everything needed for installing fish +all: $(PROGRAMS) user_doc + +# User documentation, describing the features of the fish shell. +user_doc: doc.h Doxyfile.user user_doc.head.html + doxygen Doxyfile.user + +#Source code documentation. Also includes user documentation. +doc: *.h *.c doc.h Doxyfile builtin_help.c + doxygen; + +# PDF version of the source code documentation. +doc/refman.pdf: doc + cd doc/latex; + make; + mv refman.pdf ..; + cd ../..; + rm -r doc/latex; + +test: $(PROGRAMS) fish_tests + ./fish_tests; cd tests; ../fish <test.fish; + +xsel-0.9.6: + tar -xf xsel-0.9.6.tar + +xsel-0.9.6/xsel: xsel-0.9.6 + cd xsel-0.9.6; ./configure; make + +# doc.h is a compilation of the various snipptes of text used both for +# the user documentation and for internal help functions into a single +# file that can be parsed dy Doxygen to generate the user +# documentation. +doc.h:$(BUILTIN_DOC_SRC) $(CMD_DOC_SRC) doc_src/doc.hdr + cat doc_src/doc.hdr >doc.h; + echo "/** \page builtins Builtin commands" >>doc.h; + cat $(BUILTIN_DOC_SRC) >>doc.h; + echo "*/" >>doc.h + echo "/** \page commands External commands" >>doc.h; + echo "\c fish is shipped with commands which do not use any internal parts of the shell, and are therefore not written as builtins, but separate commands." >>doc.h + cat $(CMD_DOC_SRC) >>doc.h; + echo "*/" >>doc.h + +# This rule creates complete doxygen headers from each of the various +# snipptes of text used both for the user documentation and for +# internal help functions, that can be parsed to Doxygen to generate +# the internal help function text. +%.doxygen:%.txt + echo "/** \page " `basename $*` >$@; + cat $*.txt >>$@; + echo "*/" >>$@ + +# Generate the internal help functions by making doxygen create +# man-pages which are then converted into C code. The convertion path +# looks like this: +# +# .txt file +# || +# (make) +# || +# \/ +# .doxygen file +# || +# (doxygen) +# || +# \/ +# man file +# || +# (man) +# || +# \/ +# formated text +# with escape +# sequences +# || +# \/ +# (gen_hdr2) +# || +# \/ +# .c file +# +# Which is an awful, clunky and ugly way of producing +# documentation. There ought to be something simpler. + +builtin_help.c: $(BUILTIN_DOC_HDR) doc_src/count.doxygen gen_hdr2 gen_hdr.sh builtin_help.hdr $(CMD_DOC_HDR) + cd doc_src; doxygen; cd ..; + cp builtin_help.hdr builtin_help.c; + for i in $(BUILTIN_DOC_HDR) doc_src/count.doxygen ; do \ + echo ' hash_put( &tbl, L"'`basename $$i .doxygen`'",' >>$@; \ + ./gen_hdr.sh $$i >>$@; \ + echo " );" >>$@; \ + echo >>$@; \ + done; + echo "}" >>builtin_help.c + +# +# Generate help texts for external fish commands, like set_color and +# mimedb. Depends on builtin_help.c to make sure doxygen gets run to +# generate the man files. +# +%.c : %.doxygen gen_hdr2 builtin_help.c + echo "// This file was automatically generated, do not edit" >$@ + echo "#include <stdlib.h>" >>$@ + echo "#include <stdio.h>" >>$@ + echo >>$@ + echo "void print_help()" >>$@ + echo "{" >>$@ + echo ' printf( "%s",' >>$@ + ./gen_hdr.sh $*.doxygen >>$@ + echo ");" >>$@ + echo "}" >>$@ +#man -- doc_src/builtin_doc/man/man1/`basename $@ .c`.1 | cat -s | ./gen_hdr2 >>$@ + +install: all + $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) + for i in $(PROGRAMS); do\ + $(INSTALL) -m 755 $$i $(DESTDIR)$(bindir) ; \ + done; + $(INSTALL) -m 755 -d $(DESTDIR)$(sysconfdir)$(fishdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(sysconfdir)$(fishdir)/completions + $(INSTALL) -m 644 init/fish $(DESTDIR)$(sysconfdir)$(fishfile) + for i in init/fish_interactive.fish init/fish_function.fish init/fish_complete.fish ; do \ + $(INSTALL) -m 644 $$i $(DESTDIR)$(sysconfdir)$(fishdir); \ + done; + for i in $(COMPLETIONS_DIR_FILES); do \ + $(INSTALL) -m 644 $$i $(DESTDIR)$(sysconfdir)$(fishdir)/completions/; \ + done; + $(INSTALL) -m 644 init/fish_inputrc $(DESTDIR)$(sysconfdir)$(fishinputfile); + $(INSTALL) -m 755 -d $(DESTDIR)$(docdir) + for i in user_doc/html/* ChangeLog; do \ + $(INSTALL) -m 644 $$i $(DESTDIR)$(docdir); \ + done; + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 + for i in $(MANUALS); do \ + $(INSTALL) -m 644 $$i $(DESTDIR)$(mandir)/man1/; \ + done; + @echo If you want to use fish as the default shell, remember to first + @echo add the line \'$(DESTDIR)$(bindir)/fish\' to the file \'/etc/shells\'. + +uninstall: + for i in $(PROGRAMS); do \ + rm -f $(DESTDIR)$(bindir)/$$i; \ + done; + rm -f $(DESTDIR)$(bindir)/xsel + rm -f $(DESTDIR)$(sysconfdir)$(fishfile) + rm -f $(DESTDIR)$(sysconfdir)$(fishinputfile) + rm -r $(DESTDIR)$(sysconfdir)$(fishdir) + rm -r $(DESTDIR)$(docdir) + for i in fish.1* @XSEL_MAN@ mimedb.1* set_color.1* tokenize.1* count.1*; do \ + rm $(DESTDIR)$(mandir)/man1/$$i; \ + done; + +# The fish shell +fish: $(FISH_OBJS) + $(CC) $(FISH_OBJS) $(LDFLAGS) -o $@ + +fish_pager: $(FISH_PAGER_OBJS) + $(CC) $(FISH_PAGER_OBJS) $(LDFLAGS) -o $@ + +fishd: $(FISHD_OBJS) + $(CC) $(FISHD_OBJS) $(LDFLAGS) -o $@ + +fish_tests: $(FISH_TESTS_OBJS) + $(CC) $(FISH_TESTS_OBJS) $(LDFLAGS) -o $@ + + +mimedb: $(MIME_OBJS) util.o common.o doc_src/mimedb.c + $(CC) ${MIME_OBJS} util.o common.o doc_src/mimedb.c $(LDFLAGS) -o $@ + +set_color: set_color.o doc_src/set_color.c + $(CC) set_color.o doc_src/set_color.c $(LDFLAGS) -o $@ + +tokenize: tokenize.o doc_src/tokenize.c + $(CC) tokenize.o doc_src/tokenize.c $(LDFLAGS) -o $@ + +# Test program for the tokenizer library +tokenizer_test: tokenizer.c tokenizer.h util.o wutil.o common.o + $(CC) ${CFLAGS} tokenizer.c util.o wutil.o common.o -D TOKENIZER_TEST $(LDFLAGS) -o $@ + +depend: + makedepend -fMakefile.in -Y *.c + +# 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) $(INIT_DIR_FILES) $(TEST_DIR_FILES) $(COMPLETIONS_DIR_FILES) ChangeLog + rm -rf fish-@PACKAGE_VERSION@ + $(INSTALL) -d fish-@PACKAGE_VERSION@ + $(INSTALL) -d fish-@PACKAGE_VERSION@/doc_src + $(INSTALL) -d fish-@PACKAGE_VERSION@/init + $(INSTALL) -d fish-@PACKAGE_VERSION@/init/completions + $(INSTALL) -d fish-@PACKAGE_VERSION@/tests + cp -f $(DOC_SRC_DIR_FILES) fish-@PACKAGE_VERSION@/doc_src + cp -f $(MAIN_DIR_FILES) fish-@PACKAGE_VERSION@/ + cp -f $(INIT_DIR_FILES) fish-@PACKAGE_VERSION@/init/ + cp -f $(COMPLETIONS_DIR_FILES) fish-@PACKAGE_VERSION@/init/completions/ + cp -f $(TESTS_DIR_FILES) fish-@PACKAGE_VERSION@/tests/ + tar -c fish-@PACKAGE_VERSION@ >fish-@PACKAGE_VERSION@.tar + rm -rf fish-@PACKAGE_VERSION@ + +fish-@PACKAGE_VERSION@.tar.gz: fish-@PACKAGE_VERSION@.tar + gzip -f --best -c fish-@PACKAGE_VERSION@.tar >fish-@PACKAGE_VERSION@.tar.gz + +fish-@PACKAGE_VERSION@.tar.bz2: fish-@PACKAGE_VERSION@.tar + bzip2 -f --best -k fish-@PACKAGE_VERSION@.tar + +# Create .rpm file for the current systems architecture and an +# .src.rpm file. +rpm: fish-@PACKAGE_VERSION@.tar.bz2 + 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 . + +clean: + rm -f *.o doc.h doc_src/*.doxygen doc_src/*.c builtin_help.c + rm -f config.status config.log config.h Makefile + rm -f tokenizer_test fish key_reader set_color tokenize gen_hdr2 mimedb + rm -f fish-@PACKAGE_VERSION@.tar + rm -f fish-@PACKAGE_VERSION@.tar.gz + rm -f fish-@PACKAGE_VERSION@.tar.bz2 + rm -rf doc; + rm -rf user_doc; + rm -rf doc_src/builtin_doc + rm -rf fish-@PACKAGE_VERSION@ + rm -rf xsel-0.9.6/ + +# DO NOT DELETE THIS LINE -- make depend depends on it. + +builtin.o: config.h util.h wutil.h builtin.h function.h complete.h proc.h +builtin.o: parser.h reader.h env.h expand.h common.h wgetopt.h sanity.h +builtin.o: tokenizer.h builtin_help.h wildcard.h input_common.h input.h +builtin.o: intern.h +builtin_commandline.o: config.h util.h builtin.h common.h wgetopt.h reader.h +builtin_commandline.o: proc.h parser.h tokenizer.h input_common.h input.h +builtin_help.o: config.h util.h common.h builtin_help.h +builtin_set.o: config.h util.h builtin.h env.h expand.h common.h wgetopt.h +builtin_set.o: proc.h parser.h +common.o: config.h util.h wutil.h common.h expand.h proc.h wildcard.h +common.o: parser.h +complete.o: config.h util.h tokenizer.h wildcard.h proc.h parser.h function.h +complete.o: complete.h builtin.h env.h exec.h expand.h common.h reader.h +complete.o: history.h intern.h wutil.h +env.o: config.h util.h wutil.h proc.h common.h env.h sanity.h expand.h +env.o: history.h reader.h parser.h env_universal.h env_universal_common.h +env_universal.o: util.h common.h wutil.h env_universal_common.h +env_universal_common.o: util.h common.h wutil.h env_universal_common.h +exec.o: config.h util.h common.h wutil.h proc.h exec.h parser.h builtin.h +exec.o: function.h env.h wildcard.h sanity.h expand.h env_universal.h +exec.o: env_universal_common.h +expand.o: config.h util.h common.h wutil.h env.h proc.h parser.h expand.h +expand.o: wildcard.h exec.h tokenizer.h complete.h +fishd.o: util.h common.h wutil.h env_universal_common.h +fish_pager.o: config.h util.h wutil.h common.h complete.h output.h +fish_pager.o: input_common.h env_universal.h env_universal_common.h +fish_tests.o: config.h util.h common.h proc.h reader.h builtin.h function.h +fish_tests.o: complete.h wutil.h env.h expand.h parser.h tokenizer.h +function.o: config.h util.h function.h proc.h parser.h common.h intern.h +highlight.o: config.h util.h wutil.h highlight.h tokenizer.h proc.h parser.h +highlight.o: builtin.h function.h env.h expand.h sanity.h common.h complete.h +highlight.o: output.h +history.o: config.h util.h wutil.h history.h common.h reader.h env.h sanity.h +input.o: config.h util.h wutil.h reader.h proc.h common.h sanity.h +input.o: input_common.h input.h parser.h env.h expand.h +input_common.o: config.h util.h common.h wutil.h input_common.h +input_common.o: env_universal.h env_universal_common.h +intern.o: config.h util.h common.h intern.h +kill.o: config.h util.h wutil.h kill.h proc.h sanity.h common.h env.h +kill.o: expand.h exec.h parser.h +main.o: config.h util.h common.h reader.h builtin.h function.h complete.h +main.o: wutil.h env.h sanity.h proc.h parser.h expand.h intern.h +mimedb.o: config.h xdgmime.h util.h +output.o: config.h util.h wutil.h expand.h common.h output.h highlight.h +parser.o: config.h util.h common.h wutil.h proc.h parser.h tokenizer.h exec.h +parser.o: wildcard.h function.h builtin.h builtin_help.h env.h expand.h +parser.o: reader.h sanity.h +proc.o: config.h util.h wutil.h proc.h common.h reader.h sanity.h env.h +reader.o: config.h util.h wutil.h highlight.h reader.h proc.h parser.h +reader.o: complete.h history.h common.h sanity.h env.h exec.h expand.h +reader.o: tokenizer.h kill.h input_common.h input.h function.h output.h +sanity.o: config.h util.h common.h sanity.h proc.h history.h reader.h kill.h +sanity.o: wutil.h +set_color.o: config.h +tokenize.o: config.h +tokenizer.o: config.h util.h wutil.h tokenizer.h common.h wildcard.h +util.o: config.h util.h common.h wutil.h +wgetopt.o: config.h wgetopt.h wutil.h +wildcard.o: config.h util.h wutil.h complete.h common.h wildcard.h reader.h +wildcard.o: expand.h +wutil.o: config.h util.h common.h wutil.h +xdgmimealias.o: xdgmimealias.h xdgmime.h xdgmimeint.h +xdgmime.o: xdgmime.h xdgmimeint.h xdgmimeglob.h xdgmimemagic.h xdgmimealias.h +xdgmime.o: xdgmimeparent.h +xdgmimeglob.o: xdgmimeglob.h xdgmime.h xdgmimeint.h +xdgmimeint.o: xdgmimeint.h xdgmime.h +xdgmimemagic.o: xdgmimemagic.h xdgmime.h xdgmimeint.h +xdgmimeparent.o: xdgmimeparent.h xdgmime.h xdgmimeint.h |