diff --git a/.gitignore b/.gitignore index 3d286f605e4..9c2f7e8a843 100644 --- a/.gitignore +++ b/.gitignore @@ -12,9 +12,12 @@ build-stamp *.cmd .tmp* src/*.mod -# Ignore generated html files, +# All rendered docs land under docs/build/ now (HTML, PDF, po4a-translated +# .adoc). See docs/src/Submakefile for the per-format subtree layout. +/docs/build/ +# Intermediate .html files asciidoctor writes beside each .adoc before +# the copy step moves them to docs/build/html/. /docs/src/*/*.html -# docs/html/.gitignore is for the html directory debian/*.debhelper.log rtlib/Module.symvers share/*/*.desktop @@ -27,7 +30,6 @@ src/modules.order /configs/*/emc.nml !/configs/common/emc.nml /docs/src/source-highlight/local -docs/src/*/gui/gmoccapy_release_notes.txt lib/python/gremlin.py lib/python/qt5_graphics.py lib/python/touchy diff --git a/debian/linuxcnc-doc-de.docs b/debian/linuxcnc-doc-de.docs index 2392d4c0e66..618bca6ce9c 100644 --- a/debian/linuxcnc-doc-de.docs +++ b/debian/linuxcnc-doc-de.docs @@ -3,4 +3,4 @@ usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_de.pdf usr/share/doc/linuxcnc/LinuxCNC_Integrator_de.pdf -docs/html/de/gcode.html +docs/build/html/de/gcode.html diff --git a/debian/linuxcnc-doc-en.docs b/debian/linuxcnc-doc-en.docs index 772992b34a8..7dd943fa602 100644 --- a/debian/linuxcnc-doc-en.docs +++ b/debian/linuxcnc-doc-en.docs @@ -12,4 +12,4 @@ usr/share/doc/linuxcnc/axis_light_background usr/share/doc/linuxcnc/rtfaults.adoc usr/share/doc/linuxcnc/tklinuxcnc.adoc -docs/html/gcode.html +docs/build/html/en/gcode.html diff --git a/debian/linuxcnc-doc-ta.docs b/debian/linuxcnc-doc-ta.docs index 1e9b51f5a3a..5415a7577a2 100644 --- a/debian/linuxcnc-doc-ta.docs +++ b/debian/linuxcnc-doc-ta.docs @@ -3,4 +3,4 @@ usr/share/doc/linuxcnc/LinuxCNC_Documentation_ta.pdf usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_ta.pdf usr/share/doc/linuxcnc/LinuxCNC_Integrator_ta.pdf -docs/html/ta/gcode.html +docs/build/html/ta/gcode.html diff --git a/debian/linuxcnc-doc-uk.docs b/debian/linuxcnc-doc-uk.docs index 52d31f66181..bfd0988b5fb 100644 --- a/debian/linuxcnc-doc-uk.docs +++ b/debian/linuxcnc-doc-uk.docs @@ -2,4 +2,4 @@ usr/share/doc/linuxcnc/LinuxCNC_Developer_uk.pdf usr/share/doc/linuxcnc/LinuxCNC_Documentation_uk.pdf usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_uk.pdf usr/share/doc/linuxcnc/LinuxCNC_Integrator_uk.pdf -docs/html/uk/gcode.html +docs/build/html/uk/gcode.html diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index 38f1ebe057f..00000000000 --- a/docs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# generated when building pdf docs -index.html diff --git a/docs/help/.gitignore b/docs/help/.gitignore deleted file mode 100644 index f9d069b455f..00000000000 --- a/docs/help/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -# Ignore po4a-generated files for other languages -ar/* -bg/* -ckb/* -cs/* -da/* -de/* -es/* -fr/* -hu/* -it/* -ka/* -nb/* -pl/* -pt/* -pt_BR/* -ro/* -ru/* -sai/* -sk/* -sv/* -tr/* -uk/* -vi/* -zh_CN/* diff --git a/docs/html/.gitignore b/docs/html/.gitignore deleted file mode 100644 index efcfb70c91f..00000000000 --- a/docs/html/.gitignore +++ /dev/null @@ -1,49 +0,0 @@ -*.js -*.css -!linuxcnc.css -*.html -!gcode*.html -*.xml -*.png -*.gif -code -common -config -drivers -examples -gcode -getting-started -gui -hal -install -integrator -lathe -man -motion -remap -user -# Ignore po4a-generated files for other languages -ar/* -bg/* -ckb/* -cs/* -da/* -de/* -es/* -fr/* -hu/* -it/* -ka/* -nb/* -pl/* -pt/* -pt_BR/* -ro/* -ru/* -sai/* -sk/* -sv/* -tr/* -uk/* -vi/* -zh_CN/* diff --git a/docs/html/asciidoc.css b/docs/html/asciidoc.css deleted file mode 100644 index 55e6384027a..00000000000 --- a/docs/html/asciidoc.css +++ /dev/null @@ -1,527 +0,0 @@ -/* Shared CSS for AsciiDoc xhtml11 and html5 backends */ - -/* Default font. */ -body { - font-family: Georgia,serif; -} - -/* Title font. */ -h1, h2, h3, h4, h5, h6, -div.title, caption.title, -thead, p.table.header, -#toctitle, -#author, #revnumber, #revdate, #revremark, -#footer { - font-family: Arial,Helvetica,sans-serif; -} - -body { - margin: 1em 5% 1em 5%; -} - -a { - color: blue; - text-decoration: underline; -} -a:visited { - color: fuchsia; -} - -em { - font-style: italic; - color: navy; -} - -strong { - font-weight: bold; - color: #083194; -} - -h1, h2, h3, h4, h5, h6 { - color: #527bbd; - margin-top: 1.2em; - margin-bottom: 0.5em; - line-height: 1.3; -} - -h1, h2, h3 { - border-bottom: 2px solid silver; -} -h2 { - padding-top: 0.5em; -} -h3 { - float: left; -} -h3 + * { - clear: left; -} -h5 { - font-size: 1.0em; -} - -div.sectionbody { - margin-left: 0; -} - -hr { - border: 1px solid silver; -} - -p { - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -ul, ol, li > p { - margin-top: 0; -} -ul > li { color: #aaa; } -ul > li > * { color: black; } - -.monospaced, code, pre { - font-family: "Courier New", Courier, monospace; - font-size: inherit; - color: navy; - padding: 0; - margin: 0; -} -pre { - white-space: pre-wrap; -} - -#author { - color: #527bbd; - font-weight: bold; - font-size: 1.1em; -} -#email { -} -#revnumber, #revdate, #revremark { -} - -#footer { - font-size: small; - border-top: 2px solid silver; - padding-top: 0.5em; - margin-top: 4.0em; -} -#footer-text { - float: left; - padding-bottom: 0.5em; -} -#footer-badges { - float: right; - padding-bottom: 0.5em; -} - -#preamble { - margin-top: 1.5em; - margin-bottom: 1.5em; -} -div.imageblock, div.exampleblock, div.verseblock, -div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, -div.admonitionblock { - margin-top: 1.0em; - margin-bottom: 1.5em; -} -div.admonitionblock { - margin-top: 2.0em; - margin-bottom: 2.0em; - margin-right: 10%; - color: #606060; -} - -div.content { /* Block element content. */ - padding: 0; -} - -/* Block element titles. */ -div.title, caption.title { - color: #527bbd; - font-weight: bold; - text-align: left; - margin-top: 1.0em; - margin-bottom: 0.5em; -} -div.title + * { - margin-top: 0; -} - -td div.title:first-child { - margin-top: 0.0em; -} -div.content div.title:first-child { - margin-top: 0.0em; -} -div.content + div.title { - margin-top: 0.0em; -} - -div.sidebarblock > div.content { - background: #ffffee; - border: 1px solid #dddddd; - border-left: 4px solid #f0f0f0; - padding: 0.5em; -} - -div.listingblock > div.content { - border: 1px solid #dddddd; - border-left: 5px solid #f0f0f0; - background: #f8f8f8; - padding: 0.5em; -} - -div.quoteblock, div.verseblock { - padding-left: 1.0em; - margin-left: 1.0em; - margin-right: 10%; - border-left: 5px solid #f0f0f0; - color: #888; -} - -div.quoteblock > div.attribution { - padding-top: 0.5em; - text-align: right; -} - -div.verseblock > pre.content { - font-family: inherit; - font-size: inherit; -} -div.verseblock > div.attribution { - padding-top: 0.75em; - text-align: left; -} -/* DEPRECATED: Pre version 8.2.7 verse style literal block. */ -div.verseblock + div.attribution { - text-align: left; -} - -div.admonitionblock .icon { - vertical-align: top; - font-size: 1.1em; - font-weight: bold; - text-decoration: underline; - color: #527bbd; - padding-right: 0.5em; -} -div.admonitionblock td.content { - padding-left: 0.5em; - border-left: 3px solid #dddddd; -} - -div.exampleblock > div.content { - border-left: 3px solid #dddddd; - padding-left: 0.5em; -} - -div.imageblock div.content { padding-left: 0; } -span.image img { border-style: none; vertical-align: text-bottom; } -a.image:visited { color: white; } - -dl { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -dt { - margin-top: 0.5em; - margin-bottom: 0; - font-style: normal; - color: navy; -} -dd > *:first-child { - margin-top: 0.1em; -} - -ul, ol { - list-style-position: outside; -} -ol.arabic { - list-style-type: decimal; -} -ol.loweralpha { - list-style-type: lower-alpha; -} -ol.upperalpha { - list-style-type: upper-alpha; -} -ol.lowerroman { - list-style-type: lower-roman; -} -ol.upperroman { - list-style-type: upper-roman; -} - -div.compact ul, div.compact ol, -div.compact p, div.compact p, -div.compact div, div.compact div { - margin-top: 0.1em; - margin-bottom: 0.1em; -} - -tfoot { - font-weight: bold; -} -td > div.verse { - white-space: pre; -} - -div.hdlist { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -div.hdlist tr { - padding-bottom: 15px; -} -dt.hdlist1.strong, td.hdlist1.strong { - font-weight: bold; -} -td.hdlist1 { - vertical-align: top; - font-style: normal; - padding-right: 0.8em; - color: navy; -} -td.hdlist2 { - vertical-align: top; -} -div.hdlist.compact tr { - margin: 0; - padding-bottom: 0; -} - -.comment { - background: yellow; -} - -.footnote, .footnoteref { - font-size: 0.8em; -} - -span.footnote, span.footnoteref { - vertical-align: super; -} - -#footnotes { - margin: 20px 0 20px 0; - padding: 7px 0 0 0; -} - -#footnotes div.footnote { - margin: 0 0 5px 0; -} - -#footnotes hr { - border: none; - border-top: 1px solid silver; - height: 1px; - text-align: left; - margin-left: 0; - width: 20%; - min-width: 100px; -} - -div.colist td { - padding-right: 0.5em; - padding-bottom: 0.3em; - vertical-align: top; -} -div.colist td img { - margin-top: 0.3em; -} - -@media print { - #footer-badges { display: none; } -} - -#toc { - margin-bottom: 2.5em; -} - -#toctitle { - color: #527bbd; - font-size: 1.1em; - font-weight: bold; - margin-top: 1.0em; - margin-bottom: 0.1em; -} - -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { - margin-top: 0; - margin-bottom: 0; -} -div.toclevel2 { - margin-left: 2em; - font-size: 0.9em; -} -div.toclevel3 { - margin-left: 4em; - font-size: 0.9em; -} -div.toclevel4 { - margin-left: 6em; - font-size: 0.9em; -} - -span.aqua { color: aqua; } -span.black { color: black; } -span.blue { color: blue; } -span.fuchsia { color: fuchsia; } -span.gray { color: gray; } -span.green { color: green; } -span.lime { color: lime; } -span.maroon { color: maroon; } -span.navy { color: navy; } -span.olive { color: olive; } -span.purple { color: purple; } -span.red { color: red; } -span.silver { color: silver; } -span.teal { color: teal; } -span.white { color: white; } -span.yellow { color: yellow; } - -span.aqua-background { background: aqua; } -span.black-background { background: black; } -span.blue-background { background: blue; } -span.fuchsia-background { background: fuchsia; } -span.gray-background { background: gray; } -span.green-background { background: green; } -span.lime-background { background: lime; } -span.maroon-background { background: maroon; } -span.navy-background { background: navy; } -span.olive-background { background: olive; } -span.purple-background { background: purple; } -span.red-background { background: red; } -span.silver-background { background: silver; } -span.teal-background { background: teal; } -span.white-background { background: white; } -span.yellow-background { background: yellow; } - -span.big { font-size: 2em; } -span.small { font-size: 0.6em; } - -span.underline { text-decoration: underline; } -span.overline { text-decoration: overline; } -span.line-through { text-decoration: line-through; } - -div.unbreakable { page-break-inside: avoid; } - - -/* - * xhtml11 specific - * - * */ - -div.tableblock { - margin-top: 1.0em; - margin-bottom: 1.5em; -} -div.tableblock > table { - border: 3px solid #527bbd; -} -thead, p.table.header { - font-weight: bold; - color: #527bbd; -} -p.table { - margin-top: 0; -} -/* Because the table frame attribute is overridden by CSS in most browsers. */ -div.tableblock > table[frame="void"] { - border-style: none; -} -div.tableblock > table[frame="hsides"] { - border-left-style: none; - border-right-style: none; -} -div.tableblock > table[frame="vsides"] { - border-top-style: none; - border-bottom-style: none; -} - - -/* - * html5 specific - * - * */ - -table.tableblock { - margin-top: 1.0em; - margin-bottom: 1.5em; -} -thead, p.tableblock.header { - font-weight: bold; - color: #527bbd; -} -p.tableblock { - margin-top: 0; -} -table.tableblock { - border-width: 3px; - border-spacing: 0px; - border-style: solid; - border-color: #527bbd; - border-collapse: collapse; -} -th.tableblock, td.tableblock { - border-width: 1px; - padding: 4px; - border-style: solid; - border-color: #527bbd; -} - -table.tableblock.frame-topbot { - border-left-style: hidden; - border-right-style: hidden; -} -table.tableblock.frame-sides { - border-top-style: hidden; - border-bottom-style: hidden; -} -table.tableblock.frame-none { - border-style: hidden; -} - -th.tableblock.halign-left, td.tableblock.halign-left { - text-align: left; -} -th.tableblock.halign-center, td.tableblock.halign-center { - text-align: center; -} -th.tableblock.halign-right, td.tableblock.halign-right { - text-align: right; -} - -th.tableblock.valign-top, td.tableblock.valign-top { - vertical-align: top; -} -th.tableblock.valign-middle, td.tableblock.valign-middle { - vertical-align: middle; -} -th.tableblock.valign-bottom, td.tableblock.valign-bottom { - vertical-align: bottom; -} - - -/* - * manpage specific - * - * */ - -body.manpage h1 { - padding-top: 0.5em; - padding-bottom: 0.5em; - border-top: 2px solid silver; - border-bottom: 2px solid silver; -} -body.manpage h2 { - border-style: none; -} -body.manpage div.sectionbody { - margin-left: 3em; -} - -@media print { - body.manpage div#toc { display: none; } -} diff --git a/docs/html/linuxcnc.css b/docs/html/linuxcnc.css deleted file mode 100644 index d9cf981f413..00000000000 --- a/docs/html/linuxcnc.css +++ /dev/null @@ -1,66 +0,0 @@ -:target { background: #DEF !important; } -body { margin: 1em 5% 1em 5%; } -tt {font-family: "Courier New", Courier, monospace; font-size: 0.95em;} -pre { font-family: monospace !important; } -h1, h2, h3, h4, h5, h6 { font-family: Arial, Helvetica, sans-serif; } -h1, h2 { background: #c0c0f0; padding-left: 0.5em;} -h3, h4, h5, h6 { background: #DEF; padding-left: 0.5em; } -h2 { padding-top: 0.35em; padding-bottom:0.15em;} -h1, h2, h3, h4, h5 { border-bottom: 2px solid #8080c0; color: black; } - -@media (max-width: 768px) { - body { margin: 0.5em 2% 0.5em 2%; } -} -div.nav { float: right; background: #ffffff; } -dt { font-weight: bold; color: #527bbd; margin-top: 0.5em; } -pre { margin-left: 4ex; auto; color: black; padding: 1ex; } -div.float { text-align: center; margin: 2ex; padding: 1ex; } -div.float span.caption { display: block; margin: 1em; } -.typewriter { font-family: monospace; } -table.tableblock { border-collapse: collapse; margin-left: auto; margin-right: auto; } -.alignment_center { text-align: center; } -.topline { border-top: 1px solid black; } -.bottomline { border-bottom: 1px solid black; } -.leftline { border-left: 1px solid black; } -.rightline { border-right: 1px solid black; } -.v_top { vertical-align: baseline; } -.a_center { text-align: center; } -.a_left { text-align: left; } -.a_right { text-align: right; } -.block { display: block } -.blockformula { display: block; text-align: center } -.f_typewriter { font-family: monospace; } -.noun { font-variant: small-caps; } -.s_bold { font-weight: bold; } -.clist { -moz-column-width: 40ex; -moz-column-gap: 4ex } -.nclist { -moz-column-width: 20ex; -moz-column-gap: 4ex } -.nclist li { list-style-type: none; text-indent: -.5ex; } -#toctitle { - font-family: Arial, Helvetica, sans-serif; - color: #527bbd; - font-size: 1.1em; - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; -} -.toc li { list-style-type: none; } -.toc li a { border: 1px solid transparent; text-indent: -1ex; } - -/* AsciiDoc stuff */ -div.note { - padding-left: 0.5em; - border-left: 3px solid #c0c0f0; -} - -figcaption.title { - font-family: Arial,Helvetica,sans-serif; - color: #527bbd; - font-weight: bold; - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -dt.hdlist1 { - font-weight: normal; -} -#footer { margin-top: 1em; border-top: 1px dashed silver;} diff --git a/docs/html/minus.png b/docs/html/minus.png deleted file mode 100644 index 7a6b790882b..00000000000 Binary files a/docs/html/minus.png and /dev/null differ diff --git a/docs/html/plus.png b/docs/html/plus.png deleted file mode 100644 index 0908e24d0cd..00000000000 Binary files a/docs/html/plus.png and /dev/null differ diff --git a/docs/po/ar.po b/docs/po/ar.po index 3cc4b3c78aa..b285d1b4d42 100644 --- a/docs/po/ar.po +++ b/docs/po/ar.po @@ -33738,7 +33738,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/bg.po b/docs/po/bg.po index 33d140ac830..d65c7b6b65e 100644 --- a/docs/po/bg.po +++ b/docs/po/bg.po @@ -33712,7 +33712,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/ckb.po b/docs/po/ckb.po index 298821dbf1e..c9ea643830a 100644 --- a/docs/po/ckb.po +++ b/docs/po/ckb.po @@ -33712,7 +33712,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/cs.po b/docs/po/cs.po index f4ed53139fd..f66ef3200a9 100644 --- a/docs/po/cs.po +++ b/docs/po/cs.po @@ -33716,7 +33716,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/da.po b/docs/po/da.po index 27dd20094f5..2678f304f2f 100644 --- a/docs/po/da.po +++ b/docs/po/da.po @@ -33712,7 +33712,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/de.po b/docs/po/de.po index cecb59b6e77..428e0b292d5 100644 --- a/docs/po/de.po +++ b/docs/po/de.po @@ -42383,8 +42383,8 @@ msgstr "Klicke link:mb2hal_HOWTO.ini[hier] zum Herunterladen." #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" -msgstr "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" +msgstr "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" #. type: delimited block = #: src/drivers/mb2hal.adoc:164 diff --git a/docs/po/documentation.pot b/docs/po/documentation.pot index 3eb5e44906d..a5210769c63 100644 --- a/docs/po/documentation.pot +++ b/docs/po/documentation.pot @@ -33894,7 +33894,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/es.po b/docs/po/es.po index 6b91161a987..006944fcf3b 100644 --- a/docs/po/es.po +++ b/docs/po/es.po @@ -41136,7 +41136,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/fa.po b/docs/po/fa.po index 46917a21515..debf71f3434 100644 --- a/docs/po/fa.po +++ b/docs/po/fa.po @@ -33715,7 +33715,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/fr.po b/docs/po/fr.po index 645dec6c113..1c9a3cccc1b 100644 --- a/docs/po/fr.po +++ b/docs/po/fr.po @@ -39138,7 +39138,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/hu.po b/docs/po/hu.po index 612e84b722b..18691497932 100644 --- a/docs/po/hu.po +++ b/docs/po/hu.po @@ -33731,7 +33731,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/it.po b/docs/po/it.po index 373414c27fc..2e4732a67db 100644 --- a/docs/po/it.po +++ b/docs/po/it.po @@ -33723,7 +33723,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/ka.po b/docs/po/ka.po index 1e23c7e4039..5894beb2fce 100644 --- a/docs/po/ka.po +++ b/docs/po/ka.po @@ -33783,7 +33783,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/ko.po b/docs/po/ko.po index 1b9ec1b8b88..eb54390824f 100644 --- a/docs/po/ko.po +++ b/docs/po/ko.po @@ -33738,7 +33738,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/lv.po b/docs/po/lv.po index 01b7f6b55e1..b32ba0c811d 100644 --- a/docs/po/lv.po +++ b/docs/po/lv.po @@ -33896,7 +33896,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/nb.po b/docs/po/nb.po index d64b5405d1e..c926d2cd080 100644 --- a/docs/po/nb.po +++ b/docs/po/nb.po @@ -34558,7 +34558,7 @@ msgstr "Velg link:mb2hal_HOWTO.ini[her] for å laste ned." #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/pl.po b/docs/po/pl.po index 71ed35f4c9e..d15402c4d7f 100644 --- a/docs/po/pl.po +++ b/docs/po/pl.po @@ -33712,7 +33712,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/pt.po b/docs/po/pt.po index d8748b94d59..42845e345b4 100644 --- a/docs/po/pt.po +++ b/docs/po/pt.po @@ -36178,8 +36178,8 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" -msgstr "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" +msgstr "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" #. type: delimited block = #: src/drivers/mb2hal.adoc:164 diff --git a/docs/po/pt_BR.po b/docs/po/pt_BR.po index 9c53a57f8aa..b0658e16004 100644 --- a/docs/po/pt_BR.po +++ b/docs/po/pt_BR.po @@ -33912,7 +33912,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/ro.po b/docs/po/ro.po index d9d05506f11..8b438c37fa9 100644 --- a/docs/po/ro.po +++ b/docs/po/ro.po @@ -33737,7 +33737,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/ru.po b/docs/po/ru.po index a4aed8c8657..92e9ec994ec 100644 --- a/docs/po/ru.po +++ b/docs/po/ru.po @@ -38026,7 +38026,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/sai.po b/docs/po/sai.po index 286df2e65b2..6cc42abf365 100644 --- a/docs/po/sai.po +++ b/docs/po/sai.po @@ -33712,7 +33712,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/sk.po b/docs/po/sk.po index e085ba921d1..1100e5b2f8a 100644 --- a/docs/po/sk.po +++ b/docs/po/sk.po @@ -33730,7 +33730,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/sl.po b/docs/po/sl.po index 664237211a0..1926cced289 100644 --- a/docs/po/sl.po +++ b/docs/po/sl.po @@ -33718,7 +33718,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/sv.po b/docs/po/sv.po index 4e91d241567..dc6eec688fb 100644 --- a/docs/po/sv.po +++ b/docs/po/sv.po @@ -33721,7 +33721,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/ta.po b/docs/po/ta.po index bdd519e288c..cd29958da17 100644 --- a/docs/po/ta.po +++ b/docs/po/ta.po @@ -42210,7 +42210,7 @@ msgstr "இணைப்பைக் சொடுக்கு செய்க: #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "அடங்கும் :: MB2HAL_HOWTO.INI []\n" #. type: delimited block = diff --git a/docs/po/tr.po b/docs/po/tr.po index a4a6cc2e7da..92e5e0b8c4b 100644 --- a/docs/po/tr.po +++ b/docs/po/tr.po @@ -33801,7 +33801,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/uk.po b/docs/po/uk.po index ab63a91c0fd..cc54ea0591c 100644 --- a/docs/po/uk.po +++ b/docs/po/uk.po @@ -41781,8 +41781,8 @@ msgstr "Натисніть link:mb2hal_HOWTO.ini[тут] для завантаж #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" -msgstr "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" +msgstr "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" #. type: delimited block = #: src/drivers/mb2hal.adoc:164 diff --git a/docs/po/vi.po b/docs/po/vi.po index ed4d5ad38c5..3b5120f005b 100644 --- a/docs/po/vi.po +++ b/docs/po/vi.po @@ -33767,7 +33767,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po/zh_CN.po b/docs/po/zh_CN.po index 5eb5338fe28..db19239b5ea 100644 --- a/docs/po/zh_CN.po +++ b/docs/po/zh_CN.po @@ -34158,7 +34158,7 @@ msgstr "" #. type: delimited block - #: src/drivers/mb2hal.adoc:156 #, no-wrap -msgid "include::mb2hal_HOWTO.ini[]\n" +msgid "include::{fixturedir}/drivers/mb2hal_HOWTO.ini[]\n" msgstr "" #. type: delimited block = diff --git a/docs/po4a.cfg b/docs/po4a.cfg index 7550a595cac..ec9557b454c 100644 --- a/docs/po4a.cfg +++ b/docs/po4a.cfg @@ -21,355 +21,355 @@ # always available. [po4a_alias:Text_def] text opt:"--keep 0" -[type: AsciiDoc_def] src/Master_Developer.adoc $lang:src/$lang/Master_Developer.adoc -[type: AsciiDoc_def] src/Master_Documentation.adoc $lang:src/$lang/Master_Documentation.adoc -[type: AsciiDoc_def] src/Master_Getting_Started.adoc $lang:src/$lang/Master_Getting_Started.adoc -[type: AsciiDoc_def] src/Master_Integrator.adoc $lang:src/$lang/Master_Integrator.adoc -[type: xhtml_def] src/index.tmpl $lang:src/index_$lang.tmpl -[type: AsciiDoc_def] help/rtfaults.adoc $lang:help/$lang/rtfaults.adoc -[type: AsciiDoc_def] help/tklinuxcnc.adoc $lang:help/$lang/tklinuxcnc.adoc -[type: AsciiDoc_def] src/code/adding-configs.adoc $lang:src/$lang/code/adding-configs.adoc -[type: AsciiDoc_def] src/code/building-linuxcnc.adoc $lang:src/$lang/code/building-linuxcnc.adoc -[type: AsciiDoc_def] src/code/code-notes.adoc $lang:src/$lang/code/code-notes.adoc -[type: AsciiDoc_def] src/code/contributing-to-linuxcnc.adoc $lang:src/$lang/code/contributing-to-linuxcnc.adoc -[type: AsciiDoc_def] src/code/nml-messages.adoc $lang:src/$lang/code/nml-messages.adoc -[type: AsciiDoc_def] src/code/rs274.adoc $lang:src/$lang/code/rs274.adoc -[type: AsciiDoc_def] src/code/style-guide.adoc $lang:src/$lang/code/style-guide.adoc -[type: AsciiDoc_def] src/gui/gui-dev-reference.adoc $lang:src/$lang/gui/gui-dev-reference.adoc -[type: AsciiDoc_def] src/code/writing-tests.adoc $lang:src/$lang/code/writing-tests.adoc -[type: AsciiDoc_def] src/common/emc-history.adoc $lang:src/$lang/common/emc-history.adoc -[type: AsciiDoc_def] src/common/glossary.adoc $lang:src/$lang/common/glossary.adoc -[type: AsciiDoc_def] src/common/gpld-copyright.adoc $lang:src/$lang/common/gpld-copyright.adoc -[type: AsciiDoc_def] src/common/linux-faq.adoc $lang:src/$lang/common/linux-faq.adoc -[type: AsciiDoc_def] src/common/overleaf.adoc $lang:src/$lang/common/overleaf.adoc -[type: AsciiDoc_def] src/config/core-components.adoc $lang:src/$lang/config/core-components.adoc -[type: AsciiDoc_def] src/config/ini-config.adoc $lang:src/$lang/config/ini-config.adoc -[type: AsciiDoc_def] src/config/ini-homing.adoc $lang:src/$lang/config/ini-homing.adoc -[type: AsciiDoc_def] src/config/integrator-concepts.adoc $lang:src/$lang/config/integrator-concepts.adoc -[type: AsciiDoc_def] src/config/lathe-config.adoc $lang:src/$lang/config/lathe-config.adoc -[type: AsciiDoc_def] src/config/moveoff.adoc $lang:src/$lang/config/moveoff.adoc -[type: AsciiDoc_def] src/config/pncconf.adoc $lang:src/$lang/config/pncconf.adoc -[type: AsciiDoc_def] src/config/python-hal-interface.adoc $lang:src/$lang/config/python-hal-interface.adoc -[type: AsciiDoc_def] src/config/python-interface.adoc $lang:src/$lang/config/python-interface.adoc -[type: AsciiDoc_def] src/config/stepconf.adoc $lang:src/$lang/config/stepconf.adoc -[type: AsciiDoc_def] src/config/stepper.adoc $lang:src/$lang/config/stepper.adoc -[type: AsciiDoc_def] src/config/stepper-diagnostics.adoc $lang:src/$lang/config/stepper-diagnostics.adoc -[type: AsciiDoc_def] src/config/stepper-quickstart.adoc $lang:src/$lang/config/stepper-quickstart.adoc -[type: AsciiDoc_def] src/drivers/ax5214h.adoc $lang:src/$lang/drivers/ax5214h.adoc -[type: AsciiDoc_def] src/drivers/gm.adoc $lang:src/$lang/drivers/gm.adoc -[type: AsciiDoc_def] src/drivers/gs2.adoc $lang:src/$lang/drivers/gs2.adoc -[type: AsciiDoc_def] src/drivers/hal_pi_gpio.adoc $lang:src/$lang/drivers/hal_pi_gpio.adoc -[type: AsciiDoc_def] src/drivers/hostmot2.adoc $lang:src/$lang/drivers/hostmot2.adoc -[type: AsciiDoc_def] src/drivers/hal_gpio.adoc $lang:src/$lang/drivers/hal_gpio.adoc -[type: AsciiDoc_def] src/drivers/mb2hal.adoc $lang:src/$lang/drivers/mb2hal.adoc -[type: AsciiDoc_def] src/drivers/mitsub-vfd.adoc $lang:src/$lang/drivers/mitsub-vfd.adoc -[type: AsciiDoc_def] src/drivers/motenc.adoc $lang:src/$lang/drivers/motenc.adoc -[type: AsciiDoc_def] src/drivers/opto22.adoc $lang:src/$lang/drivers/opto22.adoc -[type: AsciiDoc_def] src/drivers/pico-ppmc.adoc $lang:src/$lang/drivers/pico-ppmc.adoc -[type: AsciiDoc_def] src/drivers/pluto-p.adoc $lang:src/$lang/drivers/pluto-p.adoc -[type: AsciiDoc_def] src/drivers/pmx485.adoc $lang:src/$lang/drivers/pmx485.adoc -[type: AsciiDoc_def] src/drivers/servo-to-go.adoc $lang:src/$lang/drivers/servo-to-go.adoc -[type: AsciiDoc_def] src/drivers/shuttle.adoc $lang:src/$lang/drivers/shuttle.adoc -[type: AsciiDoc_def] src/drivers/vfs11.adoc $lang:src/$lang/drivers/vfs11.adoc -[type: AsciiDoc_def] src/examples/gcode.adoc $lang:src/$lang/examples/gcode.adoc -[type: AsciiDoc_def] src/examples/gs2-example.adoc $lang:src/$lang/examples/gs2-example.adoc -[type: AsciiDoc_def] src/examples/mpg.adoc $lang:src/$lang/examples/mpg.adoc -[type: AsciiDoc_def] src/examples/pci-parallel-port.adoc $lang:src/$lang/examples/pci-parallel-port.adoc -[type: AsciiDoc_def] src/examples/spindle.adoc $lang:src/$lang/examples/spindle.adoc -[type: AsciiDoc_def] src/gcode/coordinates.adoc $lang:src/$lang/gcode/coordinates.adoc -[type: AsciiDoc_def] src/gcode/g-code.adoc $lang:src/$lang/gcode/g-code.adoc -[type: xhtml_def] html/gcode.html $lang:html/$lang/gcode.html -[type: AsciiDoc_def] src/gcode/machining-center.adoc $lang:src/$lang/gcode/machining-center.adoc -[type: AsciiDoc_def] src/gcode/m-code.adoc $lang:src/$lang/gcode/m-code.adoc -[type: AsciiDoc_def] src/gcode/o-code.adoc $lang:src/$lang/gcode/o-code.adoc -[type: AsciiDoc_def] src/gcode/other-code.adoc $lang:src/$lang/gcode/other-code.adoc -[type: AsciiDoc_def] src/gcode/overview.adoc $lang:src/$lang/gcode/overview.adoc -[type: AsciiDoc_def] src/gcode/rs274ngc.adoc $lang:src/$lang/gcode/rs274ngc.adoc -[type: AsciiDoc_def] src/gcode/tool-compensation.adoc $lang:src/$lang/gcode/tool-compensation.adoc -[type: AsciiDoc_def] src/getting-started/about-linuxcnc.adoc $lang:src/$lang/getting-started/about-linuxcnc.adoc -[type: AsciiDoc_def] src/getting-started/getting-linuxcnc.adoc $lang:src/$lang/getting-started/getting-linuxcnc.adoc -[type: AsciiDoc_def] src/getting-started/running-linuxcnc.adoc $lang:src/$lang/getting-started/running-linuxcnc.adoc -[type: AsciiDoc_def] src/getting-started/system-requirements.adoc $lang:src/$lang/getting-started/system-requirements.adoc -[type: AsciiDoc_def] src/getting-started/hardware-interface.adoc $lang:src/$lang/getting-started/hardware-interface.adoc -[type: AsciiDoc_def] src/getting-started/updating-linuxcnc.adoc $lang:src/$lang/getting-started/updating-linuxcnc.adoc -[type: AsciiDoc_def] src/gui/axis.adoc $lang:src/$lang/gui/axis.adoc -[type: AsciiDoc_def] src/gui/filter-programs.adoc $lang:src/$lang/gui/filter-programs.adoc -[type: AsciiDoc_def] src/gui/gladevcp.adoc $lang:src/$lang/gui/gladevcp.adoc -[type: AsciiDoc_def] src/gui/gladevcp-panels.adoc $lang:src/$lang/gui/gladevcp-panels.adoc -[type: AsciiDoc_def] src/gui/gladevcp-libraries.adoc $lang:src/$lang/gui/gladevcp-libraries.adoc -[type: AsciiDoc_def] src/gui/gmoccapy.adoc $lang:src/$lang/gui/gmoccapy.adoc -[type: AsciiDoc_def] src/gui/gscreen.adoc $lang:src/$lang/gui/gscreen.adoc -[type: AsciiDoc_def] src/gui/gstat.adoc $lang:src/$lang/gui/gstat.adoc -[type: AsciiDoc_def] src/gui/halui.adoc $lang:src/$lang/gui/halui.adoc -[type: AsciiDoc_def] src/gui/image-to-gcode.adoc $lang:src/$lang/gui/image-to-gcode.adoc -[type: AsciiDoc_def] src/gui/mdro.adoc $lang:src/$lang/gui/mdro.adoc -[type: AsciiDoc_def] src/gui/ngcgui.adoc $lang:src/$lang/gui/ngcgui.adoc -[type: AsciiDoc_def] src/gui/panelui.adoc $lang:src/$lang/gui/panelui.adoc -[type: AsciiDoc_def] src/gui/pyvcp.adoc $lang:src/$lang/gui/pyvcp.adoc -[type: AsciiDoc_def] src/gui/pyvcp-examples.adoc $lang:src/$lang/gui/pyvcp-examples.adoc -[type: AsciiDoc_def] src/gui/qtdragon.adoc $lang:src/$lang/gui/qtdragon.adoc -[type: AsciiDoc_def] src/gui/qtvcp.adoc $lang:src/$lang/gui/qtvcp.adoc -[type: AsciiDoc_def] src/gui/qtvcp-code-snippets.adoc $lang:src/$lang/gui/qtvcp-code-snippets.adoc -[type: AsciiDoc_def] src/gui/qtvcp-custom-widgets.adoc $lang:src/$lang/gui/qtvcp-custom-widgets.adoc -[type: AsciiDoc_def] src/gui/qtvcp-development.adoc $lang:src/$lang/gui/qtvcp-development.adoc -[type: AsciiDoc_def] src/gui/qtvcp-libraries.adoc $lang:src/$lang/gui/qtvcp-libraries.adoc -[type: AsciiDoc_def] src/gui/qtvcp-vcp-panels.adoc $lang:src/$lang/gui/qtvcp-vcp-panels.adoc -[type: AsciiDoc_def] src/gui/qtvcp-vismach.adoc $lang:src/$lang/gui/qtvcp-vismach.adoc -[type: AsciiDoc_def] src/gui/qtvcp-widgets.adoc $lang:src/$lang/gui/qtvcp-widgets.adoc -[type: AsciiDoc_def] src/gui/tklinuxcnc.adoc $lang:src/$lang/gui/tklinuxcnc.adoc -[type: AsciiDoc_def] src/gui/tooledit.adoc $lang:src/$lang/gui/tooledit.adoc -[type: AsciiDoc_def] src/gui/touchy.adoc $lang:src/$lang/gui/touchy.adoc -[type: AsciiDoc_def] src/gui/vismach.adoc $lang:src/$lang/gui/vismach.adoc -[type: AsciiDoc_def] src/hal/basic-hal.adoc $lang:src/$lang/hal/basic-hal.adoc -[type: AsciiDoc_def] src/hal/canonical-devices.adoc $lang:src/$lang/hal/canonical-devices.adoc -[type: AsciiDoc_def] src/hal/comp.adoc $lang:src/$lang/hal/comp.adoc -[type: AsciiDoc_def] src/hal/components.adoc $lang:src/$lang/hal/components.adoc -[type: AsciiDoc_def] src/hal/components_gen.adoc $lang:src/$lang/hal/components_gen.adoc -[type: AsciiDoc_def] src/hal/general-ref.adoc $lang:src/$lang/hal/general-ref.adoc -[type: AsciiDoc_def] src/hal/hal-examples.adoc $lang:src/$lang/hal/hal-examples.adoc -[type: AsciiDoc_def] src/hal/halmodule.adoc $lang:src/$lang/hal/halmodule.adoc -[type: AsciiDoc_def] src/hal/halscope.adoc $lang:src/$lang/hal/halscope.adoc -[type: AsciiDoc_def] src/hal/halshow.adoc $lang:src/$lang/hal/halshow.adoc -[type: AsciiDoc_def] src/hal/haltcl.adoc $lang:src/$lang/hal/haltcl.adoc -[type: AsciiDoc_def] src/hal/halui-examples.adoc $lang:src/$lang/hal/halui-examples.adoc -[type: AsciiDoc_def] src/hal/intro.adoc $lang:src/$lang/hal/intro.adoc -[type: AsciiDoc_def] src/hal/parallel-port.adoc $lang:src/$lang/hal/parallel-port.adoc -[type: AsciiDoc_def] src/hal/rtcomps.adoc $lang:src/$lang/hal/rtcomps.adoc -[type: AsciiDoc_def] src/hal/tools.adoc $lang:src/$lang/hal/tools.adoc -[type: AsciiDoc_def] src/hal/tutorial.adoc $lang:src/$lang/hal/tutorial.adoc -[type: AsciiDoc_def] src/hal/twopass.adoc $lang:src/$lang/hal/twopass.adoc -[type: AsciiDoc_def] src/install/latency-test.adoc $lang:src/$lang/install/latency-test.adoc -[type: AsciiDoc_def] src/integrator/steppers.adoc $lang:src/$lang/integrator/steppers.adoc -[type: AsciiDoc_def] src/integrator/stepper-timing.adoc $lang:src/$lang/integrator/stepper-timing.adoc -[type: AsciiDoc_def] src/integrator/wiring.adoc $lang:src/$lang/integrator/wiring.adoc -[type: AsciiDoc_def] src/ladder/classic-ladder.adoc $lang:src/$lang/ladder/classic-ladder.adoc -[type: AsciiDoc_def] src/ladder/ladder-examples.adoc $lang:src/$lang/ladder/ladder-examples.adoc -[type: AsciiDoc_def] src/ladder/ladder-intro.adoc $lang:src/$lang/ladder/ladder-intro.adoc -[type: AsciiDoc_def] src/lathe/lathe-user.adoc $lang:src/$lang/lathe/lathe-user.adoc -[type: AsciiDoc_def] src/man/man1/5axisgui.1.adoc $lang:src/$lang/man/man1/5axisgui.1.adoc -[type: AsciiDoc_def] src/man/man1/axis-remote.1.adoc $lang:src/$lang/man/man1/axis-remote.1.adoc -[type: AsciiDoc_def] src/man/man1/axis.1.adoc $lang:src/$lang/man/man1/axis.1.adoc -[type: AsciiDoc_def] src/man/man1/debuglevel.1.adoc $lang:src/$lang/man/man1/debuglevel.1.adoc -[type: AsciiDoc_def] src/man/man1/elbpcom.1.adoc $lang:src/$lang/man/man1/elbpcom.1.adoc -[type: AsciiDoc_def] src/man/man1/gladevcp.1.adoc $lang:src/$lang/man/man1/gladevcp.1.adoc -[type: AsciiDoc_def] src/man/man1/gladevcp_demo.1.adoc $lang:src/$lang/man/man1/gladevcp_demo.1.adoc -[type: AsciiDoc_def] src/man/man1/gmoccapy.1.adoc $lang:src/$lang/man/man1/gmoccapy.1.adoc -[type: AsciiDoc_def] src/man/man1/gremlin_view.1.adoc $lang:src/$lang/man/man1/gremlin_view.1.adoc -[type: AsciiDoc_def] src/man/man1/gs2_vfd.1.adoc $lang:src/$lang/man/man1/gs2_vfd.1.adoc -[type: AsciiDoc_def] src/man/man1/gscreen.1.adoc $lang:src/$lang/man/man1/gscreen.1.adoc -[type: AsciiDoc_def] src/man/man1/hal-histogram.1.adoc $lang:src/$lang/man/man1/hal-histogram.1.adoc -[type: AsciiDoc_def] src/man/man1/hal_input.1.adoc $lang:src/$lang/man/man1/hal_input.1.adoc -[type: AsciiDoc_def] src/man/man1/hal_manualtoolchange.1.adoc $lang:src/$lang/man/man1/hal_manualtoolchange.1.adoc -[type: AsciiDoc_def] src/man/man1/halcmd.1.adoc $lang:src/$lang/man/man1/halcmd.1.adoc -[type: AsciiDoc_def] src/man/man1/halcmd_twopass.1.adoc $lang:src/$lang/man/man1/halcmd_twopass.1.adoc -[type: AsciiDoc_def] src/man/man1/halcompile.1.adoc $lang:src/$lang/man/man1/halcompile.1.adoc -[type: AsciiDoc_def] src/man/man1/halmeter.1.adoc $lang:src/$lang/man/man1/halmeter.1.adoc -[type: AsciiDoc_def] src/man/man1/halreport.1.adoc $lang:src/$lang/man/man1/halreport.1.adoc -[type: AsciiDoc_def] src/man/man1/halrmt.1.adoc $lang:src/$lang/man/man1/halrmt.1.adoc -[type: AsciiDoc_def] src/man/man1/halrun.1.adoc $lang:src/$lang/man/man1/halrun.1.adoc -[type: AsciiDoc_def] src/man/man1/halsampler.1.adoc $lang:src/$lang/man/man1/halsampler.1.adoc -[type: AsciiDoc_def] src/man/man1/halscope.1.adoc $lang:src/$lang/man/man1/halscope.1.adoc -[type: AsciiDoc_def] src/man/man1/halshow.1.adoc $lang:src/$lang/man/man1/halshow.1.adoc -[type: AsciiDoc_def] src/man/man1/halstreamer.1.adoc $lang:src/$lang/man/man1/halstreamer.1.adoc -[type: AsciiDoc_def] src/man/man1/haltcl.1.adoc $lang:src/$lang/man/man1/haltcl.1.adoc -[type: AsciiDoc_def] src/man/man1/halui.1.adoc $lang:src/$lang/man/man1/halui.1.adoc -[type: AsciiDoc_def] src/man/man1/hbmgui.1.adoc $lang:src/$lang/man/man1/hbmgui.1.adoc -[type: AsciiDoc_def] src/man/man1/hexagui.1.adoc $lang:src/$lang/man/man1/hexagui.1.adoc -[type: AsciiDoc_def] src/man/man1/hy_gt_vfd.1.adoc $lang:src/$lang/man/man1/hy_gt_vfd.1.adoc -[type: AsciiDoc_def] src/man/man1/hy_vfd.1.adoc $lang:src/$lang/man/man1/hy_vfd.1.adoc -[type: AsciiDoc_def] src/man/man1/image-to-gcode.1.adoc $lang:src/$lang/man/man1/image-to-gcode.1.adoc -[type: AsciiDoc_def] src/man/man1/inivalue.1.adoc $lang:src/$lang/man/man1/inivalue.1.adoc -[type: AsciiDoc_def] src/man/man1/inivar.1.adoc $lang:src/$lang/man/man1/inivar.1.adoc -[type: AsciiDoc_def] src/man/man1/io.1.adoc $lang:src/$lang/man/man1/io.1.adoc -[type: AsciiDoc_def] src/man/man1/latency-histogram.1.adoc $lang:src/$lang/man/man1/latency-histogram.1.adoc -[type: AsciiDoc_def] src/man/man1/latency-plot.1.adoc $lang:src/$lang/man/man1/latency-plot.1.adoc -[type: AsciiDoc_def] src/man/man1/latency-test.1.adoc $lang:src/$lang/man/man1/latency-test.1.adoc -[type: AsciiDoc_def] src/man/man1/lineardelta.1.adoc $lang:src/$lang/man/man1/lineardelta.1.adoc -[type: AsciiDoc_def] src/man/man1/linuxcnc_info.1.adoc $lang:src/$lang/man/man1/linuxcnc_info.1.adoc -[type: AsciiDoc_def] src/man/man1/linuxcnc_module_helper.1.adoc $lang:src/$lang/man/man1/linuxcnc_module_helper.1.adoc -[type: AsciiDoc_def] src/man/man1/linuxcnc_var.1.adoc $lang:src/$lang/man/man1/linuxcnc_var.1.adoc -[type: AsciiDoc_def] src/man/man1/linuxcnclcd.1.adoc $lang:src/$lang/man/man1/linuxcnclcd.1.adoc -[type: AsciiDoc_def] src/man/man1/linuxcncmkdesktop.1.adoc $lang:src/$lang/man/man1/linuxcncmkdesktop.1.adoc -[type: AsciiDoc_def] src/man/man1/linuxcncrsh.1.adoc $lang:src/$lang/man/man1/linuxcncrsh.1.adoc -[type: AsciiDoc_def] src/man/man1/linuxcncsvr.1.adoc $lang:src/$lang/man/man1/linuxcncsvr.1.adoc -[type: AsciiDoc_def] src/man/man1/linuxcnctop.1.adoc $lang:src/$lang/man/man1/linuxcnctop.1.adoc -[type: AsciiDoc_def] src/man/man1/maho600gui.1.adoc $lang:src/$lang/man/man1/maho600gui.1.adoc -[type: AsciiDoc_def] src/man/man1/max5gui.1.adoc $lang:src/$lang/man/man1/max5gui.1.adoc -[type: AsciiDoc_def] src/man/man1/mb2hal.1.adoc $lang:src/$lang/man/man1/mb2hal.1.adoc -[type: AsciiDoc_def] src/man/man1/mdi.1.adoc $lang:src/$lang/man/man1/mdi.1.adoc -[type: AsciiDoc_def] src/man/man1/melfagui.1.adoc $lang:src/$lang/man/man1/melfagui.1.adoc -[type: AsciiDoc_def] src/man/man1/milltask.1.adoc $lang:src/$lang/man/man1/milltask.1.adoc -[type: AsciiDoc_def] src/man/man1/millturn.1.adoc $lang:src/$lang/man/man1/millturn.1.adoc -[type: AsciiDoc_def] src/man/man1/mitsub_vfd.1.adoc $lang:src/$lang/man/man1/mitsub_vfd.1.adoc -[type: AsciiDoc_def] src/man/man1/modcompile.1.adoc $lang:src/$lang/man/man1/modcompile.1.adoc -[type: AsciiDoc_def] src/man/man1/monitor-xhc-hb04.1.adoc $lang:src/$lang/man/man1/monitor-xhc-hb04.1.adoc -[type: AsciiDoc_def] src/man/man1/motion-logger.1.adoc $lang:src/$lang/man/man1/motion-logger.1.adoc -[type: AsciiDoc_def] src/man/man1/moveoff_gui.1.adoc $lang:src/$lang/man/man1/moveoff_gui.1.adoc -[type: AsciiDoc_def] src/man/man1/ngcgui.1.adoc $lang:src/$lang/man/man1/ngcgui.1.adoc -[type: AsciiDoc_def] src/man/man1/panelui.1.adoc $lang:src/$lang/man/man1/panelui.1.adoc -[type: AsciiDoc_def] src/man/man1/pmx485-test.1.adoc $lang:src/$lang/man/man1/pmx485-test.1.adoc -[type: AsciiDoc_def] src/man/man1/pmx485.1.adoc $lang:src/$lang/man/man1/pmx485.1.adoc -[type: AsciiDoc_def] src/man/man1/pncconf.1.adoc $lang:src/$lang/man/man1/pncconf.1.adoc -[type: AsciiDoc_def] src/man/man1/puma560gui.1.adoc $lang:src/$lang/man/man1/puma560gui.1.adoc -[type: AsciiDoc_def] src/man/man1/pumagui.1.adoc $lang:src/$lang/man/man1/pumagui.1.adoc -[type: AsciiDoc_def] src/man/man1/pyngcgui.1.adoc $lang:src/$lang/man/man1/pyngcgui.1.adoc -[type: AsciiDoc_def] src/man/man1/pyui.1.adoc $lang:src/$lang/man/man1/pyui.1.adoc -[type: AsciiDoc_def] src/man/man1/pyvcp.1.adoc $lang:src/$lang/man/man1/pyvcp.1.adoc -[type: AsciiDoc_def] src/man/man1/pyvcp_demo.1.adoc $lang:src/$lang/man/man1/pyvcp_demo.1.adoc -[type: AsciiDoc_def] src/man/man1/qtplasmac-materials.1.adoc $lang:src/$lang/man/man1/qtplasmac-materials.1.adoc -[type: AsciiDoc_def] src/man/man1/qtplasmac_gcode.1.adoc $lang:src/$lang/man/man1/qtplasmac_gcode.1.adoc -[type: AsciiDoc_def] src/man/man1/qtvcp.1.adoc $lang:src/$lang/man/man1/qtvcp.1.adoc -[type: AsciiDoc_def] src/man/man1/rotarydelta.1.adoc $lang:src/$lang/man/man1/rotarydelta.1.adoc -[type: AsciiDoc_def] src/man/man1/rs274.1.adoc $lang:src/$lang/man/man1/rs274.1.adoc -[type: AsciiDoc_def] src/man/man1/rtapi_app.1.adoc $lang:src/$lang/man/man1/rtapi_app.1.adoc -[type: AsciiDoc_def] src/man/man1/scaragui.1.adoc $lang:src/$lang/man/man1/scaragui.1.adoc -[type: AsciiDoc_def] src/man/man1/schedrmt.1.adoc $lang:src/$lang/man/man1/schedrmt.1.adoc -[type: AsciiDoc_def] src/man/man1/scorbot-er-3.1.adoc $lang:src/$lang/man/man1/scorbot-er-3.1.adoc -[type: AsciiDoc_def] src/man/man1/sendkeys.1.adoc $lang:src/$lang/man/man1/sendkeys.1.adoc -[type: AsciiDoc_def] src/man/man1/setup_designer.1.adoc $lang:src/$lang/man/man1/setup_designer.1.adoc -[type: AsciiDoc_def] src/man/man1/shuttle.1.adoc $lang:src/$lang/man/man1/shuttle.1.adoc -[type: AsciiDoc_def] src/man/man1/sim_pin.1.adoc $lang:src/$lang/man/man1/sim_pin.1.adoc -[type: AsciiDoc_def] src/man/man1/simulate_probe.1.adoc $lang:src/$lang/man/man1/simulate_probe.1.adoc -[type: AsciiDoc_def] src/man/man1/stepconf.1.adoc $lang:src/$lang/man/man1/stepconf.1.adoc -[type: AsciiDoc_def] src/man/man1/svd-ps_vfd.1.adoc $lang:src/$lang/man/man1/svd-ps_vfd.1.adoc -[type: AsciiDoc_def] src/man/man1/teach-in.1.adoc $lang:src/$lang/man/man1/teach-in.1.adoc -[type: AsciiDoc_def] src/man/man1/tool_mmap_read.1.adoc $lang:src/$lang/man/man1/tool_mmap_read.1.adoc -[type: AsciiDoc_def] src/man/man1/tool_watch.1.adoc $lang:src/$lang/man/man1/tool_watch.1.adoc -[type: AsciiDoc_def] src/man/man1/tooledit.1.adoc $lang:src/$lang/man/man1/tooledit.1.adoc -[type: AsciiDoc_def] src/man/man1/touchy.1.adoc $lang:src/$lang/man/man1/touchy.1.adoc -[type: AsciiDoc_def] src/man/man1/update_ini.1.adoc $lang:src/$lang/man/man1/update_ini.1.adoc -[type: AsciiDoc_def] src/man/man1/vfdb_vfd.1.adoc $lang:src/$lang/man/man1/vfdb_vfd.1.adoc -[type: AsciiDoc_def] src/man/man1/vfs11_vfd.1.adoc $lang:src/$lang/man/man1/vfs11_vfd.1.adoc -[type: AsciiDoc_def] src/man/man1/xhc-hb04-accels.1.adoc $lang:src/$lang/man/man1/xhc-hb04-accels.1.adoc -[type: AsciiDoc_def] src/man/man1/xhc-hb04.1.adoc $lang:src/$lang/man/man1/xhc-hb04.1.adoc -[type: AsciiDoc_def] src/man/man1/xhc-whb04b-6.1.adoc $lang:src/$lang/man/man1/xhc-whb04b-6.1.adoc -[type: AsciiDoc_def] src/man/man1/xyzab-tdr-gui.1.adoc $lang:src/$lang/man/man1/xyzab-tdr-gui.1.adoc -[type: AsciiDoc_def] src/man/man1/xyzac-trt-gui.1.adoc $lang:src/$lang/man/man1/xyzac-trt-gui.1.adoc -[type: AsciiDoc_def] src/man/man1/xyzbc-trt-gui.1.adoc $lang:src/$lang/man/man1/xyzbc-trt-gui.1.adoc -[type: AsciiDoc_def] src/man/man3/PM_ROTATION_VECTOR.3.adoc $lang:src/$lang/man/man3/PM_ROTATION_VECTOR.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_add_funct_to_thread.3.adoc $lang:src/$lang/man/man3/hal_add_funct_to_thread.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_create_thread.3.adoc $lang:src/$lang/man/man3/hal_create_thread.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_exit.3.adoc $lang:src/$lang/man/man3/hal_exit.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_export_funct.3.adoc $lang:src/$lang/man/man3/hal_export_funct.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_init.3.adoc $lang:src/$lang/man/man3/hal_init.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_malloc.3.adoc $lang:src/$lang/man/man3/hal_malloc.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_param_alias.3.adoc $lang:src/$lang/man/man3/hal_param_alias.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_param_new.3.adoc $lang:src/$lang/man/man3/hal_param_new.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_parport.3.adoc $lang:src/$lang/man/man3/hal_parport.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_pin_alias.3.adoc $lang:src/$lang/man/man3/hal_pin_alias.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_pin_new.3.adoc $lang:src/$lang/man/man3/hal_pin_new.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_port.3.adoc $lang:src/$lang/man/man3/hal_port.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_ready.3.adoc $lang:src/$lang/man/man3/hal_ready.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_set_constructor.3.adoc $lang:src/$lang/man/man3/hal_set_constructor.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_set_lock.3.adoc $lang:src/$lang/man/man3/hal_set_lock.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_signal_new.3.adoc $lang:src/$lang/man/man3/hal_signal_new.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_start_threads.3.adoc $lang:src/$lang/man/man3/hal_start_threads.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_stream.3.adoc $lang:src/$lang/man/man3/hal_stream.3.adoc -[type: AsciiDoc_def] src/man/man3/hal_type_t.3.adoc $lang:src/$lang/man/man3/hal_type_t.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_allocate_bspi_tram.3.adoc $lang:src/$lang/man/man3/hm2_allocate_bspi_tram.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_bspi_set_read_function.3.adoc $lang:src/$lang/man/man3/hm2_bspi_set_read_function.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_bspi_set_write_function.3.adoc $lang:src/$lang/man/man3/hm2_bspi_set_write_function.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_bspi_setup_chan.3.adoc $lang:src/$lang/man/man3/hm2_bspi_setup_chan.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_bspi_write_chan.3.adoc $lang:src/$lang/man/man3/hm2_bspi_write_chan.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_pktuart_read.3.adoc $lang:src/$lang/man/man3/hm2_pktuart_read.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_pktuart_send.3.adoc $lang:src/$lang/man/man3/hm2_pktuart_send.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_pktuart_setup.3.adoc $lang:src/$lang/man/man3/hm2_pktuart_setup.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_tram_add_bspi_frame.3.adoc $lang:src/$lang/man/man3/hm2_tram_add_bspi_frame.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_uart_read.3.adoc $lang:src/$lang/man/man3/hm2_uart_read.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_uart_send.3.adoc $lang:src/$lang/man/man3/hm2_uart_send.3.adoc -[type: AsciiDoc_def] src/man/man3/hm2_uart_setup.3.adoc $lang:src/$lang/man/man3/hm2_uart_setup.3.adoc -[type: AsciiDoc_def] src/man/man3/hal.3.adoc $lang:src/$lang/man/man3/hal.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi.3.adoc $lang:src/$lang/man/man3/rtapi.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_app_exit.3.adoc $lang:src/$lang/man/man3/rtapi_app_exit.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_app_main.3.adoc $lang:src/$lang/man/man3/rtapi_app_main.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_atomic.3.adoc $lang:src/$lang/man/man3/rtapi_atomic.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_bool.3.adoc $lang:src/$lang/man/man3/rtapi_bool.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_byteorder.3.adoc $lang:src/$lang/man/man3/rtapi_byteorder.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_clock_set_period.3.adoc $lang:src/$lang/man/man3/rtapi_clock_set_period.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_delay.3.adoc $lang:src/$lang/man/man3/rtapi_delay.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_device.3.adoc $lang:src/$lang/man/man3/rtapi_device.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_div_u64.3.adoc $lang:src/$lang/man/man3/rtapi_div_u64.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_exit.3.adoc $lang:src/$lang/man/man3/rtapi_exit.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_firmware.3.adoc $lang:src/$lang/man/man3/rtapi_firmware.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_get_time.3.adoc $lang:src/$lang/man/man3/rtapi_get_time.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_gfp.3.adoc $lang:src/$lang/man/man3/rtapi_gfp.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_init.3.adoc $lang:src/$lang/man/man3/rtapi_init.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_io.3.adoc $lang:src/$lang/man/man3/rtapi_io.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_is.3.adoc $lang:src/$lang/man/man3/rtapi_is.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_list.3.adoc $lang:src/$lang/man/man3/rtapi_list.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_get_msg_level.3.adoc $lang:src/$lang/man/man3/rtapi_get_msg_level.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_module_param.3.adoc $lang:src/$lang/man/man3/rtapi_module_param.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_mutex.3.adoc $lang:src/$lang/man/man3/rtapi_mutex.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_open_as_root.3.adoc $lang:src/$lang/man/man3/rtapi_open_as_root.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_outb.3.adoc $lang:src/$lang/man/man3/rtapi_outb.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_parport.3.adoc $lang:src/$lang/man/man3/rtapi_parport.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_pci.3.adoc $lang:src/$lang/man/man3/rtapi_pci.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_print.3.adoc $lang:src/$lang/man/man3/rtapi_print.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_prio.3.adoc $lang:src/$lang/man/man3/rtapi_prio.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_region.3.adoc $lang:src/$lang/man/man3/rtapi_region.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_shmem.3.adoc $lang:src/$lang/man/man3/rtapi_shmem.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_slab.3.adoc $lang:src/$lang/man/man3/rtapi_slab.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_snprintf.3.adoc $lang:src/$lang/man/man3/rtapi_snprintf.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_stdint.3.adoc $lang:src/$lang/man/man3/rtapi_stdint.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_string.3.adoc $lang:src/$lang/man/man3/rtapi_string.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_strlcpy.3.adoc $lang:src/$lang/man/man3/rtapi_strlcpy.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_task_new.3.adoc $lang:src/$lang/man/man3/rtapi_task_new.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_task_pause.3.adoc $lang:src/$lang/man/man3/rtapi_task_pause.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_task_self.3.adoc $lang:src/$lang/man/man3/rtapi_task_self.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_task_start.3.adoc $lang:src/$lang/man/man3/rtapi_task_start.3.adoc -[type: AsciiDoc_def] src/man/man3/rtapi_task_wait.3.adoc $lang:src/$lang/man/man3/rtapi_task_wait.3.adoc -[type: AsciiDoc_def] src/man/man9/at_pid.9.adoc $lang:src/$lang/man/man9/at_pid.9.adoc -[type: AsciiDoc_def] src/man/man9/classicladder.9.adoc $lang:src/$lang/man/man9/classicladder.9.adoc -[type: AsciiDoc_def] src/man/man9/counter.9.adoc $lang:src/$lang/man/man9/counter.9.adoc -[type: AsciiDoc_def] src/man/man9/debounce.9.adoc $lang:src/$lang/man/man9/debounce.9.adoc -[type: AsciiDoc_def] src/man/man9/encoder.9.adoc $lang:src/$lang/man/man9/encoder.9.adoc -[type: AsciiDoc_def] src/man/man9/encoder_ratio.9.adoc $lang:src/$lang/man/man9/encoder_ratio.9.adoc -[type: AsciiDoc_def] src/man/man9/gantrykins.9.adoc $lang:src/$lang/man/man9/gantrykins.9.adoc -[type: AsciiDoc_def] src/man/man9/gladevcp.9.adoc $lang:src/$lang/man/man9/gladevcp.9.adoc -[type: AsciiDoc_def] src/man/man9/hal_bb_gpio.9.adoc $lang:src/$lang/man/man9/hal_bb_gpio.9.adoc -[type: AsciiDoc_def] src/man/man9/hal_parport.9.adoc $lang:src/$lang/man/man9/hal_parport.9.adoc -[type: AsciiDoc_def] src/man/man9/hm2_7i43.9.adoc $lang:src/$lang/man/man9/hm2_7i43.9.adoc -[type: AsciiDoc_def] src/man/man9/hm2_7i90.9.adoc $lang:src/$lang/man/man9/hm2_7i90.9.adoc -[type: AsciiDoc_def] src/man/man9/hm2_eth.9.adoc $lang:src/$lang/man/man9/hm2_eth.9.adoc -[type: AsciiDoc_def] src/man/man9/hm2_pci.9.adoc $lang:src/$lang/man/man9/hm2_pci.9.adoc -[type: AsciiDoc_def] src/man/man9/hm2_rpspi.9.adoc $lang:src/$lang/man/man9/hm2_rpspi.9.adoc -[type: AsciiDoc_def] src/man/man9/hm2_spi.9.adoc $lang:src/$lang/man/man9/hm2_spi.9.adoc -[type: AsciiDoc_def] src/man/man9/hostmot2.9.adoc $lang:src/$lang/man/man9/hostmot2.9.adoc -[type: AsciiDoc_def] src/man/man9/kins.9.adoc $lang:src/$lang/man/man9/kins.9.adoc -[type: AsciiDoc_def] src/man/man9/lcd.9.adoc $lang:src/$lang/man/man9/lcd.9.adoc -[type: AsciiDoc_def] src/man/man9/lineardeltakins.9.adoc $lang:src/$lang/man/man9/lineardeltakins.9.adoc -[type: AsciiDoc_def] src/man/man9/motion.9.adoc $lang:src/$lang/man/man9/motion.9.adoc -[type: AsciiDoc_def] src/man/man9/opto_ac5.9.adoc $lang:src/$lang/man/man9/opto_ac5.9.adoc -[type: AsciiDoc_def] src/man/man9/rosekins.9.adoc $lang:src/$lang/man/man9/rosekins.9.adoc -[type: AsciiDoc_def] src/man/man9/sampler.9.adoc $lang:src/$lang/man/man9/sampler.9.adoc -[type: AsciiDoc_def] src/man/man9/setsserial.9.adoc $lang:src/$lang/man/man9/setsserial.9.adoc -[type: AsciiDoc_def] src/man/man9/siggen.9.adoc $lang:src/$lang/man/man9/siggen.9.adoc -[type: AsciiDoc_def] src/man/man9/sserial.9.adoc $lang:src/$lang/man/man9/sserial.9.adoc -[type: AsciiDoc_def] src/man/man9/stepgen.9.adoc $lang:src/$lang/man/man9/stepgen.9.adoc -[type: AsciiDoc_def] src/man/man9/streamer.9.adoc $lang:src/$lang/man/man9/streamer.9.adoc -[type: AsciiDoc_def] src/man/man9/supply.9.adoc $lang:src/$lang/man/man9/supply.9.adoc -[type: AsciiDoc_def] src/man/man9/threads.9.adoc $lang:src/$lang/man/man9/threads.9.adoc -[type: AsciiDoc_def] src/man/man9/watchdog.9.adoc $lang:src/$lang/man/man9/watchdog.9.adoc -[type: AsciiDoc_def] src/man/man9/weighted_sum.9.adoc $lang:src/$lang/man/man9/weighted_sum.9.adoc -[type: AsciiDoc_def] src/motion/5-axis-kinematics.adoc $lang:src/$lang/motion/5-axis-kinematics.adoc -[type: AsciiDoc_def] src/motion/dh-parameters.adoc $lang:src/$lang/motion/dh-parameters.adoc -[type: AsciiDoc_def] src/motion/external-offsets.adoc $lang:src/$lang/motion/external-offsets.adoc -[type: AsciiDoc_def] src/motion/kinematics.adoc $lang:src/$lang/motion/kinematics.adoc -[type: AsciiDoc_def] src/motion/pid-theory.adoc $lang:src/$lang/motion/pid-theory.adoc -[type: AsciiDoc_def] src/motion/switchkins.adoc $lang:src/$lang/motion/switchkins.adoc -[type: AsciiDoc_def] src/motion/tweaking-steppers.adoc $lang:src/$lang/motion/tweaking-steppers.adoc -[type: AsciiDoc_def] src/plasma/plasma-cnc-primer.adoc $lang:src/$lang/plasma/plasma-cnc-primer.adoc -[type: AsciiDoc_def] src/plasma/qtplasmac.adoc $lang:src/$lang/plasma/qtplasmac.adoc -[type: AsciiDoc_def] src/remap/remap.adoc $lang:src/$lang/remap/remap.adoc -[type: AsciiDoc_def] src/tooldatabase/tooldatabase.adoc $lang:src/$lang/tooldatabase/tooldatabase.adoc -[type: AsciiDoc_def] src/user/starting-linuxcnc.adoc $lang:src/$lang/user/starting-linuxcnc.adoc -[type: AsciiDoc_def] src/user/user-concepts.adoc $lang:src/$lang/user/user-concepts.adoc -[type: AsciiDoc_def] src/user/user-foreword.adoc $lang:src/$lang/user/user-foreword.adoc -[type: AsciiDoc_def] src/user/user-intro.adoc $lang:src/$lang/user/user-intro.adoc -[type: AsciiDoc_def] README.adoc $lang:src/$lang/README.adoc -[type: AsciiDoc_def] INSTALL.adoc $lang:src/$lang/INSTALL.adoc +[type: AsciiDoc_def] src/Master_Developer.adoc $lang:build/adoc/$lang/Master_Developer.adoc +[type: AsciiDoc_def] src/Master_Documentation.adoc $lang:build/adoc/$lang/Master_Documentation.adoc +[type: AsciiDoc_def] src/Master_Getting_Started.adoc $lang:build/adoc/$lang/Master_Getting_Started.adoc +[type: AsciiDoc_def] src/Master_Integrator.adoc $lang:build/adoc/$lang/Master_Integrator.adoc +[type: xhtml_def] src/index.tmpl $lang:build/adoc/$lang/index.tmpl +[type: AsciiDoc_def] help/rtfaults.adoc $lang:build/adoc/$lang/help/rtfaults.adoc +[type: AsciiDoc_def] help/tklinuxcnc.adoc $lang:build/adoc/$lang/help/tklinuxcnc.adoc +[type: AsciiDoc_def] src/code/adding-configs.adoc $lang:build/adoc/$lang/code/adding-configs.adoc +[type: AsciiDoc_def] src/code/building-linuxcnc.adoc $lang:build/adoc/$lang/code/building-linuxcnc.adoc +[type: AsciiDoc_def] src/code/code-notes.adoc $lang:build/adoc/$lang/code/code-notes.adoc +[type: AsciiDoc_def] src/code/contributing-to-linuxcnc.adoc $lang:build/adoc/$lang/code/contributing-to-linuxcnc.adoc +[type: AsciiDoc_def] src/code/nml-messages.adoc $lang:build/adoc/$lang/code/nml-messages.adoc +[type: AsciiDoc_def] src/code/rs274.adoc $lang:build/adoc/$lang/code/rs274.adoc +[type: AsciiDoc_def] src/code/style-guide.adoc $lang:build/adoc/$lang/code/style-guide.adoc +[type: AsciiDoc_def] src/gui/gui-dev-reference.adoc $lang:build/adoc/$lang/gui/gui-dev-reference.adoc +[type: AsciiDoc_def] src/code/writing-tests.adoc $lang:build/adoc/$lang/code/writing-tests.adoc +[type: AsciiDoc_def] src/common/emc-history.adoc $lang:build/adoc/$lang/common/emc-history.adoc +[type: AsciiDoc_def] src/common/glossary.adoc $lang:build/adoc/$lang/common/glossary.adoc +[type: AsciiDoc_def] src/common/gpld-copyright.adoc $lang:build/adoc/$lang/common/gpld-copyright.adoc +[type: AsciiDoc_def] src/common/linux-faq.adoc $lang:build/adoc/$lang/common/linux-faq.adoc +[type: AsciiDoc_def] src/common/overleaf.adoc $lang:build/adoc/$lang/common/overleaf.adoc +[type: AsciiDoc_def] src/config/core-components.adoc $lang:build/adoc/$lang/config/core-components.adoc +[type: AsciiDoc_def] src/config/ini-config.adoc $lang:build/adoc/$lang/config/ini-config.adoc +[type: AsciiDoc_def] src/config/ini-homing.adoc $lang:build/adoc/$lang/config/ini-homing.adoc +[type: AsciiDoc_def] src/config/integrator-concepts.adoc $lang:build/adoc/$lang/config/integrator-concepts.adoc +[type: AsciiDoc_def] src/config/lathe-config.adoc $lang:build/adoc/$lang/config/lathe-config.adoc +[type: AsciiDoc_def] src/config/moveoff.adoc $lang:build/adoc/$lang/config/moveoff.adoc +[type: AsciiDoc_def] src/config/pncconf.adoc $lang:build/adoc/$lang/config/pncconf.adoc +[type: AsciiDoc_def] src/config/python-hal-interface.adoc $lang:build/adoc/$lang/config/python-hal-interface.adoc +[type: AsciiDoc_def] src/config/python-interface.adoc $lang:build/adoc/$lang/config/python-interface.adoc +[type: AsciiDoc_def] src/config/stepconf.adoc $lang:build/adoc/$lang/config/stepconf.adoc +[type: AsciiDoc_def] src/config/stepper.adoc $lang:build/adoc/$lang/config/stepper.adoc +[type: AsciiDoc_def] src/config/stepper-diagnostics.adoc $lang:build/adoc/$lang/config/stepper-diagnostics.adoc +[type: AsciiDoc_def] src/config/stepper-quickstart.adoc $lang:build/adoc/$lang/config/stepper-quickstart.adoc +[type: AsciiDoc_def] src/drivers/ax5214h.adoc $lang:build/adoc/$lang/drivers/ax5214h.adoc +[type: AsciiDoc_def] src/drivers/gm.adoc $lang:build/adoc/$lang/drivers/gm.adoc +[type: AsciiDoc_def] src/drivers/gs2.adoc $lang:build/adoc/$lang/drivers/gs2.adoc +[type: AsciiDoc_def] src/drivers/hal_pi_gpio.adoc $lang:build/adoc/$lang/drivers/hal_pi_gpio.adoc +[type: AsciiDoc_def] src/drivers/hostmot2.adoc $lang:build/adoc/$lang/drivers/hostmot2.adoc +[type: AsciiDoc_def] src/drivers/hal_gpio.adoc $lang:build/adoc/$lang/drivers/hal_gpio.adoc +[type: AsciiDoc_def] src/drivers/mb2hal.adoc $lang:build/adoc/$lang/drivers/mb2hal.adoc +[type: AsciiDoc_def] src/drivers/mitsub-vfd.adoc $lang:build/adoc/$lang/drivers/mitsub-vfd.adoc +[type: AsciiDoc_def] src/drivers/motenc.adoc $lang:build/adoc/$lang/drivers/motenc.adoc +[type: AsciiDoc_def] src/drivers/opto22.adoc $lang:build/adoc/$lang/drivers/opto22.adoc +[type: AsciiDoc_def] src/drivers/pico-ppmc.adoc $lang:build/adoc/$lang/drivers/pico-ppmc.adoc +[type: AsciiDoc_def] src/drivers/pluto-p.adoc $lang:build/adoc/$lang/drivers/pluto-p.adoc +[type: AsciiDoc_def] src/drivers/pmx485.adoc $lang:build/adoc/$lang/drivers/pmx485.adoc +[type: AsciiDoc_def] src/drivers/servo-to-go.adoc $lang:build/adoc/$lang/drivers/servo-to-go.adoc +[type: AsciiDoc_def] src/drivers/shuttle.adoc $lang:build/adoc/$lang/drivers/shuttle.adoc +[type: AsciiDoc_def] src/drivers/vfs11.adoc $lang:build/adoc/$lang/drivers/vfs11.adoc +[type: AsciiDoc_def] src/examples/gcode.adoc $lang:build/adoc/$lang/examples/gcode.adoc +[type: AsciiDoc_def] src/examples/gs2-example.adoc $lang:build/adoc/$lang/examples/gs2-example.adoc +[type: AsciiDoc_def] src/examples/mpg.adoc $lang:build/adoc/$lang/examples/mpg.adoc +[type: AsciiDoc_def] src/examples/pci-parallel-port.adoc $lang:build/adoc/$lang/examples/pci-parallel-port.adoc +[type: AsciiDoc_def] src/examples/spindle.adoc $lang:build/adoc/$lang/examples/spindle.adoc +[type: AsciiDoc_def] src/gcode/coordinates.adoc $lang:build/adoc/$lang/gcode/coordinates.adoc +[type: AsciiDoc_def] src/gcode/g-code.adoc $lang:build/adoc/$lang/gcode/g-code.adoc +[type: xhtml_def] src/gcode.html $lang:build/html/$lang/gcode.html +[type: AsciiDoc_def] src/gcode/machining-center.adoc $lang:build/adoc/$lang/gcode/machining-center.adoc +[type: AsciiDoc_def] src/gcode/m-code.adoc $lang:build/adoc/$lang/gcode/m-code.adoc +[type: AsciiDoc_def] src/gcode/o-code.adoc $lang:build/adoc/$lang/gcode/o-code.adoc +[type: AsciiDoc_def] src/gcode/other-code.adoc $lang:build/adoc/$lang/gcode/other-code.adoc +[type: AsciiDoc_def] src/gcode/overview.adoc $lang:build/adoc/$lang/gcode/overview.adoc +[type: AsciiDoc_def] src/gcode/rs274ngc.adoc $lang:build/adoc/$lang/gcode/rs274ngc.adoc +[type: AsciiDoc_def] src/gcode/tool-compensation.adoc $lang:build/adoc/$lang/gcode/tool-compensation.adoc +[type: AsciiDoc_def] src/getting-started/about-linuxcnc.adoc $lang:build/adoc/$lang/getting-started/about-linuxcnc.adoc +[type: AsciiDoc_def] src/getting-started/getting-linuxcnc.adoc $lang:build/adoc/$lang/getting-started/getting-linuxcnc.adoc +[type: AsciiDoc_def] src/getting-started/running-linuxcnc.adoc $lang:build/adoc/$lang/getting-started/running-linuxcnc.adoc +[type: AsciiDoc_def] src/getting-started/system-requirements.adoc $lang:build/adoc/$lang/getting-started/system-requirements.adoc +[type: AsciiDoc_def] src/getting-started/hardware-interface.adoc $lang:build/adoc/$lang/getting-started/hardware-interface.adoc +[type: AsciiDoc_def] src/getting-started/updating-linuxcnc.adoc $lang:build/adoc/$lang/getting-started/updating-linuxcnc.adoc +[type: AsciiDoc_def] src/gui/axis.adoc $lang:build/adoc/$lang/gui/axis.adoc +[type: AsciiDoc_def] src/gui/filter-programs.adoc $lang:build/adoc/$lang/gui/filter-programs.adoc +[type: AsciiDoc_def] src/gui/gladevcp.adoc $lang:build/adoc/$lang/gui/gladevcp.adoc +[type: AsciiDoc_def] src/gui/gladevcp-panels.adoc $lang:build/adoc/$lang/gui/gladevcp-panels.adoc +[type: AsciiDoc_def] src/gui/gladevcp-libraries.adoc $lang:build/adoc/$lang/gui/gladevcp-libraries.adoc +[type: AsciiDoc_def] src/gui/gmoccapy.adoc $lang:build/adoc/$lang/gui/gmoccapy.adoc +[type: AsciiDoc_def] src/gui/gscreen.adoc $lang:build/adoc/$lang/gui/gscreen.adoc +[type: AsciiDoc_def] src/gui/gstat.adoc $lang:build/adoc/$lang/gui/gstat.adoc +[type: AsciiDoc_def] src/gui/halui.adoc $lang:build/adoc/$lang/gui/halui.adoc +[type: AsciiDoc_def] src/gui/image-to-gcode.adoc $lang:build/adoc/$lang/gui/image-to-gcode.adoc +[type: AsciiDoc_def] src/gui/mdro.adoc $lang:build/adoc/$lang/gui/mdro.adoc +[type: AsciiDoc_def] src/gui/ngcgui.adoc $lang:build/adoc/$lang/gui/ngcgui.adoc +[type: AsciiDoc_def] src/gui/panelui.adoc $lang:build/adoc/$lang/gui/panelui.adoc +[type: AsciiDoc_def] src/gui/pyvcp.adoc $lang:build/adoc/$lang/gui/pyvcp.adoc +[type: AsciiDoc_def] src/gui/pyvcp-examples.adoc $lang:build/adoc/$lang/gui/pyvcp-examples.adoc +[type: AsciiDoc_def] src/gui/qtdragon.adoc $lang:build/adoc/$lang/gui/qtdragon.adoc +[type: AsciiDoc_def] src/gui/qtvcp.adoc $lang:build/adoc/$lang/gui/qtvcp.adoc +[type: AsciiDoc_def] src/gui/qtvcp-code-snippets.adoc $lang:build/adoc/$lang/gui/qtvcp-code-snippets.adoc +[type: AsciiDoc_def] src/gui/qtvcp-custom-widgets.adoc $lang:build/adoc/$lang/gui/qtvcp-custom-widgets.adoc +[type: AsciiDoc_def] src/gui/qtvcp-development.adoc $lang:build/adoc/$lang/gui/qtvcp-development.adoc +[type: AsciiDoc_def] src/gui/qtvcp-libraries.adoc $lang:build/adoc/$lang/gui/qtvcp-libraries.adoc +[type: AsciiDoc_def] src/gui/qtvcp-vcp-panels.adoc $lang:build/adoc/$lang/gui/qtvcp-vcp-panels.adoc +[type: AsciiDoc_def] src/gui/qtvcp-vismach.adoc $lang:build/adoc/$lang/gui/qtvcp-vismach.adoc +[type: AsciiDoc_def] src/gui/qtvcp-widgets.adoc $lang:build/adoc/$lang/gui/qtvcp-widgets.adoc +[type: AsciiDoc_def] src/gui/tklinuxcnc.adoc $lang:build/adoc/$lang/gui/tklinuxcnc.adoc +[type: AsciiDoc_def] src/gui/tooledit.adoc $lang:build/adoc/$lang/gui/tooledit.adoc +[type: AsciiDoc_def] src/gui/touchy.adoc $lang:build/adoc/$lang/gui/touchy.adoc +[type: AsciiDoc_def] src/gui/vismach.adoc $lang:build/adoc/$lang/gui/vismach.adoc +[type: AsciiDoc_def] src/hal/basic-hal.adoc $lang:build/adoc/$lang/hal/basic-hal.adoc +[type: AsciiDoc_def] src/hal/canonical-devices.adoc $lang:build/adoc/$lang/hal/canonical-devices.adoc +[type: AsciiDoc_def] src/hal/comp.adoc $lang:build/adoc/$lang/hal/comp.adoc +[type: AsciiDoc_def] src/hal/components.adoc $lang:build/adoc/$lang/hal/components.adoc +[type: AsciiDoc_def] src/hal/components_gen.adoc $lang:build/adoc/$lang/hal/components_gen.adoc +[type: AsciiDoc_def] src/hal/general-ref.adoc $lang:build/adoc/$lang/hal/general-ref.adoc +[type: AsciiDoc_def] src/hal/hal-examples.adoc $lang:build/adoc/$lang/hal/hal-examples.adoc +[type: AsciiDoc_def] src/hal/halmodule.adoc $lang:build/adoc/$lang/hal/halmodule.adoc +[type: AsciiDoc_def] src/hal/halscope.adoc $lang:build/adoc/$lang/hal/halscope.adoc +[type: AsciiDoc_def] src/hal/halshow.adoc $lang:build/adoc/$lang/hal/halshow.adoc +[type: AsciiDoc_def] src/hal/haltcl.adoc $lang:build/adoc/$lang/hal/haltcl.adoc +[type: AsciiDoc_def] src/hal/halui-examples.adoc $lang:build/adoc/$lang/hal/halui-examples.adoc +[type: AsciiDoc_def] src/hal/intro.adoc $lang:build/adoc/$lang/hal/intro.adoc +[type: AsciiDoc_def] src/hal/parallel-port.adoc $lang:build/adoc/$lang/hal/parallel-port.adoc +[type: AsciiDoc_def] src/hal/rtcomps.adoc $lang:build/adoc/$lang/hal/rtcomps.adoc +[type: AsciiDoc_def] src/hal/tools.adoc $lang:build/adoc/$lang/hal/tools.adoc +[type: AsciiDoc_def] src/hal/tutorial.adoc $lang:build/adoc/$lang/hal/tutorial.adoc +[type: AsciiDoc_def] src/hal/twopass.adoc $lang:build/adoc/$lang/hal/twopass.adoc +[type: AsciiDoc_def] src/install/latency-test.adoc $lang:build/adoc/$lang/install/latency-test.adoc +[type: AsciiDoc_def] src/integrator/steppers.adoc $lang:build/adoc/$lang/integrator/steppers.adoc +[type: AsciiDoc_def] src/integrator/stepper-timing.adoc $lang:build/adoc/$lang/integrator/stepper-timing.adoc +[type: AsciiDoc_def] src/integrator/wiring.adoc $lang:build/adoc/$lang/integrator/wiring.adoc +[type: AsciiDoc_def] src/ladder/classic-ladder.adoc $lang:build/adoc/$lang/ladder/classic-ladder.adoc +[type: AsciiDoc_def] src/ladder/ladder-examples.adoc $lang:build/adoc/$lang/ladder/ladder-examples.adoc +[type: AsciiDoc_def] src/ladder/ladder-intro.adoc $lang:build/adoc/$lang/ladder/ladder-intro.adoc +[type: AsciiDoc_def] src/lathe/lathe-user.adoc $lang:build/adoc/$lang/lathe/lathe-user.adoc +[type: AsciiDoc_def] src/man/man1/5axisgui.1.adoc $lang:build/adoc/$lang/man/man1/5axisgui.1.adoc +[type: AsciiDoc_def] src/man/man1/axis-remote.1.adoc $lang:build/adoc/$lang/man/man1/axis-remote.1.adoc +[type: AsciiDoc_def] src/man/man1/axis.1.adoc $lang:build/adoc/$lang/man/man1/axis.1.adoc +[type: AsciiDoc_def] src/man/man1/debuglevel.1.adoc $lang:build/adoc/$lang/man/man1/debuglevel.1.adoc +[type: AsciiDoc_def] src/man/man1/elbpcom.1.adoc $lang:build/adoc/$lang/man/man1/elbpcom.1.adoc +[type: AsciiDoc_def] src/man/man1/gladevcp.1.adoc $lang:build/adoc/$lang/man/man1/gladevcp.1.adoc +[type: AsciiDoc_def] src/man/man1/gladevcp_demo.1.adoc $lang:build/adoc/$lang/man/man1/gladevcp_demo.1.adoc +[type: AsciiDoc_def] src/man/man1/gmoccapy.1.adoc $lang:build/adoc/$lang/man/man1/gmoccapy.1.adoc +[type: AsciiDoc_def] src/man/man1/gremlin_view.1.adoc $lang:build/adoc/$lang/man/man1/gremlin_view.1.adoc +[type: AsciiDoc_def] src/man/man1/gs2_vfd.1.adoc $lang:build/adoc/$lang/man/man1/gs2_vfd.1.adoc +[type: AsciiDoc_def] src/man/man1/gscreen.1.adoc $lang:build/adoc/$lang/man/man1/gscreen.1.adoc +[type: AsciiDoc_def] src/man/man1/hal-histogram.1.adoc $lang:build/adoc/$lang/man/man1/hal-histogram.1.adoc +[type: AsciiDoc_def] src/man/man1/hal_input.1.adoc $lang:build/adoc/$lang/man/man1/hal_input.1.adoc +[type: AsciiDoc_def] src/man/man1/hal_manualtoolchange.1.adoc $lang:build/adoc/$lang/man/man1/hal_manualtoolchange.1.adoc +[type: AsciiDoc_def] src/man/man1/halcmd.1.adoc $lang:build/adoc/$lang/man/man1/halcmd.1.adoc +[type: AsciiDoc_def] src/man/man1/halcmd_twopass.1.adoc $lang:build/adoc/$lang/man/man1/halcmd_twopass.1.adoc +[type: AsciiDoc_def] src/man/man1/halcompile.1.adoc $lang:build/adoc/$lang/man/man1/halcompile.1.adoc +[type: AsciiDoc_def] src/man/man1/halmeter.1.adoc $lang:build/adoc/$lang/man/man1/halmeter.1.adoc +[type: AsciiDoc_def] src/man/man1/halreport.1.adoc $lang:build/adoc/$lang/man/man1/halreport.1.adoc +[type: AsciiDoc_def] src/man/man1/halrmt.1.adoc $lang:build/adoc/$lang/man/man1/halrmt.1.adoc +[type: AsciiDoc_def] src/man/man1/halrun.1.adoc $lang:build/adoc/$lang/man/man1/halrun.1.adoc +[type: AsciiDoc_def] src/man/man1/halsampler.1.adoc $lang:build/adoc/$lang/man/man1/halsampler.1.adoc +[type: AsciiDoc_def] src/man/man1/halscope.1.adoc $lang:build/adoc/$lang/man/man1/halscope.1.adoc +[type: AsciiDoc_def] src/man/man1/halshow.1.adoc $lang:build/adoc/$lang/man/man1/halshow.1.adoc +[type: AsciiDoc_def] src/man/man1/halstreamer.1.adoc $lang:build/adoc/$lang/man/man1/halstreamer.1.adoc +[type: AsciiDoc_def] src/man/man1/haltcl.1.adoc $lang:build/adoc/$lang/man/man1/haltcl.1.adoc +[type: AsciiDoc_def] src/man/man1/halui.1.adoc $lang:build/adoc/$lang/man/man1/halui.1.adoc +[type: AsciiDoc_def] src/man/man1/hbmgui.1.adoc $lang:build/adoc/$lang/man/man1/hbmgui.1.adoc +[type: AsciiDoc_def] src/man/man1/hexagui.1.adoc $lang:build/adoc/$lang/man/man1/hexagui.1.adoc +[type: AsciiDoc_def] src/man/man1/hy_gt_vfd.1.adoc $lang:build/adoc/$lang/man/man1/hy_gt_vfd.1.adoc +[type: AsciiDoc_def] src/man/man1/hy_vfd.1.adoc $lang:build/adoc/$lang/man/man1/hy_vfd.1.adoc +[type: AsciiDoc_def] src/man/man1/image-to-gcode.1.adoc $lang:build/adoc/$lang/man/man1/image-to-gcode.1.adoc +[type: AsciiDoc_def] src/man/man1/inivalue.1.adoc $lang:build/adoc/$lang/man/man1/inivalue.1.adoc +[type: AsciiDoc_def] src/man/man1/inivar.1.adoc $lang:build/adoc/$lang/man/man1/inivar.1.adoc +[type: AsciiDoc_def] src/man/man1/io.1.adoc $lang:build/adoc/$lang/man/man1/io.1.adoc +[type: AsciiDoc_def] src/man/man1/latency-histogram.1.adoc $lang:build/adoc/$lang/man/man1/latency-histogram.1.adoc +[type: AsciiDoc_def] src/man/man1/latency-plot.1.adoc $lang:build/adoc/$lang/man/man1/latency-plot.1.adoc +[type: AsciiDoc_def] src/man/man1/latency-test.1.adoc $lang:build/adoc/$lang/man/man1/latency-test.1.adoc +[type: AsciiDoc_def] src/man/man1/lineardelta.1.adoc $lang:build/adoc/$lang/man/man1/lineardelta.1.adoc +[type: AsciiDoc_def] src/man/man1/linuxcnc_info.1.adoc $lang:build/adoc/$lang/man/man1/linuxcnc_info.1.adoc +[type: AsciiDoc_def] src/man/man1/linuxcnc_module_helper.1.adoc $lang:build/adoc/$lang/man/man1/linuxcnc_module_helper.1.adoc +[type: AsciiDoc_def] src/man/man1/linuxcnc_var.1.adoc $lang:build/adoc/$lang/man/man1/linuxcnc_var.1.adoc +[type: AsciiDoc_def] src/man/man1/linuxcnclcd.1.adoc $lang:build/adoc/$lang/man/man1/linuxcnclcd.1.adoc +[type: AsciiDoc_def] src/man/man1/linuxcncmkdesktop.1.adoc $lang:build/adoc/$lang/man/man1/linuxcncmkdesktop.1.adoc +[type: AsciiDoc_def] src/man/man1/linuxcncrsh.1.adoc $lang:build/adoc/$lang/man/man1/linuxcncrsh.1.adoc +[type: AsciiDoc_def] src/man/man1/linuxcncsvr.1.adoc $lang:build/adoc/$lang/man/man1/linuxcncsvr.1.adoc +[type: AsciiDoc_def] src/man/man1/linuxcnctop.1.adoc $lang:build/adoc/$lang/man/man1/linuxcnctop.1.adoc +[type: AsciiDoc_def] src/man/man1/maho600gui.1.adoc $lang:build/adoc/$lang/man/man1/maho600gui.1.adoc +[type: AsciiDoc_def] src/man/man1/max5gui.1.adoc $lang:build/adoc/$lang/man/man1/max5gui.1.adoc +[type: AsciiDoc_def] src/man/man1/mb2hal.1.adoc $lang:build/adoc/$lang/man/man1/mb2hal.1.adoc +[type: AsciiDoc_def] src/man/man1/mdi.1.adoc $lang:build/adoc/$lang/man/man1/mdi.1.adoc +[type: AsciiDoc_def] src/man/man1/melfagui.1.adoc $lang:build/adoc/$lang/man/man1/melfagui.1.adoc +[type: AsciiDoc_def] src/man/man1/milltask.1.adoc $lang:build/adoc/$lang/man/man1/milltask.1.adoc +[type: AsciiDoc_def] src/man/man1/millturn.1.adoc $lang:build/adoc/$lang/man/man1/millturn.1.adoc +[type: AsciiDoc_def] src/man/man1/mitsub_vfd.1.adoc $lang:build/adoc/$lang/man/man1/mitsub_vfd.1.adoc +[type: AsciiDoc_def] src/man/man1/modcompile.1.adoc $lang:build/adoc/$lang/man/man1/modcompile.1.adoc +[type: AsciiDoc_def] src/man/man1/monitor-xhc-hb04.1.adoc $lang:build/adoc/$lang/man/man1/monitor-xhc-hb04.1.adoc +[type: AsciiDoc_def] src/man/man1/motion-logger.1.adoc $lang:build/adoc/$lang/man/man1/motion-logger.1.adoc +[type: AsciiDoc_def] src/man/man1/moveoff_gui.1.adoc $lang:build/adoc/$lang/man/man1/moveoff_gui.1.adoc +[type: AsciiDoc_def] src/man/man1/ngcgui.1.adoc $lang:build/adoc/$lang/man/man1/ngcgui.1.adoc +[type: AsciiDoc_def] src/man/man1/panelui.1.adoc $lang:build/adoc/$lang/man/man1/panelui.1.adoc +[type: AsciiDoc_def] src/man/man1/pmx485-test.1.adoc $lang:build/adoc/$lang/man/man1/pmx485-test.1.adoc +[type: AsciiDoc_def] src/man/man1/pmx485.1.adoc $lang:build/adoc/$lang/man/man1/pmx485.1.adoc +[type: AsciiDoc_def] src/man/man1/pncconf.1.adoc $lang:build/adoc/$lang/man/man1/pncconf.1.adoc +[type: AsciiDoc_def] src/man/man1/puma560gui.1.adoc $lang:build/adoc/$lang/man/man1/puma560gui.1.adoc +[type: AsciiDoc_def] src/man/man1/pumagui.1.adoc $lang:build/adoc/$lang/man/man1/pumagui.1.adoc +[type: AsciiDoc_def] src/man/man1/pyngcgui.1.adoc $lang:build/adoc/$lang/man/man1/pyngcgui.1.adoc +[type: AsciiDoc_def] src/man/man1/pyui.1.adoc $lang:build/adoc/$lang/man/man1/pyui.1.adoc +[type: AsciiDoc_def] src/man/man1/pyvcp.1.adoc $lang:build/adoc/$lang/man/man1/pyvcp.1.adoc +[type: AsciiDoc_def] src/man/man1/pyvcp_demo.1.adoc $lang:build/adoc/$lang/man/man1/pyvcp_demo.1.adoc +[type: AsciiDoc_def] src/man/man1/qtplasmac-materials.1.adoc $lang:build/adoc/$lang/man/man1/qtplasmac-materials.1.adoc +[type: AsciiDoc_def] src/man/man1/qtplasmac_gcode.1.adoc $lang:build/adoc/$lang/man/man1/qtplasmac_gcode.1.adoc +[type: AsciiDoc_def] src/man/man1/qtvcp.1.adoc $lang:build/adoc/$lang/man/man1/qtvcp.1.adoc +[type: AsciiDoc_def] src/man/man1/rotarydelta.1.adoc $lang:build/adoc/$lang/man/man1/rotarydelta.1.adoc +[type: AsciiDoc_def] src/man/man1/rs274.1.adoc $lang:build/adoc/$lang/man/man1/rs274.1.adoc +[type: AsciiDoc_def] src/man/man1/rtapi_app.1.adoc $lang:build/adoc/$lang/man/man1/rtapi_app.1.adoc +[type: AsciiDoc_def] src/man/man1/scaragui.1.adoc $lang:build/adoc/$lang/man/man1/scaragui.1.adoc +[type: AsciiDoc_def] src/man/man1/schedrmt.1.adoc $lang:build/adoc/$lang/man/man1/schedrmt.1.adoc +[type: AsciiDoc_def] src/man/man1/scorbot-er-3.1.adoc $lang:build/adoc/$lang/man/man1/scorbot-er-3.1.adoc +[type: AsciiDoc_def] src/man/man1/sendkeys.1.adoc $lang:build/adoc/$lang/man/man1/sendkeys.1.adoc +[type: AsciiDoc_def] src/man/man1/setup_designer.1.adoc $lang:build/adoc/$lang/man/man1/setup_designer.1.adoc +[type: AsciiDoc_def] src/man/man1/shuttle.1.adoc $lang:build/adoc/$lang/man/man1/shuttle.1.adoc +[type: AsciiDoc_def] src/man/man1/sim_pin.1.adoc $lang:build/adoc/$lang/man/man1/sim_pin.1.adoc +[type: AsciiDoc_def] src/man/man1/simulate_probe.1.adoc $lang:build/adoc/$lang/man/man1/simulate_probe.1.adoc +[type: AsciiDoc_def] src/man/man1/stepconf.1.adoc $lang:build/adoc/$lang/man/man1/stepconf.1.adoc +[type: AsciiDoc_def] src/man/man1/svd-ps_vfd.1.adoc $lang:build/adoc/$lang/man/man1/svd-ps_vfd.1.adoc +[type: AsciiDoc_def] src/man/man1/teach-in.1.adoc $lang:build/adoc/$lang/man/man1/teach-in.1.adoc +[type: AsciiDoc_def] src/man/man1/tool_mmap_read.1.adoc $lang:build/adoc/$lang/man/man1/tool_mmap_read.1.adoc +[type: AsciiDoc_def] src/man/man1/tool_watch.1.adoc $lang:build/adoc/$lang/man/man1/tool_watch.1.adoc +[type: AsciiDoc_def] src/man/man1/tooledit.1.adoc $lang:build/adoc/$lang/man/man1/tooledit.1.adoc +[type: AsciiDoc_def] src/man/man1/touchy.1.adoc $lang:build/adoc/$lang/man/man1/touchy.1.adoc +[type: AsciiDoc_def] src/man/man1/update_ini.1.adoc $lang:build/adoc/$lang/man/man1/update_ini.1.adoc +[type: AsciiDoc_def] src/man/man1/vfdb_vfd.1.adoc $lang:build/adoc/$lang/man/man1/vfdb_vfd.1.adoc +[type: AsciiDoc_def] src/man/man1/vfs11_vfd.1.adoc $lang:build/adoc/$lang/man/man1/vfs11_vfd.1.adoc +[type: AsciiDoc_def] src/man/man1/xhc-hb04-accels.1.adoc $lang:build/adoc/$lang/man/man1/xhc-hb04-accels.1.adoc +[type: AsciiDoc_def] src/man/man1/xhc-hb04.1.adoc $lang:build/adoc/$lang/man/man1/xhc-hb04.1.adoc +[type: AsciiDoc_def] src/man/man1/xhc-whb04b-6.1.adoc $lang:build/adoc/$lang/man/man1/xhc-whb04b-6.1.adoc +[type: AsciiDoc_def] src/man/man1/xyzab-tdr-gui.1.adoc $lang:build/adoc/$lang/man/man1/xyzab-tdr-gui.1.adoc +[type: AsciiDoc_def] src/man/man1/xyzac-trt-gui.1.adoc $lang:build/adoc/$lang/man/man1/xyzac-trt-gui.1.adoc +[type: AsciiDoc_def] src/man/man1/xyzbc-trt-gui.1.adoc $lang:build/adoc/$lang/man/man1/xyzbc-trt-gui.1.adoc +[type: AsciiDoc_def] src/man/man3/PM_ROTATION_VECTOR.3.adoc $lang:build/adoc/$lang/man/man3/PM_ROTATION_VECTOR.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_add_funct_to_thread.3.adoc $lang:build/adoc/$lang/man/man3/hal_add_funct_to_thread.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_create_thread.3.adoc $lang:build/adoc/$lang/man/man3/hal_create_thread.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_exit.3.adoc $lang:build/adoc/$lang/man/man3/hal_exit.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_export_funct.3.adoc $lang:build/adoc/$lang/man/man3/hal_export_funct.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_init.3.adoc $lang:build/adoc/$lang/man/man3/hal_init.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_malloc.3.adoc $lang:build/adoc/$lang/man/man3/hal_malloc.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_param_alias.3.adoc $lang:build/adoc/$lang/man/man3/hal_param_alias.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_param_new.3.adoc $lang:build/adoc/$lang/man/man3/hal_param_new.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_parport.3.adoc $lang:build/adoc/$lang/man/man3/hal_parport.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_pin_alias.3.adoc $lang:build/adoc/$lang/man/man3/hal_pin_alias.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_pin_new.3.adoc $lang:build/adoc/$lang/man/man3/hal_pin_new.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_port.3.adoc $lang:build/adoc/$lang/man/man3/hal_port.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_ready.3.adoc $lang:build/adoc/$lang/man/man3/hal_ready.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_set_constructor.3.adoc $lang:build/adoc/$lang/man/man3/hal_set_constructor.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_set_lock.3.adoc $lang:build/adoc/$lang/man/man3/hal_set_lock.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_signal_new.3.adoc $lang:build/adoc/$lang/man/man3/hal_signal_new.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_start_threads.3.adoc $lang:build/adoc/$lang/man/man3/hal_start_threads.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_stream.3.adoc $lang:build/adoc/$lang/man/man3/hal_stream.3.adoc +[type: AsciiDoc_def] src/man/man3/hal_type_t.3.adoc $lang:build/adoc/$lang/man/man3/hal_type_t.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_allocate_bspi_tram.3.adoc $lang:build/adoc/$lang/man/man3/hm2_allocate_bspi_tram.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_bspi_set_read_function.3.adoc $lang:build/adoc/$lang/man/man3/hm2_bspi_set_read_function.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_bspi_set_write_function.3.adoc $lang:build/adoc/$lang/man/man3/hm2_bspi_set_write_function.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_bspi_setup_chan.3.adoc $lang:build/adoc/$lang/man/man3/hm2_bspi_setup_chan.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_bspi_write_chan.3.adoc $lang:build/adoc/$lang/man/man3/hm2_bspi_write_chan.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_pktuart_read.3.adoc $lang:build/adoc/$lang/man/man3/hm2_pktuart_read.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_pktuart_send.3.adoc $lang:build/adoc/$lang/man/man3/hm2_pktuart_send.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_pktuart_setup.3.adoc $lang:build/adoc/$lang/man/man3/hm2_pktuart_setup.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_tram_add_bspi_frame.3.adoc $lang:build/adoc/$lang/man/man3/hm2_tram_add_bspi_frame.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_uart_read.3.adoc $lang:build/adoc/$lang/man/man3/hm2_uart_read.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_uart_send.3.adoc $lang:build/adoc/$lang/man/man3/hm2_uart_send.3.adoc +[type: AsciiDoc_def] src/man/man3/hm2_uart_setup.3.adoc $lang:build/adoc/$lang/man/man3/hm2_uart_setup.3.adoc +[type: AsciiDoc_def] src/man/man3/hal.3.adoc $lang:build/adoc/$lang/man/man3/hal.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi.3.adoc $lang:build/adoc/$lang/man/man3/rtapi.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_app_exit.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_app_exit.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_app_main.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_app_main.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_atomic.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_atomic.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_bool.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_bool.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_byteorder.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_byteorder.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_clock_set_period.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_clock_set_period.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_delay.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_delay.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_device.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_device.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_div_u64.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_div_u64.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_exit.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_exit.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_firmware.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_firmware.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_get_time.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_get_time.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_gfp.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_gfp.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_init.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_init.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_io.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_io.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_is.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_is.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_list.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_list.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_get_msg_level.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_get_msg_level.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_module_param.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_module_param.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_mutex.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_mutex.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_open_as_root.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_open_as_root.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_outb.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_outb.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_parport.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_parport.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_pci.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_pci.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_print.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_print.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_prio.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_prio.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_region.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_region.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_shmem.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_shmem.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_slab.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_slab.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_snprintf.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_snprintf.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_stdint.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_stdint.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_string.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_string.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_strlcpy.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_strlcpy.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_task_new.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_task_new.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_task_pause.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_task_pause.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_task_self.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_task_self.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_task_start.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_task_start.3.adoc +[type: AsciiDoc_def] src/man/man3/rtapi_task_wait.3.adoc $lang:build/adoc/$lang/man/man3/rtapi_task_wait.3.adoc +[type: AsciiDoc_def] src/man/man9/at_pid.9.adoc $lang:build/adoc/$lang/man/man9/at_pid.9.adoc +[type: AsciiDoc_def] src/man/man9/classicladder.9.adoc $lang:build/adoc/$lang/man/man9/classicladder.9.adoc +[type: AsciiDoc_def] src/man/man9/counter.9.adoc $lang:build/adoc/$lang/man/man9/counter.9.adoc +[type: AsciiDoc_def] src/man/man9/debounce.9.adoc $lang:build/adoc/$lang/man/man9/debounce.9.adoc +[type: AsciiDoc_def] src/man/man9/encoder.9.adoc $lang:build/adoc/$lang/man/man9/encoder.9.adoc +[type: AsciiDoc_def] src/man/man9/encoder_ratio.9.adoc $lang:build/adoc/$lang/man/man9/encoder_ratio.9.adoc +[type: AsciiDoc_def] src/man/man9/gantrykins.9.adoc $lang:build/adoc/$lang/man/man9/gantrykins.9.adoc +[type: AsciiDoc_def] src/man/man9/gladevcp.9.adoc $lang:build/adoc/$lang/man/man9/gladevcp.9.adoc +[type: AsciiDoc_def] src/man/man9/hal_bb_gpio.9.adoc $lang:build/adoc/$lang/man/man9/hal_bb_gpio.9.adoc +[type: AsciiDoc_def] src/man/man9/hal_parport.9.adoc $lang:build/adoc/$lang/man/man9/hal_parport.9.adoc +[type: AsciiDoc_def] src/man/man9/hm2_7i43.9.adoc $lang:build/adoc/$lang/man/man9/hm2_7i43.9.adoc +[type: AsciiDoc_def] src/man/man9/hm2_7i90.9.adoc $lang:build/adoc/$lang/man/man9/hm2_7i90.9.adoc +[type: AsciiDoc_def] src/man/man9/hm2_eth.9.adoc $lang:build/adoc/$lang/man/man9/hm2_eth.9.adoc +[type: AsciiDoc_def] src/man/man9/hm2_pci.9.adoc $lang:build/adoc/$lang/man/man9/hm2_pci.9.adoc +[type: AsciiDoc_def] src/man/man9/hm2_rpspi.9.adoc $lang:build/adoc/$lang/man/man9/hm2_rpspi.9.adoc +[type: AsciiDoc_def] src/man/man9/hm2_spi.9.adoc $lang:build/adoc/$lang/man/man9/hm2_spi.9.adoc +[type: AsciiDoc_def] src/man/man9/hostmot2.9.adoc $lang:build/adoc/$lang/man/man9/hostmot2.9.adoc +[type: AsciiDoc_def] src/man/man9/kins.9.adoc $lang:build/adoc/$lang/man/man9/kins.9.adoc +[type: AsciiDoc_def] src/man/man9/lcd.9.adoc $lang:build/adoc/$lang/man/man9/lcd.9.adoc +[type: AsciiDoc_def] src/man/man9/lineardeltakins.9.adoc $lang:build/adoc/$lang/man/man9/lineardeltakins.9.adoc +[type: AsciiDoc_def] src/man/man9/motion.9.adoc $lang:build/adoc/$lang/man/man9/motion.9.adoc +[type: AsciiDoc_def] src/man/man9/opto_ac5.9.adoc $lang:build/adoc/$lang/man/man9/opto_ac5.9.adoc +[type: AsciiDoc_def] src/man/man9/rosekins.9.adoc $lang:build/adoc/$lang/man/man9/rosekins.9.adoc +[type: AsciiDoc_def] src/man/man9/sampler.9.adoc $lang:build/adoc/$lang/man/man9/sampler.9.adoc +[type: AsciiDoc_def] src/man/man9/setsserial.9.adoc $lang:build/adoc/$lang/man/man9/setsserial.9.adoc +[type: AsciiDoc_def] src/man/man9/siggen.9.adoc $lang:build/adoc/$lang/man/man9/siggen.9.adoc +[type: AsciiDoc_def] src/man/man9/sserial.9.adoc $lang:build/adoc/$lang/man/man9/sserial.9.adoc +[type: AsciiDoc_def] src/man/man9/stepgen.9.adoc $lang:build/adoc/$lang/man/man9/stepgen.9.adoc +[type: AsciiDoc_def] src/man/man9/streamer.9.adoc $lang:build/adoc/$lang/man/man9/streamer.9.adoc +[type: AsciiDoc_def] src/man/man9/supply.9.adoc $lang:build/adoc/$lang/man/man9/supply.9.adoc +[type: AsciiDoc_def] src/man/man9/threads.9.adoc $lang:build/adoc/$lang/man/man9/threads.9.adoc +[type: AsciiDoc_def] src/man/man9/watchdog.9.adoc $lang:build/adoc/$lang/man/man9/watchdog.9.adoc +[type: AsciiDoc_def] src/man/man9/weighted_sum.9.adoc $lang:build/adoc/$lang/man/man9/weighted_sum.9.adoc +[type: AsciiDoc_def] src/motion/5-axis-kinematics.adoc $lang:build/adoc/$lang/motion/5-axis-kinematics.adoc +[type: AsciiDoc_def] src/motion/dh-parameters.adoc $lang:build/adoc/$lang/motion/dh-parameters.adoc +[type: AsciiDoc_def] src/motion/external-offsets.adoc $lang:build/adoc/$lang/motion/external-offsets.adoc +[type: AsciiDoc_def] src/motion/kinematics.adoc $lang:build/adoc/$lang/motion/kinematics.adoc +[type: AsciiDoc_def] src/motion/pid-theory.adoc $lang:build/adoc/$lang/motion/pid-theory.adoc +[type: AsciiDoc_def] src/motion/switchkins.adoc $lang:build/adoc/$lang/motion/switchkins.adoc +[type: AsciiDoc_def] src/motion/tweaking-steppers.adoc $lang:build/adoc/$lang/motion/tweaking-steppers.adoc +[type: AsciiDoc_def] src/plasma/plasma-cnc-primer.adoc $lang:build/adoc/$lang/plasma/plasma-cnc-primer.adoc +[type: AsciiDoc_def] src/plasma/qtplasmac.adoc $lang:build/adoc/$lang/plasma/qtplasmac.adoc +[type: AsciiDoc_def] src/remap/remap.adoc $lang:build/adoc/$lang/remap/remap.adoc +[type: AsciiDoc_def] src/tooldatabase/tooldatabase.adoc $lang:build/adoc/$lang/tooldatabase/tooldatabase.adoc +[type: AsciiDoc_def] src/user/starting-linuxcnc.adoc $lang:build/adoc/$lang/user/starting-linuxcnc.adoc +[type: AsciiDoc_def] src/user/user-concepts.adoc $lang:build/adoc/$lang/user/user-concepts.adoc +[type: AsciiDoc_def] src/user/user-foreword.adoc $lang:build/adoc/$lang/user/user-foreword.adoc +[type: AsciiDoc_def] src/user/user-intro.adoc $lang:build/adoc/$lang/user/user-intro.adoc +[type: AsciiDoc_def] README.adoc $lang:build/adoc/$lang/README.adoc +[type: AsciiDoc_def] INSTALL.adoc $lang:build/adoc/$lang/INSTALL.adoc -[type: Text_def] src/gui/panelui_handler.py $lang:src/$lang/gui/panelui_handler.py +[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 diff --git a/docs/src/.gitignore b/docs/src/.gitignore deleted file mode 100644 index 9c221e4a4c3..00000000000 --- a/docs/src/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -*.tex -*.xml -!docs.xml -!terms.xml -drivers/mb2hal_HOWTO.ini -*/drivers/mb2hal_HOWTO.ini -# Ignore po4a-generated files for other languages -ar/* -bg/* -ckb/* -cs/* -da/* -de/* -es/* -fr/* -hu/* -it/* -ka/* -nb/* -pl/* -pt/* -pt_BR/* -ro/* -ru/* -sai/* -sk/* -sv/* -tr/* -uk/* -vi/* -zh_CN/* -index_*.tmpl -man/man1/linuxcnc.1.adoc -rouge-*.css diff --git a/docs/src/Submakefile b/docs/src/Submakefile index 59f6f65e379..68aeca40ca0 100644 --- a/docs/src/Submakefile +++ b/docs/src/Submakefile @@ -32,6 +32,24 @@ SRCDIR=../src DOC_DIR=../docs DOC_SRCDIR=../docs/src +# Unified output tree. All asciidoctor-generated artefacts (HTML, PDF, +# po4a-translated .adoc) live under DOC_BUILD so the source tree stays +# clean and the rendered docs can be tarballed or rsynced as one unit. +# +# docs/build/html/index.html # static redirect -> en/index.html +# docs/build/html/{asciidoctor,rouge-github,lcnc-overrides}.css +# docs/build/html//index.html +# docs/build/html///.html +# docs/build/html//man/manN/.html +# 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 / mandb). +DOC_BUILD := $(DOC_DIR)/build +DOC_OUT_HTML := $(DOC_BUILD)/html +DOC_OUT_ADOC := $(DOC_BUILD)/adoc + ASCIIDOCTOR_DEFAULT_CSS := $(shell ruby -e 'require "asciidoctor"; print Asciidoctor::DATA_DIR' 2>/dev/null)/stylesheets/asciidoctor-default.css # The following line determines for the Makefile what languages should be addressed. @@ -48,10 +66,23 @@ MAN_SRCS = $(sort \ $(wildcard $(DOC_DIR)/man/man9/*.9) \ $(GENERATED_MANPAGES)) -$(DOC_SRCDIR)/man/man1/linuxcnc.1.adoc: $(DOC_SRCDIR)/man/man1/linuxcnc.1.adoc.in $(SRCDIR)/config.status +$(DOC_OUT_ADOC)/en/man/man1/linuxcnc.1.adoc: $(DOC_SRCDIR)/man/man1/linuxcnc.1.adoc.in $(SRCDIR)/config.status + @mkdir -p $(@D) $(SRCDIR)/config.status --file=$@:$< -../docs/man/man1/linuxcnc.1: $(DOC_SRCDIR)/man/man1/linuxcnc.1.adoc +# 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 + $(ECHO) Making manpage $(notdir $@) + @mkdir -p $(dir $@) + $(Q)asciidoctor --doctype=manpage \ + --backend=manpage \ + --destination-dir="$(dir $@)" \ + -a compat-mode \ + -a mansource=LinuxCNC \ + -a manmanual='LinuxCNC Documentation' \ + $< info:: @echo "I: Expecting the following languages: $(LANGUAGES)" @@ -221,9 +252,8 @@ unknown)))))))))))) endef GENERATED_TRANSLATED = $(foreach l, $(LANGUAGES), \ - $(DOC_SRCDIR)/$(l) \ - $(DOC_DIR)/help/$(l) \ - $(DOC_DIR)/html/$(l) \ + $(DOC_OUT_ADOC)/$(l) \ + $(DOC_OUT_HTML)/$(l) \ $(DOC_DIR)/man/$(l) \ ) @@ -292,10 +322,10 @@ postatus:: # fragility), and it does not include English-only sources like # drivers/mesa_modbus.adoc that are absent from the translation pipeline. TRANSLATED_DOC_SRCS := $(shell sed -nE 's|^\[type: AsciiDoc_def\] src/([^ ]+).*|\1|p' \ - $(DOC_DIR)/po4a.cfg) + $(DOC_DIR)/po4a.cfg) $(foreach L,$(LANGUAGES),\ $(eval DOC_SRCS_$(call toUC,$(L)) := \ - $$(addprefix $(L)/,$$(TRANSLATED_DOC_SRCS)))) + $$(addprefix $(L)/,$$(TRANSLATED_DOC_SRCS)))) # Define combined DOC_SRCS from all languages. Translated sources are # only pulled in when BUILD_DOCS_TRANSLATED=yes; otherwise the HTML / PDF @@ -312,39 +342,58 @@ $(foreach L,en $(LANGUAGES),\ $(filter-out Master_%,$(DOC_SRCS_$(call toUC,$(L)))))) DOC_SRCS_HTML = $(patsubst %.adoc, %.html, $(foreach p, $(DOC_SRCS), $(if $(findstring Master_, $(p)),, $p))) -DOC_TARGETS_HTML = $(addprefix $(DOC_DIR)/html/,$(DOC_SRCS_HTML)) #$(subst /,_,$(DOC_SRCS_HTML)) -DOC_TARGETS_XML = $(patsubst $(DOC_DIR)/html/%.html, objects/%.xml, $(DOC_TARGETS_HTML)) - -# Per-language slices of DOC_TARGETS_XML / DOC_TARGETS_HTML, derived -# from $(LANGUAGES) (which comes from po4a.cfg). English is whatever -# is left after every translated subtree is filtered out. -$(foreach L,$(LANGUAGES),\ - $(eval DOC_TARGETS_XML_$(call toUC,$(L)) = \ - $$(foreach p,$$(DOC_TARGETS_XML),$$(if $$(findstring /$(L)/,$$(p)),$$(p))))) -DOC_TARGETS_XML_EN = $(filter-out \ - $(foreach L,$(LANGUAGES),$(DOC_TARGETS_XML_$(call toUC,$(L)))), \ - $(DOC_TARGETS_XML)) - -$(foreach L,$(LANGUAGES),\ - $(eval DOC_TARGETS_HTML_$(call toUC,$(L)) = \ - $$(foreach p,$$(DOC_TARGETS_HTML),$$(if $$(findstring /$(L)/,$$(p)),$$(p))))) -DOC_TARGETS_HTML_EN = $(filter-out \ - $(foreach L,$(LANGUAGES),$(DOC_TARGETS_HTML_$(call toUC,$(L)))), \ - $(DOC_TARGETS_HTML)) -MAN_HTML_TARGETS = $(patsubst $(DOC_DIR)/man/%, $(DOC_DIR)/html/man/%.html, $(MAN_SRCS)) +# Per-language HTML target lists. English files have no lang/ prefix in +# their source path; translated files already include $(L)/ in DOC_SRCS_$L. +# The English bucket gets an explicit en/ prefix so every language lives +# under its own subtree under $(DOC_OUT_HTML). +DOC_TARGETS_HTML_EN := $(addprefix $(DOC_OUT_HTML)/en/, \ + $(filter-out $(foreach L,$(LANGUAGES),$(L)/%), \ + $(patsubst %.adoc,%.html, \ + $(filter-out Master_%, $(DOC_SRCS_EN))))) +$(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)))))))) +DOC_TARGETS_HTML = $(DOC_TARGETS_HTML_EN) +ifeq ($(BUILD_DOCS_TRANSLATED),yes) +DOC_TARGETS_HTML += $(foreach L,$(LANGUAGES),$(DOC_TARGETS_HTML_$(call toUC,$(L)))) +endif -PDF_TARGETS_EN := $(addprefix $(DOC_DIR)/, $(patsubst %.adoc,%.pdf, \ - $(subst Master_,LinuxCNC_, $(filter Master_%,$(DOC_SRCS_EN))))\ - LinuxCNC_Manual_Pages.pdf \ - ) \ +DOC_TARGETS_XML_EN = $(patsubst $(DOC_OUT_HTML)/en/%.html, objects/%.xml, $(DOC_TARGETS_HTML_EN)) +$(foreach L,$(LANGUAGES), \ + $(eval DOC_TARGETS_XML_$(call toUC,$(L)) = \ + $$(patsubst $(DOC_OUT_HTML)/%.html, objects/%.xml, $$(DOC_TARGETS_HTML_$(call toUC,$(L)))))) +DOC_TARGETS_XML = $(DOC_TARGETS_XML_EN) +ifeq ($(BUILD_DOCS_TRANSLATED),yes) +DOC_TARGETS_XML += $(foreach L,$(LANGUAGES),$(DOC_TARGETS_XML_$(call toUC,$(L)))) +endif -# Per-language PDF target lists, derived from $(LANGUAGES). -$(foreach L,$(LANGUAGES),\ - $(eval PDF_TARGETS_$(call toUC,$(L)) = \ - $$(addprefix $$(DOC_DIR)/, $$(subst $(L)/,, \ - $$(patsubst %.adoc,%_$(L).pdf, \ - $$(subst Master_,LinuxCNC_, $$(filter $(L)/Master_%,$$(DOC_SRCS_$(call toUC,$(L)))))))))) +# 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))) +$(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))))) +MAN_HTML_TARGETS = $(MAN_HTML_TARGETS_EN) \ + $(foreach L,$(LANGUAGES),$(MAN_HTML_TARGETS_$(call toUC,$(L)))) + +# PDFs are subordinate to the HTML tree so the whole html/ subtree +# zips up portably with working relative pdf/ links. +PDF_TARGETS_EN := $(addprefix $(DOC_OUT_HTML)/en/pdf/, \ + $(patsubst %.adoc,%.pdf, \ + $(subst Master_,LinuxCNC_, $(filter Master_%,$(DOC_SRCS_EN)))) \ + LinuxCNC_Manual_Pages.pdf) + +$(foreach L,$(LANGUAGES), \ + $(eval PDF_TARGETS_$(call toUC,$(L)) = \ + $$(addprefix $(DOC_OUT_HTML)/$(L)/pdf/, \ + $$(subst $(L)/,, \ + $$(patsubst %.adoc,%_$(L).pdf, \ + $$(subst Master_,LinuxCNC_, $$(filter $(L)/Master_%,$$(DOC_SRCS_$(call toUC,$(L)))))))))) PDF_TARGETS = $(PDF_TARGETS_EN) ifeq ($(BUILD_DOCS_TRANSLATED),yes) @@ -360,10 +409,11 @@ info:: HTML_TARGETS = \ $(DOC_TARGETS_HTML) \ $(MAN_HTML_TARGETS) \ - $(DOC_DIR)/html/index.html \ - $(sort $(patsubst $(DOC_SRCDIR)/index_%.tmpl, \ - $(DOC_DIR)/html/%/index.html, \ - $(wildcard $(DOC_DIR)/src/index_*.tmpl))) + $(DOC_OUT_HTML)/index.html \ + $(DOC_OUT_HTML)/en/index.html \ + $(sort $(patsubst $(DOC_OUT_ADOC)/%/index.tmpl, \ + $(DOC_OUT_HTML)/%/index.html, \ + $(wildcard $(DOC_OUT_ADOC)/*/index.tmpl))) ifeq ($(TRIVIAL_BUILD),no) -include $(patsubst %.adoc, depends/%.d, $(DOC_SRCS)) @@ -395,6 +445,15 @@ docs: htmldocs install-doc: install-doc-html endif +# debian/linuxcnc-doc-en.docs installs docs/build/html/en/gcode.html, so the +# English gcode reference must land in the build tree even when only PDF docs +# are enabled (debian/configure passes --enable-build-documentation=pdf, so +# .copy-asciidoc-stamp -- which lives under htmldocs -- does not fire). +docs: $(DOC_OUT_HTML)/en/gcode.html +$(DOC_OUT_HTML)/en/gcode.html: $(DOC_SRCDIR)/gcode.html + @mkdir -p $(@D) + cp -f $< $@ + pdfdocs: svgs_made_from_dots $(PDF_TARGETS) ../scripts/make-docs-pdf-index @@ -408,8 +467,8 @@ htmldocs: svgs_made_from_dots .htmldoc-stamp checkref_en # when depends/%.d is evaluated on a fresh tree) without rebuilding them # every time translateddocs ticks. ifeq ($(BUILD_DOCS_TRANSLATED),yes) -TRANSLATED_ADOC_TARGETS := $(addprefix $(DOC_SRCDIR)/, \ - $(filter-out $(DOC_SRCS_EN), $(DOC_SRCS))) +TRANSLATED_ADOC_TARGETS := $(addprefix $(DOC_OUT_ADOC)/, \ + $(filter-out $(DOC_SRCS_EN), $(DOC_SRCS))) $(TRANSLATED_ADOC_TARGETS): | translateddocs ; endif @@ -417,16 +476,29 @@ endif # gen_complist aliases: a phony prereq is always "newer", so naming them # re-touched .htmldoc-stamp every run, dragging checkref and the css copy # with it. The stamps fire only when their real inputs change. -.htmldoc-stamp: .copy-asciidoc-stamp $(DOC_DIR)/.gen_complist-stamp $(HTML_TARGETS) .images-stamp .include-stamp $(DOC_DIR)/html/asciidoctor.css $(DOC_DIR)/html/rouge-github.css +.htmldoc-stamp: .copy-asciidoc-stamp $(DOC_DIR)/.gen_complist-stamp $(HTML_TARGETS) .images-stamp .include-stamp $(DOC_OUT_HTML)/asciidoctor.css $(DOC_OUT_HTML)/rouge-github.css touch $@ -# Stamp-gated css/js copy; copy_asciidoc_files stays as a phony alias. +# Shared assets at the top of the html tree. Index templates and the +# asciidoctor docinfo reference them via ../ relative paths so we ship +# one copy regardless of how many languages render. gcode.html is NOT +# shared: po4a translates it per-language and the per-lang index links +# to its sibling gcode.html. +SHARED_HTML_ASSETS = \ + $(DOC_SRCDIR)/lcnc-overrides.css \ + $(DOC_SRCDIR)/index.css \ + $(DOC_SRCDIR)/linuxcnc-logo-chips.png + +# Stamp-gated asset copy; copy_asciidoc_files stays as a phony alias. +# The en/gcode.html copy lives in its own rule above so it fires for PDF-only +# builds as well; .copy-asciidoc-stamp depends on it for HTML builds. copy_asciidoc_files: .copy-asciidoc-stamp -.copy-asciidoc-stamp: $(wildcard /etc/asciidoc/stylesheets/*.css) $(wildcard /etc/asciidoc/javascripts/*.js) $(DOC_SRCDIR)/lcnc-overrides.css - if test -n "$^"; then cp -f $^ $(DOC_DIR)/html ; fi +.copy-asciidoc-stamp: $(SHARED_HTML_ASSETS) $(DOC_OUT_HTML)/en/gcode.html + @mkdir -p $(DOC_OUT_HTML) + cp -f $(SHARED_HTML_ASSETS) $(DOC_OUT_HTML) @touch $@ -$(DOC_DIR)/html/asciidoctor.css: $(ASCIIDOCTOR_DEFAULT_CSS) +$(DOC_OUT_HTML)/asciidoctor.css: $(ASCIIDOCTOR_DEFAULT_CSS) @mkdir -p $(dir $@) cp -f $< $@ @@ -435,25 +507,9 @@ $(DOC_DIR)/html/asciidoctor.css: $(ASCIIDOCTOR_DEFAULT_CSS) # the file when -a copycss! is set. Render the theme via the Rouge API # so the spans asciidoctor emits get coloured. Combine light + dark # variants (dark gated on prefers-color-scheme) into one file. -$(DOC_DIR)/html/rouge-github.css: +$(DOC_OUT_HTML)/rouge-github.css: $(DOC_SRCDIR)/render-rouge-css.rb @mkdir -p $(dir $@) - ruby -e ' \ - require "rouge"; \ - t = Rouge::Themes::Github; \ - if t.respond_to?(:light!) && t.respond_to?(:dark!); \ - t.light!; \ - puts t.new(scope: ".rouge").render; \ - puts "@media (prefers-color-scheme: dark) {"; \ - t.dark!; \ - puts t.new(scope: ".rouge").render; \ - puts "}"; \ - else \ - warn "rouge does not support theme modes (Rouge::Themes::Github.light!); dark mode code highlighting will use Monokai"; \ - puts t.new(scope: ".rouge").render; \ - puts "@media (prefers-color-scheme: dark) {"; \ - puts Rouge::Themes::Monokai.new(scope: ".rouge").render; \ - puts "}"; \ - end' > $@ + ruby $< > $@ # Stamp-file gate. The phony alias was running the python script on # every build, rewriting components_gen.adoc with a fresh mtime, which @@ -467,7 +523,7 @@ $(DOC_DIR)/html/rouge-github.css: # bumping mtime past .pot and re-triggering po4a on the next build. # Broken-link validation against generated HTML is checkref's job. $(DOC_DIR)/.gen_complist-stamp: $(DOC_SRCDIR)/hal/components_gen.adoc $(MAN_HTML_TARGETS) - mkdir -p $(DOC_DIR)/html/hal + mkdir -p $(DOC_OUT_HTML)/en/hal @touch $@ gen_complist: $(DOC_DIR)/.gen_complist-stamp @@ -481,14 +537,15 @@ checkref: $(CHECKREF_TARGETS) # so it only re-runs when the HTML changes. .htmldoc-stamp is filtered out # of the args so the stamp file is not handed to the link checker. checkref_en: $(DOC_DIR)/.checkref-english-stamp -$(DOC_DIR)/.checkref-english-stamp: $(DOC_TARGETS_HTML_EN) $(DOC_DIR)/html/index.html $(DOC_DIR)/html/gcode.html .htmldoc-stamp +$(DOC_DIR)/.checkref-english-stamp: $(DOC_TARGETS_HTML_EN) $(DOC_OUT_HTML)/en/index.html $(DOC_OUT_HTML)/en/gcode.html .htmldoc-stamp $(DOC_SRCDIR)/checkref English $(filter %.html,$^) @touch $@ -# Pattern rule for all languages +# Pattern rule for all languages. Per-lang gcode.html is po4a-translated +# from src/gcode.html and lands as a sibling to each lang's index.html. checkref_%: $(DOC_DIR)/.checkref-%-stamp ; $(DOC_DIR)/.checkref-%-stamp: $$(DOC_TARGETS_HTML_$$(call uc,$$*)) \ - $$(DOC_DIR)/html/%/gcode.html .htmldoc-stamp + $$(DOC_OUT_HTML)/%/gcode.html .htmldoc-stamp $(DOC_SRCDIR)/checkref $(call lang_name,$*) $(filter %.html,$$^) @touch $@ @@ -510,89 +567,94 @@ PDF_MAN_ORDER := man1/linuxcnc.1 $(filter-out %/linuxcnc.1, $(filter man1/%, $(M # Files produced by pattern rules but not named as explicit goals are # treated as intermediate and deleted at the end of every build, which # triggers a full rebuild on the next invocation. Two groups bite us: -# - per-language Master_*.pdf (chain: .adoc -> %/Master_*.pdf -# -> LinuxCNC_*_.pdf) -# - the per-manpage HTML files (chain: man/% -> html/man/%.html, used -# via $(HTML_TARGETS) but never as an explicit goal name) +# - per-language Master_*.pdf (chain: .adoc -> %/Master_*.pdf +# -> LinuxCNC_*_.pdf) +# - the per-manpage HTML files (chain: man/% -> html/man/%.html, used +# via $(HTML_TARGETS) but never as an explicit goal name) # Declaring them .SECONDARY keeps them on disk without affecting precious # -on-error semantics. -.SECONDARY: $(foreach L,$(LANGUAGES),$(foreach D,Getting_Started Documentation Integrator Developer,$(DOC_SRCDIR)/$(L)/Master_$(D).pdf)) \ - $(MAN_HTML_TARGETS) - -PDF_TARGETS_LinuxCNC_Getting_Started := $(DOC_DIR)/LinuxCNC_Getting_Started.pdf $(foreach L,$(LANGUAGES),$(DOC_DIR)/LinuxCNC_Getting_Started_$(L).pdf) - -$(DOC_DIR)/LinuxCNC_Getting_Started.pdf: $(DOC_SRCDIR)/Master_Getting_Started.pdf - @ln -f $< $@ - -$(DOC_DIR)/LinuxCNC_Getting_Started_%.pdf: $(DOC_SRCDIR)/%/Master_Getting_Started.pdf - @ln -f $< $@ - - -PDF_TARGETS_LinuxCNC_Documentation := $(DOC_DIR)/LinuxCNC_Documentation.pdf $(foreach L,$(LANGUAGES),$(DOC_DIR)/LinuxCNC_Documentation_$(L).pdf) - -$(DOC_DIR)/LinuxCNC_Documentation.pdf: $(DOC_SRCDIR)/Master_Documentation.pdf - @ln -f $< $@ - -$(DOC_DIR)/LinuxCNC_Documentation_%.pdf: $(DOC_SRCDIR)/%/Master_Documentation.pdf - @ln -f $< $@ - - -PDF_TARGETS_LinuxCNC_Integrator := $(DOC_DIR)/LinuxCNC_Integrator.pdf $(foreach L,$(LANGUAGES),$(DOC_DIR)/LinuxCNC_Integrator_$(L).pdf) - -$(DOC_DIR)/LinuxCNC_Integrator.pdf: $(DOC_SRCDIR)/Master_Integrator.pdf - @ln -f $< $@ - -$(DOC_DIR)/LinuxCNC_Integrator_%.pdf: $(DOC_SRCDIR)/%/Master_Integrator.pdf - @ln -f $< $@ - - -PDF_TARGETS_LinuxCNC_Developer := $(DOC_DIR)/LinuxCNC_Developer.pdf $(foreach L,$(LANGUAGES),$(DOC_DIR)/LinuxCNC_Developer_$(L).pdf) - -$(DOC_DIR)/LinuxCNC_Developer.pdf: $(DOC_SRCDIR)/Master_Developer.pdf - @ln -f $< $@ - -$(DOC_DIR)/LinuxCNC_Developer_%.pdf: $(DOC_SRCDIR)/%/Master_Developer.pdf - @ln -f $< $@ - +.SECONDARY: $(foreach L,$(LANGUAGES),$(foreach D,Getting_Started Documentation Integrator Developer,$(DOC_OUT_ADOC)/$(L)/Master_$(D).pdf)) \ + $(MAN_HTML_TARGETS) + +# Final PDFs are hardlinks into the html tree (cheap, idempotent) from +# the asciidoctor-pdf intermediates: $(DOC_SRCDIR)/Master_*.pdf for +# English, $(DOC_OUT_ADOC)//Master_*.pdf for translations. +define PDF_LINK_RULES +$(DOC_OUT_HTML)/en/pdf/LinuxCNC_$(1).pdf: $(DOC_SRCDIR)/Master_$(1).pdf + @mkdir -p $$(dir $$@) + @ln -f $$< $$@ +endef +$(foreach D,Getting_Started Documentation Integrator Developer, \ + $(eval $(call PDF_LINK_RULES,$(D)))) -$(DOC_DIR)/html/man/%.html: $(DOC_DIR)/man/% $(DOC_SRCDIR)/docinfo.html - @$(ECHO) Formatting $(notdir $<) as HTML - @mkdir -p $(dir $@) - $(Q)if grep -q '^\.so' $<; then \ - ln -srf ../docs/html/man/$$(basename $$(dirname $<))/$$(basename $$(awk '{print $$2}' $<)).html $@; \ +define PDF_LINK_RULES_LANG +$(DOC_OUT_HTML)/$(1)/pdf/LinuxCNC_$(2)_$(1).pdf: $(DOC_OUT_ADOC)/$(1)/Master_$(2).pdf + @mkdir -p $$(dir $$@) + @ln -f $$< $$@ +endef +$(foreach L,$(LANGUAGES), \ + $(foreach D,Getting_Started Documentation Integrator Developer, \ + $(eval $(call PDF_LINK_RULES_LANG,$(L),$(D))))) + +PDF_TARGETS_LinuxCNC_Getting_Started := $(DOC_OUT_HTML)/en/pdf/LinuxCNC_Getting_Started.pdf \ + $(foreach L,$(LANGUAGES),$(DOC_OUT_HTML)/$(L)/pdf/LinuxCNC_Getting_Started_$(L).pdf) +PDF_TARGETS_LinuxCNC_Documentation := $(DOC_OUT_HTML)/en/pdf/LinuxCNC_Documentation.pdf \ + $(foreach L,$(LANGUAGES),$(DOC_OUT_HTML)/$(L)/pdf/LinuxCNC_Documentation_$(L).pdf) +PDF_TARGETS_LinuxCNC_Integrator := $(DOC_OUT_HTML)/en/pdf/LinuxCNC_Integrator.pdf \ + $(foreach L,$(LANGUAGES),$(DOC_OUT_HTML)/$(L)/pdf/LinuxCNC_Integrator_$(L).pdf) +PDF_TARGETS_LinuxCNC_Developer := $(DOC_OUT_HTML)/en/pdf/LinuxCNC_Developer.pdf \ + $(foreach L,$(LANGUAGES),$(DOC_OUT_HTML)/$(L)/pdf/LinuxCNC_Developer_$(L).pdf) + + +# 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 +# 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 + @$$(ECHO) Formatting $$(notdir $$<) as HTML + @mkdir -p $$(dir $$@) + $$(Q)if grep -q '^\.so' $$<; then \ + ln -srf $$(DOC_OUT_HTML)/$(1)/man/$$$$(basename $$$$(dirname $$<))/$$$$(basename $$$$(awk '{print $$$$2}' $$<)).html $$@; \ else \ - N="$$(basename "$<").adoc"; \ - D="$$(dirname "$<")"; \ - S="$$(basename "$$D")"; \ - if [ -r "$(DOC_SRCDIR)/man/$$S/$$N" ]; then \ - F="$(DOC_SRCDIR)/man/$$S/$$N"; \ - elif [ -r "objects/man/$$S/$$N" ]; then \ - F="objects/man/$$S/$$N"; \ + N="$$$$(basename "$$<").adoc"; \ + D="$$$$(dirname "$$<")"; \ + S="$$$$(basename "$$$$D")"; \ + if [ -r "$(3)/man/$$$$S/$$$$N" ]; then \ + F="$(3)/man/$$$$S/$$$$N"; \ + elif [ -r "$(DOC_OUT_ADOC)/$(1)/man/$$$$S/$$$$N" ]; then \ + F="$(DOC_OUT_ADOC)/$(1)/man/$$$$S/$$$$N"; \ + elif [ -r "objects/man/$$$$S/$$$$N" ]; then \ + F="objects/man/$$$$S/$$$$N"; \ else \ - echo "Error: Cannot find manpage '$<' in adoc format"; \ + echo "Error: Cannot find manpage '$$<' in adoc format"; \ exit 1; \ fi; \ asciidoctor \ - -r $(realpath $(DOC_SRCDIR))/extensions/rouge_hal.rb \ - -r $(realpath $(DOC_SRCDIR))/extensions/rouge_ngc.rb \ - -r $(realpath $(DOC_SRCDIR))/extensions/rouge_ini.rb \ + -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_hal.rb \ + -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_ngc.rb \ + -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_ini.rb \ --doctype=manpage \ --backend=html5 \ -a compat-mode \ -a mansource=LinuxCNC \ -a manmanual='LinuxCNC Documentation' \ - -a "lcnc-cssrel=../../" \ + -a "lcnc-cssrel=../../../" \ -a docinfo=shared \ - -a docinfodir=$(realpath $(DOC_SRCDIR)) \ + -a docinfodir=$$(realpath $$(DOC_SRCDIR)) \ -a source-highlighter=rouge \ -a rouge-style=github \ -a webfonts! \ -a linkcss -a copycss! \ - -a "stylesdir=../../" \ - -o $@ \ - "$$F" \ + -a "stylesdir=../../../" \ + -o $$@ \ + "$$$$F" \ ; \ fi; +endef +$(eval $(call MAN_HTML_RULE,en,$(DOC_DIR)/man,$(DOC_SRCDIR))) +$(foreach L,$(LANGUAGES), \ + $(eval $(call MAN_HTML_RULE,$(L),$(DOC_DIR)/man/$(L),$(DOC_OUT_ADOC)/$(L)))) # # This function appends a section to the "manpages" HTML fragment called @@ -608,22 +670,22 @@ ADD_HTML_MANPAGES = \ echo "
    " >> objects/index.incl; \ for HTML_FILE in $(sort $(3)); do \ BASENAME=$$(basename $$HTML_FILE .html); \ - echo "
  • $${BASENAME%.*}
  • "; \ + echo "
  • $${BASENAME%.*}
  • "; \ done >> objects/index.incl; \ echo "
