Do not build manual in source dir

[BZ #13750]
Do not build manual anymore in the source dir. Also clean up the
Makefile and remove rules that have been used previously
when we had a stand-alone Makefile which was obsoleted recently.
This commit is contained in:
Andreas Jaeger 2012-05-14 21:45:48 +02:00
parent b8caea2cb9
commit 6a4888ffd6
6 changed files with 142 additions and 155 deletions

View File

@ -1,3 +1,56 @@
2012-05-14 Andreas Jaeger <aj@suse.de>
* manual/Makefile (subdir): Remove export of subdir.
(all): Remove target.
(.PHONY): Remove all from list.
(mkinstalldirs): Remove.
(.PHONY): Remove installdirs from list.
($(inst_infodir)/libc.info): Use make-target-directory.
(installdirs): Remove.
(subdir_%): Remove.
(glibc-targets): Remove.
(lib): Remove.
(stubs): Remove.
($(objpfx)stubs ../po/manual.pot): Remove.
($(objpfx)stamp%): Remove.
(make-target-directory): Remove.
(subdir_install): Remove.
(routines): Remove.
(aux): Remove.
(sources): Remove.
(objects): Remove.
(headers): Remove.
[BZ #13750]
* 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): Remove target.
(realclean): Remove target.
(generated): Add new variable with contents from mostlyclean and
realclean, remove entries duplicated in common-mostlyclean, add
stamp-libm-err and stamp-version.
(generated-dirs): Add libc directory.
($(inst_infodir)/libc.info): Install files from build dir.
* manual/install.texi (Configuring and compiling): Adjust since
the info files are not part of the tar ball anymore.
2012-05-14 Andreas Jaeger <aj@suse.de> 2012-05-14 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/getcwd.c (__getcwd): Remove unused * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): Remove unused

16
NEWS
View File

@ -18,14 +18,14 @@ Version 2.16
11494, 11521, 11837, 11959, 12047, 12340, 13058, 13525, 13526, 13527, 11494, 11521, 11837, 11959, 12047, 12340, 13058, 13525, 13526, 13527,
13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552, 13553, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552, 13553,
13555, 13559, 13563, 13566, 13583, 13592, 13618, 13637, 13656, 13658, 13555, 13559, 13563, 13566, 13583, 13592, 13618, 13637, 13656, 13658,
13673, 13691, 13695, 13704, 13705, 13706, 13726, 13738, 13739, 13758, 13673, 13691, 13695, 13704, 13705, 13706, 13726, 13738, 13739, 13750,
13760, 13761, 13775, 13786, 13787, 13792, 13806, 13824, 13840, 13841, 13758, 13760, 13761, 13775, 13786, 13787, 13792, 13806, 13824, 13840,
13844, 13846, 13851, 13852, 13854, 13871, 13872, 13873, 13879, 13883, 13841, 13844, 13846, 13851, 13852, 13854, 13871, 13872, 13873, 13879,
13884, 13885, 13886, 13892, 13895, 13908, 13910, 13911, 13912, 13913, 13883, 13884, 13885, 13886, 13892, 13895, 13908, 13910, 13911, 13912,
13914, 13915, 13916, 13917, 13918, 13919, 13920, 13921, 13922, 13923, 13913, 13914, 13915, 13916, 13917, 13918, 13919, 13920, 13921, 13922,
13924, 13926, 13927, 13928, 13938, 13941, 13942, 13954, 13955, 13956, 13923, 13924, 13926, 13927, 13928, 13938, 13941, 13942, 13954, 13955,
13963, 13967, 13970, 13973, 13979, 13983, 14012, 14027, 14033, 14034, 13956, 13963, 13967, 13970, 13973, 13979, 13983, 14012, 14027, 14033,
14040, 14049, 14053, 14055, 14064, 14080, 14083 14034, 14040, 14049, 14053, 14055, 14064, 14080, 14083
* ISO C11 support: * ISO C11 support:

30
manual/.gitignore vendored
View File

@ -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

View File

