X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=stepmake%2Fstepmake%2Fgeneric-targets.make;h=1dc6601d6144f5f89838976bb3d7bc5c19fdfe1b;hb=32a34dcef0c0041c6d62677487a380b5c8b85712;hp=68c065b9fca7871a41b8b6ae2fa805792b87ff22;hpb=f5d88b8b3b09ac724d7f2234b25fcbde4bc1b072;p=lilypond.git diff --git a/stepmake/stepmake/generic-targets.make b/stepmake/stepmake/generic-targets.make index 68c065b9fc..9a51aaa728 100644 --- a/stepmake/stepmake/generic-targets.make +++ b/stepmake/stepmake/generic-targets.make @@ -1,168 +1,166 @@ -# title generic make targets -# file make/Targets.make +.PHONY : all clean bin-clean config default dist exe help html lib TAGS\ + po doc doc-stage-1 WWW-1 WWW-2 WWW-post local-WWW-1 local-WWW-2\ + log-clean -.PHONY : all clean config default dist doc doc++ exe help html lib TAGS\ - po - -# target all: -# all: default $(LOOP) +bin: + $(MAKE) PACKAGE=$(PACKAGE) package=$(package) -C lily + +man: + $(LOOP) -# be careful about deletion. -clean: localclean - -rm -f $(outdir)/* +clean: local-clean + -rm -rf $(outdir) $(LOOP) -distclean: clean +log-clean: + find . -name "*.log" -delete + +ifeq (,$(findstring metafont,$(STEPMAKE_TEMPLATES))) +bin-clean: local-bin-clean + -rm -rf $(outdir) $(LOOP) +else +bin-clean: +endif + +local-bin-clean: local-clean + +ifneq ($(strip $(depth)),.) +dist: + $(MAKE) -C $(depth) dist +endif + +distclean: clean + $(MAKE) local-distclean + +cvs-clean: $(MAKE) local-distclean + rm -rf out + rm -rf out-www + rm -f aclocal.m4 configure -maintainerclean: +maintainerclean: $(LOOP) $(MAKE) local-maintainerclean $(MAKE) local-distclean -# configure: -# +# This doesn't allow command-line options, is it really useful? -jm config: - ./$(depth)/configure -# + ./$(src-depth)/configure -# 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 $(oudir)\n\ - config rerun configure\n\ - deb build Debian package\n\ - default same as the empty target\n\ - diff generate patch: $(package)-$(TOPLEVEL_VERSION).diff.gz\n\ - . Options:\n\ - . from=0.1.74\n\ - . help==\n\ - . release==\n\ - . to=0.1.74.jcn2\n\ - distclean cleaner than clean (duh)\n\ - doc update all documentation\n\ - doc++ make doc++ documentation\n\ - exe update all executables\n\ - help this help\n\ - install install programs and data (prefix=$(prefix))\n\ - lib update all libraries\n\ - release roll tarball and generate patch\n\ - rpm build RedHat package\n\ - tar same as dist\n\ - TAGS genarate tagfiles\n\ - zip build binary doze distribution\n\ -\n\ -Make may be invoked from any subdirectory\n\ -Note that all commands recurse into SUBSDIRS\n\ -"\ -# + @echo "Generic targets that recurse into subdirectories*:" + @echo " all update everything except documentation with images" + @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 + @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 the empty target" + @echo " bin check the lily directory and rebuild lilypond.exe if needed" + @echo " exe update all executables" + @echo " help this help" + @echo " lib update all libraries" + @echo " TAGS generate tagfiles" + @echo + @echo "\`make' may be invoked from any subdirectory." local-help: -doc: -#UGH - true # $(MAKE) -C $(depth)/Documentation all - - -# Ugh. C++ specific. -doc++: - (cd $(outdir); sh ../$(step-bindir)/tar-docxx.sh $(package)-$(TOPLEVEL_VERSION).tar.gz) - - -update-state-vector: -ifneq ($(strip $(state-vector)),) - if [ "`tail -1 $(state-vector)`" != "$(TOPLEVEL_VERSION)" ]; then\ - echo $(TOPLEVEL_VERSION) >> $(state-vector); \ - fi -endif - local-dist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES) mkdir -p $(distdir)/$(localdir) - $(LN) $(DIST_FILES) $(distdir)/$(localdir) + $(LN) $(DIST_FILES:%=$(src-dir)/%) $(distdir)/$(localdir) -#UGH UGH . make ifdef doesn't mix with string substitution semantics (late expansion vs. early expansion) -# case "$(NON_ESSENTIAL_DIST_FILES)x" in x) ;; *) \ - $(LN) $(NON_ESSENTIAL_DIST_FILES) $(distdir)/$(localdir);; \ + $(LN) $(NON_ESSENTIAL_DIST_FILES:%=$(src-dir)/%) $(distdir)/$(localdir);; \ esac - case "$(OUT_DIST_FILES)x" in x) ;; *) \ - mkdir $(distdir)/$(localdir)/out; \ - $(LN) $(OUT_DIST_FILES) $(distdir)/$(localdir)/out;; \ + 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 + $(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 -CT $(TAGS_FILES) || \ - ctags -h ".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 -$(outdir)/version.hh: VERSION - sh ./$(step-bindir)/make-version.sh > $@ +$(outdir)/version.hh: $(depth)/VERSION $(config_make) $(step-bindir)/make-version.py + $(PYTHON) $(step-bindir)/make-version.py $< > $@ +$(outdir)/config.hh: $(config_h) + cp -p $< $@ -# should this be in Rules? configure: configure.in aclocal.m4 - autoconf - < $<> $@ + NOCONFIGURE=yes $(src-depth)/autogen.sh chmod +x configure -localclean: +local-clean: local-distclean: local-maintainerclean: install-strip: - $(MAKE) INSTALL="$(INSTALL) -s" install + $(MAKE) INSTALLPY="$(INSTALLPY) -s" install -install: localinstall +ifeq ($(strip $(depth)),.) +final-install: +else +final-install: $(LOOP) -localinstall: - -uninstall: localuninstall +install: local-install $(LOOP) +endif -localuninstall: - -installextradoc: - -$(INSTALL) -d $(prefix)/doc/$(package) - $(foreach i, $(EXTRA_DOC_FILES),\ - cp -r $(i) $(prefix)/doc/$(package) &&) true +local-install: -WWW: local-WWW +uninstall: local-uninstall $(LOOP) -include $(stepdir)/package.make +local-uninstall: -include $(outdir)/dummy.dep $(DEP_FILES) +installextradoc: + -$(INSTALLPY) -d $(DESTDIR)$(prefix)/doc/$(package) + cp -r $(EXTRA_DOC_FILES) $(prefix)/doc/$(package) + +-include $(outdir)/dummy.dep $(wildcard $(outdir)/*.dep) $(outdir)/dummy.dep: - -mkdir $(outdir) + -mkdir -p $(outdir) touch $(outdir)/dummy.dep - + echo '*' > $(outdir)/.gitignore check: local-check $(LOOP) @@ -170,9 +168,44 @@ check: local-check local-check: # ugh. ugh ugh ugh -$(depth)/$(configuration).make: $(depth)/configure - @echo "**************************************" +$(config_make): $(top-src-dir)/configure + @echo "************************************************************" @echo "configure changed! You should probably reconfigure manually." - @echo "**************************************" - (cd $(depth); ./config.status) + @echo "************************************************************" + (cd $(top-build-dir); ./config.status) touch $@ # do something for multiple simultaneous configs. + + +#### Documentation (website and tarball) + +# documentation is built in two stages, +# plus WWW-post (only at toplevel) +# see INSTALL for more information. + +ifeq ($(out),www) +local-WWW-1: +local-WWW-2: +WWW-post: + +WWW-1: local-WWW-1 + $(LOOP) + +WWW-2: local-WWW-2 + $(LOOP) +endif + +doc: doc-stage-1 + $(MAKE) out=www WWW-2 + $(MAKE) out=www WWW-post + +local-doc: + $(MAKE) out=www local-WWW-1 + $(MAKE) out=www local-WWW-2 + $(MAKE) out=www WWW-post + +doc-stage-1: + $(MAKE) -C $(depth)/scripts/build out= + $(MAKE) out=www WWW-1 + +doc-clean: + $(MAKE) out=www clean