Auto generate the device listings in the Hardware Notes based on

manual pages, to avoid duplicating work between the Hardware Notes and
manual pages.

Each text line in the output from the manual page parser is generated
as a SGML entity, making it possible for translators to only translate
lines which actually contains English text (this neat idea came from
hrs).

To determine which drivers are usable on which architectures the
dev.archlist.txt file is used to explicitly list this.  It it an
imperfect solution, but the best I have been able to come up with for
now.

This commit converts most of the devices which has a section 4 manual
page with a HARDWARE section to be the new auto generated format.

Reviewed in principle by:	ru, hrs, trhodes
Good ideas for improvements:	hrs
No objections:			-doc, re
This commit is contained in:
Simon L. B. Nielsen 2004-08-03 22:12:45 +00:00
parent fdae98ecd6
commit 4e702f5b14
20 changed files with 542 additions and 183 deletions

View File

@ -3,10 +3,11 @@
# The user can override the default language to build and install
# with the RELNOTES_LANG variable.
#
SUBDIR = share/sgml
.if defined(RELNOTES_LANG) && !empty(RELNOTES_LANG)
SUBDIR = ${RELNOTES_LANG}
SUBDIR+= ${RELNOTES_LANG}
.else
SUBDIR = en_US.ISO8859-1
SUBDIR+= en_US.ISO8859-1
.endif
RELN_ROOT?= ${.CURDIR}

View File

@ -5,3 +5,11 @@ DESTDIR?= ${DOCDIR}/hardware/${.CURDIR:T}
.else
DESTDIR?= ${DOCDIR}/en_US.ISO8859-1/hardware/${.CURDIR:T}
.endif
# Force include of the autogenerated catalog. It has to be set
# directly in the CATALOG variable since doc.docbook.mk check if each
# catalog file exist for the other *CATALOG variables, and
# catalog-auto does not exist yet when that check is performed,
# causing catalog-auto not to be added to CATALOGS which breaks the
# build.
CATALOGS+= -c ${DEV-AUTODIR}/catalog-auto

View File

@ -15,6 +15,8 @@ SRCS+= proc-alpha.sgml
SRCS+= ../common/hw.ent
SRCS+= ../common/artheader.sgml
SRCS+= ../common/dev.sgml
SRCS+= ${DEV-AUTODIR}/catalog-auto
SRCS+= ${DEV-AUTODIR}/dev-auto.sgml
.include "${RELN_ROOT}/share/mk/doc.relnotes.mk"
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View File

@ -9,6 +9,8 @@
%mlists;
<!ENTITY % release PUBLIC "-//FreeBSD//ENTITIES Release Specification//EN">
%release;
<!ENTITY % devauto PUBLIC "-//FreeBSD//ENTITIES Auto Generated Device Lists//EN">
%devauto;
<!ENTITY % sections SYSTEM "../common/hw.ent"> %sections;
<!-- Architecture-specific customization -->

View File

@ -15,6 +15,8 @@ SRCS+= proc-amd64.sgml
SRCS+= ../common/hw.ent
SRCS+= ../common/artheader.sgml
SRCS+= ../common/dev.sgml
SRCS+= ${DEV-AUTODIR}/catalog-auto
SRCS+= ${DEV-AUTODIR}/dev-auto.sgml
.include "${RELN_ROOT}/share/mk/doc.relnotes.mk"
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View File

@ -9,6 +9,8 @@
%mlists;
<!ENTITY % release PUBLIC "-//FreeBSD//ENTITIES Release Specification//EN">
%release;
<!ENTITY % devauto PUBLIC "-//FreeBSD//ENTITIES Auto Generated Device Lists//EN">
%devauto;
<!ENTITY % sections SYSTEM "../common/hw.ent"> %sections;
<!-- Architecture-specific customization -->

View File

