xref: /aosp_15_r20/external/ltp/m4/ltp-docparse.m4 (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1*49cdfc7eSAndroid Build Coastguard Workerdnl SPDX-License-Identifier: GPL-2.0-or-later
2*49cdfc7eSAndroid Build Coastguard Workerdnl Copyright (c) 2020 Petr Vorel <[email protected]>
3*49cdfc7eSAndroid Build Coastguard Worker
4*49cdfc7eSAndroid Build Coastguard WorkerAC_DEFUN([LTP_CHECK_METADATA_GENERATOR_ASCIIDOCTOR], [
5*49cdfc7eSAndroid Build Coastguard Worker	AC_MSG_NOTICE(checking asciidoctor as metadata generator)
6*49cdfc7eSAndroid Build Coastguard Worker	AC_PATH_TOOL(asciidoctor, "asciidoctor")
7*49cdfc7eSAndroid Build Coastguard Worker	metadata_generator_html=$asciidoctor
8*49cdfc7eSAndroid Build Coastguard Worker	# pdf requires both asciidoctor and asciidoctor-pdf
9*49cdfc7eSAndroid Build Coastguard Worker	if test "x$metadata_generator_html" != x; then
10*49cdfc7eSAndroid Build Coastguard Worker		AC_PATH_TOOL(asciidoctor_pdf, "asciidoctor-pdf")
11*49cdfc7eSAndroid Build Coastguard Worker		metadata_generator_pdf=$asciidoctor_pdf
12*49cdfc7eSAndroid Build Coastguard Worker	fi
13*49cdfc7eSAndroid Build Coastguard Worker])
14*49cdfc7eSAndroid Build Coastguard Worker
15*49cdfc7eSAndroid Build Coastguard WorkerAC_DEFUN([LTP_CHECK_METADATA_GENERATOR_ASCIIDOC], [
16*49cdfc7eSAndroid Build Coastguard Worker	AC_MSG_NOTICE(checking asciidoc as metadata generator)
17*49cdfc7eSAndroid Build Coastguard Worker	AC_PATH_TOOL(a2x, "a2x")
18*49cdfc7eSAndroid Build Coastguard Worker	if test "x$a2x" != x; then
19*49cdfc7eSAndroid Build Coastguard Worker		version="`$a2x --version | cut -d ' ' -f2 `"
20*49cdfc7eSAndroid Build Coastguard Worker		AX_COMPARE_VERSION([$version], lt, 9, [
21*49cdfc7eSAndroid Build Coastguard Worker		AC_MSG_WARN([a2x unsupported version: $version. Use a2x >= 9])
22*49cdfc7eSAndroid Build Coastguard Worker		a2x=
23*49cdfc7eSAndroid Build Coastguard Worker		])
24*49cdfc7eSAndroid Build Coastguard Worker	fi
25*49cdfc7eSAndroid Build Coastguard Worker	metadata_generator_html=$a2x
26*49cdfc7eSAndroid Build Coastguard Worker	# pdf requires both asciidoc and dblatex
27*49cdfc7eSAndroid Build Coastguard Worker	if test "x$metadata_generator_html" != x; then
28*49cdfc7eSAndroid Build Coastguard Worker		AC_PATH_TOOL(dblatex, "dblatex")
29*49cdfc7eSAndroid Build Coastguard Worker		metadata_generator_pdf=$dblatex
30*49cdfc7eSAndroid Build Coastguard Worker	fi
31*49cdfc7eSAndroid Build Coastguard Worker])
32*49cdfc7eSAndroid Build Coastguard Worker
33*49cdfc7eSAndroid Build Coastguard WorkerAC_DEFUN([LTP_DOCPARSE], [
34*49cdfc7eSAndroid Build Coastguard Workerwith_metadata=no
35*49cdfc7eSAndroid Build Coastguard Workerwith_metadata_html=no
36*49cdfc7eSAndroid Build Coastguard Workerwith_metadata_pdf=no
37*49cdfc7eSAndroid Build Coastguard Worker
38*49cdfc7eSAndroid Build Coastguard Workerif test "x$enable_metadata" != xyes; then
39*49cdfc7eSAndroid Build Coastguard Worker	enable_metadata_html=no
40*49cdfc7eSAndroid Build Coastguard Worker	enable_metadata_pdf=no
41*49cdfc7eSAndroid Build Coastguard Worker	with_metadata_generator=none
42*49cdfc7eSAndroid Build Coastguard Workerfi
43*49cdfc7eSAndroid Build Coastguard Worker
44*49cdfc7eSAndroid Build Coastguard Workerif test "x$enable_metadata_html" = xyes -o "x$enable_metadata_pdf" = xyes; then
45*49cdfc7eSAndroid Build Coastguard Worker	AX_PROG_PERL_MODULES(Cwd File::Basename JSON LWP::Simple)
46*49cdfc7eSAndroid Build Coastguard Workerfi
47*49cdfc7eSAndroid Build Coastguard Worker
48*49cdfc7eSAndroid Build Coastguard Workerif test "x$ax_perl_modules_failed" = x0; then
49*49cdfc7eSAndroid Build Coastguard Worker	if test "x$with_metadata_generator" = xasciidoctor -o "x$with_metadata_generator" = xdetect; then
50*49cdfc7eSAndroid Build Coastguard Worker		LTP_CHECK_METADATA_GENERATOR_ASCIIDOCTOR
51*49cdfc7eSAndroid Build Coastguard Worker	elif test "x$with_metadata_generator" = xasciidoc; then
52*49cdfc7eSAndroid Build Coastguard Worker		LTP_CHECK_METADATA_GENERATOR_ASCIIDOC
53*49cdfc7eSAndroid Build Coastguard Worker	else
54*49cdfc7eSAndroid Build Coastguard Worker		AC_MSG_ERROR([invalid metadata generator '$with_metadata_generator', use --with-metadata-generator=asciidoc|asciidoctor])
55*49cdfc7eSAndroid Build Coastguard Worker	fi
56*49cdfc7eSAndroid Build Coastguard Worker
57*49cdfc7eSAndroid Build Coastguard Worker	# autodetection: check also Asciidoc
58*49cdfc7eSAndroid Build Coastguard Worker	if test "x$with_metadata_generator" = xdetect; then
59*49cdfc7eSAndroid Build Coastguard Worker		with_metadata_generator='asciidoctor'
60*49cdfc7eSAndroid Build Coastguard Worker		# problems with Asciidoctor: (html enabled && not found) || (pdf enabled && not found) => try Asciidoc
61*49cdfc7eSAndroid Build Coastguard Worker		if test "x$enable_metadata_html" = xyes -a "x$metadata_generator_html" = x ||
62*49cdfc7eSAndroid Build Coastguard Worker			test "x$enable_metadata_pdf" = xyes -a "x$metadata_generator_pdf" = x; then
63*49cdfc7eSAndroid Build Coastguard Worker			backup_html="$metadata_generator_html"
64*49cdfc7eSAndroid Build Coastguard Worker			backup_pdf="$metadata_generator_pdf"
65*49cdfc7eSAndroid Build Coastguard Worker			AC_MSG_NOTICE(missing some dependencies for Asciidoctor => trying Asciidoc)
66*49cdfc7eSAndroid Build Coastguard Worker			with_metadata_generator='asciidoc'
67*49cdfc7eSAndroid Build Coastguard Worker			LTP_CHECK_METADATA_GENERATOR_ASCIIDOC
68*49cdfc7eSAndroid Build Coastguard Worker			# prefer Asciidoctor if it's not worse than Asciidoc
69*49cdfc7eSAndroid Build Coastguard Worker			# (html not enabled || asciidoctor html found || asciidoc html not found) && (pdf ...)
70*49cdfc7eSAndroid Build Coastguard Worker			if test "x$enable_metadata_html" != xyes -o "x$backup_html" != x -o "x$metadata_generator_html" = x &&
71*49cdfc7eSAndroid Build Coastguard Worker				test "x$enable_metadata_pdf" != xyes -o "x$backup_pdf" != x -o "x$metadata_generator_pdf" = x; then
72*49cdfc7eSAndroid Build Coastguard Worker				with_metadata_generator='asciidoctor'
73*49cdfc7eSAndroid Build Coastguard Worker				metadata_generator_html="$backup_html"
74*49cdfc7eSAndroid Build Coastguard Worker				metadata_generator_pdf="$backup_pdf"
75*49cdfc7eSAndroid Build Coastguard Worker			fi
76*49cdfc7eSAndroid Build Coastguard Worker		fi
77*49cdfc7eSAndroid Build Coastguard Worker		if test "x$metadata_generator_html" != x -o "x$metadata_generator_pdf" != x; then
78*49cdfc7eSAndroid Build Coastguard Worker			AC_MSG_NOTICE(choosing $with_metadata_generator for metadata generation)
79*49cdfc7eSAndroid Build Coastguard Worker		fi
80*49cdfc7eSAndroid Build Coastguard Worker	fi
81*49cdfc7eSAndroid Build Coastguard Worker
82*49cdfc7eSAndroid Build Coastguard Worker	if test "x$enable_metadata_html" = xno; then
83*49cdfc7eSAndroid Build Coastguard Worker		AC_MSG_NOTICE(HTML metadata generation disabled)
84*49cdfc7eSAndroid Build Coastguard Worker	elif test "x$metadata_generator_html" != x; then
85*49cdfc7eSAndroid Build Coastguard Worker		with_metadata_html=yes
86*49cdfc7eSAndroid Build Coastguard Worker	fi
87*49cdfc7eSAndroid Build Coastguard Worker
88*49cdfc7eSAndroid Build Coastguard Worker	if test "x$enable_metadata_pdf" = xno; then
89*49cdfc7eSAndroid Build Coastguard Worker		AC_MSG_NOTICE(PDF metadata generation disabled)
90*49cdfc7eSAndroid Build Coastguard Worker	elif test "x$metadata_generator_pdf" != x; then
91*49cdfc7eSAndroid Build Coastguard Worker		with_metadata_pdf=yes
92*49cdfc7eSAndroid Build Coastguard Worker	fi
93*49cdfc7eSAndroid Build Coastguard Workerfi
94*49cdfc7eSAndroid Build Coastguard Worker
95*49cdfc7eSAndroid Build Coastguard Workerreason="metadata generation skipped due missing suitable generator"
96*49cdfc7eSAndroid Build Coastguard Workerhint="specify correct generator with --with-metadata-generator=asciidoc|asciidoctor or use --disable-metadata|--disable-metadata-html|--disable-metadata-pdf"
97*49cdfc7eSAndroid Build Coastguard Worker
98*49cdfc7eSAndroid Build Coastguard Workerif test -z "$ax_perl_modules_failed"; then
99*49cdfc7eSAndroid Build Coastguard Worker	AC_MSG_NOTICE(metadata generation disabled)
100*49cdfc7eSAndroid Build Coastguard Workerelif test "x$ax_perl_modules_failed" = x1; then
101*49cdfc7eSAndroid Build Coastguard Worker	AC_MSG_WARN(metadata generation skipped due missing required Perl modules)
102*49cdfc7eSAndroid Build Coastguard Workerelif test "x$with_metadata_html" = xno -a "x$with_metadata_pdf" = xno; then
103*49cdfc7eSAndroid Build Coastguard Worker	AC_MSG_WARN([$reason, $hint])
104*49cdfc7eSAndroid Build Coastguard Workerelse
105*49cdfc7eSAndroid Build Coastguard Worker	with_metadata=yes
106*49cdfc7eSAndroid Build Coastguard Worker	AC_SUBST(METADATA_GENERATOR, $with_metadata_generator)
107*49cdfc7eSAndroid Build Coastguard Worker	if test "x$with_metadata_html" = xno -a "x$enable_metadata_html" = xyes; then
108*49cdfc7eSAndroid Build Coastguard Worker		AC_MSG_WARN([HTML $reason, $hint])
109*49cdfc7eSAndroid Build Coastguard Worker	fi
110*49cdfc7eSAndroid Build Coastguard Worker	if test "x$with_metadata_pdf" = xno -a "x$enable_metadata_pdf" = xyes; then
111*49cdfc7eSAndroid Build Coastguard Worker		AC_MSG_WARN([PDF $reason, $hint])
112*49cdfc7eSAndroid Build Coastguard Worker	fi
113*49cdfc7eSAndroid Build Coastguard Workerfi
114*49cdfc7eSAndroid Build Coastguard Worker
115*49cdfc7eSAndroid Build Coastguard WorkerAC_SUBST(WITH_METADATA, $with_metadata)
116*49cdfc7eSAndroid Build Coastguard WorkerAC_SUBST(WITH_METADATA_HTML, $with_metadata_html)
117*49cdfc7eSAndroid Build Coastguard WorkerAC_SUBST(WITH_METADATA_PDF, $with_metadata_pdf)
118*49cdfc7eSAndroid Build Coastguard Worker])
119