blob: 5175487bb4b3c681bd777a7c71bed45f21dea6e3 [file] [log] [blame]
Elliott Hughes72472942018-01-10 08:36:10 -08001dnl configuration script for expat
2dnl Process this file with autoconf to produce a configure script.
Elliott Hughes33bf9752021-08-10 17:33:34 -07003dnl __ __ _
4dnl ___\ \/ /_ __ __ _| |_
5dnl / _ \\ /| '_ \ / _` | __|
6dnl | __// \| |_) | (_| | |_
7dnl \___/_/\_\ .__/ \__,_|\__|
8dnl |_| XML parser
Elliott Hughes72472942018-01-10 08:36:10 -08009dnl
Elliott Hughes33bf9752021-08-10 17:33:34 -070010dnl Copyright (c) 2000 Clark Cooper <coopercc@users.sourceforge.net>
11dnl Copyright (c) 2000-2005 Fred L. Drake, Jr. <fdrake@users.sourceforge.net>
12dnl Copyright (c) 2001-2003 Greg Stein <gstein@users.sourceforge.net>
13dnl Copyright (c) 2006-2012 Karl Waclawek <karl@waclawek.net>
Elliott Hughesf898dc22022-02-23 17:34:51 -080014dnl Copyright (c) 2016-2022 Sebastian Pipping <sebastian@pipping.org>
Elliott Hughes33bf9752021-08-10 17:33:34 -070015dnl Copyright (c) 2017 S. P. Zeidler <spz@netbsd.org>
16dnl Copyright (c) 2017 Stephen Groat <stephen@groat.us>
17dnl Copyright (c) 2017-2020 Joe Orton <jorton@redhat.com>
18dnl Copyright (c) 2018 Yury Gribov <tetra2005@gmail.com>
19dnl Copyright (c) 2018 Benjamin Peterson <benjamin@python.org>
20dnl Copyright (c) 2018 Marco Maggi <marco.maggi-ipsu@poste.it>
21dnl Copyright (c) 2018 KangLin <kl222@126.com>
22dnl Copyright (c) 2019 Mohammed Khajapasha <mohammed.khajapasha@intel.com>
23dnl Copyright (c) 2019 Kishore Kunche <kishore.kunche@intel.com>
24dnl Copyright (c) 2020 Jeffrey Walton <noloader@gmail.com>
25dnl Licensed under the MIT license:
Elliott Hughes72472942018-01-10 08:36:10 -080026dnl
Elliott Hughes33bf9752021-08-10 17:33:34 -070027dnl Permission is hereby granted, free of charge, to any person obtaining
28dnl a copy of this software and associated documentation files (the
29dnl "Software"), to deal in the Software without restriction, including
30dnl without limitation the rights to use, copy, modify, merge, publish,
31dnl distribute, sublicense, and/or sell copies of the Software, and to permit
32dnl persons to whom the Software is furnished to do so, subject to the
33dnl following conditions:
Elliott Hughes72472942018-01-10 08:36:10 -080034dnl
Elliott Hughes33bf9752021-08-10 17:33:34 -070035dnl The above copyright notice and this permission notice shall be included
36dnl in all copies or substantial portions of the Software.
Elliott Hughes72472942018-01-10 08:36:10 -080037dnl
Elliott Hughes33bf9752021-08-10 17:33:34 -070038dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
39dnl EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
40dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
41dnl NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
42dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
43dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
44dnl USE OR OTHER DEALINGS IN THE SOFTWARE.
Elliott Hughes72472942018-01-10 08:36:10 -080045
Haibo Huangfd5e81a2019-06-20 12:09:36 -070046dnl Ensure that Expat is configured with autoconf 2.69 or newer.
Elliott Hughesf648a292021-04-01 15:10:13 -070047AC_PREREQ([2.69])
Elliott Hughes72472942018-01-10 08:36:10 -080048
49dnl Get the version number of Expat, using m4's esyscmd() command to run
50dnl the command at m4-generation time. This allows us to create an m4
Elliott Hughesf648a292021-04-01 15:10:13 -070051dnl symbol holding the correct version number. AC_INIT requires the
Elliott Hughes72472942018-01-10 08:36:10 -080052dnl version number at m4-time, rather than when ./configure is run, so
53dnl all this must happen as part of m4, not as part of the shell code
54dnl contained in ./configure.
55dnl
56dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an appropriate
57dnl test. I believe this test will work, but I don't have a place with non-
58dnl GNU M4 to test it right now.
Haibo Huangfd5e81a2019-06-20 12:09:36 -070059m4_define([expat_version],
60 m4_ifdef([__gnu__],
61 [esyscmd(conftools/get-version.sh lib/expat.h)],
62 [2.2.x]))
Elliott Hughesf648a292021-04-01 15:10:13 -070063AC_INIT([expat], expat_version, [expat-bugs@libexpat.org])
Haibo Huangfd5e81a2019-06-20 12:09:36 -070064m4_undefine([expat_version])
Elliott Hughes72472942018-01-10 08:36:10 -080065
Haibo Huangfd5e81a2019-06-20 12:09:36 -070066AC_CONFIG_SRCDIR([Makefile.in])
67AC_CONFIG_AUX_DIR([conftools])
Elliott Hughes72472942018-01-10 08:36:10 -080068AC_CONFIG_MACRO_DIR([m4])
Haibo Huang40a71912019-10-11 11:13:39 -070069AC_CANONICAL_HOST
Haibo Huangfd5e81a2019-06-20 12:09:36 -070070AM_INIT_AUTOMAKE
Elliott Hughes72472942018-01-10 08:36:10 -080071
72
73dnl
74dnl Increment LIBREVISION if source code has changed at all
75dnl
76dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0
77dnl
78dnl If the API changes compatibly (i.e. simply adding a new function
79dnl without changing or removing earlier interfaces), then increment LIBAGE.
Haibo Huangfd5e81a2019-06-20 12:09:36 -070080dnl
Elliott Hughes72472942018-01-10 08:36:10 -080081dnl If the API changes incompatibly set LIBAGE back to 0
82dnl
83
Elliott Hughes33bf9752021-08-10 17:33:34 -070084LIBCURRENT=9 # sync
Elliott Hughesf898dc22022-02-23 17:34:51 -080085LIBREVISION=6 # with
Elliott Hughes33bf9752021-08-10 17:33:34 -070086LIBAGE=8 # CMakeLists.txt!
Elliott Hughes72472942018-01-10 08:36:10 -080087
Elliott Hughesf648a292021-04-01 15:10:13 -070088AC_CONFIG_HEADERS([expat_config.h])
Elliott Hughes72472942018-01-10 08:36:10 -080089
Haibo Huangfd5e81a2019-06-20 12:09:36 -070090AM_PROG_AR
91AC_PROG_INSTALL
92AC_PROG_LN_S
93AC_PROG_MAKE_SET
Elliott Hughes72472942018-01-10 08:36:10 -080094
Haibo Huangfd5e81a2019-06-20 12:09:36 -070095LT_PREREQ([2.4])
96LT_INIT([win32-dll])
Elliott Hughes72472942018-01-10 08:36:10 -080097
98AC_SUBST(LIBCURRENT)
99AC_SUBST(LIBREVISION)
100AC_SUBST(LIBAGE)
101
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700102AC_LANG([C])
Elliott Hughes72472942018-01-10 08:36:10 -0800103AC_PROG_CC_C99
Haibo Huangd1a324a2020-10-28 22:19:36 -0700104
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700105AS_IF([test "$GCC" = yes],
Haibo Huangd1a324a2020-10-28 22:19:36 -0700106 [AX_APPEND_COMPILE_FLAGS([-Wall -Wextra], [AM_CFLAGS])
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700107 dnl Be careful about adding the -fexceptions option; some versions of
108 dnl GCC don't support it and it causes extra warnings that are only
109 dnl distracting; avoid.
Haibo Huangd1a324a2020-10-28 22:19:36 -0700110 AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CFLAGS])
111 AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes], [AM_CFLAGS])
112 AX_APPEND_COMPILE_FLAGS([-pedantic -Wduplicated-cond -Wduplicated-branches -Wlogical-op], [AM_CFLAGS])
113 AX_APPEND_COMPILE_FLAGS([-Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion], [AM_CFLAGS])
Elliott Hughes33bf9752021-08-10 17:33:34 -0700114 AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wno-pedantic-ms-format -Wmisleading-indentation], [AM_CFLAGS])])
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700115
116AC_LANG_PUSH([C++])
Elliott Hughes72472942018-01-10 08:36:10 -0800117AC_PROG_CXX
Haibo Huangd1a324a2020-10-28 22:19:36 -0700118
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700119AS_IF([test "$GCC" = yes],
Haibo Huangd1a324a2020-10-28 22:19:36 -0700120 [AX_APPEND_COMPILE_FLAGS([-Wall -Wextra], [AM_CXXFLAGS])
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700121 dnl Be careful about adding the -fexceptions option; some versions of
122 dnl GCC don't support it and it causes extra warnings that are only
123 dnl distracting; avoid.
Haibo Huangd1a324a2020-10-28 22:19:36 -0700124 AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CXXFLAGS])
125 AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [AM_CXXFLAGS])])
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700126AC_LANG_POP([C++])
Elliott Hughes72472942018-01-10 08:36:10 -0800127
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700128AS_IF([test "$GCC" = yes],
Haibo Huangd1a324a2020-10-28 22:19:36 -0700129 [AX_APPEND_LINK_FLAGS([-fno-strict-aliasing],[AM_LDFLAGS])])
Elliott Hughes72472942018-01-10 08:36:10 -0800130
Haibo Huang40a71912019-10-11 11:13:39 -0700131dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang (issue #312)
132AS_CASE(["$LD"],[*clang*],
133 [AS_CASE(["${host_os}"],
134 [*linux*],[archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'])])
135
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700136EXPATCFG_COMPILER_SUPPORTS_VISIBILITY([
Haibo Huangd1a324a2020-10-28 22:19:36 -0700137 AX_APPEND_FLAG([-fvisibility=hidden], [AM_CFLAGS])
138 AX_APPEND_FLAG([-DXML_ENABLE_VISIBILITY=1], [AM_CPPFLAGS])])
Elliott Hughes72472942018-01-10 08:36:10 -0800139
Elliott Hughes72472942018-01-10 08:36:10 -0800140dnl Checks for typedefs, structures, and compiler characteristics.
141
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700142dnl We define BYTEORDER to 1234 when the platform is little endian; it
143dnl defines it to 4321 when the platform is big endian. We also define
144dnl WORDS_BIGENDIAN to 1 when the platform is big endian.
145dnl
146dnl A long time ago (early 2000 years) AC_C_BIGENDIAN was considered
147dnl wrong when cross compiling, now (2018, GNU Autoconf 2.69) we assume
148dnl it is fine.
149AC_C_BIGENDIAN([AC_DEFINE([WORDS_BIGENDIAN], 1)
150 AS_VAR_SET([BYTEORDER], 4321)],
151 [AS_VAR_SET([BYTEORDER], 1234)])
152AC_DEFINE_UNQUOTED([BYTEORDER], $BYTEORDER, [1234 = LILENDIAN, 4321 = BIGENDIAN])
Elliott Hughes72472942018-01-10 08:36:10 -0800153
154AC_C_CONST
155AC_TYPE_SIZE_T
Elliott Hughes72472942018-01-10 08:36:10 -0800156
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700157AC_ARG_WITH([xmlwf],
Haibo Huang40a71912019-10-11 11:13:39 -0700158 [AS_HELP_STRING([--without-xmlwf], [do not build xmlwf])],
159 [],
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700160 [with_xmlwf=yes])
Elliott Hughes72472942018-01-10 08:36:10 -0800161AM_CONDITIONAL([WITH_XMLWF], [test x${with_xmlwf} = xyes])
162
Haibo Huang40a71912019-10-11 11:13:39 -0700163AC_ARG_WITH([examples],
164 [AS_HELP_STRING([--without-examples], [do not build examples @<:@default=included@:>@])],
165 [],
166 [with_examples=yes])
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700167AM_CONDITIONAL([WITH_EXAMPLES], [test x${with_examples} = xyes])
168
Haibo Huang40a71912019-10-11 11:13:39 -0700169AC_ARG_WITH([tests],
170 [AS_HELP_STRING([--without-tests], [do not build tests @<:@default=included@:>@])],
171 [],
172 [with_tests=yes])
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700173AM_CONDITIONAL([WITH_TESTS], [test x${with_tests} = xyes])
174
Haibo Huang40a71912019-10-11 11:13:39 -0700175
176AS_VAR_SET([EXPATCFG_ON_MINGW],[no])
177AS_CASE("${host_os}",
178 [mingw*],
179 [AS_VAR_SET([EXPATCFG_ON_MINGW],[yes])
180 AC_MSG_NOTICE([detected OS: MinGW])])
181AM_CONDITIONAL([MINGW], [test x${EXPATCFG_ON_MINGW} = xyes])
182
Elliott Hughesf648a292021-04-01 15:10:13 -0700183dnl Note: Prefix "_INTERNAL_" here means exclusive use inside of file configure.ac
Elliott Hughesaaec48e2018-08-16 16:29:01 -0700184AM_CONDITIONAL([UNICODE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE >/dev/null])
Elliott Hughesf648a292021-04-01 15:10:13 -0700185AM_CONDITIONAL([_INTERNAL_UNICODE_WCHAR_T], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE_WCHAR_T >/dev/null])
186AM_CONDITIONAL([_INTERNAL_MIN_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_MIN_SIZE >/dev/null])
187AM_CONDITIONAL([_INTERNAL_LARGE_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_LARGE_SIZE >/dev/null])
Elliott Hughes72472942018-01-10 08:36:10 -0800188
Elliott Hughesf898dc22022-02-23 17:34:51 -0800189LT_LIB_M
Elliott Hughes72472942018-01-10 08:36:10 -0800190
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700191AC_ARG_WITH([libbsd],
192 [AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])],
193 [],
194 [with_libbsd=no])
195AS_IF([test "x${with_libbsd}" != xno],
196 [AC_CHECK_LIB([bsd],
197 [arc4random_buf],
198 [],
199 [AS_IF([test "x${with_libbsd}" = xyes],
Haibo Huang40a71912019-10-11 11:13:39 -0700200 [AC_MSG_ERROR([Enforced use of libbsd cannot be satisfied.])])])])
Elliott Hughes72472942018-01-10 08:36:10 -0800201AC_MSG_CHECKING([for arc4random_buf (BSD or libbsd)])
202AC_LINK_IFELSE([AC_LANG_SOURCE([
Haibo Huang40a71912019-10-11 11:13:39 -0700203 #include <stdlib.h> /* for arc4random_buf on BSD, for NULL */
204 #if defined(HAVE_LIBBSD)
205 # include <bsd/stdlib.h>
206 #endif
207 int main() {
208 arc4random_buf(NULL, 0U);
209 return 0;
210 }
211 ])],
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700212 [AC_DEFINE([HAVE_ARC4RANDOM_BUF], [1], [Define to 1 if you have the `arc4random_buf' function.])
213 AC_MSG_RESULT([yes])],
214 [AC_MSG_RESULT([no])
Elliott Hughes72472942018-01-10 08:36:10 -0800215
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700216 AC_MSG_CHECKING([for arc4random (BSD, macOS or libbsd)])
217 AC_LINK_IFELSE([AC_LANG_SOURCE([
Haibo Huang40a71912019-10-11 11:13:39 -0700218 #if defined(HAVE_LIBBSD)
219 # include <bsd/stdlib.h>
220 #else
221 # include <stdlib.h>
222 #endif
223 int main() {
Elliott Hughes72472942018-01-10 08:36:10 -0800224 arc4random();
225 return 0;
Haibo Huang40a71912019-10-11 11:13:39 -0700226 }
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700227 ])],
228 [AC_DEFINE([HAVE_ARC4RANDOM], [1], [Define to 1 if you have the `arc4random' function.])
229 AC_MSG_RESULT([yes])],
230 [AC_MSG_RESULT([no])])])
Elliott Hughes72472942018-01-10 08:36:10 -0800231
Haibo Huang40a71912019-10-11 11:13:39 -0700232AC_ARG_WITH([getrandom],
233 [AS_HELP_STRING([--with-getrandom],
234 [enforce the use of getrandom function in the system @<:@default=check@:>@])
235AS_HELP_STRING([--without-getrandom],
236 [skip auto detect of getrandom @<:@default=check@:>@])],
237 [],
238 [with_getrandom=check])
Elliott Hughes72472942018-01-10 08:36:10 -0800239
Haibo Huang40a71912019-10-11 11:13:39 -0700240AS_IF([test "x$with_getrandom" != xno],
241 [AC_MSG_CHECKING([for getrandom (Linux 3.17+, glibc 2.25+)])
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700242 AC_LINK_IFELSE([AC_LANG_SOURCE([
Haibo Huang40a71912019-10-11 11:13:39 -0700243 #include <stdlib.h> /* for NULL */
244 #include <sys/random.h>
245 int main() {
246 return getrandom(NULL, 0U, 0U);
247 }
248 ])],
249 [AC_DEFINE([HAVE_GETRANDOM], [1], [Define to 1 if you have the `getrandom' function.])
250 AC_MSG_RESULT([yes])],
251 [AC_MSG_RESULT([no])
252 AS_IF([test "x$with_getrandom" = xyes],
253 [AC_MSG_ERROR([enforced the use of getrandom --with-getrandom, but not detected])])])])
Elliott Hughes72472942018-01-10 08:36:10 -0800254
Haibo Huang40a71912019-10-11 11:13:39 -0700255AC_ARG_WITH([sys_getrandom],
256 [AS_HELP_STRING([--with-sys-getrandom],
257 [enforce the use of syscall SYS_getrandom function in the system @<:@default=check@:>@])
258AS_HELP_STRING([--without-sys-getrandom],
259 [skip auto detect of syscall SYS_getrandom @<:@default=check@:>@])],
260 [],
261 [with_sys_getrandom=check])
262
263AS_IF([test "x$with_sys_getrandom" != xno],
264 [AC_MSG_CHECKING([for syscall SYS_getrandom (Linux 3.17+)])
265 AC_LINK_IFELSE([AC_LANG_SOURCE([
266 #include <stdlib.h> /* for NULL */
267 #include <unistd.h> /* for syscall */
268 #include <sys/syscall.h> /* for SYS_getrandom */
269 int main() {
270 syscall(SYS_getrandom, NULL, 0, 0);
271 return 0;
272 }
273 ])],
274 [AC_DEFINE([HAVE_SYSCALL_GETRANDOM], [1], [Define to 1 if you have `syscall' and `SYS_getrandom'.])
275 AC_MSG_RESULT([yes])],
276 [AC_MSG_RESULT([no])
277 AS_IF([test "x$with_sys_getrandom" = xyes],
278 [AC_MSG_ERROR([enforced the use of syscall SYS_getrandom --with-sys-getrandom, but not detected])])])])
Elliott Hughes72472942018-01-10 08:36:10 -0800279
280dnl Only needed for xmlwf:
281AC_CHECK_HEADERS(fcntl.h unistd.h)
282AC_TYPE_OFF_T
283AC_FUNC_MMAP
284
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700285AS_IF([test "$ac_cv_func_mmap_fixed_mapped" = "yes"],
286 [AS_VAR_SET(FILEMAP,unixfilemap)],
287 [AS_VAR_SET(FILEMAP,readfilemap)])
Elliott Hughes72472942018-01-10 08:36:10 -0800288AC_SUBST(FILEMAP)
289
290
291dnl Some basic configuration:
292AC_DEFINE([XML_NS], 1,
293 [Define to make XML Namespaces functionality available.])
294AC_DEFINE([XML_DTD], 1,
295 [Define to make parameter entity parsing functionality available.])
296AC_DEFINE([XML_DEV_URANDOM], 1,
297 [Define to include code reading entropy from `/dev/urandom'.])
298
Haibo Huang40a71912019-10-11 11:13:39 -0700299AC_ARG_ENABLE([xml-attr-info],
300 [AS_HELP_STRING([--enable-xml-attr-info],
301 [Enable retrieving the byte offsets for attribute names and values @<:@default=no@:>@])],
302 [],
303 [enable_xml_attr_info=no])
304AS_IF([test "x${enable_xml_attr_info}" = "xyes"],
305 [AC_DEFINE([XML_ATTR_INFO], 1,
306 [Define to allow retrieving the byte offsets for attribute names and values.])])
307
Elliott Hughes72472942018-01-10 08:36:10 -0800308AC_ARG_ENABLE([xml-context],
309 AS_HELP_STRING([--enable-xml-context @<:@COUNT@:>@],
310 [Retain context around the current parse point;
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700311 default is enabled and a size of 1024 bytes])
Elliott Hughes72472942018-01-10 08:36:10 -0800312AS_HELP_STRING([--disable-xml-context],
313 [Do not retain context around the current parse point]),
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700314 [enable_xml_context=${enableval}])
315AS_IF([test "x${enable_xml_context}" != "xno"],
316 [AS_IF([test "x${enable_xml_context}" = "xyes" \
317 -o "x${enable_xml_context}" = "x"],
318 [AS_VAR_SET(enable_xml_context,1024)])
319 AC_DEFINE_UNQUOTED([XML_CONTEXT_BYTES], [${enable_xml_context}],
320 [Define to specify how much context to retain around the current parse point.])])
Elliott Hughes72472942018-01-10 08:36:10 -0800321
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700322AC_ARG_WITH([docbook],
323 [AS_HELP_STRING([--with-docbook],
324 [enforce XML to man page compilation @<:@default=check@:>@])
Elliott Hughes72472942018-01-10 08:36:10 -0800325AS_HELP_STRING([--without-docbook],
Haibo Huang40a71912019-10-11 11:13:39 -0700326 [skip XML to man page compilation @<:@default=check@:>@])],
327 [],
328 [with_docbook=check])
Elliott Hughes72472942018-01-10 08:36:10 -0800329
330AC_ARG_VAR([DOCBOOK_TO_MAN], [docbook2x-man command])
331AS_IF([test "x$with_docbook" != xno],
Elliott Hughesaaec48e2018-08-16 16:29:01 -0700332 [AC_CHECK_PROGS([DOCBOOK_TO_MAN], [docbook2x-man db2x_docbook2man docbook2man docbook-to-man])])
333AS_IF([test "x${DOCBOOK_TO_MAN}" = x -a "x$with_docbook" = xyes],
334 [AC_MSG_ERROR([Required program 'docbook2x-man' not found.])])
335AS_IF([test "x${DOCBOOK_TO_MAN}" != x -a "x$with_docbook" != xno],
336 [AS_IF([${DOCBOOK_TO_MAN} --help | grep -i -q -F sgmlbase],
337 [AC_MSG_ERROR([Your local ${DOCBOOK_TO_MAN} was found to work with SGML rather
338 than XML. Please install docbook2X and use variable DOCBOOK_TO_MAN to point
339 configure to command docbook2x-man of docbook2X.
340 Or use DOCBOOK_TO_MAN="xmlto man --skip-validation" if you have xmlto around.
341 You can also configure using --without-docbook if you can do without a man
342 page for xmlwf.])])])
Elliott Hughes72472942018-01-10 08:36:10 -0800343
Elliott Hughesaaec48e2018-08-16 16:29:01 -0700344AM_CONDITIONAL(WITH_DOCBOOK, [test "x${DOCBOOK_TO_MAN}" != x])
Elliott Hughes72472942018-01-10 08:36:10 -0800345
Elliott Hughesf648a292021-04-01 15:10:13 -0700346
347dnl Configure CMake file templates
348dnl NOTE: The *_TRUE variables read here are Automake conditionals
349dnl that are either set to "" when enabled or to "#" when disabled
350dnl (because they are used to dynamically comment out certain things)
351AS_IF([test "x${enable_xml_attr_info}" = xyes],
352 [EXPAT_ATTR_INFO=ON],
353 [EXPAT_ATTR_INFO=OFF])
354EXPAT_DTD=ON
355AS_IF([test "x${_INTERNAL_LARGE_SIZE_TRUE}" = x],
356 [EXPAT_LARGE_SIZE=ON],
357 [EXPAT_LARGE_SIZE=OFF])
358AS_IF([test "x${_INTERNAL_MIN_SIZE_TRUE}" = x],
359 [EXPAT_MIN_SIZE=ON],
360 [EXPAT_MIN_SIZE=OFF])
361EXPAT_NS=ON
362AS_IF([test "x${enable_xml_context}" != xno],
363 [EXPAT_CONTEXT_BYTES=${enable_xml_context}],
364 [EXPAT_CONTEXT_BYTES=OFF])
365AS_IF([test "x${UNICODE_TRUE}" = x],
366 [AS_IF(
367 [test "x${_INTERNAL_UNICODE_WCHAR_T_TRUE}" = x],
368 [EXPAT_CHAR_TYPE=wchar_t],
369 [EXPAT_CHAR_TYPE=ushort])],
370 [EXPAT_CHAR_TYPE=char])
371PACKAGE_INIT="${srcdir}"/cmake/autotools/expat-package-init.cmake
372LIBDIR_BASENAME="$(basename "${libdir}")"
373SO_MAJOR="$(expr "${LIBCURRENT}" - "${LIBAGE}")"
374SO_MINOR="${LIBAGE}"
375SO_PATCH="${LIBREVISION}"
Elliott Hughes33bf9752021-08-10 17:33:34 -0700376AC_CHECK_SIZEOF([void *]) # sets ac_cv_sizeof_void_p
Elliott Hughesf648a292021-04-01 15:10:13 -0700377AC_SUBST([EXPAT_ATTR_INFO])
378AC_SUBST([EXPAT_DTD])
379AC_SUBST([EXPAT_LARGE_SIZE])
380AC_SUBST([EXPAT_MIN_SIZE])
381AC_SUBST([EXPAT_NS])
382AC_SUBST([EXPAT_CONTEXT_BYTES])
383AC_SUBST([EXPAT_CHAR_TYPE])
384AC_SUBST_FILE([PACKAGE_INIT])
385AC_SUBST([LIBDIR_BASENAME])
386AC_SUBST([SO_MAJOR])
387AC_SUBST([SO_MINOR])
388AC_SUBST([SO_PATCH])
Elliott Hughes33bf9752021-08-10 17:33:34 -0700389AC_SUBST([ac_cv_sizeof_void_p])
Elliott Hughesf648a292021-04-01 15:10:13 -0700390
391
Haibo Huangd1a324a2020-10-28 22:19:36 -0700392dnl write the Automake flags we set
393AC_SUBST([AM_CPPFLAGS])
394AC_SUBST([AM_CFLAGS])
395AC_SUBST([AM_CXXFLAGS])
396AC_SUBST([AM_LDFLAGS])
397
Elliott Hughesf898dc22022-02-23 17:34:51 -0800398dnl Emulate the use of CMAKE_SHARED_LIBRARY_PREFIX under CMake
399AC_MSG_CHECKING([for shared library name prefix])
400AS_CASE("${host_os}",
401 [cygwin*], [CMAKE_SHARED_LIBRARY_PREFIX=cyg],
402 [CMAKE_SHARED_LIBRARY_PREFIX=lib])
403AC_MSG_RESULT([${CMAKE_SHARED_LIBRARY_PREFIX}])
404AC_SUBST([CMAKE_SHARED_LIBRARY_PREFIX])
Haibo Huangd1a324a2020-10-28 22:19:36 -0700405
Elliott Hughes33bf9752021-08-10 17:33:34 -0700406AS_CASE("${host_os}",
407 [darwin*], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__macos.cmake.in],
Elliott Hughesf898dc22022-02-23 17:34:51 -0800408 [mingw*|cygwin*], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__windows.cmake.in],
Elliott Hughes33bf9752021-08-10 17:33:34 -0700409 [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__linux.cmake.in])
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700410AC_CONFIG_FILES([Makefile]
411 [expat.pc]
Elliott Hughesf648a292021-04-01 15:10:13 -0700412 [cmake/expat-config.cmake]
413 [cmake/autotools/expat-config-version.cmake]
Elliott Hughes33bf9752021-08-10 17:33:34 -0700414 [cmake/autotools/expat-noconfig.cmake:${CMAKE_NOCONFIG_SOURCE}]
Haibo Huangfd5e81a2019-06-20 12:09:36 -0700415 [doc/Makefile]
416 [examples/Makefile]
417 [lib/Makefile]
418 [tests/Makefile]
419 [tests/benchmark/Makefile]
420 [xmlwf/Makefile])
Elliott Hughes72472942018-01-10 08:36:10 -0800421AC_CONFIG_FILES([run.sh], [chmod +x run.sh])
422AC_OUTPUT
Haibo Huangd1a324a2020-10-28 22:19:36 -0700423
424
425AC_MSG_NOTICE([
426
427Automake flags (can be overridden by user flags):
428 [AM_CPPFLAGS]: ${AM_CPPFLAGS}
429 [AM_CFLAGS]: ${AM_CFLAGS}
430 [AM_CXXFLAGS]: ${AM_CXXFLAGS}
431 [AM_LDFLAGS]: ${AM_LDFLAGS}
432
433User flags (override Automake flags on conflict):
434 CPPFLAGS: ${CPPFLAGS}
435 CFLAGS: ${CFLAGS}
436 CXXFLAGS: ${CXXFLAGS}
437 LDFLAGS: ${LDFLAGS}])