X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=stepmake%2Fstepmake%2Fgeneric-targets.make;h=7e29760e42bfe15ef58c9b2ac62f58bf934ae820;hb=c39d188d28fdc84cef8cbaea7b8d6e2fb718c30f;hp=998b37335675e16cbdd40677200475448c035f43;hpb=b22e169e712aeeb006fe55f7a4196f739493ad94;p=lilypond.git diff --git a/stepmake/stepmake/generic-targets.make b/stepmake/stepmake/generic-targets.make index 998b373356..7e29760e42 100644 --- a/stepmake/stepmake/generic-targets.make +++ b/stepmake/stepmake/generic-targets.make @@ -1,123 +1,123 @@ -.PHONY : all clean config default diff dist doc exe help html lib TAGS\ - po +.PHONY : all clean bin-clean default dist exe help html lib man TAGS\ + po doc doc-stage-1 WWW-1 WWW-2 WWW-post local-WWW-1 local-WWW-2\ + local-all local-clean local-bin-clean local-doc log-clean -all: default +all: default $(LOOP) +local-all: default + man: $(LOOP) -# be careful about deletion. clean: local-clean - -rm -f $(outdir)/* + -rm -rf $(outdir) $(LOOP) -ifneq ($(strip $(depth)),.) -dist: - make -C $(depth) dist -endif - -distclean: clean - $(LOOP) - $(MAKE) local-distclean +log-clean: + find . -name "*.log" -delete -maintainerclean: +ifeq (,$(findstring metafont,$(STEPMAKE_TEMPLATES))) +bin-clean: local-bin-clean + -rm -rf $(outdir) $(LOOP) - $(MAKE) local-maintainerclean - $(MAKE) local-distclean - +else +bin-clean: +endif -# configure: -# -config: - ./$(depth)/configure -# +local-bin-clean: local-clean +ifneq ($(strip $(depth)),.) +dist: + $(MAKE) -C $(depth) dist +endif -# target help: -# generic-help: - @echo -e "\ -Makefile for $(PACKAGE_NAME) $(TOPLEVEL_VERSION)\n\ -Usage: make ["VARIABLE=value"]... [TARGET]\n\ -\n\ -Targets:\n" + @echo "Makefile for $(PACKAGE_NAME) $(TOPLEVEL_VERSION)" + @echo "Usage: make ["VARIABLE=value"]... [TARGET]" + @echo + @echo "Targets specific to current directory:" help: generic-help local-help - @echo -e "\ - all update everything\n\ - clean remove all genated stuff in $(outdir)\n\ - check run selftest\n\ - default same as the empty target\n\ - exe update all executables\n\ - help this help\n\ - install install programs and data (prefix=$(prefix))\n\ - lib update all libraries\n\ - TAGS genarate tagfiles\n\ -\n\ -Make may be invoked from any subdirectory\n\ -Note that all commands recurse into SUBDIRS;\n\ -prepend \`local-' to do only cwd, eg: local-clean\n\ -"\ + @echo "Generic targets that recurse into subdirectories:" + @echo " all update everything except documentation with images" + @echo " (same as the empty target)" + @echo " clean remove all generated stuff in $(outdir)" + @echo " bin-clean same as clean, except that mf/out is preserved" + @echo " doc update documentation with images in directory \`out-www'" + @echo " doc-stage-1 update only PDF and Info documentation in directory \`out-www'" + @echo " doc-clean clean \`out-www' directory" + @echo " install install programs and data (prefix=$(prefix))" + @echo " uninstall uninstall programs and data" + @echo " test build regression tests for the program and scripts" + @echo + @echo " *Note: Prepend \`local-' (eg. \`local-clean') to restrict" + @echo " any of the above commands to the current directory." + @echo + @echo "Other generic targets:" + @echo " default same as \`make all', but restricted to the current directory" + @echo " exe update all executables" + @echo " help this help" + @echo " lib update all libraries" + @echo " log-clean remove .log files" + @echo " TAGS generate tagfiles" + @echo + @echo "\`make' may be invoked from any subdirectory that contains a GNUmakefile." local-help: -local-dist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES) - mkdir -p $(distdir)/$(localdir) - $(LN) $(DIST_FILES) $(distdir)/$(localdir) - - case "$(NON_ESSENTIAL_DIST_FILES)x" in x) ;; *) \ - $(LN) $(NON_ESSENTIAL_DIST_FILES) $(distdir)/$(localdir);; \ +local-dist: $(OUT_DIST_FILES) + case "$(OUT_DIST_FILES)x" in x) ;; \ + *) mkdir -p $(distdir)/$(localdir)/$(outdir) && \ + $(LN) $(OUT_DIST_FILES) $(distdir)/$(localdir)/$(outdir);; \ esac - - case "$(OUT_DIST_FILES)x" in x) ;; *) \ - mkdir -p $(distdir)/$(localdir)/$(outdir); \ - $(LN) $(OUT_DIST_FILES) $(distdir)/$(localdir)/$(outdir);; \ - esac -# $(foreach i, $(SUBDIRS), $(MAKE) distdir=../$(distdir) localdir=$(localdir)/$(i) -C $(i) local-dist &&) true -# absolute for installed stepmake - $(foreach i, $(SUBDIRS), $(MAKE) topdir=$(topdir) distdir=$(distdir) localdir=$(localdir)/$(notdir $(i)) -C $(i) local-dist &&) true + $(foreach i, $(SUBDIRS), $(MAKE) top-src-dir=$(top-src-dir) distdir=$(distdir) localdir=$(localdir)/$(notdir $(i)) -C $(i) local-dist &&) true html: $(HTML_FILES) TAGS: - -if [ "$(TAGS_FILES)" != "" ]; then \ - etags $(ETAGS_FLAGS) $(TAGS_FILES) || \ - ctags $(CTAGS_FLAGS) ".h.hh.tcc.icc" $(TAGS_FILES) $(ERROR_LOG); \ - fi - $(LOOP) + $(MAKE) local-tags + +DEEPER_TAGS_FILES = $(shell find $(pwd) -mindepth 2 -name 'TAGS') +local-tags: + -if [ -n "$(TAGS_HEADERS)$(TAGS_SOURCES)$(DEEPER_TAGS_FILES)" ]; then \ + etags $(ETAGS_FLAGS) $(DEEPER_TAGS_FILES:%=--include=%) \ + $(TAGS_SOURCES) $(TAGS_HEADERS) $(ERROR_LOG) ; \ + ctags $(CTAGS_FLAGS) $(TAGS_SOURCES) $(TAGS_HEADERS) \ + $(ERROR_LOG) ; \ + fi -# ugh . -> $(outdir) -$(outdir)/VERSION: $(depth)/VERSION - cp -p $< $@ - -$(outdir)/version.hh: $(outdir)/VERSION - $(PYTHON) $(step-bindir)/make-version.py $< > $@ +# Don't use $(buildscript-dir)/make-version, because it is not known whether +# build process has visited scripts/build +$(outdir)/version.hh: $(depth)/VERSION $(config_make) $(top-src-dir)/scripts/build/make-version.py + $(PYTHON) $(top-src-dir)/scripts/build/make-version.py $< > $@ -$(outdir)/config.h: $(config_h) +$(outdir)/config.hh: $(config_h) cp -p $< $@ -configure: configure.in aclocal.m4 - NOCONFIGURE=yes $(srcdir)/autogen.sh +configure: configure.ac aclocal.m4 + NOCONFIGURE=yes $(src-depth)/autogen.sh chmod +x configure local-clean: local-distclean: -local-maintainerclean: - install-strip: - $(MAKE) INSTALL="$(INSTALL) -s" install + $(MAKE) INSTALLPY="$(INSTALLPY) -s" install +ifeq ($(strip $(depth)),.) +final-install: +else final-install: + $(LOOP) install: local-install $(LOOP) - $(MAKE) final-install +endif local-install: @@ -127,16 +127,15 @@ uninstall: local-uninstall local-uninstall: installextradoc: - -$(INSTALL) -d $(prefix)/doc/$(package) - $(foreach i, $(EXTRA_DOC_FILES),\ - cp -r $(i) $(prefix)/doc/$(package) &&) true + -$(INSTALLPY) -d $(DESTDIR)$(prefix)/doc/$(package) + cp -r $(EXTRA_DOC_FILES) $(prefix)/doc/$(package) -include $(outdir)/dummy.dep $(DEP_FILES) # expect a warning here +-include $(outdir)/dummy.dep $(wildcard $(outdir)/*.dep) $(outdir)/dummy.dep: -mkdir -p $(outdir) touch $(outdir)/dummy.dep - + echo '*' > $(outdir)/.gitignore check: local-check $(LOOP) @@ -144,48 +143,45 @@ check: local-check local-check: # ugh. ugh ugh ugh -$(config_make): $(topdir)/configure +$(config_make): $(top-src-dir)/configure @echo "************************************************************" @echo "configure changed! You should probably reconfigure manually." @echo "************************************************************" - (cd $(builddir); ./config.status) + (cd $(top-build-dir); ./config.status) touch $@ # do something for multiple simultaneous configs. -deb: - $(MAKE) -C $(depth)/debian - cd $(depth) && debuild +#### Documentation (website and tarball) -diff: - $(PYTHON) $(step-bindir)/package-diff.py --outdir=$(topdir)/$(outdir) --package=$(topdir) $(makeflags) - -ln -f $(depth)/$(outdir)/$(distname).diff.gz $(patch-dir) +# documentation is built in two stages, +# plus WWW-post (only at toplevel) +# see INSTALL for more information. -release: - $(PYTHON) $(step-bindir)/release.py --outdir=$(topdir)/$(outdir) --package=$(topdir) +ifeq ($(out),www) +local-WWW-1: +local-WWW-2: +WWW-post: +WWW-1: local-WWW-1 + $(LOOP) -################ website. +WWW-2: local-WWW-2 + $(LOOP) +endif -local-WWW: -local-WWW-post: -local-web-post: +doc: doc-stage-1 + $(MAKE) out=www WWW-2 + $(MAKE) out=www WWW-post -WWW: local-WWW - $(LOOP) - $(MAKE) local-WWW-post - -web: - $(MAKE) out=www WWW - $(MAKE) local-web-post - -local-help: www-targets-help - -# hmm, append these to generic help? -# (local help targets are prepended) -webdir = $(local_package_docdir) -www-targets-help: - @echo -e "\ - web update website in out-www\n\ - web-install install website documentation in (webdir=$(webdir))\n\ - web-clean clean out-www\n\ -" +local-doc: + $(MAKE) out=www local-WWW-1 + $(MAKE) out=www local-WWW-2 + $(MAKE) out=www WWW-post + +doc-stage-1: + $(MAKE) -C $(top-build-dir)/Documentation/po out=www messages + $(MAKE) -C $(depth)/scripts/build out= + $(MAKE) out=www WWW-1 + +doc-clean: + $(MAKE) out=www clean