diff options
Diffstat (limited to 'Makefile.in')
-rw-r--r-- | Makefile.in | 125 |
1 files changed, 65 insertions, 60 deletions
diff --git a/Makefile.in b/Makefile.in index 1f2265da..88155b2d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -23,6 +23,11 @@ # applications, install them, and recalculate dependencies. # +# This is the default value for SHELL but I like to be explicit about such +# things. Especially in a project like fish where someone might otherwise +# think fish will be used to execute make recipes. +SHELL = /bin/sh + # Used by docdir PACKAGE_TARNAME = @PACKAGE_TARNAME@ @@ -113,7 +118,6 @@ BUILTIN_FILES := src/builtin_set.cpp src/builtin_commandline.cpp \ # # All objects that the system needs to build fish_tests # - FISH_TESTS_OBJS := $(FISH_OBJS) obj/fish_tests.o @@ -291,12 +295,29 @@ doc/refman.pdf: doc mv refman.pdf ..; rm -r doc/latex; +# 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`. +test-prep: + rm -rf test + mkdir test test/data test/home test/temp +ifdef DESTDIR + ln -s $(DESTDIR) test/root +else + mkdir test/root +endif +.PHONY: test-prep +# The test target runs both the low level code tests and the high level script +# tests. # -# This target runs both the low level code tests and the high level script tests. -# - -test: test_low_level test_high_level +# Note that doing `make DESTDIR=/some/path/ test` overrides this assignment. +test: DESTDIR = $(PWD)/test/root/ +test: prefix = . +test: test-prep install-force test_low_level test_high_level + @rm -f /tmp/file_truncation_test.txt /tmp/tee_test.txt /tmp/fish_foo.txt + @rm -rf /tmp/is_potential_path_test .PHONY: test # We want the various tests to run serially so their output doesn't mix @@ -319,12 +340,12 @@ test_low_level: fish_tests $(call filter_up_to,test_low_level,$(active_test_goal test_high_level: test_fishscript test_interactive .PHONY: test_high_level -test_fishscript: $(PROGRAMS) $(call filter_up_to,test_fishscript,$(active_test_goals)) - cd tests && ../fish test.fish +test_fishscript: $(call filter_up_to,test_fishscript,$(active_test_goals)) + cd tests; ../test/root/bin/fish test.fish .PHONY: test_fishscript -test_interactive: $(PROGRAMS) $(call filter_up_to,test_interactive,$(active_test_goals)) - cd tests && ../fish interactive.fish +test_interactive: $(call filter_up_to,test_interactive,$(active_test_goals)) + cd tests; ../test/root/bin/fish interactive.fish .PHONY: test_interactive # @@ -582,7 +603,6 @@ check-legacy-binaries: @true; .PHONY: check-legacy-binaries - # # 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 @@ -593,12 +613,30 @@ 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 check-legacy-binaries + @echo fish is now installed on your system. + @echo To run fish, type \'fish\' in your terminal. + @echo + @if type chsh >/dev/null 2>&1; then \ + echo To use fish as your login shell:; \ + grep -q -- "$(DESTDIR)$(bindir)/fish" /etc/shells || echo \* add the line \'$(DESTDIR)$(bindir)/fish\' to the file \'/etc/shells\'.; \ + echo \* use the command \'chsh -s $(DESTDIR)$(bindir)/fish\'.; \ + 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; + @echo To set your colors, run \'fish_config\' + @echo To scan your man pages for completions, run \'fish_update_completions\' + @echo To autocomplete command suggestions press Ctrl + F or right arrow key. + @echo + @echo Have fun! .PHONY: install # @@ -611,11 +649,10 @@ xcode-install: .PHONY: xcode-install # -# Force installation, even in presense of incompatible previous -# version. This may fail. -# These 'true' lines are to prevent installs from failing for (e.g.) missing man pages. +# Force installation, even in presense of incompatible previous version. This +# may fail. These 'true' lines are to prevent installs from failing for (e.g.) +# missing man pages. # - install-force: all install-translations $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) for i in $(PROGRAMS); do\ @@ -685,25 +722,6 @@ install-force: all install-translations $(INSTALL) -m 644 $$i $(DESTDIR)$(mandir)/man1/; \ true; \ done; - @echo fish is now installed on your system. - @echo To run fish, type \'fish\' in your terminal. - @echo - @if type chsh >/dev/null 2>&1; then \ - echo To use fish as your login shell:; \ - grep -q -- "$(DESTDIR)$(bindir)/fish" /etc/shells || echo \* add the line \'$(DESTDIR)$(bindir)/fish\' to the file \'/etc/shells\'.; \ - echo \* use the command \'chsh -s $(DESTDIR)$(bindir)/fish\'.; \ - 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; - @echo To set your colors, run \'fish_config\' - @echo To scan your man pages for completions, run \'fish_update_completions\' - @echo To autocomplete command suggestions press Ctrl + F or right arrow key. - @echo - @echo Have fun! .PHONY: install-force @@ -781,7 +799,7 @@ uninstall-translations: # obj/%.o: src/%.cpp | obj $(CXX) $(CXXFLAGS) -c $< -o $@ - + # # obj directory # @@ -801,27 +819,21 @@ $(PCRE2_LIB): $(PCRE2_H) $(PCRE2_H): (cd $(PCRE2_DIR) && ./config.status --enable-maintainer-mode) - # # Build the fish_tests program. # - fish_tests: $(FISH_TESTS_OBJS) $(EXTRA_PCRE2) $(CXX) $(CXXFLAGS) $(LDFLAGS_FISH) $(FISH_TESTS_OBJS) $(LIBS) -o $@ - # # Build the fish_indent program. # - fish_indent: $(FISH_INDENT_OBJS) $(EXTRA_PCRE2) $(CXX) $(CXXFLAGS) $(LDFLAGS) $(FISH_INDENT_OBJS) $(LIBS) -o $@ - # # Neat little program to show output from terminal # - key_reader: $(FISH_OBJS) $(EXTRA_PCRE2) obj/key_reader.o $(CXX) $(CXXFLAGS) $(LDFLAGS_FISH) $^ $(LIBS) -o $@ @@ -860,41 +872,34 @@ _iwyu: clean $(PROGRAMS) # Cleanup targets # -# -# distclean should restore the tree to the state right after extracting a tarball. -# - +# Restore the source tree to the state right after extracting a tarball. distclean: clean - $(MAKE) -C $(PCRE2_DIR) distclean + $(MAKE) -C $(PCRE2_DIR) distclean || true rm -f config.status config.log config.h Makefile .PHONY: distclean +# Remove everything built by the Makefile, but not things that are created by +# the configure script. # -# clean removes everything built by the makefile, but not things that -# are created by the configure script. -# - -# 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 - +# 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. clean: -ifdef EXTRA_PCRE2 - $(MAKE) -C $(PCRE2_DIR) clean -endif - rm -f obj/*.o *.o doc.h doc.tmp doc_src/*.doxygen doc_src/*.cpp doc_src/*.o doc_src/commands.hdr + $(MAKE) -C $(PCRE2_DIR) clean || true + rm -f obj/*.o *.o doc.h doc.tmp + rm -f doc_src/*.doxygen doc_src/*.cpp doc_src/*.o doc_src/commands.hdr rm -f tests/tmp.err tests/tmp.out tests/tmp.status tests/foo.txt rm -f $(PROGRAMS) fish_tests key_reader rm -f command_list.txt command_list_toc.txt toc.txt rm -f doc_src/index.hdr doc_src/commands.hdr rm -f lexicon_filter lexicon.txt lexicon.log - rm -f FISH-BUILD-VERSION-FILE + rm -f FISH-BUILD-VERSION-FILE fish.pc if test "$(HAVE_DOXYGEN)" = 1; then \ rm -rf doc user_doc share/man; \ fi rm -f po/*.gmo - rm -rf obj + rm -rf obj build test .PHONY: clean |