]>
Commit | Line | Data |
---|---|---|
6d7e8eda | 1 | # Copyright (C) 1992-2023 Free Software Foundation, Inc. |
28f540f4 RM |
2 | # This file is part of the GNU C Library. |
3 | ||
4 | # The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
5 | # modify it under the terms of the GNU Lesser General Public |
6 | # License as published by the Free Software Foundation; either | |
7 | # version 2.1 of the License, or (at your option) any later version. | |
28f540f4 RM |
8 | |
9 | # The GNU C Library is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 12 | # Lesser General Public License for more details. |
28f540f4 | 13 | |
41bdb6e2 | 14 | # You should have received a copy of the GNU Lesser General Public |
59ba27a6 | 15 | # License along with the GNU C Library; if not, see |
5a82c748 | 16 | # <https://www.gnu.org/licenses/>. |
0c5ecdc4 UD |
17 | |
18 | # Makefile for the GNU C Library manual. | |
28f540f4 RM |
19 | |
20 | subdir := manual | |
28f540f4 | 21 | |
a5f891ac JM |
22 | include ../Makeconfig |
23 | ||
6a4888ff | 24 | .PHONY: dvi pdf info html |
04be94a8 | 25 | |
6a4888ff AJ |
26 | dvi: $(objpfx)libc.dvi |
27 | pdf: $(objpfx)libc.pdf | |
28 | ||
4e681b5b | 29 | TEXI2DVI = texi2dvi |
fb0dd050 | 30 | TEXI2PDF = texi2dvi --pdf |
1830a0d5 | 31 | |
96888079 | 32 | ifneq ($(strip $(MAKEINFO)),:) |
6a4888ff | 33 | info: $(objpfx)libc.info |
28f540f4 RM |
34 | endif |
35 | ||
7a68c94a | 36 | chapters = $(addsuffix .texi, \ |
390955cb | 37 | intro errno memory ctype string charset locale \ |
07435eb4 | 38 | message search pattern io stdio llio filesys \ |
d52b6462 | 39 | pipe socket terminal syslog math arith time \ |
085d0e35 | 40 | resource setjmp signal startup process ipc job \ |
b31b4d6a | 41 | nss users sysinfo conf crypt debug threads \ |
5d28a896 | 42 | dynlink probes tunables) |
d9dc34cd TMQMF |
43 | appendices = lang.texi header.texi install.texi maint.texi platform.texi \ |
44 | contrib.texi | |
66ab80bc | 45 | licenses = freemanuals.texi lgpl-2.1.texi fdl-1.3.texi |
7a68c94a | 46 | |
6a4888ff | 47 | -include $(objpfx)texis |
644d3857 | 48 | $(objpfx)texis: texis.awk $(chapters) $(appendices) $(licenses) |
834f9b8d | 49 | $(make-target-directory) |
07435eb4 | 50 | $(AWK) -f $^ > $@.T |
7a68c94a UD |
51 | mv -f $@.T $@ |
52 | ||
644d3857 JM |
53 | nonexamples = $(filter-out %.c.texi, $(texis)) |
54 | examples = $(filter %.c.texi, $(texis)) | |
7a68c94a | 55 | |
6a4888ff AJ |
56 | # Generated files directly included from libc.texinfo. |
57 | libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \ | |
8b748aed | 58 | libm-err.texi version.texi pkgvers.texi |
6a4888ff AJ |
59 | |
60 | # Add path to build dir for generated files | |
61 | texis-path := $(filter-out $(libc-texi-generated) summary.texi $(examples), \ | |
62 | $(texis)) \ | |
63 | $(addprefix $(objpfx),$(filter $(libc-texi-generated) summary.texi \ | |
64 | $(examples), $(texis))) | |
65 | ||
7a68c94a | 66 | # Kludge: implicit rule so Make knows the one command does it all. |
6a4888ff AJ |
67 | chapters.% top-menu.%: libc-texinfo.sh $(texis-path) Makefile |
68 | AWK=$(AWK) $(SHELL) $< $(objpfx) \ | |
69 | '$(chapters)' \ | |
069e52f8 | 70 | '$(appendices) $(licenses)' |
7a68c94a | 71 | |
bb8b6697 | 72 | |
6a4888ff AJ |
73 | $(objpfx)libc.dvi $(objpfx)libc.pdf $(objpfx)libc.info: \ |
74 | $(addprefix $(objpfx),$(libc-texi-generated)) | |
75 | $(objpfx)libc.dvi $(objpfx)libc.pdf: texinfo.tex | |
28f540f4 | 76 | |
6a4888ff AJ |
77 | html: $(objpfx)libc/index.html |
78 | $(objpfx)libc/index.html: $(addprefix $(objpfx),$(libc-texi-generated)) | |
79 | $(MAKEINFO) -P $(objpfx) -o $(objpfx)libc --html libc.texinfo | |
fef0b717 | 80 | |
28f540f4 | 81 | # Generate the summary from the Texinfo source files for each chapter. |
6a4888ff | 82 | $(objpfx)summary.texi: $(objpfx)stamp-summary ; |
d08a7e4c | 83 | $(objpfx)stamp-summary: summary.pl $(filter-out $(objpfx)summary.texi, \ |
6a4888ff | 84 | $(texis-path)) |
a2b581cb | 85 | $(SHELL) ./check-safety.sh $(filter-out $(objpfx)%, $(texis-path)) |
d08a7e4c | 86 | LC_ALL=C $(PERL) $^ > $(objpfx)summary-tmp |
6a4888ff | 87 | $(move-if-change) $(objpfx)summary-tmp $(objpfx)summary.texi |
5bc2f642 | 88 | touch $@ |
28f540f4 | 89 | |
ceb2d9aa UD |
90 | # Generate a file which can be added to the `dir' content to provide direct |
91 | # access to the documentation of the function, variables, and other | |
92 | # definitions. | |
6a4888ff | 93 | $(objpfx)dir-add.texi: xtract-typefun.awk $(texis-path) |
6e613d6a RM |
94 | (echo "@dircategory GNU C library functions and macros"; \ |
95 | echo "@direntry"; \ | |
c0016081 | 96 | $(AWK) -f $^ | sort; \ |
6e613d6a | 97 | echo "@end direntry") > $@.new |
63551311 | 98 | mv -f $@.new $@ |
ceb2d9aa | 99 | |
aaa1276e | 100 | # The table with the math errors is generated. |
6a4888ff | 101 | $(objpfx)libm-err.texi: $(objpfx)stamp-libm-err |
b71ac2b9 JM |
102 | $(objpfx)stamp-libm-err: $(..)math/gen-libm-test.py \ |
103 | $(wildcard $(foreach dir,$(sysdirs),\ | |
104 | $(dir)/libm-test-ulps)) | |
aaa1276e | 105 | pwd=`pwd`; \ |
b71ac2b9 | 106 | $(PYTHON) $< -s $$pwd/.. -m $(objpfx)libm-err-tmp |
6a4888ff | 107 | $(move-if-change) $(objpfx)libm-err-tmp $(objpfx)libm-err.texi |
aaa1276e UD |
108 | touch $@ |
109 | ||
8b748aed JM |
110 | # Package version and bug reporting URL. |
111 | $(objpfx)pkgvers.texi: $(objpfx)stamp-pkgvers ; | |
112 | $(objpfx)stamp-pkgvers: $(common-objpfx)config.make | |
113 | echo "@ifclear PKGVERS" > $(objpfx)pkgvers-tmp | |
114 | echo "@set PKGVERS" >> $(objpfx)pkgvers-tmp | |
115 | echo "@set PKGVERSION $(PKGVERSION_TEXI)" >> $(objpfx)pkgvers-tmp | |
116 | if [ "$(PKGVERSION_TEXI)" = "(GNU libc) " ]; then \ | |
117 | echo "@set PKGVERSION_DEFAULT" >> $(objpfx)pkgvers-tmp; \ | |
118 | fi | |
119 | echo "@set REPORT_BUGS_TO $(REPORT_BUGS_TEXI)" >> $(objpfx)pkgvers-tmp | |
120 | echo "@end ifclear" >> $(objpfx)pkgvers-tmp | |
121 | $(move-if-change) $(objpfx)pkgvers-tmp $(objpfx)pkgvers.texi | |
122 | touch $@ | |
123 | ||
bb8b6697 | 124 | # Generate a file with the version number. |
6a4888ff AJ |
125 | $(objpfx)version.texi: $(objpfx)stamp-version ; |
126 | $(objpfx)stamp-version: $(common-objpfx)config.make | |
127 | echo "@set VERSION $(version)" > $(objpfx)version-tmp | |
128 | $(move-if-change) $(objpfx)version-tmp $(objpfx)version.texi | |
bb8b6697 JM |
129 | touch $@ |
130 | ||
28f540f4 | 131 | # Generate Texinfo files from the C source for the example programs. |
6a4888ff | 132 | $(objpfx)%.c.texi: examples/%.c |
d9a17c07 RM |
133 | sed -e '1,/^\*\/$$/d' \ |
134 | -e 's,[{}],@&,g' \ | |
28f540f4 RM |
135 | -e 's,/\*\(@.*\)\*/,\1,g' \ |
136 | -e 's,/\* *,/* @r{,g' -e 's, *\*/,} */,' \ | |
b0de3e9e | 137 | -e 's/\(@[a-z][a-z]*\)@{\([^}]*\)@}/\1{\2}/g'\ |
28f540f4 RM |
138 | $< | expand > $@.new |
139 | mv -f $@.new $@ | |
140 | ||
6a4888ff AJ |
141 | $(objpfx)%.info: %.texinfo |
142 | LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=$@ $< | |
7a68c94a | 143 | |
6a4888ff AJ |
144 | $(objpfx)%.dvi: %.texinfo |
145 | cd $(objpfx);$(TEXI2DVI) -I $(shell cd $(<D) && pwd) --output=$@ \ | |
146 | $(shell cd $(<D) && pwd)/$< | |
147 | ||
148 | $(objpfx)%.pdf: %.texinfo | |
149 | cd $(objpfx);$(TEXI2PDF) -I $(shell cd $(<D) && pwd) --output=$@ \ | |
150 | $(shell cd $(<D) && pwd)/$< | |
7a68c94a | 151 | |
1830a0d5 | 152 | |
7a68c94a | 153 | # Distribution. |
d08a7e4c | 154 | minimal-dist = summary.pl texis.awk tsort.awk libc-texinfo.sh libc.texinfo \ |
ee196e3c | 155 | libm-err.texi stamp-libm-err check-safety.sh \ |
464d646f | 156 | $(filter-out summary.texi, $(nonexamples)) \ |
7a68c94a | 157 | $(patsubst %.c.texi,examples/%.c, $(examples)) |
28f540f4 | 158 | |
28f540f4 | 159 | indices = cp fn pg tp vr ky |
f08e9a26 RM |
160 | generated-dirs += libc |
161 | generated += libc.dvi libc.pdf libc.tmp libc.info* \ | |
162 | stubs \ | |
163 | texis summary.texi stamp-summary *.c.texi \ | |
164 | $(foreach index,$(indices),libc.$(index) libc.$(index)s) \ | |
165 | libc.log libc.aux libc.toc \ | |
166 | $(libc-texi-generated) \ | |
167 | stamp-libm-err stamp-version | |
6a4888ff AJ |
168 | |
169 | include ../Rules | |
170 | ||
171 | .PHONY: install subdir_install install-data | |
28f540f4 | 172 | install-data subdir_install: install |
b71ac2b9 JM |
173 | # Generated files requiring python: libm-err.texi |
174 | # Generated files requiring perl: summary.texi | |
c6982f7e | 175 | ifneq ($(PERL),no) |
96888079 | 176 | ifneq ($(strip $(MAKEINFO)),:) |
6e613d6a | 177 | install: $(inst_infodir)/libc.info |
907a1bac | 178 | @if $(SHELL) -c '$(INSTALL_INFO) --version' >/dev/null 2>&1; then \ |
b28dcd8e | 179 | test -f $(inst_infodir)/dir || $(INSTALL_DATA) dir $(inst_infodir);\ |
907a1bac | 180 | $(INSTALL_INFO) --info-dir=$(inst_infodir) $(inst_infodir)/libc.info;\ |
714a562f | 181 | else : ; fi |
6591c335 | 182 | endif |
1695cdae | 183 | endif |
28f540f4 RM |
184 | # Catchall implicit rule for other installation targets from the parent. |
185 | install-%: ; | |
186 | ||
6a4888ff AJ |
187 | $(inst_infodir)/libc.info: $(objpfx)libc.info |
188 | $(make-target-directory) | |
28f540f4 | 189 | for file in $<*; do \ |
6a4888ff | 190 | $(INSTALL_DATA) $$file $(@D)/; \ |
28f540f4 RM |
191 | done |
192 | ||
28f540f4 RM |
193 | TAGS: $(minimal-dist) |
194 | $(ETAGS) -o $@ $^ |