From 9e240de73f512a924ca1026132abbd0b9361e79e Mon Sep 17 00:00:00 2001 From: Luca Toniolo <10792599+grandixximo@users.noreply.github.com> Date: Tue, 2 Jun 2026 11:40:31 +0800 Subject: [PATCH 1/3] docs(build): relocate generated manpages under docs/build/man/, build translated Move the generated troff manpage tree out of the source tree into docs/build/man/. Layout follows the /usr/share/man hierarchy: English at docs/build/man/manN (the C/default locale) and translations at docs/build/man//manN. This differs on purpose from the build/html/ and build/adoc/ convention, because man(1) resolves a MANPATH entry by locale and LANG=C only checks /manN; the English special-casing is documented in the Submakefile header. docs/man/ is removed; nothing generated lives in the source tree anymore. - docs/src/Submakefile: add DOC_MAN; repoint manpage generation, MAN_SRCS, MAN_HTML_RULE, gen_complist prereq, MAN_DEPS and clean targets. - Build translated manpages: po4a emits the [type: man_def] comp manpages straight to build/man//, and TRANSLATED_TROFF_RULE renders the .adoc-sourced manpages from build/adoc//man into build/man//; per-language HTML reuses MAN_HTML_RULE. - comp/driver/user_comp manpages (src/hal/.../Submakefile) and linuxcnc.1 now emit to docs/build/man/manN. - po4a.cfg: point the [type: man_def] entries at build/man/ for both master and per-language output (structural paths only; no translatable strings). - install-man + swish index (src/Makefile), Doxygen MAN_OUTPUT, halcompile run-in-place fallback, gen_complist paths, and the run-in-place MANPATH (rip-environment) all follow. - docs/.gitignore: drop the obsolete man/ ignores; build/ already covers them. - delete the unreferenced legacy groff_www assets rather than carry them into the new tree (Bertho confirmed unused): an-old-fixed.tmac, man/images/, and both stylesheet.9 copies (docs/man/ and src/hal/components/). These were the old groff -Thtml pipeline (.HEAD CSS injection, wavedrom waveform images), obsolete since component manpages render through asciidoctor. - tutorial.adoc: update the `man -M` example path. --- docs/.gitignore | 31 - docs/man/an-old-fixed.tmac | 838 ----------------------- docs/man/images/Images_info.adoc | 60 -- docs/man/images/toggle.json | 4 - docs/man/images/toggle.ps | Bin 7748 -> 0 bytes docs/man/images/toggle2nist.json | 6 - docs/man/images/toggle2nist.ps | Bin 17232 -> 0 bytes docs/man/stylesheet.9 | 2 - docs/po4a.cfg | 238 +++---- docs/src/Submakefile | 124 +++- docs/src/gen_complist.py | 6 +- docs/src/hal/tutorial.adoc | 2 +- scripts/rip-environment.in | 6 +- src/Doxyfile | 2 +- src/Makefile | 8 +- src/hal/components/Submakefile | 6 +- src/hal/components/stylesheet.9 | 1 - src/hal/user_comps/Submakefile | 4 +- src/hal/user_comps/pi500_vfd/Submakefile | 4 +- src/hal/user_comps/wj200_vfd/Submakefile | 4 +- src/hal/utils/halcompile.g | 2 +- 21 files changed, 234 insertions(+), 1114 deletions(-) delete mode 100644 docs/man/an-old-fixed.tmac delete mode 100644 docs/man/images/Images_info.adoc delete mode 100644 docs/man/images/toggle.json delete mode 100644 docs/man/images/toggle.ps delete mode 100644 docs/man/images/toggle2nist.json delete mode 100644 docs/man/images/toggle2nist.ps delete mode 100644 docs/man/stylesheet.9 delete mode 100644 src/hal/components/stylesheet.9 diff --git a/docs/.gitignore b/docs/.gitignore index 3a1fe66a79e..94f516c74b4 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -18,34 +18,3 @@ src/code/hss.svg src/code/hss_es.svg src/code/task-state-transitions.svg src/code/task-state-transitions_es.svg - -# Troff manpages generated from .adoc by the asciidoctor manpage backend. -man/man1/ -man/man3/ -man/man9/ - -# po4a-translated man trees. -man/ar/* -man/bg/* -man/ckb/* -man/cs/* -man/da/* -man/de/* -man/es/* -man/fr/* -man/hu/* -man/it/* -man/ka/* -man/nb/* -man/pl/* -man/pt/* -man/pt_BR/* -man/ro/* -man/ru/* -man/sai/* -man/sk/* -man/sv/* -man/tr/* -man/uk/* -man/vi/* -man/zh_CN/* diff --git a/docs/man/an-old-fixed.tmac b/docs/man/an-old-fixed.tmac deleted file mode 100644 index 38c27813e55..00000000000 --- a/docs/man/an-old-fixed.tmac +++ /dev/null @@ -1,838 +0,0 @@ -.\" an-old.tmac -.\" -.\" Copyright (C) 1989-2020 Free Software Foundation, Inc. -.\" Written by James Clark (jjc@jclark.com) -.\" -.\" This file is part of groff. -.\" -.\" groff is free software; you can redistribute it and/or modify it -.\" under the terms of the GNU General Public License as published by -.\" the Free Software Foundation, either version 3 of the License, or -.\" (at your option) any later version. -.\" -.\" groff is distributed in the hope that it will be useful, but WITHOUT -.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -.\" or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -.\" License for more details. -.\" -.\" You should have received a copy of the GNU General Public License -.\" along with this program. If not, see -.\" . -. -. -.\" The file man.local is loaded at the end. Put local additions there. -.\" If you need to add things to TH, use '.am1 TH'. -. -.if !\n(.g \ -. ab groff man macros require groff extensions; aborting -. -.do if d RI .nx -. -.do mso devtag.tmac -. -.do nr *groff_an-old_tmac_C \n[.cp] -.cp 0 -. -.\" Define a string for use in diagnostic messages. -.ds an-old an-old.tmac\" -. -.if (\n[.x]\n[.y] < 118) \{\ -. ds an-msg \*[an-old]: groff man macros require groff 1.18 or later,\" -. as an-msg " but found groff \n[.x].\n[.y]; aborting\" -. ab \*[an-msg] -.\} -. -.de an-warn -. tm \*[an-old]:\\n[.F]:\\n[.c]: warning: \\$* -.. -. -.de an-style-warn -. if \\n[CHECKSTYLE] \ -. tm \*[an-old]:\\n[.F]:\\n[.c]: style: \\$* -.. -. -.nr need_eo_h 0 -.nr need_col2 0 -. -.nr an-first 1 -. -.nr an-html 0 -.if '\*[.T]'html' .nr an-html 1 -. -.\" Define alternate requests to handle continuous rendering. -.\" -.\" This .ne replacement avoids page breaks; instead, the page length is -.\" increased to the necessary amount (this is needed for tables). -.de an-ne -. ie \\n[.$] \ -. nr an-need (v;\\$*) -. el \ -. nr an-need 1v -. if (\\n[an-need] >= \\n[.t]) \ -. pl +(\\n[an-need]u - \\n[.t]u + 1v) -.. -. -.\" This .bp replacement adjusts the page length to the current position -.\" so that no empty lines are inserted. -.de an-bp -. br -. pl \\n[nl]u -. an-real-bp \\$* -.. -. -.\" We need an end macro for continuous rendering as well, to flush any -.\" pending output line and write the footer for the final man page -.\" rendered. -.de1 an-end -. nr % 1 -. pl +4v -. fl -. sp 3 -. an-p-footer -. pl \\n[nl]u -.. -. -.\" Move macros into place for continuous rendering. -.de an-set-up-continuous-rendering -. rn ne an-real-ne -. rn bp an-real-bp -. rn an-ne ne -. rn an-bp bp -. em an-end -.. -. -.de an-set-margin -. nr an-level 1 -. nr an-margin \\n[IN] -. nr an-saved-margin1 \\n[IN] -. nr an-prevailing-indent \\n[IN] -. nr an-saved-prevailing-indent1 \\n[IN] -.. -. -.ds an-extra1 \" empty -.ds an-extra2 \" empty -.ds an-extra3 \" empty -. -.\" .TH title section extra1 extra2 extra3 -.de1 TH -. if ((\\n[.$] < 2) : (\\n[.$] > 5)) \ -. an-style-warn .\\$0 expects 2 to 5 arguments, got \\n[.$] -. if \\n[an-html] \{\ -. DEVTAG-TL -. nop \\$1 -. DEVTAG-EO-TL -. \} -. -. DT -. -. nr PS 10z \" default point size -. nr PS-SS 10z -. nr PS-SH 10.95z -. nr VS 12p -. -. \" use sizes similar to LaTeX -. if t \{\ -. ie (\\n[S] == 11) \{\ -. nr PS 10.95z -. nr PS-SS 10.95z -. nr PS-SH 12z -. nr VS 13.6p -. \} -. el \{\ -. if (\\n[S] == 12) \{\ -. nr PS 12z -. nr PS-SS 12z -. nr PS-SH 14.4z -. nr VS 14.5p -. \} -. \} -. \} -. -. ps \\n[PS]u -. vs \\n[VS]u -. -. \" Restore parameters that a previous man page might have messed up. -. ad \\*[AD] -. hy \\n[HY] -. ll \\n[LL]u -. ss 12 -. -. PD -. an-set-margin -. -. nr an-tag-sep 1n -. nr an-no-space-flag 0 -. nr an-break-flag 0 -. nr an-div? 0 -. -. ds an-title "\\$1\" -. if \\n[CT] .stringup an-title -. ds an-section "\\$2\" -. ie (\\n[.$] > 4) .ds an-extra3 "\\$5\" -. el \{ .ie '\\$2'1' .ds an-extra3 General Commands Manual\" -. el \{ .ie '\\$2'2' .ds an-extra3 System Calls Manual\" -. el \{ .ie '\\$2'3' .ds an-extra3 Library Functions Manual\" -. el \{ .ie '\\$2'3p' .ds an-extra3 Perl Programmer's Reference Guide\" -. el \{ .ie '\\$2'4' .ds an-extra3 Kernel Interfaces Manual\" -. el \{ .ie '\\$2'5' .ds an-extra3 File Formats Manual\" -. el \{ .ie '\\$2'6' .ds an-extra3 Games Manual\" -. el \{ .ie '\\$2'7' .ds an-extra3 Miscellaneous Information Manual\" -. el \{ .ie '\\$2'8' .ds an-extra3 System Manager's Manual\" -. el \{ .ie '\\$2'9' .ds an-extra3 Kernel Developer's Manual\" -. el .ds an-extra3 \" empty -. \}\}\}\}\}\}\}\}\}\} -. -. ie \\n[cR] \ -. an-header -. el \{\ -. wh 0 an-header -. wh -1i an-footer -. wh \\n[FT]u an-p-footer -. -. if \\n[nl] \{\ -. ie \\n[C] .bp (\\n[%] + 1) -. el .bp 1 -. \} -. \} -. -. ds an-extra1 "\\$3\" -. ie (\\n[.$] > 3) .ds an-extra2 "\\$4\" -. el .ds an-extra2 \" empty -.. -. -.\" BSD compatibility macros: .AT and .UC -. -.de1 AT -. ds an-extra2 "7th Edition\" -. if "\\$1"3" .ds an-extra2 "7th Edition\" -. if "\\$1"4" .ds an-extra2 "System III\" -. if "\\$1"5" \{\ -. ie "\\$2"" .ds an-extra2 "System V\" -. el .ds an-extra2 "System V Release \\$2\" -. \} -.. -. -.de1 UC -. ds an-extra2 "3rd Berkeley Distribution\" -. if "\\$1"3" .ds an-extra2 "3rd Berkeley Distribution\" -. if "\\$1"4" .ds an-extra2 "4th Berkeley Distribution\" -. if "\\$1"5" .ds an-extra2 "4.2 Berkeley Distribution\" -. if "\\$1"6" .ds an-extra2 "4.3 Berkeley Distribution\" -. if "\\$1"7" .ds an-extra2 "4.4 Berkeley Distribution\" -.. -. -.de1 DT -. ta T .5i \" This sets tabs every .5 inches -.. -. -.de1 PD -. ie \\n[.$] .nr PD (v;\\$1) -. el .nr PD (.4v >? \n[.V]) -.. -. -.\" Redefine these to customize the header & footer -. -.de1 PT -. tl '\\*[an-title](\\*[an-section])'\\*[an-extra3]'\ -\\*[an-title](\\*[an-section])' -.. -. -.de1 BT -. if r ps4html \ -. return -. ie \\n[D] \{\ -. if o .tl '\\*[an-extra2]'\\*[an-extra1]'\\*[an-page-string]' -. if e .tl '\\*[an-page-string]'\\*[an-extra1]'\\*[an-extra2]' -. \} -. el \ -. tl '\\*[an-extra2]'\\*[an-extra1]'\\*[an-page-string]' -.. -. -.de1 an-header -. if \\n[cR] \{\ -. ie \\n[an-first] \ -. nr an-first 0 -. el \ -. sp .5i -. \} -. ev an-1 -. ps \\n[PS]u -. vs \\n[VS]u -. lt \\n[LT]u -. ie \\n[an-html] \ -. tl '''' -. el \{\ -. if !\\n[cR] \ -. sp .5i -. PT -. ie !\\n[cR] \ -. sp |1i -. el \ -. sp .5i -. \} -. ev -. ns -.. -. -.de1 an-footer -' bp -.. -. -.af an-page-letter a -. -.de1 an-p-footer -. ev an-1 -. ps \\n[PS]u -. vs \\n[VS]u -. lt \\n[LT]u -. ie \\n[an-html] \{\ -. ds an-page-string \" empty -. ds an-extra1 \" empty -. ds an-extra2 \" empty -. \} -. el \{\ -. ie r X \{\ -. ie (\\n[%] > \\n[X]) \{\ -. nr an-page-letter (\\n[%] - \\n[X]) -. ds an-page-string \\n[X]\\n[an-page-letter]\" -. \} -. el \ -. ds an-page-string \\n[%]\" -. \} -. el \{\ -. ie \\n[cR] \ -. ds an-page-string "\\*[an-title](\\*[an-section])\" -. el \ -. ds an-page-string \\n[%]\" -. \} -. \} -. BT -. ev -.. -. -.de1 SH -. sp \\n[PD]u -. an-set-margin -. fi -. in \\n[an-margin]u -. ti 0 -. nr need_eo_h 1 -. DEVTAG-SH 1 -. itc 1 an-trap -. nr an-no-space-flag 1 -. nr an-break-flag 1 -. ps \\n[PS-SH]u -. ft \\*[HF] -. ne (2v + 1u) -. if \\n[.$] \{\ -. ds an-section-heading \\$*\" -. if \\n[CS] .stringup an-section-heading -\&\\*[an-section-heading] -. \} -.. -. -.de1 SS -. sp \\n[PD]u -. an-set-margin -. fi -. in \\n[IN]u -. ti \\n[SN]u -. nr need_eo_h 1 -. DEVTAG-SH 2 -. itc 1 an-trap -. nr an-no-space-flag 1 -. nr an-break-flag 1 -. ps \\n[PS-SS]u -. ft \\*[HF] -. ne (2v + 1u) -. if \\n[.$] \&\\$* -.. -. -.de1 B -. itc 1 an-trap -. ft B -. if \\n[.$] \&\\$* -.. -. -.de1 I -. itc 1 an-trap -. ft I -. if \\n[.$] \,\\$*\/ -.. -. -.de1 SM -. itc 1 an-trap -. ps -1 -. if \\n[.$] \&\\$* -.. -. -.de1 SB -. itc 1 an-trap -. ps -1 -. ft B -. if \\n[.$] \&\\$* -.. -. -.de1 TP -. sp \\n[PD]u -. if \\n[.$] .nr an-prevailing-indent (n;\\$1) -. itc 1 an-trap -. in 0 -. if !\\n[an-div?] \{\ -. ll -\\n[an-margin]u -. di an-div -. \} -. nr an-div? 1 -.. -. -.de1 an-trap -. if \\n[need_eo_h]>0 .DEVTAG-EO-H -. nr need_eo_h 0 -. if \\n[need_col2]>0 .DEVTAG-COL 2 -. nr need_col2 0 -. ft R -. ps \\n[PS]u -. vs \\n[VS]u -. if \\n[an-break-flag] \{\ -. br -. nr an-break-flag 0 -. \} -. if \\n[an-no-space-flag] \{\ -. ns -. nr an-no-space-flag 0 -. \} -. if \\n[an-div?] .an-do-tag -.. -. -.de an-do-tag -. br -. di -. nr an-div? 0 -. ll -. \" We must emit the diversion in a separate environment to assure -. \" that a possible margin character is printed correctly. -. ev an-2 -. evc 0 -. mc -. nf -. in \\n[an-margin]u -. ie (\\n[dl] + \\n[an-tag-sep] > \\n[an-prevailing-indent]) \{\ -. ne (2v + 1u) -. an-div -. ev -. in (\\n[an-margin]u + \\n[an-prevailing-indent]u) -. \} -. el \{\ -. \" In nroff mode, the indentation value should be an integer -. \" multiple of the character cell, to avoid different results -. \" compared to the .ie part above. -. ne (1v + 1u) -. DEVTAG-COL 1 -. an-div -. sp -1 -. ev -. in (\\n[an-margin]u + \\n[an-prevailing-indent]u) -. DEVTAG-COL-NEXT 2 -. \} -.. -. -.de1 LP -. sp \\n[PD]u -. ps \\n[PS]u -. vs \\n[VS]u -. ft R -. in \\n[an-margin]u -. nr an-prevailing-indent \\n[IN] -. ns -.. -. -.als PP LP -.als P LP -. -.de1 IP -. ie !\\n[.$] \{\ -. ps \\n[PS]u -. vs \\n[VS]u -. ft R -. sp \\n[PD]u -. ne (1v + 1u) -. in (\\n[an-margin]u + \\n[an-prevailing-indent]u) -. ns -. \} -. el \{\ -. ie (\\n[.$] - 1) .TP "\\$2" -. el .TP -\&\\$1 -. \} -.. -. -.de1 HP -. ps \\n[PS]u -. vs \\n[VS]u -. ft R -. sp \\n[PD]u -. ne (1v + 1u) -. if \\n[.$] .nr an-prevailing-indent (n;\\$1) -. in (\\n[an-margin]u + \\n[an-prevailing-indent]u) -. ti \\n[an-margin]u -. DEVTAG-COL 1 -. nr need_col2 1 -. ns -.. -. -.de1 RI -. if (\\n[.$] < 2) \ -. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$] -. if \\n[.$] \{\ -. ds an-result \&\f[R]\\$1\" -. shift -. while (\\n[.$] >= 2) \{\ -. as an-result \,\f[I]\\$1\f[R]\/\\$2\" -. shift 2 -. \} -. if \\n[.$] .as an-result \,\f[I]\\$1\" -\\*[an-result] -. ft R -. \} -.. -. -.de1 IR -. if (\\n[.$] < 2) \ -. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$] -. if \\n[.$] \{\ -. ds an-result \&\f[I]\,\\$1\f[R]\" -. shift -. while (\\n[.$] >= 2) \{\ -. as an-result \/\\$1\f[I]\,\\$2\f[R]\" -. shift 2 -. \} -. if \\n[.$] .as an-result \/\\$1\" -\\*[an-result] -. ft R -. \} -.. -. -.de1 IB -. if (\\n[.$] < 2) \ -. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$] -. if \\n[.$] \{\ -. ds an-result \&\f[I]\,\\$1\" -. shift -. while (\\n[.$] >= 2) \{\ -. as an-result \/\f[B]\\$1\f[I]\,\\$2\" -. shift 2 -. \} -. if \\n[.$] .as an-result \/\f[B]\\$1\" -\\*[an-result] -. ft R -. \} -.. -. -.de1 BI -. if (\\n[.$] < 2) \ -. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$] -. if \\n[.$] \{\ -. ds an-result \&\f[B]\\$1\" -. shift -. while (\\n[.$] >= 2) \{\ -. as an-result \,\f[I]\\$1\f[B]\/\\$2\" -. shift 2 -. \} -. if \\n[.$] .as an-result \,\f[I]\\$1\" -\\*[an-result] -. ft R -. \} -.. -. -.de1 RB -. if (\\n[.$] < 2) \ -. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$] -. ds an-result \&\" -. while (\\n[.$] >= 2) \{\ -. as an-result \f[R]\\$1\f[B]\\$2\" -. shift 2 -. \} -. if \\n[.$] .as an-result \f[R]\\$1\" -\\*[an-result] -. ft R -.. -. -.de1 BR -. if (\\n[.$] < 2) \ -. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$] -. ds an-result \&\" -. while (\\n[.$] >= 2) \{\ -. as an-result \f[B]\\$1\f[R]\\$2\" -. shift 2 -. \} -. if \\n[.$] .as an-result \f[B]\\$1\" -\\*[an-result] -. ft R -.. -. -.de1 RS -. nr an-saved-margin\\n[an-level] \\n[an-margin] -. nr an-saved-prevailing-indent\\n[an-level] \\n[an-prevailing-indent] -. ie \\n[.$] .nr an-margin +(n;\\$1) -. el .nr an-margin +\\n[an-prevailing-indent] -. in \\n[an-margin]u -. nr an-prevailing-indent \\n[IN] -. nr an-level +1 -.. -. -.de1 RE -. ie \\n[.$] .nr an-RE-requested-level \\$1 -. el .nr an-RE-requested-level (\\n[an-level] - 1) -. ie \\n[.$] \{\ -. if (\\n[an-RE-requested-level] = \\n[an-level]) \ -. ds an-RE-problem redundant; already at level \\n[an-level]\" -. if (\\n[an-RE-requested-level] > \\n[an-level]) \ -. ds an-RE-problem too large\" -. if (\\n[an-RE-requested-level] < 1) \ -. ds an-RE-problem too small\" -. if d an-RE-problem \ -. an-style-warn argument """\\$1""" to .\\$0 \\*[an-RE-problem] -. rm an-RE-problem -. \} -. el .if !(\\n[an-RE-requested-level]) .an-style-warn unbalanced .\\$0 -. rr an-RE-requested-level -. ie \\n[.$] .nr an-level ((;\\$1) ? \\n[an-level]) -. nr an-margin \\n[an-saved-margin\\n[an-level]] -. nr an-prevailing-indent \\n[an-saved-prevailing-indent\\n[an-level]] -. in \\n[an-margin]u -.. -. -.\" table support -. -.de1 TS -. \" If continuous rendering, tell tbl not to use keeps. -. ie \\n[cR] \ -. nr 3usekeeps 0 -. el \ -. nr 3usekeeps 1 -. sp \\n[PD]u -. if \\n[an-html] \{\ -. nr an-TS-ll \\n[.l] -. ll 1000n -. \} -. HTML-IMAGE -.. -. -.de1 T& -.. -. -.de1 TE -. HTML-IMAGE-END -. if \\n[an-html] \ -. ll \\n[an-TS-ll]u -.. -. -.\" dummy equation delimiters -.de1 EQ -. if \\n[an-html] \{\ -. nr an-EQ-ll \\n[.l] -. ll 1000n -. \} -. HTML-IMAGE -.. -.de1 EN -. HTML-IMAGE-END -. if \\n[an-html] \ -. ll \\n[an-EQ-ll]u -.. -. -.de1 R -\c -. ie \\n[.$] \{\ -. ds an-msg 'R' is a string (producing the registered sign),\" -. as an-msg " not a macro\" -. an-warn \\*[an-msg] -. rm an-msg -. nop \\$* -. \} -. el \{\ -. ie c\[rg] \ -. nop \[rg]\c -. el \ -. nop (Reg.)\c -. \} -.. -. -.\" These strings must work in compatibility mode also. -. -.ds S \s'\\n(PSu'\" -.ie c\[tm] .ds Tm \(tm\" -.el .ds Tm (TM)\" -.ie c\[lq] .ds lq \(lq\" -.el .ds lq ""\" -.ie c\[rq] .ds rq \(rq\" -.el .ds rq ""\" -. -.\" For UTF-8, map the hyphen-minus to itself to facilitate copy and -.\" paste of code examples, file names, and URLs embedding it. -. -.if '\*[.T]'utf8' \{\ -. char \- \N'45' -. char - \N'45' -.\} -. -.\" Load man macro extensions. -.mso an-ext.tmac -. -.\" Load local modifications. -.mso man.local -. -.\" Set each rendering parameter only if its -[dr] option or man.local -.\" did not. -. -.\" continuous rendering (one long page) -.if !r cR \{\ -. ie n \ -. nr cR 1 -. el \ -. nr cR 0 -.\} -. -.\" continuous page numbering over multiple documents -.\" -.\" We must use consecutive page numbers when using PostScript to -.\" generate HTML images; we must not reset the page number at the -.\" beginning of each document (the 'ps4html' register is automatically -.\" added to the command line by the pre-HTML preprocessor). -.\" -.\" \n[C] may get set to 1 redundantly in the below; we could replace -.\" that with a complex conditional, but it doesn't seem to be worth the -.\" trouble given AT&T-compatible restrictions on '!' placement. -.ie !r C \ -. nr C 0 -.el \ -. if !\n[C] \ -. if \n[an-html] \{\ -. tm \*[an-old]: ignoring continuous page numbering in HTML output -. nr C 1 -. \} -.if \n[an-html] \ -. nr C 1 -.if r ps4html \ -. nr C 1 -. -.\" emit diagnostics for man page style problems -.if !r CHECKSTYLE \ -. nr CHECKSTYLE 0 -. -.\" full capitalization of section headings -.if !r CS \ -. nr CS 0 -. -.\" full capitalization of page title -.if !r CT \ -. nr CT 0 -. -.\" double-sided layout -.ie !r D \ -. nr D 0 -.el \ -. if \n[D] \ -. if \n[an-html] \{\ -. tm \*[an-old]: ignoring double-sided layout in HTML output -. nr D 0 -. \} -. -.\" footer distance -.if !r FT \ -. nr FT (-.5i) -. -.\" hyphenation mode -.if !r HY \{\ -. \" No page breaks occur in continuous rendering. -. ie \n[cR] \ -. nr HY 4 -. el \ -. nr HY 6 -.\} -. -.\" standard indentation -.if !r IN \{\ -. \" We must select an integer indentation value for nroff; see comment -. \" in an-do-tag. -. ie t \ -. nr IN 7.2n -. el \ -. nr IN 7n -.\} -. -.\" line length -.if !r LL \{\ -. \" If in troff mode, respect device default. -. ie t \ -. nr LL \n[.l] -. \" Otherwise, override nroff mode default of 65n. -. el \ -. nr LL 78n -.\} -. -.\" title (header, footer) length -.if !r LT \ -. nr LT \n[LL]u -. -.\" starting page number -.\" -.\" Unlike most of these parameters, we do not set a default for P; -.\" groff supplies a default starting page number (1). Also, when -.\" rendering for the HTML output device, page numbers are concealed and -.\" used for internal purposes like image embedding. -.\" -.if r P \ -. if \n[an-html] \ -. if !(\n[P] = 1) \{\ -. tm \*[an-old]: ignoring starting page number in HTML output -. rr P -. \} -. -.if !r ps4html \ -. if r P \ -. pn 0\n[P] -. -.\" point size -.if !r S \{\ -. nr S 10 -. if '\*[.T]'X75-12' \ -. nr S 12 -. if '\*[.T]'X100-12' \ -. nr S 12 -.\} -. -.\" subsection indentation -.if !r SN \ -. nr SN 3n -. -.\" page number after which to apply letter suffixes -.\" -.\" Unlike most of these parameters, we do not set a default for X; only -.\" the macro an-p-footer uses it. -.if r X \ -. if \n[an-html] \{\ -. tm \*[an-old]: ignoring page letter suffixing in HTML output -. rr X -. \} -. -.\" adjustment mode -.if !d AD \ -. ds AD b\" -. -.\" (sub)section heading font -.if !d HF \ -. ds HF B\" -. -.if \n[cR] \ -. an-set-up-continuous-rendering -. -.cp \n[*groff_an-old_tmac_C] -. -.\" Local Variables: -.\" mode: nroff -.\" fill-column: 72 -.\" End: -.\" vim: set filetype=groff textwidth=72: diff --git a/docs/man/images/Images_info.adoc b/docs/man/images/Images_info.adoc deleted file mode 100644 index b8461c51656..00000000000 --- a/docs/man/images/Images_info.adoc +++ /dev/null @@ -1,60 +0,0 @@ -# Images in man pages - -Images in man pages are not recommended. It's better to use an ASCII representation (ASCII art) if possible. - -## Timing diagrams - -Timing diagrams can be created using link:https://wavedrom.com/editor.html[Wavedrom]. + -To use them in a man page as ASCII art folloe these steps: - -1. Save in a text file -2. Use link:https://github.com/Wren6991/asciiwave[asciiwave] to create the ascii output -3. Copy into the man page using `.br` as line separator - -Here an example: - -.toggle2nist: Timing diagram source code ----- -{'signal': [ - {name: 'in', wave: 'lHx.l.Hx.l'}, - {name: 'on', wave: 'lh.l......' }, - {name: 'off', wave: 'l.....h.l.' }, - {name: 'is-on', wave: 'l..h....l.' }, -]} ----- - - - -.toggle2nist: ASCII art generated by asciiwave ----- - ┐ ┏─────xxxxxxxxxxxx┐ ┏─────xxxxxxxxxxxx┐ -.br -in : └─────┛ xxxxxxxxxxxx└───────────┛ xxxxxxxxxxxx└───── -.br - ┐ ┌───────────┐ -.br -on : └─────┘ └───────────────────────────────────────── - ┐ ┌───────────┐ -.br -off : └───────────────────────────────────┘ └─────────── -.br - ┐ ┌─────────────────────────────┐ -.br -is-on: └─────────────────┘ └─────────── - ----- - - -## Diagrams - -ASCII art diagrams can be drawn e.g., with link:https://asciiflow.com/[asciiflow] - -.toggle2nist: Diagram drawn with asciiflow ----- - toggle2nist - ┌───────────┐ - ──┤in on├── - │ │ - ──┤is-on off├── - └───────────┘ ----- diff --git a/docs/man/images/toggle.json b/docs/man/images/toggle.json deleted file mode 100644 index 08c2f3e5b59..00000000000 --- a/docs/man/images/toggle.json +++ /dev/null @@ -1,4 +0,0 @@ -{signal: [ - {name: 'in', wave: 'lPlP'}, - {name: 'out', wave: 'lh.l' }, -]} diff --git a/docs/man/images/toggle.ps b/docs/man/images/toggle.ps deleted file mode 100644 index a9b5d70cbd003db626ee868044027c6ec87679d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7748 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 A#sB~S diff --git a/docs/man/images/toggle2nist.json b/docs/man/images/toggle2nist.json deleted file mode 100644 index 32d68278a02..00000000000 --- a/docs/man/images/toggle2nist.json +++ /dev/null @@ -1,6 +0,0 @@ -{'signal': [ - {name: 'in', wave: 'lHx.l.Hx.l'}, - {name: 'on', wave: 'lh.l......' }, - {name: 'off', wave: 'l.....h.l.' }, - {name: 'is-on', wave: 'l..h....l.' }, -]} diff --git a/docs/man/images/toggle2nist.ps b/docs/man/images/toggle2nist.ps deleted file mode 100644 index 0ed194d8825606aeff83e6b84828e4a8cb1f19ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17232 zcmeHPTW=gUntiWd!Fe!{EXES=WEqPE)=q+*Al`Mx0_GtI3>Gg^Cw-B-Td}=H{`($Q zk=<2lbxB5Mfq94!TUF$D$dBKRhwOHq{pHQu=l>ZtU3@MsX!GpZt8H}q&GrTHZn51E zcER)oC12g__qV$jmzRC(_14|qEd1_bv%UVhViueAH*Ozakngq&@?Go*QG|;Z%D$j2 z;gmB7zH!%a_k!fdZ#MpJ71w)U+zaw*8Qt2vT

