build manuals included from osmo-gsm-manuals.git

Moved to doc/manuals/, with full commit history, in preceding merge commit.
Now incorporate in local the build system.

Build with:

$ autoreconf -fi
$ ./configure --enable-manuals
$ make

Shared files from osmo-gsm-manuals.git are found automatically if
- the repository is checked out in ../osmo-gsm-manuals; or
- if it osmo-gsm-manuals was installed with "make install"; or
- OSMO_GSM_MANUALS_DIR is set.

Related: OS#3385
Change-Id: I92c0f771d4ffc2b0401d26e25cb0b3817e6f95ea
diff --git a/.gitignore b/.gitignore
index 5a09016..ea828b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -72,3 +72,14 @@
 tests/testsuite.log
 
 writtenconfig/
+
+# manuals
+doc/manuals/*.html
+doc/manuals/*.svg
+doc/manuals/*.pdf
+doc/manuals/*__*.png
+doc/manuals/*.check
+doc/manuals/generated/
+doc/manuals/osmomsc-usermanual.xml
+doc/manuals/common
+doc/manuals/build
diff --git a/configure.ac b/configure.ac
index c6fa9a1..eafe4d6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -157,6 +157,48 @@
 AC_MSG_RESULT([$enable_ext_tests])
 AM_CONDITIONAL(ENABLE_EXT_TESTS, test "x$enable_ext_tests" = "xyes")
 
+# Generate manuals
+AC_ARG_ENABLE(manuals,
+	[AS_HELP_STRING(
+		[--enable-manuals],
+		[Generate manual PDFs [default=no]],
+	)],
+	[osmo_ac_build_manuals=$enableval], [osmo_ac_build_manuals="no"])
+AM_CONDITIONAL([BUILD_MANUALS], [test x"$osmo_ac_build_manuals" = x"yes"])
+AC_ARG_VAR(OSMO_GSM_MANUALS_DIR, [path to common osmo-gsm-manuals files, overriding pkg-config and "../osmo-gsm-manuals"
+	fallback])
+if test x"$osmo_ac_build_manuals" = x"yes"
+then
+	# Find OSMO_GSM_MANUALS_DIR (env, pkg-conf, fallback)
+	if test -n "$OSMO_GSM_MANUALS_DIR"; then
+		echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from env)"
+	else
+		OSMO_GSM_MANUALS_DIR="$($PKG_CONFIG osmo-gsm-manuals --variable=osmogsmmanualsdir 2>/dev/null)"
+		if test -n "$OSMO_GSM_MANUALS_DIR"; then
+			echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from pkg-conf)"
+		else
+			OSMO_GSM_MANUALS_DIR="../osmo-gsm-manuals"
+			echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (fallback)"
+		fi
+	fi
+	if ! test -d "$OSMO_GSM_MANUALS_DIR"; then
+		AC_MSG_ERROR("OSMO_GSM_MANUALS_DIR does not exist! Install osmo-gsm-manuals or set OSMO_GSM_MANUALS_DIR.")
+	fi
+
+	# Find and run check-depends
+	CHECK_DEPENDS="$OSMO_GSM_MANUALS_DIR/check-depends.sh"
+	if ! test -x "$CHECK_DEPENDS"; then
+		CHECK_DEPENDS="osmo-gsm-manuals-check-depends"
+	fi
+	if ! $CHECK_DEPENDS; then
+		AC_MSG_ERROR("missing dependencies for --enable-manuals")
+	fi
+
+	# Put in Makefile with absolute path
+	OSMO_GSM_MANUALS_DIR="$(realpath "$OSMO_GSM_MANUALS_DIR")"
+	AC_SUBST([OSMO_GSM_MANUALS_DIR])
+fi
+
 # https://www.freedesktop.org/software/systemd/man/daemon.html
 AC_ARG_WITH([systemdsystemunitdir],
      [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],,
@@ -199,6 +241,7 @@
     tests/handover/Makefile
     doc/Makefile
     doc/examples/Makefile
+    doc/manuals/Makefile
     contrib/Makefile
     contrib/systemd/Makefile
     Makefile)
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 9b87bf3..d3a04c6 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,5 +1,6 @@
 SUBDIRS = \
 	examples \
+	manuals \
 	$(NULL)
 
 msc: \
diff --git a/doc/manuals/Makefile b/doc/manuals/Makefile
deleted file mode 100644
index b9f50d0..0000000
--- a/doc/manuals/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-TOPDIR = ..
-
-ASCIIDOC = osmobsc-usermanual.adoc osmux-reference.adoc aoip-mgw-options.adoc
-include $(TOPDIR)/build/Makefile.asciidoc.inc
-osmobsc-usermanual.pdf: chapters/*.adoc chapters/*.dot
-aoip-mgw-options.pdf: aoip-mgw-options.adoc mgw/*.msc
-
-VTY_REFERENCE = osmobsc-vty-reference.xml
-include $(TOPDIR)/build/Makefile.vty-reference.inc
-
-include $(TOPDIR)/build/Makefile.common.inc
diff --git a/doc/manuals/Makefile.am b/doc/manuals/Makefile.am
new file mode 100644
index 0000000..482c1ab
--- /dev/null
+++ b/doc/manuals/Makefile.am
@@ -0,0 +1,24 @@
+EXTRA_DIST = aoip-mgw-options.adoc \
+    aoip-mgw-options-docinfo.xml \
+    osmobsc-usermanual.adoc \
+    osmobsc-usermanual-docinfo.xml \
+    osmobsc-vty-reference.xml \
+    osmux-reference.adoc \
+    osmux-reference-docinfo.xml \
+    chapters \
+    message-sequences \
+    mgw \
+    om2000 \
+    vty
+
+if BUILD_MANUALS
+  ASCIIDOC = osmobsc-usermanual.adoc osmux-reference.adoc aoip-mgw-options.adoc
+  include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.asciidoc.inc
+  osmobsc-usermanual.pdf: $(srcdir)/chapters/*.adoc $(srcdir)/chapters/*.dot
+  aoip-mgw-options.pdf: $(srcdir)/aoip-mgw-options.adoc $(srcdir)/mgw/*.msc
+
+  VTY_REFERENCE = osmobsc-vty-reference.xml
+  include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.vty-reference.inc
+
+  include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.common.inc
+endif
diff --git a/doc/manuals/aoip-mgw-options.adoc b/doc/manuals/aoip-mgw-options.adoc
index 8ce3b91..f693093 100644
--- a/doc/manuals/aoip-mgw-options.adoc
+++ b/doc/manuals/aoip-mgw-options.adoc
@@ -29,7 +29,7 @@
 
 [mscgen]
 ----
-include::mgw/classic-bsc.msc[]
+include::{srcdir}/mgw/classic-bsc.msc[]
 ----
 
 === OsmoBSC 2010-2017: IPA-style A over SCCPlite
@@ -43,7 +43,7 @@
 
 [mscgen]
 ----
-include::mgw/osmo-bsc-old-sccplite.msc[]
+include::{srcdir}/mgw/osmo-bsc-old-sccplite.msc[]
 ----
 
 
@@ -61,7 +61,7 @@
 
 [mscgen]
 ----
-include::mgw/osmo-bsc-new-mgw.msc[]
+include::{srcdir}/mgw/osmo-bsc-new-mgw.msc[]
 ----
 
 
@@ -73,5 +73,5 @@
 
 [mscgen]
 ----
-include::mgw/osmo-bsc-new-mgw-e1.msc[]
+include::{srcdir}/mgw/osmo-bsc-new-mgw-e1.msc[]
 ----
diff --git a/doc/manuals/osmobsc-usermanual.adoc b/doc/manuals/osmobsc-usermanual.adoc
index 1984678..eec77d7 100644
--- a/doc/manuals/osmobsc-usermanual.adoc
+++ b/doc/manuals/osmobsc-usermanual.adoc
@@ -5,39 +5,39 @@
 Harald Welte <hwelte@sysmocom.de>
 
 
-include::../common/chapters/preface.adoc[]
+include::./common/chapters/preface.adoc[]
 
-include::chapters/overview.adoc[]
+include::{srcdir}/chapters/overview.adoc[]
 
-include::chapters/running.adoc[]
+include::{srcdir}/chapters/running.adoc[]
 
-include::chapters/control.adoc[]
+include::{srcdir}/chapters/control.adoc[]
 
-include::chapters/counters.adoc[]
+include::{srcdir}/chapters/counters.adoc[]
 
-include::chapters/handover.adoc[]
+include::{srcdir}/chapters/handover.adoc[]
 
-include::../common/chapters/vty.adoc[]
+include::./common/chapters/vty.adoc[]
 
-include::../common/chapters/logging.adoc[]
+include::./common/chapters/logging.adoc[]
 
-include::../common/chapters/bts.adoc[]
+include::./common/chapters/bts.adoc[]
 
 include::{srcdir}/chapters/bts-examples.adoc[]
 
-include::../common/chapters/bsc.adoc[]
+include::./common/chapters/bsc.adoc[]
 
-include::../common/chapters/abis.adoc[]
+include::./common/chapters/abis.adoc[]
 
-include::../common/chapters/control_if.adoc[]
+include::./common/chapters/control_if.adoc[]
 
-include::../common/chapters/cell-broadcast.adoc[]
+include::./common/chapters/cell-broadcast.adoc[]
 
-include::../common/chapters/port_numbers.adoc[]
+include::./common/chapters/port_numbers.adoc[]
 
-include::../common/chapters/bibliography.adoc[]
+include::./common/chapters/bibliography.adoc[]
 
-include::../common/chapters/glossary.adoc[]
+include::./common/chapters/glossary.adoc[]
 
-include::../common/chapters/gfdl.adoc[]
+include::./common/chapters/gfdl.adoc[]
 
diff --git a/doc/manuals/osmobsc-vty-reference.xml b/doc/manuals/osmobsc-vty-reference.xml
index 6d993b4..f51e56e 100644
--- a/doc/manuals/osmobsc-vty-reference.xml
+++ b/doc/manuals/osmobsc-vty-reference.xml
@@ -5,7 +5,7 @@
 -->
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML 5.0//EN"
 "http://docbook.org/xml/5.0/dtd/docbook.dtd" [
-<!ENTITY chapter-vty      SYSTEM      "../common/chapters/vty.xml" >
+<!ENTITY chapter-vty      SYSTEM      "./common/chapters/vty.xml" >
 <!ENTITY sections-vty     SYSTEM      "generated/docbook_vty.xml"  >
 ]>