" >> objects/index.incl; \ objects/index.incl: $(GENERATED_MANPAGES) objects/var-MAN_HTML_TARGETS $(DOC_SRCDIR)/Submakefile rm -f $@ - $(call ADD_HTML_MANPAGES, 1, Commands and userspace components, $(filter $(DOC_DIR)/html/man/man1/%.html, $(MAN_HTML_TARGETS))) \ - $(call ADD_HTML_MANPAGES, 9, Realtime components and kernel modules, $(filter $(DOC_DIR)/html/man/man9/%.html, $(MAN_HTML_TARGETS))) \ - $(call ADD_HTML_MANPAGES, 3, API: HAL, $(filter $(DOC_DIR)/html/man/man3/hal%.html, $(MAN_HTML_TARGETS))) \ - $(call ADD_HTML_MANPAGES, 3, API: RTAPI, $(filter $(DOC_DIR)/html/man/man3/rtapi%.html, $(MAN_HTML_TARGETS))) \ - $(call ADD_HTML_MANPAGES, 3, API: Hostmot2, $(filter $(DOC_DIR)/html/man/man3/hm2%.html, $(MAN_HTML_TARGETS))) \ - $(call ADD_HTML_MANPAGES, 3, API: General, $(filter-out $(DOC_DIR)/html/man/man3/hal%.html, $(filter-out $(DOC_DIR)/html/man/man3/rtapi%.html, $(filter-out $(DOC_DIR)/html/man/man3/hm2%.html, $(filter $(DOC_DIR)/html/man/man3/%.html, $(MAN_HTML_TARGETS)))))) \ - # now make sure all manpages made it into the html index + $(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))) \ + $(call ADD_HTML_MANPAGES, 3, API: HAL, $(filter $(DOC_OUT_HTML)/en/man/man3/hal%.html, $(MAN_HTML_TARGETS_EN))) \ + $(call ADD_HTML_MANPAGES, 3, API: RTAPI, $(filter $(DOC_OUT_HTML)/en/man/man3/rtapi%.html, $(MAN_HTML_TARGETS_EN))) \ + $(call ADD_HTML_MANPAGES, 3, API: Hostmot2, $(filter $(DOC_OUT_HTML)/en/man/man3/hm2%.html, $(MAN_HTML_TARGETS_EN))) \ + $(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* -type f); do \ + for F in $$(find $(DOC_DIR)/man/man* -maxdepth 2 -type f); do \ B=$$(basename $$F); \ if ! grep -q $$B $@; then \ FAIL=1; \ @@ -635,18 +697,29 @@ objects/index.incl: $(GENERATED_MANPAGES) objects/var-MAN_HTML_TARGETS $(DOC_SRC fi; \ done; \ if [ $$FAIL -ne 0 ]; then exit 1; fi - mkdir -p $(DOC_DIR)/html/man/man/images/ - find $(DOC_DIR)/man -name "*.png" ! -name "grohtml*" -exec mv {} "$(DOC_DIR)/html/man/man/images/" \; + 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/" \; -$(DOC_DIR)/html/%/index.html: $(DOC_SRCDIR)/index_%.tmpl ../VERSION $(DOC_SRCDIR)/index.foot +$(DOC_OUT_HTML)/%/index.html: $(DOC_OUT_ADOC)/%/index.tmpl ../VERSION $(DOC_SRCDIR)/index.foot + @mkdir -p $(dir $@) cat $(filter-out ../VERSION, $^) | \ sed "s/@VERSION@/`cat ../VERSION`/" | \ if [ "yes" != "$(BUILD_DOCS_TRANSLATED)" ]; then sed '/@TRANSLATIONS@/,/@ENDTRANSLATIONS@/d' ; else grep -Ev '@(END)?TRANSLATIONS@'; fi > $@ -$(DOC_DIR)/html/index.html: $(DOC_SRCDIR)/index.tmpl objects/index.incl $(DOC_SRCDIR)/index.foot ../VERSION $(DOC_SRCDIR)/Submakefile +# Rich English landing page lives at /en/index.html (sibling to the +# translated //index.html files), generated from index.tmpl +# plus the manpage index include. +$(DOC_OUT_HTML)/en/index.html: $(DOC_SRCDIR)/index.tmpl objects/index.incl $(DOC_SRCDIR)/index.foot ../VERSION $(DOC_SRCDIR)/Submakefile + @mkdir -p $(dir $@) (cat $(DOC_SRCDIR)/index.tmpl objects/index.incl $(DOC_SRCDIR)/index.foot) | sed "s/@VERSION@/`cat ../VERSION`/" | \ if [ "yes" != "$(BUILD_DOCS_TRANSLATED)" ]; then sed '/@TRANSLATIONS@/,/@ENDTRANSLATIONS@/d' ; else grep -Ev '@(END)?TRANSLATIONS@'; fi > $@ +# Tree-root redirect: docs/build/html/index.html bounces to en/. The +# page is a checked-in static file under docs/src/; just copy it. +$(DOC_OUT_HTML)/index.html: $(DOC_SRCDIR)/redirect-index.html + @mkdir -p $(dir $@) + @cp -f $< $@ + # PDF rule. Uses asciidoctor-pdf with our xref + image preprocessor # extensions and the LinuxCNC theme. The xref-root attribute is set # to the directory of the source file so each language tree gets @@ -658,15 +731,15 @@ DOC_FONT_DIR = objects/.fonts # and exported through Makefile.inc, so the build works on any distro # that ships the .ttc, not only the Debian path. CJK_TTFS = $(DOC_FONT_DIR)/NotoSerifCJKsc-Regular.ttf \ - $(DOC_FONT_DIR)/NotoSerifCJKsc-Bold.ttf + $(DOC_FONT_DIR)/NotoSerifCJKsc-Bold.ttf # DejaVu Sans Mono is the code-block font. asciidoctor-pdf only looks for # fonts in pdf-fontsdir by filename, not via fontconfig, so discover the # files at build time and symlink them into DOC_FONT_DIR. Keeps the # pdf-theme.yml portable (no absolute paths baked in). DEJAVU_TTFS = $(DOC_FONT_DIR)/DejaVuSansMono.ttf \ - $(DOC_FONT_DIR)/DejaVuSansMono-Bold.ttf \ - $(DOC_FONT_DIR)/DejaVuSansMono-Oblique.ttf \ - $(DOC_FONT_DIR)/DejaVuSansMono-BoldOblique.ttf + $(DOC_FONT_DIR)/DejaVuSansMono-Bold.ttf \ + $(DOC_FONT_DIR)/DejaVuSansMono-Oblique.ttf \ + $(DOC_FONT_DIR)/DejaVuSansMono-BoldOblique.ttf DOC_FONTS = $(CJK_TTFS) $(DEJAVU_TTFS) # Build a TrueType (glyf-based) copy of the Simplified Chinese cut of the @@ -710,46 +783,57 @@ $(eval $(call DEJAVU_RULE,DejaVuSansMono-BoldOblique.ttf,DejaVu Sans Mono:style= $(DOC_FONT_DIR): @mkdir -p $@ -# svgs_made_from_dots is .PHONY; as a normal prereq it forces every PDF to -# rebuild on every run. Order-only (after the |) instead; the SVGs the PDF -# embeds are tracked via .adoc-images-stamp. -$(DOC_SRCDIR)/%.pdf: $(DOC_SRCDIR)/%.adoc .adoc-images-stamp $(DOC_FONTS) | svgs_made_from_dots - $(ECHO) Building $@ - @rm -f $@ $@.raw - $(Q)timeout 900 asciidoctor-pdf \ - -r $(realpath $(DOC_SRCDIR))/extensions/xref_resolver.rb \ - -r $(realpath $(DOC_SRCDIR))/extensions/image_resolver.rb \ - -r $(realpath $(DOC_SRCDIR))/extensions/rouge_hal.rb \ - -r $(realpath $(DOC_SRCDIR))/extensions/rouge_ngc.rb \ - -r $(realpath $(DOC_SRCDIR))/extensions/rouge_ini.rb \ - --sourcemap \ - -a compat-mode \ - -a "doc-languages=$(LANGUAGES)" \ - -a xref-root=$(dir $<) \ - -a "xref-exclude=^($(LANGUAGES_MATCH))/" \ - -a "scriptdir=$(DOC_SRCDIR)/" \ - -a "pdf-fontsdir=$(realpath $(DOC_FONT_DIR));GEM_FONTS_DIR" \ - -a "lversion=$(shell cat ../VERSION)" \ - -a toc -a numbered \ - -a pdf-theme=$(DOC_SRCDIR)/pdf-theme.yml \ - -a source-highlighter=rouge \ - -a rouge-style=github \ - -d book \ - -o $@.raw $< || (X=$$?; rm -f $@.raw; \ - if [ $$X -eq 124 ]; then echo "asciidoctor-pdf timed out after 15 min on $<"; fi; \ - exit $$X) - $(Q)gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 \ - -dPassThroughJPEGImages=true \ - -dDownsampleColorImages=false \ - -dDownsampleGrayImages=false \ - -dDownsampleMonoImages=false \ - -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode \ - -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode \ - -dNOPAUSE -dQUIET -dBATCH \ - -sOutputFile=$@ $@.raw \ - && rm -f $@.raw \ - || (X=$$?; rm -f $@ $@.raw; exit $$X) - @test -f $@ +# Master_*.adoc -> Master_*.pdf via asciidoctor-pdf. Two rules with +# identical bodies: English sources are read from $(DOC_SRCDIR) and need +# an xref-exclude that filters out the translated language subtrees; +# translated sources are read from $(DOC_OUT_ADOC)/ (po4a output) +# and are rooted inside their own lang dir, so the exclude is empty. +# +# svgs_made_from_dots is .PHONY; as a normal prereq it forces every PDF +# to rebuild on every run. Order-only (after the |) instead; the SVGs +# the PDF embeds are tracked via .adoc-images-stamp. +define ASCIIDOCTOR_PDF_RULE +$(1)/%.pdf: $(1)/%.adoc .adoc-images-stamp $$(DOC_FONTS) | svgs_made_from_dots + $$(ECHO) Building $$@ + @rm -f $$@ $$@.raw + $$(Q)timeout 900 asciidoctor-pdf \ + -r $$(realpath $$(DOC_SRCDIR))/extensions/xref_resolver.rb \ + -r $$(realpath $$(DOC_SRCDIR))/extensions/image_resolver.rb \ + -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_hal.rb \ + -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_ngc.rb \ + -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_ini.rb \ + --sourcemap \ + -a compat-mode \ + -a "doc-languages=$$(LANGUAGES)" \ + -a xref-root=$$(dir $$<) \ + -a "xref-exclude=$(2)" \ + -a "scriptdir=$$(DOC_SRCDIR)/" \ + -a "fixturedir=$$(realpath $$(DOC_OUT_ADOC))/$(3)" \ + -a "pdf-fontsdir=$$(realpath $$(DOC_FONT_DIR));GEM_FONTS_DIR" \ + -a "lversion=$$(shell cat ../VERSION)" \ + -a toc -a numbered \ + -a pdf-theme=$$(DOC_SRCDIR)/pdf-theme.yml \ + -a source-highlighter=rouge \ + -a rouge-style=github \ + -d book \ + -o $$@.raw $$< || (X=$$$$?; rm -f $$@.raw; \ + if [ $$$$X -eq 124 ]; then echo "asciidoctor-pdf timed out after 15 min on $$<"; fi; \ + exit $$$$X) + $$(Q)gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 \ + -dPassThroughJPEGImages=true \ + -dDownsampleColorImages=false \ + -dDownsampleGrayImages=false \ + -dDownsampleMonoImages=false \ + -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode \ + -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode \ + -dNOPAUSE -dQUIET -dBATCH \ + -sOutputFile=$$@ $$@.raw \ + && rm -f $$@.raw \ + || (X=$$$$?; rm -f $$@ $$@.raw; exit $$$$X) + @test -f $$@ +endef +$(eval $(call ASCIIDOCTOR_PDF_RULE,$(DOC_SRCDIR),^($(LANGUAGES_MATCH))/,en)) +$(eval $(call ASCIIDOCTOR_PDF_RULE,$(DOC_OUT_ADOC),,$$(firstword $$(subst /, ,$$*)))) # Manual pages PDF: previously produced from the generated troff files # with groff + ps2pdf, which lost syntax highlighting on code samples. @@ -759,7 +843,7 @@ $(DOC_SRCDIR)/%.pdf: $(DOC_SRCDIR)/%.adoc .adoc-images-stamp $(DOC_FONTS) | svgs # with a hard page break between entries. Component pages whose .adoc # lives in objects/man/ (built by halcompile) are picked up alongside # the native ones in docs/src/man/. -objects/LinuxCNC_Manual_Pages.adoc: objects/var-PDF_MAN_ORDER $(MAN_SRCS) $(DOC_SRCDIR)/Submakefile +objects/LinuxCNC_Manual_Pages.adoc: objects/var-PDF_MAN_ORDER $(MAN_SRCS) $(DOC_OUT_ADOC)/en/man/man1/linuxcnc.1.adoc $(DOC_SRCDIR)/Submakefile @mkdir -p $(dir $@) $(Q){ \ echo "= LinuxCNC Manual Pages"; \ @@ -771,6 +855,8 @@ objects/LinuxCNC_Manual_Pages.adoc: objects/var-PDF_MAN_ORDER $(MAN_SRCS) $(DOC_ for M in $(PDF_MAN_ORDER); do \ if [ -r "$(DOC_SRCDIR)/man/$$M.adoc" ]; then \ echo "include::$(realpath $(DOC_SRCDIR))/man/$$M.adoc[leveloffset=+1]"; \ + elif [ -r "$(DOC_OUT_ADOC)/en/man/$$M.adoc" ]; then \ + echo "include::$(realpath $(DOC_OUT_ADOC))/en/man/$$M.adoc[leveloffset=+1]"; \ elif [ -r "objects/man/$$M.adoc" ]; then \ echo "include::$(realpath objects)/man/$$M.adoc[leveloffset=+1]"; \ else \ @@ -783,8 +869,9 @@ objects/LinuxCNC_Manual_Pages.adoc: objects/var-PDF_MAN_ORDER $(MAN_SRCS) $(DOC_ } > $@.tmp $(Q)mv -f $@.tmp $@ -$(DOC_DIR)/LinuxCNC_Manual_Pages.pdf: objects/LinuxCNC_Manual_Pages.adoc $(DOC_FONTS) +$(DOC_OUT_HTML)/en/pdf/LinuxCNC_Manual_Pages.pdf: objects/LinuxCNC_Manual_Pages.adoc $(DOC_FONTS) @$(ECHO) Formatting manual pages as PDF + @mkdir -p $(dir $@) @rm -f $@ $@.raw $(Q)timeout 900 asciidoctor-pdf \ -r $(realpath $(DOC_SRCDIR))/extensions/rouge_hal.rb \ @@ -821,22 +908,54 @@ depends/%.d: $(DOC_SRCDIR)/%.adoc $(DOC_SRCDIR)/asciideps .include-stamp $(Q)$(DOC_SRCDIR)/asciideps $< > $@.tmp @mv $@.tmp $@ -$(DOC_TARGETS_HTML): $(DOC_DIR)/html/%.html: $(DOC_SRCDIR)/%.html - @d=`dirname $*`; \ - mkdir -p $(shell dirname $@) +# Translated .adoc lives in $(DOC_OUT_ADOC)//; same recipe, just a +# different source dir so the per-language depends//X.d targets +# resolve. The pattern only matches paths starting with a known language +# tag, so the English depends/%.d above wins for non-translated entries. +define TRANSLATED_DEP_RULE +depends/$(1)/%.d: $(DOC_OUT_ADOC)/$(1)/%.adoc $(DOC_SRCDIR)/asciideps .include-stamp + $$(ECHO) Depending $$< + @mkdir -p $$(dir $$@) + $$(Q)$$(DOC_SRCDIR)/asciideps $$< > $$@.tmp + @mv $$@.tmp $$@ +endef +$(foreach L,$(LANGUAGES),$(eval $(call TRANSLATED_DEP_RULE,$(L)))) + +# English: copy from intermediate $(DOC_SRCDIR)//X.html to +# $(DOC_OUT_HTML)/en//X.html. Translated: copy from $(DOC_OUT_ADOC)///X.html +# to $(DOC_OUT_HTML)///X.html (the asciidoctor pattern rule +# emits the .html sibling to the .adoc; no separate copy step needed for +# translations). We model both with one static pattern set per lang. +$(DOC_TARGETS_HTML_EN): $(DOC_OUT_HTML)/en/%.html: $(DOC_SRCDIR)/%.html + @mkdir -p $(dir $@) @cp $< $@ +define HTML_COPY_RULE +$(DOC_TARGETS_HTML_$(call toUC,$(1))): $(DOC_OUT_HTML)/$(1)/%.html: $(DOC_OUT_ADOC)/$(1)/%.html + @mkdir -p $$(dir $$@) + @cp $$< $$@ +endef +$(foreach L,$(LANGUAGES),$(eval $(call HTML_COPY_RULE,$(L)))) + .images-stamp: .adoc-images-stamp .html-images-stamp touch $@ +# Image copy from sources into the output tree. HTML files for English +# live at $(DOC_OUT_HTML)/en//X.html; for translations at +# $(DOC_OUT_HTML)///X.html. The source images are in +# $(DOC_SRCDIR)// regardless of language (translations are +# image-symlinked to English originals via the sed below). .html-images-stamp: $(DOC_TARGETS_HTML) set -e; for HTML_FILE in $^; do \ - HTML_DIR=$$(basename $$(dirname $$HTML_FILE)); \ + HTML_REL=$$(echo $$HTML_FILE | sed 's%^$(DOC_OUT_HTML)/%%'); \ + LANG=$$(echo $$HTML_REL | cut -d/ -f1); \ + REST=$$(echo $$HTML_REL | cut -d/ -f2-); \ + HTML_DIR=$$(dirname $$REST | cut -d/ -f1); \ for IMAGE_FILE in $$(grep -oE 'src="[^"]+"' $$HTML_FILE | sed 's/src="//;s/"$$//' | grep -vE '^https?:|^data:|^/'); do \ IMAGE_DIR=$$(dirname $$IMAGE_FILE); \ - IMAGE_PATH=$$(echo $(DOC_SRCDIR)/$$HTML_DIR/$$IMAGE_FILE | sed -E 's%/src/($(LANGUAGES_MATCH))/%/src/%'); \ - mkdir -p $(DOC_DIR)/html/$$HTML_DIR/$$IMAGE_DIR; \ - cp -f $$IMAGE_PATH $(DOC_DIR)/html/$$HTML_DIR/$$IMAGE_FILE; \ + IMAGE_PATH=$(DOC_SRCDIR)/$$HTML_DIR/$$IMAGE_FILE; \ + mkdir -p $(DOC_OUT_HTML)/$$LANG/$$HTML_DIR/$$IMAGE_DIR; \ + cp -f $$IMAGE_PATH $(DOC_OUT_HTML)/$$LANG/$$HTML_DIR/$$IMAGE_FILE; \ done; \ done > $@.new && mv $@.new $@ @@ -845,21 +964,21 @@ $(DOC_TARGETS_HTML): $(DOC_DIR)/html/%.html: $(DOC_SRCDIR)/%.html # build can find it without ../.. paths. .include-stamp: hal/user_comps/mb2hal/mb2hal_HOWTO.ini emc/usr_intf/gmoccapy/release_notes.txt (set -x; set -e; \ - cp -f hal/user_comps/mb2hal/mb2hal_HOWTO.ini $(DOC_DIR)/src/drivers/;\ - mkdir -p $(DOC_DIR)/html/drivers/; \ - cp -f hal/user_comps/mb2hal/mb2hal_HOWTO.ini $(DOC_DIR)/html/drivers/;\ - cp -f emc/usr_intf/gmoccapy/release_notes.txt $(DOC_DIR)/src/gui/gmoccapy_release_notes.txt;\ - mkdir -p $(DOC_DIR)/html/gui/; \ - cp -f emc/usr_intf/gmoccapy/release_notes.txt $(DOC_DIR)/html/gui/gmoccapy_release_notes.txt;\ + mkdir -p $(DOC_OUT_ADOC)/en/drivers/; \ + cp -f hal/user_comps/mb2hal/mb2hal_HOWTO.ini $(DOC_OUT_ADOC)/en/drivers/;\ + mkdir -p $(DOC_OUT_HTML)/en/drivers/; \ + cp -f hal/user_comps/mb2hal/mb2hal_HOWTO.ini $(DOC_OUT_HTML)/en/drivers/;\ + mkdir -p $(DOC_OUT_HTML)/en/gui/; \ + cp -f emc/usr_intf/gmoccapy/release_notes.txt $(DOC_OUT_HTML)/en/gui/gmoccapy_release_notes.txt;\ for lang in $(LANGUAGES); do \ - mkdir -p $(DOC_DIR)/src/$$lang/drivers/; \ - mkdir -p $(DOC_DIR)/html/$$lang/drivers/; \ - cp -f hal/user_comps/mb2hal/mb2hal_HOWTO.ini $(DOC_DIR)/src/$$lang/drivers/ ; \ - cp -f hal/user_comps/mb2hal/mb2hal_HOWTO.ini $(DOC_DIR)/html/$$lang/drivers/ ; \ - mkdir -p $(DOC_DIR)/src/$$lang/gui/; \ - mkdir -p $(DOC_DIR)/html/$$lang/gui/; \ - cp -f emc/usr_intf/gmoccapy/release_notes.txt $(DOC_DIR)/src/$$lang/gui/gmoccapy_release_notes.txt ; \ - cp -f emc/usr_intf/gmoccapy/release_notes.txt $(DOC_DIR)/html/$$lang/gui/gmoccapy_release_notes.txt ; \ + mkdir -p $(DOC_OUT_ADOC)/$$lang/drivers/; \ + mkdir -p $(DOC_OUT_HTML)/$$lang/drivers/; \ + cp -f hal/user_comps/mb2hal/mb2hal_HOWTO.ini $(DOC_OUT_ADOC)/$$lang/drivers/ ; \ + cp -f hal/user_comps/mb2hal/mb2hal_HOWTO.ini $(DOC_OUT_HTML)/$$lang/drivers/ ; \ + mkdir -p $(DOC_OUT_ADOC)/$$lang/gui/; \ + mkdir -p $(DOC_OUT_HTML)/$$lang/gui/; \ + cp -f emc/usr_intf/gmoccapy/release_notes.txt $(DOC_OUT_ADOC)/$$lang/gui/gmoccapy_release_notes.txt ; \ + cp -f emc/usr_intf/gmoccapy/release_notes.txt $(DOC_OUT_HTML)/$$lang/gui/gmoccapy_release_notes.txt ; \ done) > $@.new && mv $@.new $@ # Copy all images used by translated adoc files into the directories @@ -869,17 +988,17 @@ $(DOC_TARGETS_HTML): $(DOC_DIR)/html/%.html: $(DOC_SRCDIR)/%.html ifeq ($(BUILD_DOCS_TRANSLATED),yes) ADOC_IMAGES_STAMP_DEPS := $(DOC_DIR)/.translateddocs-stamp endif -.adoc-images-stamp: $(ADOC_IMAGES_STAMP_DEPS) $(addprefix $(DOC_SRCDIR)/, $(filter-out $(DOC_SRCS_EN), $(DOC_SRCS))) - set -e; for ADOC_FILE in $(addprefix $(DOC_SRCDIR)/, $(filter-out $(DOC_SRCS_EN), $(DOC_SRCS))); do \ - ADOC_DIR=$$(echo $$(dirname $$ADOC_FILE) | sed s%$(DOC_SRCDIR)/%% ); \ +.adoc-images-stamp: $(ADOC_IMAGES_STAMP_DEPS) $(addprefix $(DOC_OUT_ADOC)/, $(filter-out $(DOC_SRCS_EN), $(DOC_SRCS))) + set -e; for ADOC_FILE in $(addprefix $(DOC_OUT_ADOC)/, $(filter-out $(DOC_SRCS_EN), $(DOC_SRCS))); do \ + ADOC_DIR=$$(echo $$(dirname $$ADOC_FILE) | sed s%$(DOC_OUT_ADOC)/%% ); \ echo Processing $$ADOC_FILE, dir $$ADOC_DIR; \ for IMAGE_FILE in $$(grep -E ^image:[^[:space:]] $$ADOC_FILE | sed -E "s/image:+([^[]+)\[/\nimage:\1\n/g" | grep image: | cut -d: -f2-); do \ IMAGE_DIR=$$(dirname $$IMAGE_FILE); \ IMAGE_PATH=$$(echo $(DOC_SRCDIR)/$$ADOC_DIR/$$IMAGE_FILE | sed -E 's%/src/($(LANGUAGES_MATCH))/%/src/%'); \ - TIMAGE_PATH=$(DOC_DIR)/src/$$ADOC_DIR/$$IMAGE_FILE; \ - HIMAGE_PATH=$(DOC_DIR)/html/$$ADOC_DIR/$$IMAGE_FILE; \ - mkdir -p $(DOC_DIR)/src/$$ADOC_DIR/$$IMAGE_DIR; \ - mkdir -p $(DOC_DIR)/html/$$ADOC_DIR/$$IMAGE_DIR; \ + TIMAGE_PATH=$(DOC_OUT_ADOC)/$$ADOC_DIR/$$IMAGE_FILE; \ + HIMAGE_PATH=$(DOC_OUT_HTML)/$$ADOC_DIR/$$IMAGE_FILE; \ + mkdir -p $(DOC_OUT_ADOC)/$$ADOC_DIR/$$IMAGE_DIR; \ + mkdir -p $(DOC_OUT_HTML)/$$ADOC_DIR/$$IMAGE_DIR; \ if [ ! -e $$TIMAGE_PATH ] ; then \ echo "Generating $$TIMAGE_PATH for $$ADOC_FILE"; \ cp -f $$IMAGE_PATH $$TIMAGE_PATH; \ @@ -888,23 +1007,32 @@ endif done; \ done > $@.new && mv $@.new $@ -# Relative path from this html target back to DOC_SRCDIR, used to point -# the lcnc-overrides.css in docinfo.html at the right place. -$(DOC_SRCDIR)/%.html: LCNC_CSSREL=$(shell python3 -c "print('../' * '$*'.count('/'))") - -# asciidoctor HTML rule used for every language. $1 is the language tag -# in lowercase (en, ar, de, ...); $2 is the directory the xref index is -# rooted at (the source tree root for the language). +# Relative path from this html target back to $(DOC_OUT_HTML)/, used to +# point the lcnc-overrides.css in docinfo.html at the right place. +# Every output now lives under a $(DOC_OUT_HTML)// subtree, so depth +# is one greater than the topic-relative slash count. +$(DOC_SRCDIR)/%.html: LCNC_CSSREL=$(shell python3 -c "print('../' * (1 + '$*'.count('/')))") +$(DOC_OUT_ADOC)/%.html: LCNC_CSSREL=$(shell python3 -c "print('../' * '$*'.count('/'))") + +# asciidoctor HTML rule used for every language. +# $1 lang tag (en, de, ...) +# $2 source root: $(DOC_SRCDIR) for English (DOC_SRCS_EN paths have no +# lang/ prefix); $(DOC_OUT_ADOC) for translations (DOC_SRCS_ paths +# include the leading $(L)/). +# $3 xref-root: the language's own subtree (for English same as $2). +# $4 xref-exclude pattern (English filters all lang subdirs; translated +# trees are rooted inside their own lang dir so the exclude is empty). define ASCIIDOCTOR_HTML_RULE -$$(patsubst %.adoc,$$(DOC_SRCDIR)/%.html,$$(DOC_SRCS_$(call toUC,$1)_SMALL)): $$(DOC_SRCDIR)/%.html: $$(DOC_SRCDIR)/%.adoc $$(DOC_SRCDIR)/docinfo.html +$$(patsubst %.adoc,$2/%.html,$$(DOC_SRCS_$(call toUC,$1)_SMALL)): $2/%.html: $2/%.adoc $$(DOC_SRCDIR)/docinfo.html $$(ECHO) "Building '$1' adoc to html: " $$< $$(Q)asciidoctor -r $$(realpath $$(DOC_SRCDIR))/extensions/xref_resolver.rb \ -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_hal.rb \ -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_ngc.rb \ -r $$(realpath $$(DOC_SRCDIR))/extensions/rouge_ini.rb \ -a compat-mode \ - -a xref-root=$2 \ - -a "xref-exclude=$3" \ + -a xref-root=$3 \ + -a "xref-exclude=$4" \ + -a "fixturedir=$$(realpath $$(DOC_OUT_ADOC))/$1" \ -a "relindir=$$(shell dirname $$*)" \ -a "lcnc-cssrel=$$(LCNC_CSSREL)" \ -a docinfo=shared \ @@ -918,12 +1046,9 @@ $$(patsubst %.adoc,$$(DOC_SRCDIR)/%.html,$$(DOC_SRCS_$(call toUC,$1)_SMALL)): $$ -o $$@ $$< || (X=$$$$?; rm -f $$@; exit $$$$X) endef -# English is rooted at the doc tree root so it must exclude all language -# subdirs from its xref index. Translated languages are rooted at their -# own subtree so the exclude is empty. -$(eval $(call ASCIIDOCTOR_HTML_RULE,en,$(DOC_SRCDIR),^($(LANGUAGES_MATCH))/)) -$(foreach lang,$(LANGUAGES),\ - $(eval $(call ASCIIDOCTOR_HTML_RULE,$(lang),$(DOC_SRCDIR)/$(lang)))) +$(eval $(call ASCIIDOCTOR_HTML_RULE,en,$(DOC_SRCDIR),$(DOC_SRCDIR),^($(LANGUAGES_MATCH))/)) +$(foreach lang,$(LANGUAGES), \ + $(eval $(call ASCIIDOCTOR_HTML_RULE,$(lang),$(DOC_OUT_ADOC),$(DOC_OUT_ADOC)/$(lang),))) default: docs @@ -934,50 +1059,14 @@ install-doc-pdf: install-doc-html: $(DIR) $(DESTDIR)$(docsdir) - cp -a $(DOC_DIR)/html $(DESTDIR)$(docsdir) + cp -a $(DOC_OUT_HTML) $(DESTDIR)$(docsdir) docclean: - -rm -f $(DOC_DIR)/LinuxCNC_Getting_Started.pdf - -rm -f $(DOC_DIR)/LinuxCNC_Getting_Started_*.pdf - -rm -f $(DOC_DIR)/LinuxCNC_Documentation.pdf - -rm -f $(DOC_DIR)/LinuxCNC_Documentation_*.pdf - -rm -f $(DOC_DIR)/LinuxCNC_Integrator.pdf - -rm -f $(DOC_DIR)/LinuxCNC_Integrator_*.pdf - -rm -f $(DOC_DIR)/LinuxCNC_Developer.pdf - -rm -f $(DOC_DIR)/LinuxCNC_Developer_*.pdf - -rm -f $(DOC_DIR)/LinuxCNC_Manual_Pages.pdf + -rm -rf $(DOC_BUILD) -rm -f $(DOC_SRCDIR)/*.d -rm -f $(DOC_SRCDIR)/*.pdf -rm -f $(DOC_SRCDIR)/*/*.html - -rm -f $(DOC_SRCDIR)/index_*.tmpl - -rm -f $(DOC_SRCDIR)/drivers/mb2hal_HOWTO.ini - -rm -f $(DOC_SRCDIR)/*/drivers/mb2hal_HOWTO.ini - -rm -f $(DOC_SRCDIR)/gui/gmoccapy_release_notes.txt - -rm -f $(DOC_SRCDIR)/*/gui/gmoccapy_release_notes.txt - -rm -f $(DOC_DIR)/html/*/drivers/mb2hal_HOWTO.ini - -rm -f $(DOC_DIR)/html/drivers/mb2hal_HOWTO.ini -rm -rf $(DOC_FONT_DIR) - -rm -f $(DOC_DIR)/html/gui/gmoccapy_release_notes.txt - -rm -f $(DOC_DIR)/html/*/gui/gmoccapy_release_notes.txt - -rm -f $(DOC_DIR)/html/code/*.* - -rm -f $(DOC_DIR)/html/common/images/*.* - -rm -f $(DOC_DIR)/html/config/images/*.* - -rm -f $(DOC_DIR)/html/drivers/images/*.* - -rm -f $(DOC_DIR)/html/examples/images/*.* - -rm -f $(DOC_DIR)/html/gcode/images/*.* - -rm -f $(DOC_DIR)/html/getting-started/images/*.* - -rm -f $(DOC_DIR)/html/gui/images/*.* - -rm -f $(DOC_DIR)/html/hal/images/*.* - -rm -f $(DOC_DIR)/html/install/images/*.* - -rm -f $(DOC_DIR)/html/ladder/images/*.* - -rm -f $(DOC_DIR)/html/lathe/images/*.* - -rm -f $(DOC_DIR)/html/motion/images/*.* - -rm -f $(DOC_DIR)/html/plasma/images/*.* - -rm -f $(DOC_DIR)/html/remap/images/*.* - -rm -f $(DOC_DIR)/html/man/man1/*.* - -rm -f $(DOC_DIR)/html/man/man3/*.* - -rm -f $(DOC_DIR)/html/man/man9/*.* - -rm -f $(DOC_TARGETS_HTML) $(DOC_DIR)/html/xref*.html $(DOC_DIR)/html/index*.html $(DOC_DIR)/*.png $(DOC_DIR)/man/*.png -rm -f .htmldoc-stamp -rm -f .copy-asciidoc-stamp -rm -f .adoc-images-stamp @@ -988,14 +1077,13 @@ docclean: -rm -f $(DOC_DIR)/.gen_complist-stamp -rm -f $(DOC_DIR)/.checkref-*-stamp -rm -f $(DOTFILES:.dot=.svg) - $(RM) $(DOC_SRCDIR)/man/man1/linuxcnc.1.adoc MAN_DEPS := $(patsubst $(DOC_DIR)/man/%, depends/%.d, $(MAN_SRCS)) $(MAN_DEPS): depends/%.d: $(DOC_DIR)/man/% @echo Depending $(notdir $<) @mkdir -p $(dir $@) - $(Q)echo -n "$(DOC_DIR)/html/man/$*.html: $<" > $@.tmp + $(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)echo >> $@.tmp $(Q)mv -f $@.tmp $@ @@ -1026,7 +1114,6 @@ docs: $(error Cannot build documents, missing AsciiDoc or some other required program, or explicitly disabled in configure) clean: - $(RM) $(DOC_SRCDIR)/man/man1/linuxcnc.1.adoc endif manpages: $(GENERATED_MANPAGES) diff --git a/docs/src/drivers/mb2hal.adoc b/docs/src/drivers/mb2hal.adoc index d82568e76f0..0f42bbf1f59 100644 --- a/docs/src/drivers/mb2hal.adoc +++ b/docs/src/drivers/mb2hal.adoc @@ -147,7 +147,7 @@ Click link:mb2hal_HOWTO.ini[here] to download. [source,ini] ---- -include::mb2hal_HOWTO.ini[] +include::{fixturedir}/drivers/mb2hal_HOWTO.ini[] ---- == Pins diff --git a/docs/html/gcode.html b/docs/src/gcode.html similarity index 100% rename from docs/html/gcode.html rename to docs/src/gcode.html diff --git a/docs/src/gen_complist.py b/docs/src/gen_complist.py index bcb02363005..2e2b179969f 100644 --- a/docs/src/gen_complist.py +++ b/docs/src/gen_complist.py @@ -39,7 +39,7 @@ def add_links(lines, add_descr): splitted = line.split('|') if 'link:' in splitted[1]: link = re.search('(?<=link:).*(?=\\[)', splitted[1]).group() - if not os.path.isfile(os.path.join('../docs/html/hal', link)): + if not os.path.isfile(os.path.join('../docs/build/html/en/hal', link)): print('gen_complist: Broken link:', link) else: comp_man = splitted[1].strip(' ') @@ -63,7 +63,7 @@ def generate_complist(complist_path): if 'link:' in splitted[1]: link = re.search('(?<=link:).*(?=\\[)', splitted[1]).group() comp_man = re.search("[a-zA-Z0-9-_\\.]+(?=\\.html)", link).group() - if os.path.isfile(os.path.join('../docs/html/hal', link)): + if os.path.isfile(os.path.join('../docs/build/html/en/hal', link)): complist_doc.add(comp_man) else: print('gen_complist: Broken link:', link, file=sys.stderr) diff --git a/docs/src/gui/.gitignore b/docs/src/gui/.gitignore index 0aa95f821af..f31cf27ccec 100644 --- a/docs/src/gui/.gitignore +++ b/docs/src/gui/.gitignore @@ -6,5 +6,4 @@ mini mini.tex tkemc tkemc.tex -image-to-gcode.tex -gmoccapy_release_notes.txt \ No newline at end of file +image-to-gcode.tex \ No newline at end of file diff --git a/docs/html/index.css b/docs/src/index.css similarity index 100% rename from docs/html/index.css rename to docs/src/index.css diff --git a/docs/src/index.tmpl b/docs/src/index.tmpl index e6f2d57b049..f8400987193 100644 --- a/docs/src/index.tmpl +++ b/docs/src/index.tmpl @@ -4,29 +4,29 @@ LinuxCNC - - + +
- LinuxCNC Logo + LinuxCNC Logo
@TRANSLATIONS@