FgIizULGXw8TU@>%d?frjh6SV< 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 diff --git a/docs/man/stylesheet.9 b/docs/man/stylesheet.9 deleted file mode 100644 index 461245f921d..00000000000 --- a/docs/man/stylesheet.9 +++ /dev/null @@ -1,2 +0,0 @@ -.HEAD " " \ - \ No newline at end of file diff --git a/docs/po4a.cfg b/docs/po4a.cfg index 3d9c8a1b29e..dfe73958541 100644 --- a/docs/po4a.cfg +++ b/docs/po4a.cfg @@ -371,122 +371,122 @@ [type: Text_def] src/gui/panelui_handler.py $lang:build/adoc/$lang/gui/panelui_handler.py -[type: man_def] man/man1/pi500_vfd.1 $lang:man/$lang/man1/pi500_vfd.1 -[type: man_def] man/man1/thermistor.1 $lang:man/$lang/man1/thermistor.1 -[type: man_def] man/man1/wj200_vfd.1 $lang:man/$lang/man1/wj200_vfd.1 -[type: man_def] man/man9/abs.9 $lang:man/$lang/man9/abs.9 -[type: man_def] man/man9/abs_s32.9 $lang:man/$lang/man9/abs_s32.9 -[type: man_def] man/man9/and2.9 $lang:man/$lang/man9/and2.9 -[type: man_def] man/man9/axistest.9 $lang:man/$lang/man9/axistest.9 -[type: man_def] man/man9/bin2gray.9 $lang:man/$lang/man9/bin2gray.9 -[type: man_def] man/man9/biquad.9 $lang:man/$lang/man9/biquad.9 -[type: man_def] man/man9/bitslice.9 $lang:man/$lang/man9/bitslice.9 -[type: man_def] man/man9/bitwise.9 $lang:man/$lang/man9/bitwise.9 -[type: man_def] man/man9/bldc.9 $lang:man/$lang/man9/bldc.9 -[type: man_def] man/man9/blend.9 $lang:man/$lang/man9/blend.9 -[type: man_def] man/man9/carousel.9 $lang:man/$lang/man9/carousel.9 -[type: man_def] man/man9/charge_pump.9 $lang:man/$lang/man9/charge_pump.9 -[type: man_def] man/man9/clarke2.9 $lang:man/$lang/man9/clarke2.9 -[type: man_def] man/man9/clarke3.9 $lang:man/$lang/man9/clarke3.9 -[type: man_def] man/man9/clarkeinv.9 $lang:man/$lang/man9/clarkeinv.9 -[type: man_def] man/man9/comp.9 $lang:man/$lang/man9/comp.9 -[type: man_def] man/man9/conv_bit_float.9 $lang:man/$lang/man9/conv_bit_float.9 -[type: man_def] man/man9/conv_bit_s32.9 $lang:man/$lang/man9/conv_bit_s32.9 -[type: man_def] man/man9/conv_bit_u32.9 $lang:man/$lang/man9/conv_bit_u32.9 -[type: man_def] man/man9/conv_float_s32.9 $lang:man/$lang/man9/conv_float_s32.9 -[type: man_def] man/man9/conv_float_u32.9 $lang:man/$lang/man9/conv_float_u32.9 -[type: man_def] man/man9/conv_s32_bit.9 $lang:man/$lang/man9/conv_s32_bit.9 -[type: man_def] man/man9/conv_s32_float.9 $lang:man/$lang/man9/conv_s32_float.9 -[type: man_def] man/man9/conv_s32_u32.9 $lang:man/$lang/man9/conv_s32_u32.9 -[type: man_def] man/man9/conv_u32_bit.9 $lang:man/$lang/man9/conv_u32_bit.9 -[type: man_def] man/man9/conv_u32_float.9 $lang:man/$lang/man9/conv_u32_float.9 -[type: man_def] man/man9/conv_u32_s32.9 $lang:man/$lang/man9/conv_u32_s32.9 -[type: man_def] man/man9/corexy_by_hal.9 $lang:man/$lang/man9/corexy_by_hal.9 -[type: man_def] man/man9/dbounce.9 $lang:man/$lang/man9/dbounce.9 -[type: man_def] man/man9/ddt.9 $lang:man/$lang/man9/ddt.9 -[type: man_def] man/man9/deadzone.9 $lang:man/$lang/man9/deadzone.9 -[type: man_def] man/man9/demux.9 $lang:man/$lang/man9/demux.9 -[type: man_def] man/man9/differential.9 $lang:man/$lang/man9/differential.9 -[type: man_def] man/man9/edge.9 $lang:man/$lang/man9/edge.9 -[type: man_def] man/man9/eoffset_per_angle.9 $lang:man/$lang/man9/eoffset_per_angle.9 -[type: man_def] man/man9/estop_latch.9 $lang:man/$lang/man9/estop_latch.9 -[type: man_def] man/man9/feedcomp.9 $lang:man/$lang/man9/feedcomp.9 -[type: man_def] man/man9/filter_kalman.9 $lang:man/$lang/man9/filter_kalman.9 -[type: man_def] man/man9/flipflop.9 $lang:man/$lang/man9/flipflop.9 -[type: man_def] man/man9/gantry.9 $lang:man/$lang/man9/gantry.9 -[type: man_def] man/man9/gearchange.9 $lang:man/$lang/man9/gearchange.9 -[type: man_def] man/man9/gray2bin.9 $lang:man/$lang/man9/gray2bin.9 -[type: man_def] man/man9/histobins.9 $lang:man/$lang/man9/histobins.9 -[type: man_def] man/man9/hypot.9 $lang:man/$lang/man9/hypot.9 -[type: man_def] man/man9/ilowpass.9 $lang:man/$lang/man9/ilowpass.9 -[type: man_def] man/man9/integ.9 $lang:man/$lang/man9/integ.9 -[type: man_def] man/man9/invert.9 $lang:man/$lang/man9/invert.9 -[type: man_def] man/man9/joyhandle.9 $lang:man/$lang/man9/joyhandle.9 -[type: man_def] man/man9/knob2float.9 $lang:man/$lang/man9/knob2float.9 -[type: man_def] man/man9/latencybins.9 $lang:man/$lang/man9/latencybins.9 -[type: man_def] man/man9/limit1.9 $lang:man/$lang/man9/limit1.9 -[type: man_def] man/man9/limit2.9 $lang:man/$lang/man9/limit2.9 -[type: man_def] man/man9/limit3.9 $lang:man/$lang/man9/limit3.9 -[type: man_def] man/man9/lincurve.9 $lang:man/$lang/man9/lincurve.9 -[type: man_def] man/man9/logic.9 $lang:man/$lang/man9/logic.9 -[type: man_def] man/man9/lowpass.9 $lang:man/$lang/man9/lowpass.9 -[type: man_def] man/man9/lut5.9 $lang:man/$lang/man9/lut5.9 -[type: man_def] man/man9/maj3.9 $lang:man/$lang/man9/maj3.9 -[type: man_def] man/man9/match8.9 $lang:man/$lang/man9/match8.9 -[type: man_def] man/man9/matrix_kb.9 $lang:man/$lang/man9/matrix_kb.9 -[type: man_def] man/man9/max31855.9 $lang:man/$lang/man9/max31855.9 -[type: man_def] man/man9/mesa_7i65.9 $lang:man/$lang/man9/mesa_7i65.9 -[type: man_def] man/man9/mesa_pktgyro_test.9 $lang:man/$lang/man9/mesa_pktgyro_test.9 -[type: man_def] man/man9/message.9 $lang:man/$lang/man9/message.9 -[type: man_def] man/man9/millturn.9 $lang:man/$lang/man9/millturn.9 -[type: man_def] man/man9/minmax.9 $lang:man/$lang/man9/minmax.9 -[type: man_def] man/man9/moveoff.9 $lang:man/$lang/man9/moveoff.9 -[type: man_def] man/man9/mult2.9 $lang:man/$lang/man9/mult2.9 -[type: man_def] man/man9/multiclick.9 $lang:man/$lang/man9/multiclick.9 -[type: man_def] man/man9/multiswitch.9 $lang:man/$lang/man9/multiswitch.9 -[type: man_def] man/man9/mux16.9 $lang:man/$lang/man9/mux16.9 -[type: man_def] man/man9/mux2.9 $lang:man/$lang/man9/mux2.9 -[type: man_def] man/man9/mux4.9 $lang:man/$lang/man9/mux4.9 -[type: man_def] man/man9/mux8.9 $lang:man/$lang/man9/mux8.9 -[type: man_def] man/man9/mux_generic.9 $lang:man/$lang/man9/mux_generic.9 -[type: man_def] man/man9/near.9 $lang:man/$lang/man9/near.9 -[type: man_def] man/man9/not.9 $lang:man/$lang/man9/not.9 -[type: man_def] man/man9/offset.9 $lang:man/$lang/man9/offset.9 -[type: man_def] man/man9/ohmic.9 $lang:man/$lang/man9/ohmic.9 -[type: man_def] man/man9/oneshot.9 $lang:man/$lang/man9/oneshot.9 -[type: man_def] man/man9/or2.9 $lang:man/$lang/man9/or2.9 -[type: man_def] man/man9/orient.9 $lang:man/$lang/man9/orient.9 -[type: man_def] man/man9/pid.9 $lang:man/$lang/man9/pid.9 -[type: man_def] man/man9/plasmac.9 $lang:man/$lang/man9/plasmac.9 -[type: man_def] man/man9/pwmgen.9 $lang:man/$lang/man9/pwmgen.9 -[type: man_def] man/man9/sample_hold.9 $lang:man/$lang/man9/sample_hold.9 -[type: man_def] man/man9/scale.9 $lang:man/$lang/man9/scale.9 -[type: man_def] man/man9/select8.9 $lang:man/$lang/man9/select8.9 -[type: man_def] man/man9/serport.9 $lang:man/$lang/man9/serport.9 -[type: man_def] man/man9/sim_axis_hardware.9 $lang:man/$lang/man9/sim_axis_hardware.9 -[type: man_def] man/man9/sim_encoder.9 $lang:man/$lang/man9/sim_encoder.9 -[type: man_def] man/man9/sim_home_switch.9 $lang:man/$lang/man9/sim_home_switch.9 -[type: man_def] man/man9/sim_matrix_kb.9 $lang:man/$lang/man9/sim_matrix_kb.9 -[type: man_def] man/man9/sim_parport.9 $lang:man/$lang/man9/sim_parport.9 -[type: man_def] man/man9/simple_tp.9 $lang:man/$lang/man9/simple_tp.9 -[type: man_def] man/man9/sim_spindle.9 $lang:man/$lang/man9/sim_spindle.9 -[type: man_def] man/man9/sphereprobe.9 $lang:man/$lang/man9/sphereprobe.9 -[type: man_def] man/man9/spindle.9 $lang:man/$lang/man9/spindle.9 -[type: man_def] man/man9/spindle_monitor.9 $lang:man/$lang/man9/spindle_monitor.9 -[type: man_def] man/man9/steptest.9 $lang:man/$lang/man9/steptest.9 -[type: man_def] man/man9/sum2.9 $lang:man/$lang/man9/sum2.9 -[type: man_def] man/man9/thc.9 $lang:man/$lang/man9/thc.9 -[type: man_def] man/man9/thcud.9 $lang:man/$lang/man9/thcud.9 -[type: man_def] man/man9/threadtest.9 $lang:man/$lang/man9/threadtest.9 -[type: man_def] man/man9/time.9 $lang:man/$lang/man9/time.9 -[type: man_def] man/man9/timedelay.9 $lang:man/$lang/man9/timedelay.9 -[type: man_def] man/man9/timedelta.9 $lang:man/$lang/man9/timedelta.9 -[type: man_def] man/man9/toggle2nist.9 $lang:man/$lang/man9/toggle2nist.9 -[type: man_def] man/man9/toggle.9 $lang:man/$lang/man9/toggle.9 -[type: man_def] man/man9/tristate_bit.9 $lang:man/$lang/man9/tristate_bit.9 -[type: man_def] man/man9/tristate_float.9 $lang:man/$lang/man9/tristate_float.9 -[type: man_def] man/man9/updown.9 $lang:man/$lang/man9/updown.9 -[type: man_def] man/man9/userkins.9 $lang:man/$lang/man9/userkins.9 -[type: man_def] man/man9/wcomp.9 $lang:man/$lang/man9/wcomp.9 -[type: man_def] man/man9/xhc_hb04_util.9 $lang:man/$lang/man9/xhc_hb04_util.9 -[type: man_def] man/man9/xor2.9 $lang:man/$lang/man9/xor2.9 +[type: man_def] build/man/man1/pi500_vfd.1 $lang:build/man/$lang/man1/pi500_vfd.1 +[type: man_def] build/man/man1/thermistor.1 $lang:build/man/$lang/man1/thermistor.1 +[type: man_def] build/man/man1/wj200_vfd.1 $lang:build/man/$lang/man1/wj200_vfd.1 +[type: man_def] build/man/man9/abs.9 $lang:build/man/$lang/man9/abs.9 +[type: man_def] build/man/man9/abs_s32.9 $lang:build/man/$lang/man9/abs_s32.9 +[type: man_def] build/man/man9/and2.9 $lang:build/man/$lang/man9/and2.9 +[type: man_def] build/man/man9/axistest.9 $lang:build/man/$lang/man9/axistest.9 +[type: man_def] build/man/man9/bin2gray.9 $lang:build/man/$lang/man9/bin2gray.9 +[type: man_def] build/man/man9/biquad.9 $lang:build/man/$lang/man9/biquad.9 +[type: man_def] build/man/man9/bitslice.9 $lang:build/man/$lang/man9/bitslice.9 +[type: man_def] build/man/man9/bitwise.9 $lang:build/man/$lang/man9/bitwise.9 +[type: man_def] build/man/man9/bldc.9 $lang:build/man/$lang/man9/bldc.9 +[type: man_def] build/man/man9/blend.9 $lang:build/man/$lang/man9/blend.9 +[type: man_def] build/man/man9/carousel.9 $lang:build/man/$lang/man9/carousel.9 +[type: man_def] build/man/man9/charge_pump.9 $lang:build/man/$lang/man9/charge_pump.9 +[type: man_def] build/man/man9/clarke2.9 $lang:build/man/$lang/man9/clarke2.9 +[type: man_def] build/man/man9/clarke3.9 $lang:build/man/$lang/man9/clarke3.9 +[type: man_def] build/man/man9/clarkeinv.9 $lang:build/man/$lang/man9/clarkeinv.9 +[type: man_def] build/man/man9/comp.9 $lang:build/man/$lang/man9/comp.9 +[type: man_def] build/man/man9/conv_bit_float.9 $lang:build/man/$lang/man9/conv_bit_float.9 +[type: man_def] build/man/man9/conv_bit_s32.9 $lang:build/man/$lang/man9/conv_bit_s32.9 +[type: man_def] build/man/man9/conv_bit_u32.9 $lang:build/man/$lang/man9/conv_bit_u32.9 +[type: man_def] build/man/man9/conv_float_s32.9 $lang:build/man/$lang/man9/conv_float_s32.9 +[type: man_def] build/man/man9/conv_float_u32.9 $lang:build/man/$lang/man9/conv_float_u32.9 +[type: man_def] build/man/man9/conv_s32_bit.9 $lang:build/man/$lang/man9/conv_s32_bit.9 +[type: man_def] build/man/man9/conv_s32_float.9 $lang:build/man/$lang/man9/conv_s32_float.9 +[type: man_def] build/man/man9/conv_s32_u32.9 $lang:build/man/$lang/man9/conv_s32_u32.9 +[type: man_def] build/man/man9/conv_u32_bit.9 $lang:build/man/$lang/man9/conv_u32_bit.9 +[type: man_def] build/man/man9/conv_u32_float.9 $lang:build/man/$lang/man9/conv_u32_float.9 +[type: man_def] build/man/man9/conv_u32_s32.9 $lang:build/man/$lang/man9/conv_u32_s32.9 +[type: man_def] build/man/man9/corexy_by_hal.9 $lang:build/man/$lang/man9/corexy_by_hal.9 +[type: man_def] build/man/man9/dbounce.9 $lang:build/man/$lang/man9/dbounce.9 +[type: man_def] build/man/man9/ddt.9 $lang:build/man/$lang/man9/ddt.9 +[type: man_def] build/man/man9/deadzone.9 $lang:build/man/$lang/man9/deadzone.9 +[type: man_def] build/man/man9/demux.9 $lang:build/man/$lang/man9/demux.9 +[type: man_def] build/man/man9/differential.9 $lang:build/man/$lang/man9/differential.9 +[type: man_def] build/man/man9/edge.9 $lang:build/man/$lang/man9/edge.9 +[type: man_def] build/man/man9/eoffset_per_angle.9 $lang:build/man/$lang/man9/eoffset_per_angle.9 +[type: man_def] build/man/man9/estop_latch.9 $lang:build/man/$lang/man9/estop_latch.9 +[type: man_def] build/man/man9/feedcomp.9 $lang:build/man/$lang/man9/feedcomp.9 +[type: man_def] build/man/man9/filter_kalman.9 $lang:build/man/$lang/man9/filter_kalman.9 +[type: man_def] build/man/man9/flipflop.9 $lang:build/man/$lang/man9/flipflop.9 +[type: man_def] build/man/man9/gantry.9 $lang:build/man/$lang/man9/gantry.9 +[type: man_def] build/man/man9/gearchange.9 $lang:build/man/$lang/man9/gearchange.9 +[type: man_def] build/man/man9/gray2bin.9 $lang:build/man/$lang/man9/gray2bin.9 +[type: man_def] build/man/man9/histobins.9 $lang:build/man/$lang/man9/histobins.9 +[type: man_def] build/man/man9/hypot.9 $lang:build/man/$lang/man9/hypot.9 +[type: man_def] build/man/man9/ilowpass.9 $lang:build/man/$lang/man9/ilowpass.9 +[type: man_def] build/man/man9/integ.9 $lang:build/man/$lang/man9/integ.9 +[type: man_def] build/man/man9/invert.9 $lang:build/man/$lang/man9/invert.9 +[type: man_def] build/man/man9/joyhandle.9 $lang:build/man/$lang/man9/joyhandle.9 +[type: man_def] build/man/man9/knob2float.9 $lang:build/man/$lang/man9/knob2float.9 +[type: man_def] build/man/man9/latencybins.9 $lang:build/man/$lang/man9/latencybins.9 +[type: man_def] build/man/man9/limit1.9 $lang:build/man/$lang/man9/limit1.9 +[type: man_def] build/man/man9/limit2.9 $lang:build/man/$lang/man9/limit2.9 +[type: man_def] build/man/man9/limit3.9 $lang:build/man/$lang/man9/limit3.9 +[type: man_def] build/man/man9/lincurve.9 $lang:build/man/$lang/man9/lincurve.9 +[type: man_def] build/man/man9/logic.9 $lang:build/man/$lang/man9/logic.9 +[type: man_def] build/man/man9/lowpass.9 $lang:build/man/$lang/man9/lowpass.9 +[type: man_def] build/man/man9/lut5.9 $lang:build/man/$lang/man9/lut5.9 +[type: man_def] build/man/man9/maj3.9 $lang:build/man/$lang/man9/maj3.9 +[type: man_def] build/man/man9/match8.9 $lang:build/man/$lang/man9/match8.9 +[type: man_def] build/man/man9/matrix_kb.9 $lang:build/man/$lang/man9/matrix_kb.9 +[type: man_def] build/man/man9/max31855.9 $lang:build/man/$lang/man9/max31855.9 +[type: man_def] build/man/man9/mesa_7i65.9 $lang:build/man/$lang/man9/mesa_7i65.9 +[type: man_def] build/man/man9/mesa_pktgyro_test.9 $lang:build/man/$lang/man9/mesa_pktgyro_test.9 +[type: man_def] build/man/man9/message.9 $lang:build/man/$lang/man9/message.9 +[type: man_def] build/man/man9/millturn.9 $lang:build/man/$lang/man9/millturn.9 +[type: man_def] build/man/man9/minmax.9 $lang:build/man/$lang/man9/minmax.9 +[type: man_def] build/man/man9/moveoff.9 $lang:build/man/$lang/man9/moveoff.9 +[type: man_def] build/man/man9/mult2.9 $lang:build/man/$lang/man9/mult2.9 +[type: man_def] build/man/man9/multiclick.9 $lang:build/man/$lang/man9/multiclick.9 +[type: man_def] build/man/man9/multiswitch.9 $lang:build/man/$lang/man9/multiswitch.9 +[type: man_def] build/man/man9/mux16.9 $lang:build/man/$lang/man9/mux16.9 +[type: man_def] build/man/man9/mux2.9 $lang:build/man/$lang/man9/mux2.9 +[type: man_def] build/man/man9/mux4.9 $lang:build/man/$lang/man9/mux4.9 +[type: man_def] build/man/man9/mux8.9 $lang:build/man/$lang/man9/mux8.9 +[type: man_def] build/man/man9/mux_generic.9 $lang:build/man/$lang/man9/mux_generic.9 +[type: man_def] build/man/man9/near.9 $lang:build/man/$lang/man9/near.9 +[type: man_def] build/man/man9/not.9 $lang:build/man/$lang/man9/not.9 +[type: man_def] build/man/man9/offset.9 $lang:build/man/$lang/man9/offset.9 +[type: man_def] build/man/man9/ohmic.9 $lang:build/man/$lang/man9/ohmic.9 +[type: man_def] build/man/man9/oneshot.9 $lang:build/man/$lang/man9/oneshot.9 +[type: man_def] build/man/man9/or2.9 $lang:build/man/$lang/man9/or2.9 +[type: man_def] build/man/man9/orient.9 $lang:build/man/$lang/man9/orient.9 +[type: man_def] build/man/man9/pid.9 $lang:build/man/$lang/man9/pid.9 +[type: man_def] build/man/man9/plasmac.9 $lang:build/man/$lang/man9/plasmac.9 +[type: man_def] build/man/man9/pwmgen.9 $lang:build/man/$lang/man9/pwmgen.9 +[type: man_def] build/man/man9/sample_hold.9 $lang:build/man/$lang/man9/sample_hold.9 +[type: man_def] build/man/man9/scale.9 $lang:build/man/$lang/man9/scale.9 +[type: man_def] build/man/man9/select8.9 $lang:build/man/$lang/man9/select8.9 +[type: man_def] build/man/man9/serport.9 $lang:build/man/$lang/man9/serport.9 +[type: man_def] build/man/man9/sim_axis_hardware.9 $lang:build/man/$lang/man9/sim_axis_hardware.9 +[type: man_def] build/man/man9/sim_encoder.9 $lang:build/man/$lang/man9/sim_encoder.9 +[type: man_def] build/man/man9/sim_home_switch.9 $lang:build/man/$lang/man9/sim_home_switch.9 +[type: man_def] build/man/man9/sim_matrix_kb.9 $lang:build/man/$lang/man9/sim_matrix_kb.9 +[type: man_def] build/man/man9/sim_parport.9 $lang:build/man/$lang/man9/sim_parport.9 +[type: man_def] build/man/man9/simple_tp.9 $lang:build/man/$lang/man9/simple_tp.9 +[type: man_def] build/man/man9/sim_spindle.9 $lang:build/man/$lang/man9/sim_spindle.9 +[type: man_def] build/man/man9/sphereprobe.9 $lang:build/man/$lang/man9/sphereprobe.9 +[type: man_def] build/man/man9/spindle.9 $lang:build/man/$lang/man9/spindle.9 +[type: man_def] build/man/man9/spindle_monitor.9 $lang:build/man/$lang/man9/spindle_monitor.9 +[type: man_def] build/man/man9/steptest.9 $lang:build/man/$lang/man9/steptest.9 +[type: man_def] build/man/man9/sum2.9 $lang:build/man/$lang/man9/sum2.9 +[type: man_def] build/man/man9/thc.9 $lang:build/man/$lang/man9/thc.9 +[type: man_def] build/man/man9/thcud.9 $lang:build/man/$lang/man9/thcud.9 +[type: man_def] build/man/man9/threadtest.9 $lang:build/man/$lang/man9/threadtest.9 +[type: man_def] build/man/man9/time.9 $lang:build/man/$lang/man9/time.9 +[type: man_def] build/man/man9/timedelay.9 $lang:build/man/$lang/man9/timedelay.9 +[type: man_def] build/man/man9/timedelta.9 $lang:build/man/$lang/man9/timedelta.9 +[type: man_def] build/man/man9/toggle2nist.9 $lang:build/man/$lang/man9/toggle2nist.9 +[type: man_def] build/man/man9/toggle.9 $lang:build/man/$lang/man9/toggle.9 +[type: man_def] build/man/man9/tristate_bit.9 $lang:build/man/$lang/man9/tristate_bit.9 +[type: man_def] build/man/man9/tristate_float.9 $lang:build/man/$lang/man9/tristate_float.9 +[type: man_def] build/man/man9/updown.9 $lang:build/man/$lang/man9/updown.9 +[type: man_def] build/man/man9/userkins.9 $lang:build/man/$lang/man9/userkins.9 +[type: man_def] build/man/man9/wcomp.9 $lang:build/man/$lang/man9/wcomp.9 +[type: man_def] build/man/man9/xhc_hb04_util.9 $lang:build/man/$lang/man9/xhc_hb04_util.9 +[type: man_def] build/man/man9/xor2.9 $lang:build/man/$lang/man9/xor2.9 diff --git a/docs/src/Submakefile b/docs/src/Submakefile index 7611b346612..7b05e713e4f 100644 --- a/docs/src/Submakefile +++ b/docs/src/Submakefile @@ -44,11 +44,26 @@ DOC_SRCDIR=../docs/src # docs/build/html//pdf/LinuxCNC_*_.pdf # docs/build/adoc//... # po4a-translated source tree # -# Manpage troff stays at docs/man/ (input to docs build; also written by -# halcompile and consumed by install-man). +# Manpage troff is generated under build/, not committed to the source tree. +# Written by halcompile and the docs build; consumed by install-man and the +# run-in-place MANPATH. +# +# Layout follows the /usr/share/man hierarchy, NOT the build/html/ and +# build/adoc/ convention used everywhere else in this tree: +# +# docs/build/man/manN # English (the C / default locale) +# docs/build/man//manN # translations, keyed by locale +# +# This asymmetry is deliberate. man(1) resolves a MANPATH entry by locale, +# reading //manN for a translation and falling back to +# /manN for the default locale; putting English under an en/ subdir +# would break a plain `MANPATH=.../build/man` under LANG=C. The cost is that +# the English man tree is special-cased below (top-level manN, no en/ prefix), +# unlike html/adoc which key every language including English under /. DOC_BUILD := $(DOC_DIR)/build DOC_OUT_HTML := $(DOC_BUILD)/html DOC_OUT_ADOC := $(DOC_BUILD)/adoc +DOC_MAN := $(DOC_BUILD)/man # PDFs live under the html tree (docs/build/html//pdf/) so the html # subtree is self-contained and can link them with relative paths. @@ -59,13 +74,13 @@ ASCIIDOCTOR_DEFAULT_CSS := $(shell ruby -e 'require "asciidoctor"; print Asciido LANGUAGES := $(strip $(shell sed -e's/#.*//' < $(DOC_DIR)/po4a.cfg | grep '^\[po4a_langs\]' | cut -d" " -f2-)) LANGUAGES_MATCH := $(shell echo $(LANGUAGES) | tr " " "|") -GENERATED_MANPAGES += ../docs/man/man1/linuxcnc.1 -GENERATED_MANPAGES += $(patsubst ../docs/src/man/%.adoc, ../docs/man/%, $(wildcard ../docs/src/man/*/*.adoc)) +GENERATED_MANPAGES += $(DOC_MAN)/man1/linuxcnc.1 +GENERATED_MANPAGES += $(patsubst ../docs/src/man/%.adoc, $(DOC_MAN)/%, $(wildcard ../docs/src/man/man?/*.adoc)) MAN_SRCS = $(sort \ - $(wildcard $(DOC_DIR)/man/man1/*.1) \ - $(wildcard $(DOC_DIR)/man/man3/*.3) \ - $(wildcard $(DOC_DIR)/man/man9/*.9) \ + $(wildcard $(DOC_MAN)/man1/*.1) \ + $(wildcard $(DOC_MAN)/man3/*.3) \ + $(wildcard $(DOC_MAN)/man9/*.9) \ $(GENERATED_MANPAGES)) $(DOC_OUT_ADOC)/en/man/man1/linuxcnc.1.adoc: $(DOC_SRCDIR)/man/man1/linuxcnc.1.adoc.in $(SRCDIR)/config.status @@ -75,7 +90,7 @@ $(DOC_OUT_ADOC)/en/man/man1/linuxcnc.1.adoc: $(DOC_SRCDIR)/man/man1/linuxcnc.1.a # linuxcnc.1 troff comes from the build-tree-generated .adoc above; the # generic pattern rule at the end of this file expects sources under # $(DOC_DIR)/src/man/, so override with an explicit rule. -../docs/man/man1/linuxcnc.1: $(DOC_OUT_ADOC)/en/man/man1/linuxcnc.1.adoc +$(DOC_MAN)/man1/linuxcnc.1: $(DOC_OUT_ADOC)/en/man/man1/linuxcnc.1.adoc $(ECHO) Making manpage $(notdir $@) @mkdir -p $(dir $@) $(Q)asciidoctor --doctype=manpage \ @@ -248,7 +263,7 @@ endef GENERATED_TRANSLATED = $(foreach l, $(LANGUAGES), \ $(DOC_OUT_ADOC)/$(l) \ $(DOC_OUT_HTML)/$(l) \ - $(DOC_DIR)/man/$(l) \ + $(DOC_MAN)/$(l) \ ) # Time how long po4a takes to run if the system has the `time` command @@ -270,7 +285,7 @@ endif # auto-generated from the English manpages by gen_complist.py. It must # exist before po4a is invoked, otherwise po4a aborts with "master file # does not exist". gen_complist.py reads the manpage source list from -# $(DOC_DIR)/man/, so changes to that set must invalidate the file -- +# $(DOC_MAN)/, so changes to that set must invalidate the file -- # hence $(MAN_SRCS) as a real prereq (the script is content-stable via # write_if_changed, so re-running over the same set is a no-op for # mtime, which keeps downstream po4a from re-firing every build). @@ -333,9 +348,14 @@ endif $(foreach L,en $(LANGUAGES),\ $(eval DOC_SRCS_$(call toUC,$(L))_SMALL := \ - $(filter-out Master_%,$(DOC_SRCS_$(call toUC,$(L)))))) + $(filter-out Master_% man/% $(L)/man/%,$(DOC_SRCS_$(call toUC,$(L)))))) -DOC_SRCS_HTML = $(patsubst %.adoc, %.html, $(foreach p, $(DOC_SRCS), $(if $(findstring Master_, $(p)),, $p))) +# Manpages are produced by the translated-manpage pipeline further +# down (asciidoctor --doctype=manpage), not the generic adoc-to-html +# rule. Filter them out so DOC_TARGETS_HTML_ does not claim the +# same html//man/... output paths. +DOC_SRCS_HTML = $(patsubst %.adoc, %.html, $(foreach p, $(DOC_SRCS), \ + $(if $(findstring Master_, $(p)),, $(if $(findstring /man/, /$(p)),, $(p))))) # Per-language HTML target lists. English files have no lang/ prefix in # their source path; translated files already include $(L)/ in DOC_SRCS_$L. @@ -349,7 +369,8 @@ $(foreach L,$(LANGUAGES), \ $(eval DOC_TARGETS_HTML_$(call toUC,$(L)) := \ $$(addprefix $(DOC_OUT_HTML)/, \ $$(patsubst %.adoc,%.html, \ - $$(filter-out $(L)/Master_%, $$(DOC_SRCS_$(call toUC,$(L)))))))) + $$(filter-out $(L)/Master_% $(L)/man/%, \ + $$(DOC_SRCS_$(call toUC,$(L)))))))) DOC_TARGETS_HTML = $(DOC_TARGETS_HTML_EN) ifeq ($(BUILD_DOCS_TRANSLATED),yes) DOC_TARGETS_HTML += $(foreach L,$(LANGUAGES),$(DOC_TARGETS_HTML_$(call toUC,$(L)))) @@ -365,15 +386,22 @@ DOC_TARGETS_XML += $(foreach L,$(LANGUAGES),$(DOC_TARGETS_XML_$(call toUC,$(L))) endif # Manpage HTML. English manpages live at docs/build/html/en/man/manN/X.html; -# translated manpages mirror the layout under their own lang dir. -MAN_HTML_TARGETS_EN := $(patsubst $(DOC_DIR)/man/%, $(DOC_OUT_HTML)/en/man/%.html, \ - $(filter-out $(foreach L,$(LANGUAGES),$(DOC_DIR)/man/$(L)/%), $(MAN_SRCS))) +# translated manpages mirror the layout under their own lang dir. The +# per-lang list is derived from po4a.cfg (authoritative source of which +# manpages have a translated counterpart) rather than MAN_SRCS, which +# would close a cycle through components_gen.adoc and over-include. +MAN_HTML_TARGETS_EN := $(patsubst $(DOC_MAN)/%, $(DOC_OUT_HTML)/en/man/%.html, $(MAN_SRCS)) +PO4A_MANPAGE_STEMS := $(shell sed -ne 's|^\[type: AsciiDoc_def\] src/man/\([^ ]*\)\.adoc .*|\1|p' $(DOC_DIR)/po4a.cfg) $(foreach L,$(LANGUAGES), \ $(eval MAN_HTML_TARGETS_$(call toUC,$(L)) := \ - $$(patsubst $(DOC_DIR)/man/$(L)/%, $(DOC_OUT_HTML)/$(L)/man/%.html, \ - $$(filter $(DOC_DIR)/man/$(L)/%, $$(MAN_SRCS))))) + $$(addprefix $(DOC_OUT_HTML)/$(L)/man/, \ + $$(addsuffix .html, $$(PO4A_MANPAGE_STEMS))))) +ifeq ($(BUILD_DOCS_TRANSLATED),yes) MAN_HTML_TARGETS = $(MAN_HTML_TARGETS_EN) \ $(foreach L,$(LANGUAGES),$(MAN_HTML_TARGETS_$(call toUC,$(L)))) +else +MAN_HTML_TARGETS = $(MAN_HTML_TARGETS_EN) +endif # PDFs live in their own subtree alongside html/ and adoc/ so the html # tree zips up cleanly without PDF bloat, matching the rest of the @@ -421,7 +449,7 @@ clean: clean-manpages clean-translated clean-manpages: -rm -f $(GENERATED_MANPAGES) # Remove generated alias man pages too. - $(RM) $$(grep -lr '^\.so ' $(DOC_DIR)/man/man*) + $(RM) $$(grep -lr '^\.so ' $(DOC_MAN)/man*) clean-translated: -$(RM) -r $(GENERATED_TRANSLATED) @@ -553,7 +581,7 @@ $(DOC_DIR)/.checkref-%-stamp: $$(DOC_TARGETS_HTML_$$(call uc,$$*)) \ @touch $@ -MAN_SRCS_NOSO = $(patsubst $(DOC_DIR)/man/%,%, \ +MAN_SRCS_NOSO = $(patsubst $(DOC_MAN)/%,%, \ $(shell grep -s -L '^\.so ' $(MAN_SRCS))) PDF_MAN_ORDER := man1/linuxcnc.1 $(filter-out %/linuxcnc.1, $(filter man1/%, $(MAN_SRCS_NOSO))) \ @@ -603,8 +631,8 @@ $(foreach L,$(LANGUAGES), \ # Manpage HTML rule, parameterised over language tag (en / de / ...). The -# English bucket reads troff from docs/man/manN; translated buckets read -# from docs/man//manN. cssrel is ../../../ for both: each output +# English bucket reads troff from docs/build/man/manN; translated buckets read +# from docs/build/man//manN. cssrel is ../../../ for both: each output # sits at docs/build/html//man/manN/X.html (4 levels under html/). define MAN_HTML_RULE $(DOC_OUT_HTML)/$(1)/man/%.html: $(2)/% $(DOC_SRCDIR)/docinfo.html @@ -648,9 +676,9 @@ $(DOC_OUT_HTML)/$(1)/man/%.html: $(2)/% $(DOC_SRCDIR)/docinfo.html ; \ fi; endef -$(eval $(call MAN_HTML_RULE,en,$(DOC_DIR)/man,$(DOC_SRCDIR))) +$(eval $(call MAN_HTML_RULE,en,$(DOC_MAN),$(DOC_SRCDIR))) $(foreach L,$(LANGUAGES), \ - $(eval $(call MAN_HTML_RULE,$(L),$(DOC_DIR)/man/$(L),$(DOC_OUT_ADOC)/$(L)))) + $(eval $(call MAN_HTML_RULE,$(L),$(DOC_MAN)/$(L),$(DOC_OUT_ADOC)/$(L)))) # # This function appends a section to the "manpages" HTML fragment called @@ -681,7 +709,7 @@ objects/index.incl: $(GENERATED_MANPAGES) objects/var-MAN_HTML_TARGETS $(DOC_SRC $(call ADD_HTML_MANPAGES, 3, API: General, $(filter-out $(DOC_OUT_HTML)/en/man/man3/hal%.html, $(filter-out $(DOC_OUT_HTML)/en/man/man3/rtapi%.html, $(filter-out $(DOC_OUT_HTML)/en/man/man3/hm2%.html, $(filter $(DOC_OUT_HTML)/en/man/man3/%.html, $(MAN_HTML_TARGETS_EN)))))) \ # now make sure all English manpages made it into the html index FAIL=0; \ - for F in $$(find $(DOC_DIR)/man/man* -maxdepth 2 -type f); do \ + for F in $$(find $(DOC_MAN)/man* -maxdepth 2 -type f); do \ B=$$(basename $$F); \ if ! grep -q $$B $@; then \ FAIL=1; \ @@ -694,7 +722,7 @@ objects/index.incl: $(GENERATED_MANPAGES) objects/var-MAN_HTML_TARGETS $(DOC_SRC done; \ if [ $$FAIL -ne 0 ]; then exit 1; fi mkdir -p $(DOC_OUT_HTML)/en/man/man/images/ - find $(DOC_DIR)/man -maxdepth 3 -name "*.png" ! -name "grohtml*" -exec mv {} "$(DOC_OUT_HTML)/en/man/man/images/" \; + find $(DOC_MAN) -maxdepth 3 -name "*.png" ! -name "grohtml*" -exec mv {} "$(DOC_OUT_HTML)/en/man/man/images/" \; $(DOC_OUT_HTML)/%/index.html: $(DOC_OUT_ADOC)/%/index.tmpl ../VERSION $(DOC_SRCDIR)/index.foot @mkdir -p $(dir $@) @@ -1086,12 +1114,12 @@ docclean: -rm -f $(DOTFILES:.dot=.svg) -MAN_DEPS := $(patsubst $(DOC_DIR)/man/%, depends/%.d, $(MAN_SRCS)) -$(MAN_DEPS): depends/%.d: $(DOC_DIR)/man/% +MAN_DEPS := $(patsubst $(DOC_MAN)/%, depends/%.d, $(MAN_SRCS)) +$(MAN_DEPS): depends/%.d: $(DOC_MAN)/% @echo Depending $(notdir $<) @mkdir -p $(dir $@) $(Q)echo -n "$(DOC_OUT_HTML)/en/man/$*.html: $<" > $@.tmp - $(Q)grep '^\.so ' $< | awk '{ if ($$2 ~ /\//) printf " \\\n\t$(DOC_DIR)/man/%s", $$2; else printf " \\\n\t$(DOC_DIR)/man/$(*D)/%s", $$2 }' >> $@.tmp + $(Q)grep '^\.so ' $< | awk '{ if ($$2 ~ /\//) printf " \\\n\t$(DOC_MAN)/%s", $$2; else printf " \\\n\t$(DOC_MAN)/$(*D)/%s", $$2 }' >> $@.tmp $(Q)echo >> $@.tmp $(Q)mv -f $@.tmp $@ @@ -1127,8 +1155,8 @@ manpages: $(GENERATED_MANPAGES) TARGETS += manpages # make manpages from all the asciidoc manpage-sources -GENERATED_MANPAGES += $(patsubst $(DOC_DIR)/src/man/%.adoc, $(DOC_DIR)/man/%, $(wildcard $(DOC_DIR)/src/man/man?/*.adoc)) -$(DOC_DIR)/man/%: $(DOC_DIR)/src/man/%.adoc +GENERATED_MANPAGES += $(patsubst $(DOC_DIR)/src/man/%.adoc, $(DOC_MAN)/%, $(wildcard $(DOC_DIR)/src/man/man?/*.adoc)) +$(DOC_MAN)/%: $(DOC_DIR)/src/man/%.adoc $(ECHO) Making manpage $(notdir $@) @mkdir -p $(dir $@) $(Q)asciidoctor --doctype=manpage \ @@ -1138,3 +1166,37 @@ $(DOC_DIR)/man/%: $(DOC_DIR)/src/man/%.adoc -a mansource=LinuxCNC \ -a manmanual='LinuxCNC Documentation' \ $< + +# Translated manpages. po4a writes per-lang adocs under +# $(DOC_OUT_ADOC)//man/manN/X.adoc; generate troff under +# $(DOC_MAN)//manN/X (the path MAN_HTML_RULE expects for translations, +# alongside the English tree at $(DOC_MAN)/manN). The MAN_HTML_TARGETS_ +# list is already populated by the general logic earlier in this file once +# GENERATED_MANPAGES carries the translated paths, so HTML generation reuses +# MAN_HTML_RULE and avoids duplicate recipes. +ifeq ($(BUILD_DOCS_TRANSLATED),yes) +define TRANSLATED_TROFF_RULE +$$(DOC_MAN)/$1/%: $$(DOC_OUT_ADOC)/$1/man/%.adoc | $$(DOC_DIR)/.translateddocs-stamp + $$(ECHO) Making translated manpage $1 $$(notdir $$@) + @mkdir -p $$(dir $$@) + $$(Q)asciidoctor --doctype=manpage \ + --backend=manpage \ + --destination-dir="$$(dir $$@)" \ + -a compat-mode \ + -a mansource=LinuxCNC \ + -a manmanual='LinuxCNC Documentation' \ + $$< +endef +$(foreach L,$(LANGUAGES),$(eval $(call TRANSLATED_TROFF_RULE,$(L)))) + +# Wire translated manpages into `docs` only (not `manpages`). Pulling +# them into `manpages` would create a cycle: the troff rule's order-only +# dep on .translateddocs-stamp resolves through po4a -> manpages, and +# adding the translated manpages back to that node closes the loop. +TRANSLATED_MAN_HTML_TARGETS := $(foreach L,$(LANGUAGES),$(MAN_HTML_TARGETS_$(call toUC,$(L)))) +TRANSLATED_GENERATED_MANPAGES := $(foreach L,$(LANGUAGES), \ + $(patsubst $(DOC_OUT_ADOC)/$(L)/man/%.adoc, $(DOC_MAN)/$(L)/%, \ + $(wildcard $(DOC_OUT_ADOC)/$(L)/man/man?/*.adoc))) +docs: $(TRANSLATED_MAN_HTML_TARGETS) +.SECONDARY: $(TRANSLATED_MAN_HTML_TARGETS) $(TRANSLATED_GENERATED_MANPAGES) +endif diff --git a/docs/src/gen_complist.py b/docs/src/gen_complist.py index 7a7f4df6374..7b47a56654d 100644 --- a/docs/src/gen_complist.py +++ b/docs/src/gen_complist.py @@ -22,9 +22,9 @@ def write_if_changed(path, content): f.write(content) return True -man1_path = '../docs/man/man1' +man1_path = '../docs/build/man/man1' man1_files = {f for f in os.listdir(man1_path) if f[0] != '.' and os.path.isfile(os.path.join(man1_path, f))} -man9_path = '../docs/man/man9' +man9_path = '../docs/build/man/man9' man9_files = {f for f in os.listdir(man9_path) if f[0] != '.' and os.path.isfile(os.path.join(man9_path, f))} man_files = man1_files.union(man9_files) complist_doc = set() @@ -58,7 +58,7 @@ def add_links(lines, add_descr): line = line.replace(comp_man, 'link:../man/man'+man+'/'+comp_man+'.html['+comp+']', 1) if add_descr: splitted = line.split('|') - splitted[2] = extract_descr('../docs/man/man'+man+'/'+comp_man)\ + splitted[2] = extract_descr('../docs/build/man/man'+man+'/'+comp_man)\ .replace(comp + ' ', ' ', 1).strip('\n -') line = '|'.join(splitted) result.append(line) diff --git a/docs/src/hal/tutorial.adoc b/docs/src/hal/tutorial.adoc index cacd61d7c55..87dcfa00d74 100644 --- a/docs/src/hal/tutorial.adoc +++ b/docs/src/hal/tutorial.adoc @@ -27,7 +27,7 @@ man page is not installed but is accessible in the LinuxCNC main directory with the following command: ---- -$ man -M docs/man halcmd +$ man -M docs/build/man halcmd ---- === Notation diff --git a/scripts/rip-environment.in b/scripts/rip-environment.in index 0f3ade3d596..13da69e22e8 100644 --- a/scripts/rip-environment.in +++ b/scripts/rip-environment.in @@ -93,12 +93,12 @@ fi if [ -z "$MANPATH" ]; then if type -path manpath > /dev/null 2>&1; then - MANPATH=$EMC2_HOME/docs/man:"$(manpath)" + MANPATH=$EMC2_HOME/docs/build/man:"$(manpath)" else - MANPATH=$EMC2_HOME/docs/man:/usr/local/man:/usr/local/share/man:/usr/share/man + MANPATH=$EMC2_HOME/docs/build/man:/usr/local/man:/usr/local/share/man:/usr/share/man fi else - MANPATH=$EMC2_HOME/docs/man:"$MANPATH" + MANPATH=$EMC2_HOME/docs/build/man:"$MANPATH" fi if [ -z "$GLADE_CATALOG_SEARCH_PATH" ]; then diff --git a/src/Doxyfile b/src/Doxyfile index 6e210be5a76..ba7e4cc6865 100644 --- a/src/Doxyfile +++ b/src/Doxyfile @@ -2095,7 +2095,7 @@ GENERATE_MAN = NO # The default directory is: man. # This tag requires that the tag GENERATE_MAN is set to YES. -MAN_OUTPUT = ../docs/man +MAN_OUTPUT = ../docs/build/man # The MAN_EXTENSION tag determines the extension that is added to the generated # man pages. In case the manual section does not start with a number, the number diff --git a/src/Makefile b/src/Makefile index 482d453198c..4b221e6546b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -679,9 +679,9 @@ install-dirs: $(DESTDIR)$(datadir)/linuxcnc/hallib install-kernel-indep: install-dirs - $(FILE) ../docs/man/man1/*.1 $(DESTDIR)$(mandir)/man1 - $(FILE) $(wildcard ../docs/man/man3/*.3) $(DESTDIR)$(mandir)/man3 - $(FILE) $(wildcard ../docs/man/man9/*.9) $(DESTDIR)$(mandir)/man9 + $(FILE) ../docs/build/man/man1/*.1 $(DESTDIR)$(mandir)/man1 + $(FILE) $(wildcard ../docs/build/man/man3/*.3) $(DESTDIR)$(mandir)/man3 + $(FILE) $(wildcard ../docs/build/man/man9/*.9) $(DESTDIR)$(mandir)/man9 $(FILE) objects/*.msg $(DESTDIR)$(tcldir)/msgs $(EXE) ../scripts/realtime $(DESTDIR)$(prefix)/lib/linuxcnc $(EXE) ../scripts/halrun $(DESTDIR)$(bindir) @@ -1461,7 +1461,7 @@ swish: $(dir $(BASEPWD))scripts \ $(dir $(BASEPWD))configs \ $(dir $(BASEPWD))docs/src \ - $(dir $(BASEPWD))docs/man/man1 + $(dir $(BASEPWD))docs/build/man/man1 # When you depend on objects/var-ZZZ you are depending on the contents of the # variable ZZZ, which is assumed to depend on a Makefile, a Submakefile, or diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index 2c37b2043f8..718ed39d1a6 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -33,7 +33,7 @@ CONVERTERS := \ conv_u64_u32.comp \ conv_u64_s64.comp COMPS := $(filter-out hal/components/tpcomp.comp hal/components/homecomp.comp, $(sort $(wildcard hal/components/*.comp) $(addprefix hal/components/, $(CONVERTERS)))) -COMP_MANPAGES := $(patsubst hal/components/%.comp, ../docs/man/man9/%.9, $(COMPS)) ../docs/man/man9/tpcomp.9 ../docs/man/man9/homecomp.9 +COMP_MANPAGES := $(patsubst hal/components/%.comp, ../docs/build/man/man9/%.9, $(COMPS)) ../docs/build/man/man9/tpcomp.9 ../docs/build/man/man9/homecomp.9 ifeq ($(BUILD_SYS),uspace) COMP_DRIVERS += hal/drivers/serport.comp COMP_DRIVERS += hal/drivers/mesa_7i65.comp @@ -41,7 +41,7 @@ COMP_DRIVERS += hal/drivers/mesa_uart.comp else COMP_DRIVERS := $(wildcard hal/drivers/*.comp) endif -COMP_DRIVER_MANPAGES := $(patsubst hal/drivers/%.comp, ../docs/man/man9/%.9, $(COMP_DRIVERS)) +COMP_DRIVER_MANPAGES := $(patsubst hal/drivers/%.comp, ../docs/build/man/man9/%.9, $(COMP_DRIVERS)) TARGETS += manpages GENERATED_MANPAGES += $(COMP_MANPAGES) GENERATED_MANPAGES += $(COMP_DRIVER_MANPAGES) @@ -76,7 +76,7 @@ $(COMP_DRIVER_MANPAGE_ADOCS): objects/man/man9/%.9.adoc: hal/drivers/%.comp ../b # emitting troff directly with sed post-processing to escape .als / .URL # directives that the old dblatex-based PDF pipeline choked on; with the # asciidoctor toolchain reading adoc straight through, that hack is gone. -$(COMP_MANPAGES) $(COMP_DRIVER_MANPAGES): ../docs/man/man9/%.9: objects/man/man9/%.9.adoc +$(COMP_MANPAGES) $(COMP_DRIVER_MANPAGES): ../docs/build/man/man9/%.9: objects/man/man9/%.9.adoc $(ECHO) Making halcompile manpage $(notdir $@) @mkdir -p $(dir $@) $(Q)asciidoctor --doctype=manpage \ diff --git a/src/hal/components/stylesheet.9 b/src/hal/components/stylesheet.9 deleted file mode 100644 index e313077c576..00000000000 --- a/src/hal/components/stylesheet.9 +++ /dev/null @@ -1 +0,0 @@ -.HEAD " " diff --git a/src/hal/user_comps/Submakefile b/src/hal/user_comps/Submakefile index 42a52579cee..3dd1fe725b9 100644 --- a/src/hal/user_comps/Submakefile +++ b/src/hal/user_comps/Submakefile @@ -2,7 +2,7 @@ USER_COMP_PY = pyvcp hal_input gladevcp scorbot-er-3 mitsub_vfd pmx485 sim-torch USER_COMPS := $(sort $(wildcard hal/user_comps/*.comp)) USER_COMP_BINS := $(patsubst hal/user_comps/%.comp, ../bin/%, $(USER_COMPS)) -USER_COMP_MANPAGES := $(patsubst hal/user_comps/%.comp, ../docs/man/man1/%.1, $(USER_COMPS)) +USER_COMP_MANPAGES := $(patsubst hal/user_comps/%.comp, ../docs/build/man/man1/%.1, $(USER_COMPS)) USER_COMP_SRCS := $(patsubst %.comp, objects/%.c, $(USER_COMPS)) GENERATED_MANPAGES += $(USER_COMP_MANPAGES) USERSRCS += $(USER_COMP_SRCS) @@ -86,7 +86,7 @@ USERSRCS += $(SENDKEYS_SRC) $(Q)$(CC) $(LDFLAGS) -o $@ $^ TARGETS += ../bin/sendkeys -$(USER_COMP_MANPAGES): ../docs/man/man1/%.1: hal/user_comps/%.comp ../bin/halcompile +$(USER_COMP_MANPAGES): ../docs/build/man/man1/%.1: hal/user_comps/%.comp ../bin/halcompile $(ECHO) Making halcompile manpage $(notdir $@) @mkdir -p $(dir $@) objects/man/man1 $(Q)../bin/halcompile -U --userspace --document --keep-adoc=$@.adoc -o $@ $< diff --git a/src/hal/user_comps/pi500_vfd/Submakefile b/src/hal/user_comps/pi500_vfd/Submakefile index 18c31a6249c..231c34aa085 100644 --- a/src/hal/user_comps/pi500_vfd/Submakefile +++ b/src/hal/user_comps/pi500_vfd/Submakefile @@ -16,7 +16,7 @@ hal/user_comps/pi500_vfd/pi500_vfd.c: hal/user_comps/pi500_vfd/pi500_vfd.comp .. $(ECHO) "Preprocessing pi500_vfd.comp" $(Q)../bin/halcompile -U --preprocess $< -../docs/man/man1/pi500_vfd.1: hal/user_comps/pi500_vfd/pi500_vfd.comp ../bin/halcompile +../docs/build/man/man1/pi500_vfd.1: hal/user_comps/pi500_vfd/pi500_vfd.comp ../bin/halcompile @mkdir -p $(dir $@) objects/man/man1 $(Q)../bin/halcompile -U -u --document --keep-adoc=$@.adoc -o $@ $< $(Q)sed -i -e's/^\.als /.\\" .als /' $@ @@ -28,6 +28,6 @@ pi500_clean: -rm -f hal/user_comps/pi500_vfd/pi500_vfd.1 TARGETS += ../bin/pi500_vfd -GENERATED_MANPAGES += ../docs/man/man1/pi500_vfd.1 +GENERATED_MANPAGES += ../docs/build/man/man1/pi500_vfd.1 endif diff --git a/src/hal/user_comps/wj200_vfd/Submakefile b/src/hal/user_comps/wj200_vfd/Submakefile index a8b582a3e38..81a41e6442c 100644 --- a/src/hal/user_comps/wj200_vfd/Submakefile +++ b/src/hal/user_comps/wj200_vfd/Submakefile @@ -16,7 +16,7 @@ hal/user_comps/wj200_vfd/wj200_vfd.c: hal/user_comps/wj200_vfd/wj200_vfd.comp .. $(ECHO) "Preprocessing wj200_vfd.comp" $(Q)../bin/halcompile -U --preprocess $< -../docs/man/man1/wj200_vfd.1: hal/user_comps/wj200_vfd/wj200_vfd.comp ../bin/halcompile +../docs/build/man/man1/wj200_vfd.1: hal/user_comps/wj200_vfd/wj200_vfd.comp ../bin/halcompile @mkdir -p $(dir $@) objects/man/man1 $(Q)../bin/halcompile -U -u --document --keep-adoc=$@.adoc -o $@ $< $(Q)sed -i -e's/^\.als /.\\" .als /' $@ @@ -28,6 +28,6 @@ wj200_clean: -rm -f hal/user_comps/wj200_vfd/wj200_vfd.1 TARGETS += ../bin/wj200_vfd -GENERATED_MANPAGES += ../docs/man/man1/wj200_vfd.1 +GENERATED_MANPAGES += ../docs/build/man/man1/wj200_vfd.1 endif diff --git a/src/hal/utils/halcompile.g b/src/hal/utils/halcompile.g index fcce8c63297..ab5a38310ed 100644 --- a/src/hal/utils/halcompile.g +++ b/src/hal/utils/halcompile.g @@ -1308,7 +1308,7 @@ def main(): manpath = os.path.join(BASE, "share/man/man" + section) sharepath = manpath if not os.path.isdir(manpath): - manpath = os.path.join(BASE, "docs/man/man" + section) + manpath = os.path.join(BASE, "docs/build/man/man" + section) if not os.path.isdir(manpath): raise SystemExit("Error: directory '%s' (nor alternative '%s') found" % (sharepath, manpath)) outfile = os.path.join(manpath, basename + "." + section) From a2b3fb4499ebff0375ce2812a4b40fc630bbea12 Mon Sep 17 00:00:00 2001 From: Luca Toniolo <10792599+grandixximo@users.noreply.github.com> Date: Thu, 4 Jun 2026 11:47:08 +0800 Subject: [PATCH 2/3] docs(build): render the full manpage set in every language Translated landing pages now list and link the same manpages English does, rather than only the ~205 that have a po4a translation. Each language renders all 455 manpages: translated where a po4a leg provides it (AsciiDoc_def adoc or man_def troff), English fallback otherwise. The per-page completeness is for the topbar banner (separate branch) to show. - MAN_HTML_TARGETS_ is the full English stem set, not just the AsciiDoc_def stems. - MAN_ENONLY_TROFF_RULE copies the English troff for stems with no po4a entry (man3 API reference, a few man1/man9) so they have a per-language prerequisite; install ships English man only, so no install impact. - MAN_HTML_RULE gains committed-src and en-generated adoc fallbacks so man_def-only and generated manpages (matrix_kb.9, linuxcnc.1) resolve their English adoc per language instead of erroring. - Per-language index.html appends the English manpage index; with full parity every relative man/ href resolves under /man/. Clean -j8 htmldocs: 386s -> 465s (+79s) for the extra per-language renders. --- docs/src/Submakefile | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/docs/src/Submakefile b/docs/src/Submakefile index 7b05e713e4f..6803400fc49 100644 --- a/docs/src/Submakefile +++ b/docs/src/Submakefile @@ -390,12 +390,23 @@ endif # per-lang list is derived from po4a.cfg (authoritative source of which # manpages have a translated counterpart) rather than MAN_SRCS, which # would close a cycle through components_gen.adoc and over-include. -MAN_HTML_TARGETS_EN := $(patsubst $(DOC_MAN)/%, $(DOC_OUT_HTML)/en/man/%.html, $(MAN_SRCS)) +# Every language renders the FULL English manpage set so the docs stay +# uniform: translated where a po4a leg provides it, English fallback +# otherwise (the per-page banner shows the completeness). +MAN_EN_STEMS := $(patsubst $(DOC_MAN)/%, %, $(MAN_SRCS)) +MAN_HTML_TARGETS_EN := $(addprefix $(DOC_OUT_HTML)/en/man/, $(addsuffix .html, $(MAN_EN_STEMS))) +# Stems that get a po4a-built per-language troff: AsciiDoc_def (committed +# src/man/*.adoc, rendered per-lang via TRANSLATED_TROFF_RULE) and man_def +# (the comp manpages, translated troff direct). Everything else is +# English-only and gets an English troff copy per language (rule below) so +# the per-language target set can be the full English set. PO4A_MANPAGE_STEMS := $(shell sed -ne 's|^\[type: AsciiDoc_def\] src/man/\([^ ]*\)\.adoc .*|\1|p' $(DOC_DIR)/po4a.cfg) +PO4A_MANPAGE_STEMS += $(shell sed -ne 's|^\[type: man_def\] build/man/\([^ ]*\) .*|\1|p' $(DOC_DIR)/po4a.cfg) +MAN_ENONLY_STEMS := $(filter-out $(sort $(PO4A_MANPAGE_STEMS)), $(MAN_EN_STEMS)) $(foreach L,$(LANGUAGES), \ $(eval MAN_HTML_TARGETS_$(call toUC,$(L)) := \ $$(addprefix $(DOC_OUT_HTML)/$(L)/man/, \ - $$(addsuffix .html, $$(PO4A_MANPAGE_STEMS))))) + $$(addsuffix .html, $$(MAN_EN_STEMS))))) ifeq ($(BUILD_DOCS_TRANSLATED),yes) MAN_HTML_TARGETS = $(MAN_HTML_TARGETS_EN) \ $(foreach L,$(LANGUAGES),$(MAN_HTML_TARGETS_$(call toUC,$(L)))) @@ -650,6 +661,10 @@ $(DOC_OUT_HTML)/$(1)/man/%.html: $(2)/% $(DOC_SRCDIR)/docinfo.html F="$(DOC_OUT_ADOC)/$(1)/man/$$$$S/$$$$N"; \ elif [ -r "objects/man/$$$$S/$$$$N" ]; then \ F="objects/man/$$$$S/$$$$N"; \ + elif [ -r "$(DOC_SRCDIR)/man/$$$$S/$$$$N" ]; then \ + F="$(DOC_SRCDIR)/man/$$$$S/$$$$N"; \ + elif [ -r "$(DOC_OUT_ADOC)/en/man/$$$$S/$$$$N" ]; then \ + F="$(DOC_OUT_ADOC)/en/man/$$$$S/$$$$N"; \ else \ echo "Error: Cannot find manpage '$$<' in adoc format"; \ exit 1; \ @@ -724,7 +739,10 @@ objects/index.incl: $(GENERATED_MANPAGES) objects/var-MAN_HTML_TARGETS $(DOC_SRC mkdir -p $(DOC_OUT_HTML)/en/man/man/images/ find $(DOC_MAN) -maxdepth 3 -name "*.png" ! -name "grohtml*" -exec mv {} "$(DOC_OUT_HTML)/en/man/man/images/" \; -$(DOC_OUT_HTML)/%/index.html: $(DOC_OUT_ADOC)/%/index.tmpl ../VERSION $(DOC_SRCDIR)/index.foot +# Translated landing pages append the same manpage index English uses; every +# language now renders the full manpage set, so the relative man/ hrefs all +# resolve under /man/ (no dead links). +$(DOC_OUT_HTML)/%/index.html: $(DOC_OUT_ADOC)/%/index.tmpl objects/index.incl ../VERSION $(DOC_SRCDIR)/index.foot @mkdir -p $(dir $@) cat $(filter-out ../VERSION, $^) | \ sed "s/@VERSION@/`cat ../VERSION`/" | \ @@ -1189,6 +1207,20 @@ $$(DOC_MAN)/$1/%: $$(DOC_OUT_ADOC)/$1/man/%.adoc | $$(DOC_DIR)/.translateddocs-s endef $(foreach L,$(LANGUAGES),$(eval $(call TRANSLATED_TROFF_RULE,$(L)))) +# English-only manpages (no po4a entry on either leg: man3 API reference, +# some man1/man9) have no translated troff. Copy the English troff into +# each language so every language can render the full manpage set, English +# where untranslated. Static-pattern targets, so this takes precedence +# over TRANSLATED_TROFF_RULE's pattern rule (whose translated-adoc prereq +# does not exist for these stems). HTML still routes through MAN_HTML_RULE, +# which resolves the adoc to the committed/objects English source. +define MAN_ENONLY_TROFF_RULE +$(addprefix $(DOC_MAN)/$(1)/,$(MAN_ENONLY_STEMS)): $(DOC_MAN)/$(1)/%: $(DOC_MAN)/% | $(DOC_DIR)/.translateddocs-stamp + @mkdir -p $$(dir $$@) + $(Q)cp $$< $$@ +endef +$(foreach L,$(LANGUAGES),$(eval $(call MAN_ENONLY_TROFF_RULE,$(L)))) + # Wire translated manpages into `docs` only (not `manpages`). Pulling # them into `manpages` would create a cycle: the troff rule's order-only # dep on .translateddocs-stamp resolves through po4a -> manpages, and From 06df292e6bc0b4c5285feebda0b6c47b965dd44f Mon Sep 17 00:00:00 2001 From: Luca Toniolo <10792599+grandixximo@users.noreply.github.com> Date: Thu, 4 Jun 2026 13:12:53 +0800 Subject: [PATCH 3/3] docs(build): index.incl depends on English man list, not full 9-lang With every language rendering the full manpage set, MAN_HTML_TARGETS grew to ~4000 paths; echoing it into objects/var-MAN_HTML_TARGETS made a single bash argument over Linux's 128 KiB MAX_ARG_STRLEN, so CI htmldocs failed with 'Argument list too long' (passed locally on shorter paths). index.incl is built only from MAN_HTML_TARGETS_EN, so depend on that var instead: ~9x smaller, well under the limit, and it no longer rebuilds when a translation changes. --- docs/src/Submakefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/src/Submakefile b/docs/src/Submakefile index 6803400fc49..50aa2061f32 100644 --- a/docs/src/Submakefile +++ b/docs/src/Submakefile @@ -714,7 +714,10 @@ ADD_HTML_MANPAGES = \ echo "" >> objects/index.incl; \ -objects/index.incl: $(GENERATED_MANPAGES) objects/var-MAN_HTML_TARGETS $(DOC_SRCDIR)/Submakefile +# Depends on the English target list only (the index is built from it); the +# full 9-language MAN_HTML_TARGETS would overflow a single bash arg +# (MAX_ARG_STRLEN) once every language renders the whole manpage set. +objects/index.incl: $(GENERATED_MANPAGES) objects/var-MAN_HTML_TARGETS_EN $(DOC_SRCDIR)/Submakefile rm -f $@ $(call ADD_HTML_MANPAGES, 1, Commands and userspace components, $(filter $(DOC_OUT_HTML)/en/man/man1/%.html, $(MAN_HTML_TARGETS_EN))) \ $(call ADD_HTML_MANPAGES, 9, Realtime components and kernel modules, $(filter $(DOC_OUT_HTML)/en/man/man9/%.html, $(MAN_HTML_TARGETS_EN))) \