blob: 63c33a062479503c5c5c2152cb94010f4411326f [file] [log] [blame]
Eitan Isaacson109996e2008-12-20 14:52:53 +00001# Process this file with autoconf to produce a configure script.
2
Christian Egli84b1a812014-05-06 14:28:14 +00003AC_PREREQ(2.68)
Christian Eglid1998f22017-06-06 14:46:08 +02004AC_INIT([Liblouis], [3.2.0], [liblouis-liblouisxml@freelists.org], [liblouis], [http://www.liblouis.org])
Eitan Isaacson109996e2008-12-20 14:52:53 +00005AC_CONFIG_SRCDIR([liblouis/lou_backTranslateString.c])
Christian Egli4255aa22009-10-08 09:34:06 +00006AM_CONFIG_HEADER(liblouis/config.h)
Christian Eglib7159412009-10-30 11:14:49 +00007
8AC_CONFIG_AUX_DIR([build-aux])
9AC_CONFIG_MACRO_DIR([m4])
Christian Egli84b1a812014-05-06 14:28:14 +000010AM_INIT_AUTOMAKE
Eitan Isaacson109996e2008-12-20 14:52:53 +000011
12# Checks for programs.
13AC_PROG_CC
Christian Egli4255aa22009-10-08 09:34:06 +000014
Christian Egli31ef6ff2015-06-05 11:22:36 +020015# gnulib for the library
Christian Egli4255aa22009-10-08 09:34:06 +000016gl_EARLY
Christian Egli31ef6ff2015-06-05 11:22:36 +020017# gnulib for the tools
18gl_tools_EARLY
19
Christian Egli4255aa22009-10-08 09:34:06 +000020gl_INIT
Christian Egli31ef6ff2015-06-05 11:22:36 +020021gl_tools_INIT
Christian Egli311d52b2013-01-11 16:19:23 +000022
Christian Egli4255aa22009-10-08 09:34:06 +000023# Checks for more programs.
Eitan Isaacson109996e2008-12-20 14:52:53 +000024AC_PROG_INSTALL
25AC_PROG_LN_S
26AC_PROG_MAKE_SET
Eitan Isaacson109996e2008-12-20 14:52:53 +000027
Bert Freese580f392016-10-10 12:29:29 +020028# Checks for libraries.
29AC_CHECK_LIB([yaml], [yaml_parser_initialize])
30
Eitan Isaacson109996e2008-12-20 14:52:53 +000031# Checks for header files.
32AC_HEADER_STDC
33AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
34
35# Checks for typedefs, structures, and compiler characteristics.
36AC_C_CONST
37
38# Checks for library functions.
Eitan Isaacson109996e2008-12-20 14:52:53 +000039AC_FUNC_MEMCMP
Eitan Isaacson109996e2008-12-20 14:52:53 +000040AC_FUNC_VPRINTF
41AC_CHECK_FUNCS([memset])
42
43# This is for stuff that absolutely must end up in pyconfig.h.
44# Please use pyport.h instead, if possible.
45AH_TOP([
46#ifndef LOUISCFG_H
47#define LOUISCFG_H
48])
49AH_BOTTOM([
50#endif /*LOUISCFG_H*/
51])
52
53# increment if the interface has additions, changes, removals.
Christian Eglid1998f22017-06-06 14:46:08 +020054LIBLOUIS_CURRENT=14
Eitan Isaacson109996e2008-12-20 14:52:53 +000055
Christian Egli5f8769f2014-12-01 11:38:15 +010056# increment any time the source changes; set to 0 if you increment
57# CURRENT
Christian Egli96a0a8d2015-06-01 15:49:21 +020058LIBLOUIS_REVISION=0
Eitan Isaacson109996e2008-12-20 14:52:53 +000059
Christian Egli5f8769f2014-12-01 11:38:15 +010060# increment if any interfaces have been added; set to 0 if any
61# interfaces have been changed or removed. removal has precedence over
62# adding, so set to 0 if both happened.
Christian Eglid1998f22017-06-06 14:46:08 +020063LIBLOUIS_AGE=0
Eitan Isaacson109996e2008-12-20 14:52:53 +000064
65AC_SUBST(LIBLOUIS_CURRENT)
66AC_SUBST(LIBLOUIS_REVISION)
67AC_SUBST(LIBLOUIS_AGE)
68
Christian Egli0899aa12015-09-08 10:39:35 +020069# needed to build the liblouis.def
70DLL_VERSION=`expr ${LIBLOUIS_CURRENT} - ${LIBLOUIS_AGE}`
71AC_SUBST(DLL_VERSION)
72
Eitan Isaacson109996e2008-12-20 14:52:53 +000073AC_ISC_POSIX
74AC_HEADER_STDC
75AC_LIBTOOL_WIN32_DLL
Christian Eglib7159412009-10-30 11:14:49 +000076AC_PROG_LIBTOOL
Eitan Isaacson109996e2008-12-20 14:52:53 +000077
Christian Egli644ed622009-10-08 15:02:15 +000078# GNU help2man creates man pages from --help output; in many cases,
79# this is sufficient, and obviates the need to maintain man pages
80# separately. However, some developers do not have it so we do not
81# make its use mandatory.
Christian Eglie63b3592010-01-26 14:28:33 +000082if test "x$cross_compiling" = xyes; then
83 AC_MSG_WARN([cannot generate manual pages while cross compiling])
84else
85 AC_CHECK_PROG([HELP2MAN], [help2man], [help2man])
86fi
Christian Egli644ed622009-10-08 15:02:15 +000087AM_CONDITIONAL([HAVE_HELP2MAN], [test x$HELP2MAN = xhelp2man])
88
Christian Egli6785ff82017-06-02 13:40:50 +020089# Only run parts of the tests if we are cross compiling
90AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = xyes])
91
Simon Aittamaabd5e6482014-11-25 19:39:51 +010092# Check for makeinfo version >= 5, required for building documentation.
Christian Egli5d9030a2015-03-16 22:38:47 +010093have_makeinfo_5=false
Simon Aittamaabd5e6482014-11-25 19:39:51 +010094AC_PROG_SED
95AC_CHECK_PROG([MAKEINFO_FOUND], [makeinfo], [yes])
96if test x"${MAKEINFO_FOUND}" = xyes
97then
98 MAKEINFO_VERSION_REQ=5
Christian Egli774d74b2014-11-26 11:03:50 +010099 AC_MSG_CHECKING([for makeinfo version >= $MAKEINFO_VERSION_REQ])
Martin Michlmayre2fa19e2015-06-30 12:40:49 -0400100 MAKEINFO_VERSION=`makeinfo --version | sed -ne 's/^\(makeinfo\|texi2any\) .* \([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*$/\2/p'`
Simon Aittamaabd5e6482014-11-25 19:39:51 +0100101 if test x$MAKEINFO_VERSION = x -o 0$MAKEINFO_VERSION -lt $MAKEINFO_VERSION_REQ
102 then
103 AC_MSG_RESULT([no])
Christian Egli674844e2015-03-12 13:56:49 +0100104 AC_MSG_WARN([Program 'makeinfo' version >= $MAKEINFO_VERSION_REQ is required. Documentation will not be built.])
Simon Aittamaabd5e6482014-11-25 19:39:51 +0100105 else
106 AC_MSG_RESULT([yes])
Christian Egli674844e2015-03-12 13:56:49 +0100107 have_makeinfo_5=true
Simon Aittamaabd5e6482014-11-25 19:39:51 +0100108 fi
109else
Christian Egli25ef16b2015-05-22 12:22:52 +0200110 AC_MSG_WARN([Missing program 'makeinfo', Documentation will not be built. Please install you you want documentation or refer to online resources.])
Simon Aittamaabd5e6482014-11-25 19:39:51 +0100111fi
Christian Egli674844e2015-03-12 13:56:49 +0100112AM_CONDITIONAL([HAVE_MAKEINFO_5], [test x$have_makeinfo_5 = xtrue])
Simon Aittamaabd5e6482014-11-25 19:39:51 +0100113
Christian Egli51c156e2017-03-06 10:19:25 +0100114# Check if the user wants to enable yaml tests
115AC_ARG_WITH([yaml],
116 [AS_HELP_STRING([--with-yaml], [enable YAML-based tests @<:@default=yes@:>@])],
117 [with_yaml=$withval],
118 [])
119
120if test "x$with_yaml" == xno; then
121 AC_DEFINE([WITHOUT_YAML],[1],[Disable YAML tests])
122fi
123
124# if libyaml is missing warn or die depending on --with-yaml
125if test x$ac_cv_lib_yaml_yaml_parser_initialize != xyes; then
126 case "$with_yaml" in
127 yes) AC_MSG_ERROR([--with-yaml was given, but libyaml was not found]);;
128 no) ;;
129 *) AC_MSG_WARN([libyaml was not found. YAML tests will be skipped]);;
130 esac
131fi
132
Christian Egli803d5c82017-06-01 12:23:16 +0200133AM_CONDITIONAL([WITH_YAML], [test "x$ac_cv_lib_yaml_yaml_parser_initialize" == xyes -a "x$with_yaml" != xno])
134
Eitan Isaacson109996e2008-12-20 14:52:53 +0000135AC_PATH_PROG(PKG_CONFIG, pkg-config)
136
137AC_ARG_ENABLE(ucs4,
Christian Egli697a0d22014-03-03 09:46:35 +0000138 AC_HELP_STRING(--enable-ucs4, Enable 4 byte-wide characters),
Christian Eglid4aaee82016-06-20 12:36:16 +0200139 [AC_DEFINE([WIDECHARS_ARE_UCS4], [1], [Define if widechars are ucs4])],
Eitan Isaacson109996e2008-12-20 14:52:53 +0000140 [enable_ucs4=no])
141
Christian Eglibbf00fd2009-11-12 10:02:23 +0000142AC_MSG_CHECKING([whether 4 byte-wide characters should be supported])
143AC_MSG_RESULT($enable_ucs4)
Eitan Isaacson109996e2008-12-20 14:52:53 +0000144
145case "$enable_ucs4" in
Christian Eglibbf00fd2009-11-12 10:02:23 +0000146yes) WIDECHAR_TYPE='unsigned int';;
147*) WIDECHAR_TYPE='unsigned short int';;
Eitan Isaacson109996e2008-12-20 14:52:53 +0000148esac
Christian Eglibbf00fd2009-11-12 10:02:23 +0000149AC_SUBST(WIDECHAR_TYPE)
Christian Egli33ded852012-03-20 14:13:30 +0000150AM_CONDITIONAL([HAVE_UCS4], [test x$enable_ucs4 = xyes])
Eitan Isaacson109996e2008-12-20 14:52:53 +0000151
James Teh75bfbe22009-01-20 12:19:47 +0000152case $host in
153 *mingw* | *cygwin*)
James Teh115fb832009-02-14 00:47:32 +0000154 CFLAGS="$CFLAGS -Wl,--add-stdcall-alias"
Michael Whapples2bea4c82014-09-23 15:29:59 +0100155 LDFLAGS="$LDFLAGS -avoid-version"
James Teh75bfbe22009-01-20 12:19:47 +0000156 ;;
157esac
158
John Boyer9bfed872011-06-12 22:56:54 +0000159AC_CONFIG_FILES([
160 Makefile
Davy Kager033d97c2017-06-21 18:58:56 +0200161 doc/Makefile
162 man/Makefile
163 liblouis/Makefile
164 liblouis/liblouis.h
John Boyer9bfed872011-06-12 22:56:54 +0000165 windows/Makefile
166 windows/include/Makefile
Davy Kager033d97c2017-06-21 18:58:56 +0200167 windows/utils/Makefile
168 tables/Makefile
John Boyer9bfed872011-06-12 22:56:54 +0000169 liblouis.pc
Davy Kager033d97c2017-06-21 18:58:56 +0200170 tests/Makefile
171 tests/resolve_table.h
172 tests/tables/Makefile
173 tests/tables/emphclass/Makefile
174 tests/tables/moreTables/Makefile
175 tests/tables/resolve_table/Makefile
176 tests/tables/resolve_table/dir_1/Makefile
177 tests/tables/resolve_table/dir_1/dir_1.1/Makefile
178 tests/tables/resolve_table/dir_2/Makefile
Christian Egli2a576052015-05-29 14:10:05 +0200179 tests/tablesWithMetadata/Makefile
Davy Kager033d97c2017-06-21 18:58:56 +0200180 tests/ueb_test_data/Makefile
181 tests/yaml/Makefile
John Boyer9bfed872011-06-12 22:56:54 +0000182 python/Makefile
Christopher Brannona4539ce2017-04-24 18:03:29 -0700183 python/setup.py
John Boyer9bfed872011-06-12 22:56:54 +0000184 python/louis/Makefile
Davy Kager033d97c2017-06-21 18:58:56 +0200185 tools/Makefile
186 tools/gnulib/Makefile
Christian Egli60e5bf82016-06-20 11:08:16 +0200187 gnulib/Makefile])
Eitan Isaacson109996e2008-12-20 14:52:53 +0000188AC_OUTPUT