diff options
Diffstat (limited to 'manual/Makefile')
-rw-r--r-- | manual/Makefile | 171 |
1 files changed, 66 insertions, 105 deletions
diff --git a/manual/Makefile b/manual/Makefile index 29e36c2453..f02f14471c 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -19,29 +19,25 @@ # Makefile for the GNU C Library manual. subdir := manual -export subdir := $(subdir) # Allow override INSTALL_INFO = install-info -.PHONY: all dvi pdf info html -all: dvi -dvi: libc.dvi -pdf: libc.pdf +.PHONY: dvi pdf info html # Get glibc's configuration info. include ../Makeconfig +dvi: $(objpfx)libc.dvi +pdf: $(objpfx)libc.pdf + TEXI2DVI = texi2dvi TEXI2PDF = texi2dvi --pdf ifneq ($(strip $(MAKEINFO)),:) -all: info -info: libc.info +info: $(objpfx)libc.info endif -mkinstalldirs = $(..)scripts/mkinstalldirs - chapters = $(addsuffix .texi, \ intro errno memory ctype string charset locale \ message search pattern io stdio llio filesys \ @@ -52,8 +48,8 @@ add-chapters = $(wildcard $(foreach d, $(add-ons), ../$d/$d.texi)) appendices = lang.texi header.texi install.texi maint.texi contrib.texi licenses = freemanuals.texi lgpl-2.1.texi fdl-1.3.texi --include texis -texis: texis.awk $(chapters) $(add-chapters) $(appendices) $(licenses) +-include $(objpfx)texis +$(objpfx)texis: texis.awk $(chapters) $(add-chapters) $(appendices) $(licenses) $(AWK) -f $^ > $@.T mv -f $@.T $@ @@ -61,34 +57,45 @@ nonexamples = $(filter-out $(add-chapters) %.c.texi, $(texis)) examples = $(filter-out $(foreach d, $(add-ons), ../$d/%.c.texi), \ $(filter %.c.texi, $(texis))) +# Generated files directly included from libc.texinfo. +libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \ + libm-err.texi version.texi + +# Add path to build dir for generated files +texis-path := $(filter-out $(libc-texi-generated) summary.texi $(examples), \ + $(texis)) \ + $(addprefix $(objpfx),$(filter $(libc-texi-generated) summary.texi \ + $(examples), $(texis))) + # Kludge: implicit rule so Make knows the one command does it all. -chapters.% top-menu.%: libc-texinfo.sh $(texis) Makefile - AWK=$(AWK) $(SHELL) $< '$(chapters)' \ +chapters.% top-menu.%: libc-texinfo.sh $(texis-path) Makefile + AWK=$(AWK) $(SHELL) $< $(objpfx) \ + '$(chapters)' \ '$(add-chapters)' \ '$(appendices) $(licenses)' -# Generated files directly included from libc.texinfo. -libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \ - libm-err.texi version.texi -libc.dvi libc.pdf libc.info: $(libc-texi-generated) -libc.dvi libc.pdf: texinfo.tex +$(objpfx)libc.dvi $(objpfx)libc.pdf $(objpfx)libc.info: \ + $(addprefix $(objpfx),$(libc-texi-generated)) +$(objpfx)libc.dvi $(objpfx)libc.pdf: texinfo.tex -html: libc/index.html -libc/index.html: $(libc-texi-generated) - $(MAKEINFO) --html libc.texinfo +html: $(objpfx)libc/index.html +$(objpfx)libc/index.html: $(addprefix $(objpfx),$(libc-texi-generated)) + $(MAKEINFO) -P $(objpfx) -o $(objpfx)libc --html libc.texinfo # Generate the summary from the Texinfo source files for each chapter. -summary.texi: stamp-summary ; -stamp-summary: summary.awk $(filter-out summary.texi, $(texis)) - $(AWK) -f $^ | sort -t'' -df -k 1,1 | tr '\014' '\012' > summary-tmp - $(move-if-change) summary-tmp summary.texi +$(objpfx)summary.texi: $(objpfx)stamp-summary ; +$(objpfx)stamp-summary: summary.awk $(filter-out $(objpfx)summary.texi, \ + $(texis-path)) + $(AWK) -f $^ | sort -t'' -df -k 1,1 | tr '\014' '\012' \ + > $(objpfx)summary-tmp + $(move-if-change) $(objpfx)summary-tmp $(objpfx)summary.texi touch $@ # Generate a file which can be added to the `dir' content to provide direct # access to the documentation of the function, variables, and other # definitions. -dir-add.texi: xtract-typefun.awk $(texis) +$(objpfx)dir-add.texi: xtract-typefun.awk $(texis-path) (echo "@dircategory GNU C library functions and macros"; \ echo "@direntry"; \ $(AWK) -f $^ | sort; \ @@ -96,23 +103,23 @@ dir-add.texi: xtract-typefun.awk $(texis) mv -f $@.new $@ # The table with the math errors is generated. -libm-err.texi: stamp-libm-err -stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\ +$(objpfx)libm-err.texi: $(objpfx)stamp-libm-err +$(objpfx)stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\ $(dir)/libm-test-ulps)) pwd=`pwd`; \ - $(PERL) $< $$pwd/.. > libm-err-tmp - $(move-if-change) libm-err-tmp libm-err.texi + $(PERL) $< $$pwd/.. > $(objpfx)libm-err-tmp + $(move-if-change) $(objpfx)libm-err-tmp $(objpfx)libm-err.texi touch $@ # Generate a file with the version number. -version.texi: stamp-version ; -stamp-version: $(common-objpfx)config.make - echo "@set VERSION $(version)" > version-tmp - $(move-if-change) version-tmp version.texi +$(objpfx)version.texi: $(objpfx)stamp-version ; +$(objpfx)stamp-version: $(common-objpfx)config.make + echo "@set VERSION $(version)" > $(objpfx)version-tmp + $(move-if-change) $(objpfx)version-tmp $(objpfx)version.texi touch $@ # Generate Texinfo files from the C source for the example programs. -%.c.texi: examples/%.c +$(objpfx)%.c.texi: examples/%.c sed -e '1,/^\*\/$$/d' \ -e 's,[{}],@&,g' \ -e 's,/\*\(@.*\)\*/,\1,g' \ @@ -121,14 +128,17 @@ stamp-version: $(common-objpfx)config.make $< | expand > $@.new mv -f $@.new $@ -%.info: %.texinfo - LANGUAGE=C LC_ALL=C $(MAKEINFO) $< +$(objpfx)%.info: %.texinfo + LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=$@ $< -%.dvi: %.texinfo - $(TEXI2DVI) $< +$(objpfx)%.dvi: %.texinfo + cd $(objpfx);$(TEXI2DVI) -I $(shell cd $(<D) && pwd) --output=$@ \ + $(shell cd $(<D) && pwd)/$< + +$(objpfx)%.pdf: %.texinfo + cd $(objpfx);$(TEXI2PDF) -I $(shell cd $(<D) && pwd) --output=$@ \ + $(shell cd $(<D) && pwd)/$< -%.pdf: %.texinfo - $(TEXI2PDF) $< # Distribution. minimal-dist = summary.awk texis.awk tsort.awk libc-texinfo.sh libc.texinfo \ @@ -136,21 +146,19 @@ minimal-dist = summary.awk texis.awk tsort.awk libc-texinfo.sh libc.texinfo \ $(filter-out summary.texi, $(nonexamples)) \ $(patsubst %.c.texi,examples/%.c, $(examples)) -.PHONY: mostlyclean distclean realclean clean -mostlyclean: - -rm -f libc.dvi libc.pdf libc.tmp libc.info* - -rm -f $(objpfx)stubs - -rm -f $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o) -clean: mostlyclean -distclean: clean indices = cp fn pg tp vr ky -realclean: distclean - -rm -f texis summary.texi stamp-summary *.c.texi - -rm -f $(foreach index,$(indices),libc.$(index) libc.$(index)s) - -rm -f libc.log libc.aux libc.toc - -rm -f $(libc-texi-generated) - -.PHONY: install subdir_install installdirs install-data +generated-dirs := libc +generated = libc.dvi libc.pdf libc.tmp libc.info* \ + stubs \ + texis summary.texi stamp-summary *.c.texi \ + $(foreach index,$(indices),libc.$(index) libc.$(index)s) \ + libc.log libc.aux libc.toc \ + $(libc-texi-generated) \ + stamp-libm-err stamp-version + +include ../Rules + +.PHONY: install subdir_install install-data install-data subdir_install: install ifneq ($(strip $(MAKEINFO)),:) install: $(inst_infodir)/libc.info @@ -162,58 +170,11 @@ endif # Catchall implicit rule for other installation targets from the parent. install-%: ; -$(inst_infodir)/libc.info: libc.info installdirs +$(inst_infodir)/libc.info: $(objpfx)libc.info + $(make-target-directory) for file in $<*; do \ - $(INSTALL_DATA) $$file $(@D)/$$file; \ + $(INSTALL_DATA) $$file $(@D)/; \ done -installdirs: - $(mkinstalldirs) $(inst_infodir) - TAGS: $(minimal-dist) $(ETAGS) -o $@ $^ - -# The parent makefile sometimes invokes us with targets `subdir_REAL-TARGET'. -subdir_%: % ; -# For targets we don't define, do nothing. -subdir_%: ; - -# These are targets that each glibc subdirectory is expected to understand. -# ../Rules defines them for code subdirectories; for us, they are no-ops. -# None of these should be `subdir_TARGET'; those targets are transformed -# by the implicit rule above into `TARGET' deps. -glibc-targets := lib objects objs others tests xtests lint.out echo-headers -.PHONY: $(glibc-targets) -$(glibc-targets): - -# Create stamp files if they don't exist, so the parent makefile's rules for -# updating the library archives are happy with us, and never think we have -# changed the library. -lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o) -ifdef objpfx -.PHONY: stubs -stubs: $(objpfx)stubs -endif -$(objpfx)stubs ../po/manual.pot: - $(make-target-directory) - touch $@ -$(objpfx)stamp%: - $(make-target-directory) - touch $@ - -# Make the target directory if it doesn't exist, using the `mkinstalldirs' -# script that does `mkdir -p' even if `mkdir' doesn't support that flag. -define make-target-directory -$(addprefix $(mkinstalldirs) ,\ - $(filter-out $(wildcard $(@D:%/=%)),$(@D:%/=%))) -endef - -# The top-level glibc Makefile expects subdir_install to update the stubs file. -subdir_install: stubs - -# Get rid of these variables if they came from the parent. -routines = -aux = -sources = -objects = -headers = |