@ -66,25 +66,17 @@
</itemizedlist>
</para>
<para arch="i386,pc98,amd64">Adaptec AIC-6260 and AIC-6360 based boards
(&man.aic.4; driver)</para>
&hwlist.aic;
<para arch="i386">Adaptec AHA-154X ISA and AHA-1640 MCA
SCSI controllers and compatibles (&man.aha.4; driver)</para>
&hwlist.aha;
<para arch="i386">Adaptec AHA_174x series EISA SCSI controller in
enhanced mode (&man.ahb.4; driver)</para>
&hwlist.ahb;
<para arch="i386,pc98,alpha,sparc64,amd64">Adaptec AIC-7770, AIC-7850,
AIC-7860, AIC-7870, AIC-7880, and AIC789x based SCSI host
adapters (&man.ahc.4; driver)</para>
&hwlist.ahc;
<para arch="i386,sparc64,amd64">Ultra-320 SCSI controllers based on the Adaptec
AIC7901, AIC7901A, and AIC7902 Ultra320 controller chips
(&man.ahd.4; driver)
</para>
&hwlist.ahd;
<para arch="i386,amd64">Adaptec FSA family RAID controllers (&man.aac.4; driver)</para>
&hwlist.aac;
<para arch="pc98">NEC PC-9801-55, 92 and their compatible C-Bus SCSI interfaces (&man.ct.4; driver)
<itemizedlist>
@ -199,6 +191,8 @@
</itemizedlist>
</para>
&hwlist.adw;
<para arch="i386,amd64">BusLogic MultiMaster <quote>W</quote>,
<quote>C</quote>, <quote>S</quote>, and <quote>A</quote> Series
Host Adapters (&man.bt.4; driver)
@ -211,23 +205,11 @@
</para>
<para arch="i386,amd64">DPT SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV and
SmartRAID IV SCSI/RAID controllers (&man.dpt.4; driver)</para>
&hwlist.dpt;
<para arch="i386,amd64">Adaptec 21x0S/32x0S/34x0S SCSI RAID
controllers (&man.asr.4; driver)</para>
&hwlist.asr;
<para arch="i386,amd64">Adaptec 2000S/2005S Zero-Channel RAID controllers
(&man.asr.4; driver)</para>
<para arch="i386,amd64">Adaptec 2400A ATA-100 RAID controller
(&man.asr.4; driver)</para>
<para arch="i386,amd64">DPT SmartRAID V and VI SCSI RAID controllers
(&man.asr.4; driver)</para>
<para arch="i386,alpha,amd64">AMI MegaRAID Express and Enterprise family RAID controllers
(&man.amr.4; driver)
&hwlist.amr;
<note>
<para arch="i386,amd64">Booting from these controllers is supported. EISA
adapters are not supported.</para>
@ -235,7 +217,6 @@
<para arch="alpha">Booting from these controllers is not
supported due to SRM limitations.</para>
</note>
</para>
<para arch="i386,alpha,amd64">Mylex DAC-family RAID controllers with 2.x, 3.x, 4.x
and 5.x firmware (&man.mlx.4; driver)
@ -257,8 +238,7 @@
(&man.mly.4; driver)
</para>
<para arch="i386">3ware Escalade ATA RAID controllers (&man.twe.4; driver)
</para>
&hwlist.twe;
<para arch="i386,pc98,alpha,sparc64,amd64">LSI/Symbios (formerly NCR)
53C8<replaceable>XX</replaceable> and 53C10<replaceable>XX</replaceable> PCI
@ -274,8 +254,7 @@
adapters (&man.stg.4; driver)
</para>
<para arch="i386,pc98,alpha,ia64,sparc64,amd64">Qlogic controllers and variants (&man.isp.4; driver)
</para>
&hwlist.isp;
<para arch="i386,amd64">DTC 3290 EISA SCSI controller in 1542 emulation mode.</para>
@ -299,9 +278,7 @@
(&man.ida.4; driver)
</para>
<para arch="i386,amd64">SCSI adapters utilizing the Command Interface
for SCSI-3 Support (&man.ciss.4; driver)
</para>
&hwlist.ciss;
<para arch="i386,amd64">Intel Integrated RAID Controllers (&man.iir.4; driver)
</para>
@ -713,7 +690,7 @@
NICs and clones for PCI, MiniPCI, and CardBus (&man.dc.4;
driver)</para>
<para arch="i386,pc98,amd64">ADMtek Inc. AN986-based USB Ethernet NICs (&man.aue.4; driver)</para>
&hwlist.aue;
<para arch="i386,pc98,amd64">CATC USB-EL1210A-based USB Ethernet NICs (&man.cue.4; driver)</para>
@ -726,18 +703,15 @@
<para arch="i386,pc98,amd64">RealTek RTL8150-based USB Ethernet NICs
(&man.rue.4; driver)</para>
<para arch="i386,pc98,amd64">Davicom DM9601-based USB Ethernet
NICs (&man.udav.4; driver)</para>
&hwlist.udav;
<para arch="i386,pc98,alpha,amd64">DEC DC21040, DC21041, DC21140, DC21141, DC21142, and DC21143
based NICs (&man.de.4; driver)
</para>
<para arch="i386,pc98,amd64">Fujitsu MB86960A/MB86965A based Fast Ethernet NICs
(&man.fe.4; driver)</para>
&hwlist.fe;
<para arch="i386,pc98,alpha,ia64,sparc64,amd64">Intel 82557-, 82258-, 82559-, 82550-
or 82562-based Fast Ethernet NICs (&man.fxp.4; driver)</para>
&hwlist.fxp;
<para arch="i386,amd64">Intel 82595-based Ethernet NICs (&man.ex.4; driver)
</para>
@ -750,8 +724,7 @@
<para arch="i386">3Com 3C501 8-bit ISA Ethernet NIC
(&man.el.4; driver)</para>
<para arch="i386,pc98,alpha,sparc64,amd64">3Com Etherlink XL-based NICs (&man.xl.4; driver)
</para>
&hwlist.xl;
<para arch="i386,pc98,amd64">3Com 3C59X series NICs (&man.vx.4; driver)
</para>
@ -763,9 +736,7 @@
<para arch="i386,amd64">Megahertz X-Jack Ethernet PC-Card CC-10BT (&man.sn.4;
driver)</para>
<para arch="i386,amd64">Xircom CreditCard adapters (16 bit) and
workalikes (&man.xe.4; driver)
</para>
&hwlist.xe;
<para arch="pc98">National Semiconductor DP8393X (SONIC) Ethernet
cards (snc driver)
@ -783,13 +754,9 @@
LXT1001 NetCellerator controller (&man.lge.4; driver)
</para>
<para arch="i386,pc98,alpha,amd64">Ethernet and Fast Ethernet NICs based
on the 3Com 3XP Typhoon/Sidewinder (3CR990) chipset (&man.txp.4; driver)
</para>
&hwlist.txp;
<para arch="i386,pc98,ia64,amd64">Gigabit Ethernet NICs based on the Broadcom BCM570x
(&man.bge.4; driver)
</para>
&hwlist.bge;
<para arch="i386,pc98,alpha,ia64,amd64">Gigabit Ethernet NICs based on the
Intel 82542 and 82543 controller chips (&man.gx.4; and &man.em.4;
@ -798,13 +765,12 @@
controller chips (&man.em.4; driver only)
</para>
<para arch="sparc64">Sun HME and QFE Ethernet NICs (&man.hme.4; driver)</para>
&hwlist.hme;
<para arch="sparc64">Sun GEM (Gigabit Ethernet) and ERI (Fast
Ethernet) NICs (&man.gem.4; driver)</para>
<para arch="i386,pc98">Myson Ethernet NICs (&man.my.4; driver)
</para>
&hwlist.my;
<para arch="i386,amd64">Broadcom BCM4401 based Fast Ethernet adapters
(&man.bfe.4; driver)</para>
@ -859,8 +825,7 @@
<para arch="i386,pc98">Raytheon Raylink 2.4GHz wireless adapters (&man.ray.4; driver)
</para>
<para arch="i386,pc98,amd64">AMD Am79C930 and Harris (Intersil) based 802.11b cards (&man.awi.4; driver)
</para>
&hwlist.awi;
<para arch="i386">Atheros AR5210, AR5211, and AR5212-based
802.11a/b/g network interfaces (&man.ath.4; driver)
@ -871,29 +836,7 @@
<sect2>
<title>Miscellaneous Networks</title>
<para arch="i386">Cronyx Sigma synchronous / asynchronous serial
adapters with V.35/RS-232/RS-530/RS-449 interfaces (&man.cx.4; driver)
<itemizedlist>
<listitem>
<para>Cronyx Sigma-22, Sigma-24</para>
</listitem>
<listitem>
<para>Cronyx Sigma-100</para>
</listitem>
<listitem>
<para>Cronyx Sigma-400, Sigma-401, Sigma-404, Sigma-410, Sigma-440</para>
</listitem>
<listitem>
<para>Cronyx Sigma-500</para>
</listitem>
<listitem>
<para>Cronyx Sigma-703</para>
</listitem>
<listitem>
<para>Cronyx Sigma-800, Sigma-801, Sigma-810, Sigma-840</para>
</listitem>
</itemizedlist>
</para>
&hwlist.cx;
<para arch="i386,pc98">Cronyx Tau-PCI synchronous serial adapters for PCI bus
(&man.cp.4; driver)
@ -935,13 +878,7 @@
<para arch="i386">Granch SBNI16 SHDSL modems (&man.sbsh.4;
driver)</para>
<para arch="i386">SMC COM90cx6 ARCNET network adapters (cm driver)
<itemizedlist>
<listitem>
<para>SMC 90c26, 90c56, and 90c66 in 90c56 compatability mode</para>
</listitem>
</itemizedlist>
</para>
&hwlist.cm;
</sect2>

View File

@ -66,25 +66,17 @@
</itemizedlist>
</para>
<para arch="i386,pc98,amd64">Adaptec AIC-6260 and AIC-6360 based boards
(&man.aic.4; driver)</para>
&hwlist.aic;
<para arch="i386">Adaptec AHA-154X ISA and AHA-1640 MCA
SCSI controllers and compatibles (&man.aha.4; driver)</para>
&hwlist.aha;
<para arch="i386">Adaptec AHA_174x series EISA SCSI controller in
enhanced mode (&man.ahb.4; driver)</para>
&hwlist.ahb;
<para arch="i386,pc98,alpha,sparc64,amd64">Adaptec AIC-7770, AIC-7850,
AIC-7860, AIC-7870, AIC-7880, and AIC789x based SCSI host
adapters (&man.ahc.4; driver)</para>
&hwlist.ahc;
<para arch="i386,sparc64,amd64">Ultra-320 SCSI controllers based on the Adaptec
AIC7901, AIC7901A, and AIC7902 Ultra320 controller chips
(&man.ahd.4; driver)
</para>
&hwlist.ahd;
<para arch="i386,amd64">Adaptec FSA family RAID controllers (&man.aac.4; driver)</para>
&hwlist.aac;
<para arch="pc98">NEC PC-9801-55, 92 and their compatible C-Bus SCSI interfaces (&man.ct.4; driver)
<itemizedlist>
@ -199,6 +191,8 @@
</itemizedlist>
</para>
&hwlist.adw;
<para arch="i386,amd64">BusLogic MultiMaster <quote>W</quote>,
<quote>C</quote>, <quote>S</quote>, and <quote>A</quote> Series
Host Adapters (&man.bt.4; driver)
@ -211,23 +205,11 @@
</para>
<para arch="i386,amd64">DPT SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV and
SmartRAID IV SCSI/RAID controllers (&man.dpt.4; driver)</para>
&hwlist.dpt;
<para arch="i386,amd64">Adaptec 21x0S/32x0S/34x0S SCSI RAID
controllers (&man.asr.4; driver)</para>
&hwlist.asr;
<para arch="i386,amd64">Adaptec 2000S/2005S Zero-Channel RAID controllers
(&man.asr.4; driver)</para>
<para arch="i386,amd64">Adaptec 2400A ATA-100 RAID controller
(&man.asr.4; driver)</para>
<para arch="i386,amd64">DPT SmartRAID V and VI SCSI RAID controllers
(&man.asr.4; driver)</para>
<para arch="i386,alpha,amd64">AMI MegaRAID Express and Enterprise family RAID controllers
(&man.amr.4; driver)
&hwlist.amr;
<note>
<para arch="i386,amd64">Booting from these controllers is supported. EISA
adapters are not supported.</para>
@ -235,7 +217,6 @@
<para arch="alpha">Booting from these controllers is not
supported due to SRM limitations.</para>
</note>
</para>
<para arch="i386,alpha,amd64">Mylex DAC-family RAID controllers with 2.x, 3.x, 4.x
and 5.x firmware (&man.mlx.4; driver)
@ -257,8 +238,7 @@
(&man.mly.4; driver)
</para>
<para arch="i386">3ware Escalade ATA RAID controllers (&man.twe.4; driver)
</para>
&hwlist.twe;
<para arch="i386,pc98,alpha,sparc64,amd64">LSI/Symbios (formerly NCR)
53C8<replaceable>XX</replaceable> and 53C10<replaceable>XX</replaceable> PCI
@ -274,8 +254,7 @@
adapters (&man.stg.4; driver)
</para>
<para arch="i386,pc98,alpha,ia64,sparc64,amd64">Qlogic controllers and variants (&man.isp.4; driver)
</para>
&hwlist.isp;
<para arch="i386,amd64">DTC 3290 EISA SCSI controller in 1542 emulation mode.</para>
@ -299,9 +278,7 @@
(&man.ida.4; driver)
</para>
<para arch="i386,amd64">SCSI adapters utilizing the Command Interface
for SCSI-3 Support (&man.ciss.4; driver)
</para>
&hwlist.ciss;
<para arch="i386,amd64">Intel Integrated RAID Controllers (&man.iir.4; driver)
</para>
@ -713,7 +690,7 @@
NICs and clones for PCI, MiniPCI, and CardBus (&man.dc.4;
driver)</para>
<para arch="i386,pc98,amd64">ADMtek Inc. AN986-based USB Ethernet NICs (&man.aue.4; driver)</para>
&hwlist.aue;
<para arch="i386,pc98,amd64">CATC USB-EL1210A-based USB Ethernet NICs (&man.cue.4; driver)</para>
@ -726,18 +703,15 @@
<para arch="i386,pc98,amd64">RealTek RTL8150-based USB Ethernet NICs
(&man.rue.4; driver)</para>
<para arch="i386,pc98,amd64">Davicom DM9601-based USB Ethernet
NICs (&man.udav.4; driver)</para>
&hwlist.udav;
<para arch="i386,pc98,alpha,amd64">DEC DC21040, DC21041, DC21140, DC21141, DC21142, and DC21143
based NICs (&man.de.4; driver)
</para>
<para arch="i386,pc98,amd64">Fujitsu MB86960A/MB86965A based Fast Ethernet NICs
(&man.fe.4; driver)</para>
&hwlist.fe;
<para arch="i386,pc98,alpha,ia64,sparc64,amd64">Intel 82557-, 82258-, 82559-, 82550-
or 82562-based Fast Ethernet NICs (&man.fxp.4; driver)</para>
&hwlist.fxp;
<para arch="i386,amd64">Intel 82595-based Ethernet NICs (&man.ex.4; driver)
</para>
@ -750,8 +724,7 @@
<para arch="i386">3Com 3C501 8-bit ISA Ethernet NIC
(&man.el.4; driver)</para>
<para arch="i386,pc98,alpha,sparc64,amd64">3Com Etherlink XL-based NICs (&man.xl.4; driver)
</para>
&hwlist.xl;
<para arch="i386,pc98,amd64">3Com 3C59X series NICs (&man.vx.4; driver)
</para>
@ -763,9 +736,7 @@
<para arch="i386,amd64">Megahertz X-Jack Ethernet PC-Card CC-10BT (&man.sn.4;
driver)</para>
<para arch="i386,amd64">Xircom CreditCard adapters (16 bit) and
workalikes (&man.xe.4; driver)
</para>
&hwlist.xe;
<para arch="pc98">National Semiconductor DP8393X (SONIC) Ethernet
cards (snc driver)
@ -783,13 +754,9 @@
LXT1001 NetCellerator controller (&man.lge.4; driver)
</para>
<para arch="i386,pc98,alpha,amd64">Ethernet and Fast Ethernet NICs based
on the 3Com 3XP Typhoon/Sidewinder (3CR990) chipset (&man.txp.4; driver)
</para>
&hwlist.txp;
<para arch="i386,pc98,ia64,amd64">Gigabit Ethernet NICs based on the Broadcom BCM570x
(&man.bge.4; driver)
</para>
&hwlist.bge;
<para arch="i386,pc98,alpha,ia64,amd64">Gigabit Ethernet NICs based on the
Intel 82542 and 82543 controller chips (&man.gx.4; and &man.em.4;
@ -798,13 +765,12 @@
controller chips (&man.em.4; driver only)
</para>
<para arch="sparc64">Sun HME and QFE Ethernet NICs (&man.hme.4; driver)</para>
&hwlist.hme;
<para arch="sparc64">Sun GEM (Gigabit Ethernet) and ERI (Fast
Ethernet) NICs (&man.gem.4; driver)</para>
<para arch="i386,pc98">Myson Ethernet NICs (&man.my.4; driver)
</para>
&hwlist.my;
<para arch="i386,amd64">Broadcom BCM4401 based Fast Ethernet adapters
(&man.bfe.4; driver)</para>
@ -859,8 +825,7 @@
<para arch="i386,pc98">Raytheon Raylink 2.4GHz wireless adapters (&man.ray.4; driver)
</para>
<para arch="i386,pc98,amd64">AMD Am79C930 and Harris (Intersil) based 802.11b cards (&man.awi.4; driver)
</para>
&hwlist.awi;
<para arch="i386">Atheros AR5210, AR5211, and AR5212-based
802.11a/b/g network interfaces (&man.ath.4; driver)
@ -871,29 +836,7 @@
<sect2>
<title>Miscellaneous Networks</title>
<para arch="i386">Cronyx Sigma synchronous / asynchronous serial
adapters with V.35/RS-232/RS-530/RS-449 interfaces (&man.cx.4; driver)
<itemizedlist>
<listitem>
<para>Cronyx Sigma-22, Sigma-24</para>
</listitem>
<listitem>
<para>Cronyx Sigma-100</para>
</listitem>
<listitem>
<para>Cronyx Sigma-400, Sigma-401, Sigma-404, Sigma-410, Sigma-440</para>
</listitem>
<listitem>
<para>Cronyx Sigma-500</para>
</listitem>
<listitem>
<para>Cronyx Sigma-703</para>
</listitem>
<listitem>
<para>Cronyx Sigma-800, Sigma-801, Sigma-810, Sigma-840</para>
</listitem>
</itemizedlist>
</para>
&hwlist.cx;
<para arch="i386,pc98">Cronyx Tau-PCI synchronous serial adapters for PCI bus
(&man.cp.4; driver)
@ -935,13 +878,7 @@
<para arch="i386">Granch SBNI16 SHDSL modems (&man.sbsh.4;
driver)</para>
<para arch="i386">SMC COM90cx6 ARCNET network adapters (cm driver)
<itemizedlist>
<listitem>
<para>SMC 90c26, 90c56, and 90c66 in 90c56 compatability mode</para>
</listitem>
</itemizedlist>
</para>
&hwlist.cm;
</sect2>

View File

@ -1,5 +1,4 @@
# $FreeBSD$
RELN_ROOT?= ${.CURDIR}/../../..
DOC?= article
@ -15,6 +14,8 @@ SRCS+= proc-i386.sgml
SRCS+= ../common/hw.ent
SRCS+= ../common/artheader.sgml
SRCS+= ../common/dev.sgml
SRCS+= ${DEV-AUTODIR}/catalog-auto
SRCS+= ${DEV-AUTODIR}/dev-auto.sgml
.include "${RELN_ROOT}/share/mk/doc.relnotes.mk"
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View File

@ -9,6 +9,8 @@
%mlists;
<!ENTITY % release PUBLIC "-//FreeBSD//ENTITIES Release Specification//EN">
%release;
<!ENTITY % devauto PUBLIC "-//FreeBSD//ENTITIES Auto Generated Device Lists//EN">
%devauto;
<!ENTITY % sections SYSTEM "../common/hw.ent"> %sections;
<!-- Architecture-specific customization -->

View File

@ -15,6 +15,8 @@ SRCS+= article.sgml
SRCS+= ../common/hw.ent
SRCS+= ../common/artheader.sgml
SRCS+= ../common/dev.sgml
SRCS+= ${DEV-AUTODIR}/catalog-auto
SRCS+= ${DEV-AUTODIR}/dev-auto.sgml
.include "${RELN_ROOT}/share/mk/doc.relnotes.mk"
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View File

@ -9,6 +9,8 @@
%mlists;
<!ENTITY % release PUBLIC "-//FreeBSD//ENTITIES Release Specification//EN">
%release;
<!ENTITY % devauto PUBLIC "-//FreeBSD//ENTITIES Auto Generated Device Lists//EN">
%devauto;
<!ENTITY % sections SYSTEM "../common/hw.ent"> %sections;
<!-- Architecture-specific customization -->

View File

@ -15,6 +15,8 @@ SRCS+= proc-pc98.sgml
SRCS+= ../common/hw.ent
SRCS+= ../common/artheader.sgml
SRCS+= ../common/dev.sgml
SRCS+= ${DEV-AUTODIR}/catalog-auto
SRCS+= ${DEV-AUTODIR}/dev-auto.sgml
.include "${RELN_ROOT}/share/mk/doc.relnotes.mk"
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View File

@ -9,6 +9,8 @@
%mlists;
<!ENTITY % release PUBLIC "-//FreeBSD//ENTITIES Release Specification//EN">
%release;
<!ENTITY % devauto PUBLIC "-//FreeBSD//ENTITIES Auto Generated Device Lists//EN">
%devauto;
<!ENTITY % sections SYSTEM "../common/hw.ent"> %sections;
<!-- Architecture-specific customization -->

View File

@ -15,6 +15,8 @@ SRCS+= proc-sparc64.sgml
SRCS+= ../common/hw.ent
SRCS+= ../common/artheader.sgml
SRCS+= ../common/dev.sgml
SRCS+= ${DEV-AUTODIR}/catalog-auto
SRCS+= ${DEV-AUTODIR}/dev-auto.sgml
.include "${RELN_ROOT}/share/mk/doc.relnotes.mk"
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View File

@ -9,6 +9,8 @@
%mlists;
<!ENTITY % release PUBLIC "-//FreeBSD//ENTITIES Release Specification//EN">
%release;
<!ENTITY % devauto PUBLIC "-//FreeBSD//ENTITIES Auto Generated Device Lists//EN">
%devauto;
<!ENTITY % sections SYSTEM "../common/hw.ent"> %sections;
<!-- Architecture-specific customization -->

View File

@ -0,0 +1,63 @@
#
# Copyright (c) 2004 The FreeBSD Project
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#
#
# This file is used by man2hwnotes.pl to set which drivers are usable
# on which architectures.
#
# Format:
#
# Empty lines, and lines beginning with "#" are ignored.
# <Driver name><tab><arch>[,<arch>...]
#
aac i386,amd64
adv i386,pc98,amd64
adw i386,pc98,amd64
aha i386
ahb i386
ahc i386,pc98,alpha,sparc64,amd64
ahd i386,sparc64,amd64
aic i386,pc98,amd64
aue i386,pc98,amd64
awi i386,pc98,amd64
bge i386,pc98,ia64,amd64
ciss i386,amd64
cm i386
cp i386,pc98
ct pc98
cx i386
dpt i386,amd64
fe i386,pc98,amd64
hme sparc64
isp i386,pc98,alpha,ia64,sparc64,amd64
my i386,pc98
twe i386
txp i386,pc98,alpha,amd64
udav i386,pc98,amd64
xe i386,amd64
xl i386,pc98,alpha,sparc64,amd64

View File

@ -0,0 +1,353 @@
#!/usr/bin/perl -w
# Emacs should use -*- cperl -*- mode
#
# Copyright (c) 2003-2004 Simon L. Nielsen <simon@FreeBSD.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#
# Parse the list of supported hardware out of section 4 manual pages
# and output it on stdout as SGML/DocBook entities.
# The script will look for the following line in the manual page:
# .Sh HARDWARE
# and make an entity of the content until the line containing:
# .Sh
#
# For Lists only the first line will be printed. If there are
# arguments to the .It command, only the argument will be printed.
# Usage:
# mdoc2sgml [-l] [-d 0-6] [-a <archlist file>] manualpage [manualpage ...]
use strict;
use Getopt::Std;
use Digest::MD5 qw(md5_hex);
# Section from manual page to extract
my $hwlist_sect = "HARDWARE";
# Override default archtecture list for some devices:
my $archlist_file = "dev.archlist.txt";
my %archlist;
# Globals
my $debuglevel = 0;
my $only_list_out = 0; # Should only lists be generated in the output?
my @out_lines; # Single lines
my @out_dev; # Device entities
# Getopt
my %options = ();
if (!getopts("a:d:l",\%options)) {
die("Invalid command line arguments\n");
}
if (defined($options{d})) {
$debuglevel = $options{d};
}
if (defined($options{a})) {
$archlist_file = $options{a};
}
if (defined($options{l})) {
$only_list_out = 1;
}
if ($debuglevel > 0) {
# Don't do output buffering in debug mode.
$| = 1;
}
load_archlist($archlist_file);
if ($only_list_out) {
# Print the default device preamble entities
print "<!ENTITY hwlist.preamble.pre 'The'>\n";
print "<!ENTITY hwlist.preamble.post 'driver supports:'>\n";
}
foreach my $page (@ARGV) {
dlog(2, "Parsing $page");
parse($page);
print join("\n", @out_lines);
print "\n";
print join("\n", @out_dev);
print "\n";
@out_lines = ();
@out_dev = ();
}
sub parse {
my ($manpage) = @_;
my $cur_mansection;
my $found_hwlist = 0;
my %mdocvars;
$mdocvars{isin_hwlist} = 0;
$mdocvars{isin_list} = 0;
$mdocvars{parabuf} = "";
$mdocvars{listtype} = "";
open(MANPAGE, "$manpage") || die();
while(<MANPAGE>) {
chomp;
my $line = $_;
dlog(5, "Read '$line'");
# Find commands
if (s/^\.(.*)$/$1/) {
# Detect, and ignore, comment lines
if (s/^\\"(.*)$/$1/) {
next;
}
if (/^Nm "?(\w+)"?/ && !defined($mdocvars{Nm})) {
dlog(3, "Setting Nm to $1");
$mdocvars{Nm} = $1;
} elsif (/^Nm$/) {
if (defined($mdocvars{Nm}) && $mdocvars{Nm} ne "") {
parabuf_addline(\%mdocvars, "&man.".$mdocvars{Nm}.".$cur_mansection;");
} else {
dlog(2, "Warning: Bad Nm call in $manpage");
}
} elsif (/^Sh (.+)$/) {
dlog(4, "Setting section to $1");
my $cur_section = $1;
flush_out(\%mdocvars);
if ($cur_section =~ /^${hwlist_sect}$/) {
dlog(2, "Found the device section ${hwlist_sect}");
$mdocvars{isin_hwlist} = 1;
$found_hwlist = 1;
add_sgmltag(\%mdocvars, "<!ENTITY hwlist.".$mdocvars{cur_manname}." '");
if ($only_list_out) {
add_sgmltag("<para>&hwlist.preamble.pre; " .
"&man.".$mdocvars{Nm}.".$cur_mansection; " .
"&hwlist.preamble.post;</para>");
}
} elsif ($mdocvars{isin_hwlist}) {
dlog(2, "Found a HWLIST STOP key!");
add_sgmltag(\%mdocvars, "'>");
$mdocvars{isin_hwlist} = 0;
}
} elsif (/^Dt ([^ ]+) ([^ ]+)/) {
dlog(4, "Setting mansection to $2");
$mdocvars{cur_manname} = lc($1);
$cur_mansection = $2;
} elsif (/^It ?(.*)$/) {
# Flush last item
if ($mdocvars{parabuf} ne "") {
add_listitem(\%mdocvars);
}
parabuf_addline(\%mdocvars, $1);
} elsif (/^Bl/) {
$mdocvars{isin_list} = 1;
flush_out(\%mdocvars);
add_sgmltag(\%mdocvars, "<itemizedlist>");
if (/-tag/) {
$mdocvars{listtype} = "tag";
# YACK! Hack for ata(4)
if ($mdocvars{Nm} eq "ata") {
$mdocvars{listtype} = "tagHACK";
}
} elsif (/-bullet/) {
$mdocvars{listtype} = "bullet";
} else {
$mdocvars{listtype} = "unknown";
}
dlog(2, "Listtype set to $mdocvars{listtype}");
} elsif (/^El/) {
if ($mdocvars{parabuf} ne "") {
add_listitem(\%mdocvars);
}
add_sgmltag(\%mdocvars, "</itemizedlist>");
$mdocvars{isin_list} = 0;
} elsif (/^Tn (.+)$/) {
# For now we print TradeName text as regular text.
my $txt = $1;
$txt =~ s/^(.+) ,$/$1,/;
parabuf_addline(\%mdocvars, $txt);
} elsif (/^Xr (.+) (.+)/) {
# We need to check if the manual page exist to avoid
# breaking the doc build just because of a broken
# reference.
#parabuf_addline(\%mdocvars, "&man.$1.$2;");
parabuf_addline(\%mdocvars, "$1($2)");
}
# Ignore all other commands
} else {
# This is then regular text
parabuf_addline(\%mdocvars, $_);
}
}
close(MANPAGE) || die("Could not close input manual page");
if (! $found_hwlist) {
dlog(1, "Hardware list not found in $manpage");
}
}
sub dlog {
my ($level, $txt) = @_;
if ($level <= $debuglevel) {
print STDERR "$level: $txt\n";
}
}
# Output a SGML tag.
sub add_sgmltag {
my ($mdocvars, $txt) = (@_);
# We only care about the HW list for now.
if (${$mdocvars}{isin_hwlist}) {
push(@out_dev, $txt);
}
}
# Add a text entity, and return the used entity name.
sub add_txt_ent {
my ($itemtxt) = (@_);
my ($entity_name);
# Convert mdoc(7) minus
$itemtxt =~ s/\\-/-/g;
$itemtxt =~ s/'/&lsquo;/g;
$entity_name = "hwlist." . md5_hex($itemtxt);
dlog(4, "Adding '$itemtxt' as entity $entity_name");
push(@out_lines, "<!ENTITY $entity_name '$itemtxt'>");
return ($entity_name);
}
sub flush_out {
my ($mdocvars) = (@_);
my ($entity_name, $out);
my $para_arch = "";
if (!${$mdocvars}{isin_hwlist} || ${$mdocvars}{parabuf} eq "") {
return;
}
$entity_name = add_txt_ent(${$mdocvars}{parabuf});
${$mdocvars}{parabuf} = "";
if(defined($archlist{${$mdocvars}{Nm}})) {
$para_arch = ' arch="' . $archlist{${$mdocvars}{Nm}} . '"';
}
$out = "<para".$para_arch.">&".$entity_name.";</para>";
dlog(4, "Flushing parabuf");
add_sgmltag($mdocvars, $out);
}
# Add a new list item from the "parabuf".
sub add_listitem {
my ($mdocvars) = (@_);
my ($listitem, $entity_name);
my $para_arch = "";
$entity_name = add_txt_ent(${$mdocvars}{parabuf});
${$mdocvars}{parabuf} = "";
if(defined($archlist{${$mdocvars}{Nm}})) {
$para_arch = ' arch="' . $archlist{${$mdocvars}{Nm}} . '"';
}
$listitem = "<listitem><para".$para_arch.">&".$entity_name.";</para></listitem>";
dlog(4, "Adding '$listitem' to out_dev");
push(@out_dev, $listitem);
}
# Add a line to the "paragraph buffer"
sub parabuf_addline {
my $mdocvars = shift;
my ($txt) = (@_);
dlog(5, "Now in parabuf_addline");
# We only care about the HW list for now.
if (!${$mdocvars}{isin_hwlist}) {
return;
}
if ($txt eq "") {
return;
}
if ($only_list_out && !${$mdocvars}{isin_list}) {
return;
}
# We only add the first line for "tag" lists
if (${$mdocvars}{parabuf} ne "" && ${$mdocvars}{isin_list} &&
${$mdocvars}{listtype} eq "tag") {
return;
}
if (${$mdocvars}{parabuf} ne "") {
${$mdocvars}{parabuf} .= " ";
}
dlog(4, "Adding '$txt' to parabuf");
${$mdocvars}{parabuf} .= $txt;
}
sub load_archlist {
my ($file) = (@_);
my $lineno = 0;
dlog(2, "Parsing archlist $file");
open(FILE, "$file") || die("Could not open archlist $file\n");
while(<FILE>) {
chomp;
$lineno++;
if (/^#/ || $_ eq "") {
next;
}
if (/(\w+)\t([\w,]+)/) {
dlog(4, "For driver $1 setting arch to $2");
$archlist{$1} = $2;
} else {
dlog(1, "Could not parse line $lineno");
}
}
close(FILE);
}

View File

@ -26,3 +26,24 @@ JADEFLAGS+= -iinclude.historic
.else
JADEFLAGS+= -ino.include.historic
.endif
#
# Automatic device list generation:
#
.if exists(${RELN_ROOT}/../man4)
MAN4DIR?= ${RELN_ROOT}/../man4
.elif exists(${RELN_ROOT}/../../man4)
MAN4DIR?= ${RELN_ROOT}/../../man4
.else
MAN4DIR?= ${RELN_ROOT}/../../share/man/man4
.endif
MAN4PAGES?= ${MAN4DIR}/*.4 ${MAN4DIR}/man4.*/*.4
ARCHLIST?= ${RELN_ROOT}/share/misc/dev.archlist.txt
DEV-AUTODIR= ${RELN_ROOT:S/${.CURDIR}/${.OBJDIR}/}/share/sgml
CLEANFILES+= ${DEV-AUTODIR}/dev-auto.sgml ${DEV-AUTODIR}/catalog-auto
# Dependency that the article makefiles can use to pull in
# dev-auto.sgml.
${DEV-AUTODIR}/catalog-auto ${DEV-AUTODIR}/dev-auto.sgml: ${MAN4PAGES} \
${ARCHLIST} ${RELN_ROOT}/share/misc/man2hwnotes.pl
cd ${RELN_ROOT}/share/sgml && make dev-auto.sgml

View File

@ -0,0 +1,16 @@
# $FreeBSD$
RELN_ROOT?= ${.CURDIR}/../..
.include "${RELN_ROOT}/share/mk/doc.relnotes.mk"
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
dev-auto.sgml: ${MAN4PAGES} ${ARCHLIST} ${RELN_ROOT}/share/misc/man2hwnotes.pl catalog-auto
${PERL} ${RELN_ROOT}/share/misc/man2hwnotes.pl -a ${ARCHLIST} \
${MAN4PAGES} > ${.TARGET}
catalog-auto:
${ECHO_CMD} 'PUBLIC "-//FreeBSD//ENTITIES Auto Generated Device Lists//EN"' \
'"dev-auto.sgml"' > ${.TARGET}
all: dev-auto.sgml