summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am20
-rw-r--r--Makefrag.am1
-rw-r--r--configure.ac8
-rw-r--r--doc/Makefrag.am23
-rw-r--r--tools/m4/ax_check_a2x.m45
-rw-r--r--tools/m4/ax_check_asciidoc.m45
6 files changed, 59 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index 08511002..809e5a2f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,6 +2,7 @@ EXTRA_DIST =
MOSTLYCLEANFILES =
AM_CPPFLAGS =
AM_CFLAGS =
+SUFFIXES =
AM_CPPFLAGS += -pipe
AM_CPPFLAGS += -imacros config.h
@@ -36,12 +37,27 @@ AM_CFLAGS += -fno-stack-protector
AM_CFLAGS += -nostdlib
-SUFFIXES = .lds .lds.S
+SUFFIXES += .lds .lds.S
.lds.S.lds:
$(AM_V_GEN)$(CPP) -P $(AM_CPPFLAGS) -o $@ $<
-exec_bootdir = $(exec_prefix)/boot
+ASCIIDOC_FLAGS = -d manpage -a revnumber=@PACKAGE_VERSION@
+A2X_FLAGS = -d manpage -a revnumber=@PACKAGE_VERSION@
+
+SUFFIXES += .9 .9.html .9.xml .9.txt
+
+.9.txt.9.html:
+ $(AM_V_GEN)$(ASCIIDOC) $(ASCIIDOC_FLAGS) -b html5 -o $(abs_top_builddir)/$@ $<
+
+# Expose intermediate DocBook files for correct parallel builds.
+.9.txt.9.xml:
+ $(AM_V_GEN)$(ASCIIDOC) $(ASCIIDOC_FLAGS) -b docbook -o $(abs_top_builddir)/$@ $<
+
+.9.xml.9:
+ $(AM_V_GEN)$(A2X) $(A2X_FLAGS) -f manpage --xsltproc-opts="-o $(abs_top_builddir)/$@" $<
+
+exec_bootdir = /boot
exec_boot_PROGRAMS = x15
x15_DEPENDENCIES = arch/$(arch)/x15.lds
MOSTLYCLEANFILES += arch/$(arch)/x15.lds
diff --git a/Makefrag.am b/Makefrag.am
index f4f8f631..b16fd8f5 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -1,4 +1,5 @@
include arch/x86/Makefrag.am
+include doc/Makefrag.am
EXTRA_DIST += tools/qemu.sh
diff --git a/configure.ac b/configure.ac
index 6bd2e8b7..9dd3bc0b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,18 +4,24 @@ AC_CONFIG_SRCDIR([kern/config.h])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([tools/m4])
+# Artificially create the doc subdirectory since Automake apparently
+# won't do it itself.
+AC_CONFIG_COMMANDS([doc/.empty])
+
AM_INIT_AUTOMAKE([foreign subdir-objects 1.11])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
[AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
-AC_PREFIX_DEFAULT([])
AC_CANONICAL_HOST
AC_PROG_CPP
AC_PROG_CC
AM_PROG_AS
AM_PROG_CC_C_O
+AX_CHECK_ASCIIDOC([AC_MSG_NOTICE([asciidoc not found, not building html documentation])])
+AX_CHECK_A2X([AC_MSG_NOTICE([a2x not found, not building man pages])])
+
# Disable PIE if enabled by default
AX_APPEND_COMPILE_FLAGS([-no-pie -fno-pie])
diff --git a/doc/Makefrag.am b/doc/Makefrag.am
new file mode 100644
index 00000000..0518f6f1
--- /dev/null
+++ b/doc/Makefrag.am
@@ -0,0 +1,23 @@
+x15_DOCS =
+
+x15_SOURCES += $(x15_DOCS)
+
+if HAVE_ASCIIDOC
+
+html_DATA = $(x15_DOCS:%.9.txt=%.9.html)
+MOSTLYCLEANFILES += $(html_DATA)
+
+html: $(html_DATA)
+.PHONY: html
+
+endif HAVE_ASCIIDOC
+
+if HAVE_A2X
+
+man9_MANS = $(x15_DOCS:%.9.txt=%.9)
+MOSTLYCLEANFILES += $(man9_MANS)
+
+man: $(man9_MANS)
+.PHONY: man
+
+endif HAVE_A2X
diff --git a/tools/m4/ax_check_a2x.m4 b/tools/m4/ax_check_a2x.m4
new file mode 100644
index 00000000..438e2478
--- /dev/null
+++ b/tools/m4/ax_check_a2x.m4
@@ -0,0 +1,5 @@
+AC_DEFUN([AX_CHECK_A2X],
+ [AC_ARG_VAR([A2X], [path to a2x command])
+ AC_CHECK_PROG([A2X], [a2x], [a2x])
+ AS_IF([test x"$A2X" = x], [$1])
+ AM_CONDITIONAL([HAVE_A2X], [test x"$A2X" != x])])
diff --git a/tools/m4/ax_check_asciidoc.m4 b/tools/m4/ax_check_asciidoc.m4
new file mode 100644
index 00000000..5f6132ac
--- /dev/null
+++ b/tools/m4/ax_check_asciidoc.m4
@@ -0,0 +1,5 @@
+AC_DEFUN([AX_CHECK_ASCIIDOC],
+ [AC_ARG_VAR([ASCIIDOC], [path to asciidoc command])
+ AC_CHECK_PROG([ASCIIDOC], [asciidoc], [asciidoc])
+ AS_IF([test x"$ASCIIDOC" = x], [$1])
+ AM_CONDITIONAL([HAVE_ASCIIDOC], [test x"$ASCIIDOC" != x])])