Translations: -Arabic -Deutsch -Español -Français -Norsk bokmål -Russian -Svensk - -Ukranian -中文 +Arabic +Deutsch +Español +Français +Norsk bokmål +Russian +Svensk + +Ukranian +中文

@ENDTRANSLATIONS@ diff --git a/docs/html/linuxcnc-logo-chips.png b/docs/src/linuxcnc-logo-chips.png similarity index 100% rename from docs/html/linuxcnc-logo-chips.png rename to docs/src/linuxcnc-logo-chips.png diff --git a/docs/src/redirect-index.html b/docs/src/redirect-index.html new file mode 100644 index 00000000000..c730f9d8ca6 --- /dev/null +++ b/docs/src/redirect-index.html @@ -0,0 +1,12 @@ + + + + +LinuxCNC Documentation + + + + +

Redirecting to English documentation.

+ + diff --git a/docs/src/render-rouge-css.rb b/docs/src/render-rouge-css.rb new file mode 100644 index 00000000000..158b84fde07 --- /dev/null +++ b/docs/src/render-rouge-css.rb @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# Render the Rouge github theme as CSS scoped to .rouge spans. Light +# variant first, dark variant gated on prefers-color-scheme. Older +# Rouge releases lack the light!/dark! mode switch, so we fall back to +# Monokai for the dark cut and warn. +require "rouge" + +t = Rouge::Themes::Github +if t.respond_to?(:light!) && t.respond_to?(:dark!) + t.light! + puts t.new(scope: ".rouge").render + puts "@media (prefers-color-scheme: dark) {" + t.dark! + puts t.new(scope: ".rouge").render + puts "}" +else + warn "rouge does not support theme modes (Rouge::Themes::Github.light!); dark mode code highlighting will use Monokai" + puts t.new(scope: ".rouge").render + puts "@media (prefers-color-scheme: dark) {" + puts Rouge::Themes::Monokai.new(scope: ".rouge").render + puts "}" +end diff --git a/scripts/make-docs-pdf-index b/scripts/make-docs-pdf-index index f2f286326ca..da03005e394 100755 --- a/scripts/make-docs-pdf-index +++ b/scripts/make-docs-pdf-index @@ -9,23 +9,23 @@ set -e # --show-toplevel` because when building from dsc we don't have a # git repo. TOPLEVEL=${PWD}/.. -cd "${TOPLEVEL}"/docs +cd "${TOPLEVEL}"/docs/build/html TITLE="LinuxCNC PDF docs ($(cat "${TOPLEVEL}"/VERSION))" - -rm -f index.html +PDF_INDEX=pdf-index.html +rm -f "${PDF_INDEX}" { echo "" echo "${TITLE}" echo "

${TITLE}

" -} >> index.html +} >> "${PDF_INDEX}" -for F in $(find . -maxdepth 1 -name '*.pdf' | sort); do - echo " $F
" >> index.html +for F in $(find . -mindepth 2 -name '*.pdf' | sort); do + echo " ${F#./}
" >> "${PDF_INDEX}" done { echo "" echo "" -} >> index.html +} >> "${PDF_INDEX}"