This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Do not build manual in source directory
On Tuesday, April 24, 2012 09:41:16 Marek Polacek wrote:
> On Tue, Apr 24, 2012 at 09:36:04AM +0200, Marek Polacek wrote:
> > I tried it and it seems to work. Thanks a lot for doing this.
>
> Although, shouldn't `make realclean' remove ./manual/libc as well?
It should - and I guess it didn't do it before... I'll add this to my patch
so that we have one more fix (see below).
Btw. there're more files that are not deleted by realclean..
2012-04-23 Andreas Jaeger <aj@suse.de>
[BZ #13570]
* manual/.gitignore: Remove, it's not needed anymore.
* manual/libc-texinfo.sh: Pass OUTDIR as extra argument, create
all files in it.
* manual/Makefile (dvi, pdf, info, html): Depend on files in build
directory.
(texis): Renamed to $(objpfx)texis.
(texis-path): New, contains path to generated files.
(chapters.%): Use texis-path for complete path, add extra argument
libc-texinfo.sh.
(libc.dvi, libc.pdf, libc.info, libc.pdf): Add $(objfpx) as prefix.
(libc/index.html, summary.texi): Add $(objpfx) as prefix.
(summary,texi, stamp-summary): Use complete path of
files. Generate files in build dir.
(dir-add.texi): Build in build dir.
(libm-err.texi,stamp-libm-err): Likewise.
(version.texi, stamp-version): Likewise.
(.%c.texi): Likewise.
(%.info,%.dvi,%.pdf): Add $(objpfx) as prefix, build in build dir.
(mostlyclean): Generated files are now in the build dir.
(realclean): Likewise.
(realclean): Also delete stamp-libm-err, stamp-version and libc
directory.
($(inst_infodir)/libc.info): Install files from build dir.
diff --git a/manual/.gitignore b/manual/.gitignore
deleted file mode 100644
index 55c49c9..0000000
--- a/manual/.gitignore
+++ /dev/null
@@ -1,30 +0,0 @@
-*.aux
-*.c.texi
-*.cp
-*.cps
-*.dvi*
-*.fn
-*.fns
-*.info*
-*.ky
-*.kys
-*.log
-*.pdf
-*.pg
-*.pgs
-*.ps
-*.tmp
-*.toc
-*.tp
-*.tps
-*.vr
-*.vrs
-chapters.texi
-dir-add.texi
-dir-add.texinfo
-libm-err.texi
-stamp-*
-summary.texi
-texis
-top-menu.texi
-version.texi
diff --git a/manual/Makefile b/manual/Makefile
index 29e36c2..d409a7e 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -26,18 +26,19 @@ INSTALL_INFO = install-info
.PHONY: all dvi pdf info html
all: dvi
-dvi: libc.dvi
-pdf: libc.pdf
# 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
@@ -52,8 +53,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 +62,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 +108,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 +133,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=$@ $<
+
+$(objpfx)%.dvi: %.texinfo
+ cd $(objpfx);$(TEXI2DVI) -I $(shell cd $(<D) && pwd) --output=$@ \
+ $(shell cd $(<D) && pwd)/$<
-%.dvi: %.texinfo
- $(TEXI2DVI) $<
+$(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 \
@@ -138,17 +153,22 @@ minimal-dist = summary.awk texis.awk tsort.awk libc-
texinfo.sh libc.texinfo \
.PHONY: mostlyclean distclean realclean clean
mostlyclean:
- -rm -f libc.dvi libc.pdf libc.tmp libc.info*
+ -rm -f $(objpfx)libc.dvi $(objpfx)libc.pdf $(objpfx)libc.tmp
+ -rm -f $(objpfx)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)
+ -rm -f $(objpfx)texis $(objpfx)summary.texi $(objpfx)stamp-summary
+ -rm -f $(objpfx)*.c.texi
+ -rm -f $(foreach index,$(indices),$(objpfx)libc.$(index) \
+ $(objpfx)libc.$(index)s)
+ -rm -f $(objpfx)libc.log $(objpfx)libc.aux $(objpfx)libc.toc
+ -rm -f $(foreach gen,$(libc-texi-generated),$(objpfx)$(gen))
+ -rm -f $(objpfx)stamp-libm-err $(objpfx)stamp-version
+ -rm -fr $(objpfx)libc
.PHONY: install subdir_install installdirs install-data
install-data subdir_install: install
@@ -162,9 +182,9 @@ 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 installdirs
for file in $<*; do \
- $(INSTALL_DATA) $$file $(@D)/$$file; \
+ $(INSTALL_DATA) $$file $(@D)/; \
done
installdirs:
diff --git a/manual/libc-texinfo.sh b/manual/libc-texinfo.sh
index 79ac977..60e224b 100644
--- a/manual/libc-texinfo.sh
+++ b/manual/libc-texinfo.sh
@@ -1,10 +1,13 @@
#! /bin/sh
+OUTDIR=$1
+shift
+
# Create libc.texinfo from the chapter files.
-trap "rm -f *.$$; exit 1" 1 2 15
+trap "rm -f ${OUTDIR}*.$$; exit 1" 1 2 15
-exec 3>incl.$$ 4>smenu.$$ 5>lmenu.$$
+exec 3>${OUTDIR}incl.$$ 4>${OUTDIR}smenu.$$ 5>${OUTDIR}lmenu.$$
build_menu () {
while IFS=: read file node; do
@@ -51,7 +54,7 @@ collect_nodes $3 | build_menu
exec 3>&- 4>&- 5>&-
-mv -f incl.$$ chapters.texi
+mv -f ${OUTDIR}incl.$$ ${OUTDIR}chapters.texi
{
echo '@menu'
@@ -72,7 +75,7 @@ mv -f incl.$$ chapters.texi
}
!/^\*/ { print; }
- ' smenu.$$
+ ' ${OUTDIR}smenu.$$
cat <<EOF
* Free Manuals:: Free Software Needs Free Documentation.
* Copying:: The GNU Lesser General Public License
says
@@ -90,8 +93,8 @@ Indices
--- The Detailed Node Listing ---
EOF
- cat lmenu.$$
- echo '@end menu'; } >top-menu.texi.$$
-mv -f top-menu.texi.$$ top-menu.texi
+ cat ${OUTDIR}lmenu.$$
+ echo '@end menu'; } >${OUTDIR}top-menu.texi.$$
+mv -f ${OUTDIR}top-menu.texi.$$ ${OUTDIR}top-menu.texi
-rm -f *.$$
+rm -f ${OUTDIR}*.$$
--
Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126