@ -19,29 +19,25 @@
# Makefile for the GNU C Library manual. # Makefile for the GNU C Library manual.
subdir := manual subdir := manual
export subdir := $(subdir)
# Allow override # Allow override
INSTALL_INFO = install-info INSTALL_INFO = install-info
.PHONY: all dvi pdf info html .PHONY: dvi pdf info html
all: dvi
dvi: libc.dvi
pdf: libc.pdf
# Get glibc's configuration info. # Get glibc's configuration info.
include ../Makeconfig include ../Makeconfig
dvi: $(objpfx)libc.dvi
pdf: $(objpfx)libc.pdf
TEXI2DVI = texi2dvi TEXI2DVI = texi2dvi
TEXI2PDF = texi2dvi --pdf TEXI2PDF = texi2dvi --pdf
ifneq ($(strip $(MAKEINFO)),:) ifneq ($(strip $(MAKEINFO)),:)
all: info info: $(objpfx)libc.info
info: libc.info
endif endif
mkinstalldirs = $(..)scripts/mkinstalldirs
chapters = $(addsuffix .texi, \ chapters = $(addsuffix .texi, \
intro errno memory ctype string charset locale \ intro errno memory ctype string charset locale \
message search pattern io stdio llio filesys \ 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 appendices = lang.texi header.texi install.texi maint.texi contrib.texi
licenses = freemanuals.texi lgpl-2.1.texi fdl-1.3.texi licenses = freemanuals.texi lgpl-2.1.texi fdl-1.3.texi
-include texis -include $(objpfx)texis
texis: texis.awk $(chapters) $(add-chapters) $(appendices) $(licenses) $(objpfx)texis: texis.awk $(chapters) $(add-chapters) $(appendices) $(licenses)
$(AWK) -f $^ > $@.T $(AWK) -f $^ > $@.T
mv -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), \ examples = $(filter-out $(foreach d, $(add-ons), ../$d/%.c.texi), \
$(filter %.c.texi, $(texis))) $(filter %.c.texi, $(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)' \
'$(add-chapters)' \
'$(appendices) $(licenses)'
# Generated files directly included from libc.texinfo. # Generated files directly included from libc.texinfo.
libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \ libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \
libm-err.texi version.texi libm-err.texi version.texi
libc.dvi libc.pdf libc.info: $(libc-texi-generated) # Add path to build dir for generated files
libc.dvi libc.pdf: texinfo.tex texis-path := $(filter-out $(libc-texi-generated) summary.texi $(examples), \
$(texis)) \
$(addprefix $(objpfx),$(filter $(libc-texi-generated) summary.texi \
$(examples), $(texis)))
html: libc/index.html # Kludge: implicit rule so Make knows the one command does it all.
libc/index.html: $(libc-texi-generated) chapters.% top-menu.%: libc-texinfo.sh $(texis-path) Makefile
$(MAKEINFO) --html libc.texinfo AWK=$(AWK) $(SHELL) $< $(objpfx) \
'$(chapters)' \
'$(add-chapters)' \
'$(appendices) $(licenses)'
$(objpfx)libc.dvi $(objpfx)libc.pdf $(objpfx)libc.info: \
$(addprefix $(objpfx),$(libc-texi-generated))
$(objpfx)libc.dvi $(objpfx)libc.pdf: texinfo.tex
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. # Generate the summary from the Texinfo source files for each chapter.
summary.texi: stamp-summary ; $(objpfx)summary.texi: $(objpfx)stamp-summary ;
stamp-summary: summary.awk $(filter-out summary.texi, $(texis)) $(objpfx)stamp-summary: summary.awk $(filter-out $(objpfx)summary.texi, \
$(AWK) -f $^ | sort -t' ' -df -k 1,1 | tr '\014' '\012' > summary-tmp $(texis-path))
$(move-if-change) summary-tmp summary.texi $(AWK) -f $^ | sort -t' ' -df -k 1,1 | tr '\014' '\012' \
> $(objpfx)summary-tmp
$(move-if-change) $(objpfx)summary-tmp $(objpfx)summary.texi
touch $@ touch $@
# Generate a file which can be added to the `dir' content to provide direct # Generate a file which can be added to the `dir' content to provide direct
# access to the documentation of the function, variables, and other # access to the documentation of the function, variables, and other
# definitions. # 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 "@dircategory GNU C library functions and macros"; \
echo "@direntry"; \ echo "@direntry"; \
$(AWK) -f $^ | sort; \ $(AWK) -f $^ | sort; \
@ -96,23 +103,23 @@ dir-add.texi: xtract-typefun.awk $(texis)
mv -f $@.new $@ mv -f $@.new $@
# The table with the math errors is generated. # The table with the math errors is generated.
libm-err.texi: stamp-libm-err $(objpfx)libm-err.texi: $(objpfx)stamp-libm-err
stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\ $(objpfx)stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
$(dir)/libm-test-ulps)) $(dir)/libm-test-ulps))
pwd=`pwd`; \ pwd=`pwd`; \
$(PERL) $< $$pwd/.. > libm-err-tmp $(PERL) $< $$pwd/.. > $(objpfx)libm-err-tmp
$(move-if-change) libm-err-tmp libm-err.texi $(move-if-change) $(objpfx)libm-err-tmp $(objpfx)libm-err.texi
touch $@ touch $@
# Generate a file with the version number. # Generate a file with the version number.
version.texi: stamp-version ; $(objpfx)version.texi: $(objpfx)stamp-version ;
stamp-version: $(common-objpfx)config.make $(objpfx)stamp-version: $(common-objpfx)config.make
echo "@set VERSION $(version)" > version-tmp echo "@set VERSION $(version)" > $(objpfx)version-tmp
$(move-if-change) version-tmp version.texi $(move-if-change) $(objpfx)version-tmp $(objpfx)version.texi
touch $@ touch $@
# Generate Texinfo files from the C source for the example programs. # Generate Texinfo files from the C source for the example programs.
%.c.texi: examples/%.c $(objpfx)%.c.texi: examples/%.c
sed -e '1,/^\*\/$$/d' \ sed -e '1,/^\*\/$$/d' \
-e 's,[{}],@&,g' \ -e 's,[{}],@&,g' \
-e 's,/\*\(@.*\)\*/,\1,g' \ -e 's,/\*\(@.*\)\*/,\1,g' \
@ -121,14 +128,17 @@ stamp-version: $(common-objpfx)config.make
$< | expand > $@.new $< | expand > $@.new
mv -f $@.new $@ mv -f $@.new $@
%.info: %.texinfo $(objpfx)%.info: %.texinfo
LANGUAGE=C LC_ALL=C $(MAKEINFO) $< LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=$@ $<
%.dvi: %.texinfo $(objpfx)%.dvi: %.texinfo
$(TEXI2DVI) $< 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. # Distribution.
minimal-dist = summary.awk texis.awk tsort.awk libc-texinfo.sh libc.texinfo \ 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)) \ $(filter-out summary.texi, $(nonexamples)) \
$(patsubst %.c.texi,examples/%.c, $(examples)) $(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 indices = cp fn pg tp vr ky
realclean: distclean generated-dirs := libc
-rm -f texis summary.texi stamp-summary *.c.texi generated = libc.dvi libc.pdf libc.tmp libc.info* \
-rm -f $(foreach index,$(indices),libc.$(index) libc.$(index)s) stubs \
-rm -f libc.log libc.aux libc.toc texis summary.texi stamp-summary *.c.texi \
-rm -f $(libc-texi-generated) $(foreach index,$(indices),libc.$(index) libc.$(index)s) \
libc.log libc.aux libc.toc \
$(libc-texi-generated) \
stamp-libm-err stamp-version
.PHONY: install subdir_install installdirs install-data include ../Rules
.PHONY: install subdir_install install-data
install-data subdir_install: install install-data subdir_install: install
ifneq ($(strip $(MAKEINFO)),:) ifneq ($(strip $(MAKEINFO)),:)
install: $(inst_infodir)/libc.info install: $(inst_infodir)/libc.info
@ -162,58 +170,11 @@ endif
# Catchall implicit rule for other installation targets from the parent. # Catchall implicit rule for other installation targets from the parent.
install-%: ; install-%: ;
$(inst_infodir)/libc.info: libc.info installdirs $(inst_infodir)/libc.info: $(objpfx)libc.info
$(make-target-directory)
for file in $<*; do \ for file in $<*; do \
$(INSTALL_DATA) $$file $(@D)/$$file; \ $(INSTALL_DATA) $$file $(@D)/; \
done done
installdirs:
$(mkinstalldirs) $(inst_infodir)
TAGS: $(minimal-dist) TAGS: $(minimal-dist)
$(ETAGS) -o $@ $^ $(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 =

View File

@ -203,10 +203,10 @@ system such as @file{/etc/passwd}, @file{/etc/nsswitch.conf} and others.
These files must all contain correct and sensible content. These files must all contain correct and sensible content.
To format the @cite{GNU C Library Reference Manual} for printing, type To format the @cite{GNU C Library Reference Manual} for printing, type
@w{@code{make dvi}}. You need a working @TeX{} installation to do this. @w{@code{make dvi}}. You need a working @TeX{} installation to do
The distribution already includes the on-line formatted version of the this. The distribution builds the on-line formatted version of the
manual, as Info files. You can regenerate those with @w{@code{make manual, as Info files, as part of the build process. You can build
info}}, but it shouldn't be necessary. them manually with @w{@code{make info}}.
The library has a number of special-purpose configuration parameters The library has a number of special-purpose configuration parameters
which you can find in @file{Makeconfig}. These can be overwritten with which you can find in @file{Makeconfig}. These can be overwritten with

View File

@ -1,10 +1,13 @@
#! /bin/sh #! /bin/sh
OUTDIR=$1
shift
# Create libc.texinfo from the chapter files. # 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 () { build_menu () {
while IFS=: read file node; do while IFS=: read file node; do
@ -51,7 +54,7 @@ collect_nodes $3 | build_menu
exec 3>&- 4>&- 5>&- exec 3>&- 4>&- 5>&-
mv -f incl.$$ chapters.texi mv -f ${OUTDIR}incl.$$ ${OUTDIR}chapters.texi
{ {
echo '@menu' echo '@menu'
@ -72,7 +75,7 @@ mv -f incl.$$ chapters.texi
} }
!/^\*/ { print; } !/^\*/ { print; }
' smenu.$$ ' ${OUTDIR}smenu.$$
cat <<EOF cat <<EOF
* Free Manuals:: Free Software Needs Free Documentation. * Free Manuals:: Free Software Needs Free Documentation.
* Copying:: The GNU Lesser General Public License says * Copying:: The GNU Lesser General Public License says
@ -90,8 +93,8 @@ Indices
--- The Detailed Node Listing --- --- The Detailed Node Listing ---
EOF EOF
cat lmenu.$$ cat ${OUTDIR}lmenu.$$
echo '@end menu'; } >top-menu.texi.$$ echo '@end menu'; } >${OUTDIR}top-menu.texi.$$
mv -f top-menu.texi.$$ top-menu.texi mv -f ${OUTDIR}top-menu.texi.$$ ${OUTDIR}top-menu.texi
rm -f *.$$ rm -f ${OUTDIR}*.$$