dnl
dnl Process this file with autoconf to create configure.
-AC_PREREQ([2.57])
-AC_INIT([libxkbcommon], [0.1.0],
- [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
-AM_INIT_AUTOMAKE([dist-bzip2 foreign])
-AM_MAINTAINER_MODE
+# Initialize Autoconf
+AC_PREREQ([2.62])
+AC_INIT([libxkbcommon], [0.4.3],
+ [https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon],
+ [libxkbcommon], [http://xkbcommon.org])
+AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([src/config.h])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_AUX_DIR([build-aux])
-AC_PROG_LIBTOOL
-AC_PROG_CC
+# Initialize Automake
+AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip subdir-objects color-tests parallel-tests check-news])
+AM_MAINTAINER_MODE([enable])
-m4_ifndef([PKG_PROG_PKG_CONFIG],
- [m4_fatal([Could not locate the pkg-config autoconf macros.
- These are usually located in /usr/share/aclocal/pkg.m4. If your
- macros are in a different location, try setting the environment
- variable ACLOCAL="aclocal -I/other/macro/dir" before running
- autoreconf/autogen.sh.])])
-PKG_PROG_PKG_CONFIG
+# Get _GNU_SOURCE and friends
+AC_USE_SYSTEM_EXTENSIONS
+
+# Initialize libtool
+LT_INIT
-dnl Build native compiler needed for makekeys
-AC_ARG_VAR([CC_FOR_BUILD], [Build native C compiler program])
-if test "x$CC_FOR_BUILD" = x; then
- if test "$cross_compiling" != no; then
- AC_PATH_PROGS([CC_FOR_BUILD], [gcc cc], [cc])
- else
- CC_FOR_BUILD="$CC"
- fi
-fi
-
-PKG_CHECK_MODULES([X11], [xproto kbproto >= 1.0.99.1])
-
-dnl Ensure we have keysym headers
-AC_MSG_CHECKING([for X11 includedir])
-x11includedir="`$PKG_CONFIG --variable=includedir xproto`/X11"
-AC_MSG_RESULT([$x11includedir])
-
-AC_MSG_CHECKING([for keysymdef.h])
-KEYSYMDEF_H="$x11includedir/keysymdef.h"
-test -f "$KEYSYMDEF_H" || AC_MSG_ERROR([can't locate keysymdef.h in $x11includedir])
-AC_MSG_RESULT([$KEYSYMDEF_H])
-AC_SUBST([KEYSYMDEF_H])
-
-AC_MSG_CHECKING([for XF86keysym.h])
-XF86KEYSYM_H="$x11includedir/XF86keysym.h"
-test -f "$XF86KEYSYM_H" || AC_MSG_ERROR([can't locate XF86keysym.h in $x11includedir])
-AC_MSG_RESULT([$XF86KEYSYM_H])
-AC_SUBST([XF86KEYSYM_H])
-
-# Require xorg-macros version 1.2.0 or newer for XORG_CHANGELOG macro
+# Add xorg-macros stuff
m4_ifndef([XORG_MACROS_VERSION],
- [m4_fatal([must install xorg-macros before running autoconf/autogen.sh])])
-XORG_MACROS_VERSION([1.2.0])
-XORG_RELEASE_VERSION
-XORG_CHECK_MALLOC_ZERO
-XORG_CWARNFLAGS
-XORG_CHANGELOG
-
-AC_OUTPUT([
-Makefile
-include/Makefile
-src/Makefile
-src/makekeys/Makefile
-test/Makefile
+ [m4_fatal([must install xorg-macros 1.16 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.16)
+XORG_DEFAULT_OPTIONS
+XORG_MEMORY_CHECK_FLAGS
+XORG_ENABLE_DOCS
+XORG_WITH_DOXYGEN
+
+# Needed in older Automakes for subdir-objects
+AM_PROG_CC_C_O
+
+# Check for compiler features
+AC_C_INLINE
+
+# Check for programs
+AC_PROG_MKDIR_P
+PKG_PROG_PKG_CONFIG
+
+# Note: we use some yacc extensions, which work with either GNU bison
+# (preferred) or byacc. Other yacc's may or may not work.
+AC_PROG_YACC
+AC_PATH_PROG([YACC_INST], [$YACC])
+AS_IF([test ! -f "src/xkbcomp/parser.c" -a "x$YACC_INST" = x], [
+ AC_MSG_ERROR([yacc not found - unable to compile src/xkbcomp/parser.y])
+])
+
+# Checks for library functions.
+AC_CHECK_FUNCS([strcasecmp strncasecmp])
+AS_IF([test "x$ac_cv_func_strcasecmp" = xno -o \
+ "x$ac_cv_func_strncasecmp" = xno], [
+ AC_MSG_ERROR([C library does not support strcasecmp/strncasecmp])
+])
+
+AC_CHECK_FUNCS([eaccess euidaccess mmap])
+
+AC_CHECK_FUNCS([secure_getenv __secure_getenv])
+AS_IF([test "x$ac_cv_func_secure_getenv" = xno -a \
+ "x$ac_cv_func___secure_getenv" = xno], [
+ AC_MSG_WARN([C library does not support secure_getenv, using getenv instead])
+])
+
+AX_GCC_BUILTIN(__builtin_expect)
+
+# Some tests use Linux-specific headers
+AC_CHECK_HEADER([linux/input.h])
+AM_CONDITIONAL(BUILD_LINUX_TESTS, [test "x$ac_cv_header_linux_input_h" = xyes])
+
+XORG_TESTSET_CFLAG([BASE_CFLAGS], [-fvisibility=hidden])
+XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wextra -Wno-unused-parameter -Wno-missing-field-initializers])
+XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wdocumentation])
+
+XORG_CHECK_LINKER_FLAGS([-Wl,--no-undefined], [have_no_undefined=yes])
+AM_CONDITIONAL([HAVE_NO_UNDEFINED], [test "x$have_no_undefined" = xyes])
+
+# Define a configuration option for the XKB config root
+xkb_base=`$PKG_CONFIG --variable=xkb_base xkeyboard-config`
+AS_IF([test "x$xkb_base" = x], [
+ xkb_base="$datadir/X11/xkb"
+])
+AC_ARG_WITH([xkb_config_root],
+ [AS_HELP_STRING([--with-xkb-config-root=<path>],
+ [Set default XKB config root (default: xkeyboard-config install path)])],
+ [XKBCONFIGROOT="$withval"],
+ [XKBCONFIGROOT="$xkb_base"])
+AC_SUBST([XKBCONFIGROOT])
+
+# Define a configuration option for the X locale directory for compose
+AC_ARG_WITH([x_locale_root],
+ [AS_HELP_STRING([--with-x-locale-root=<path>],
+ [Set X locale root (default: $datadir/X11/locale)])],
+ [XLOCALEDIR="$withval"],
+ [XLOCALEDIR="$datadir/X11/locale"])
+AC_SUBST([XLOCALEDIR])
+
+AC_ARG_WITH([default_rules],
+ [AS_HELP_STRING([--with-default-rules=<path>],
+ [Default XKB ruleset (default: evdev)])],
+ [DEFAULT_XKB_RULES="$withval"],
+ [DEFAULT_XKB_RULES="evdev"])
+AC_DEFINE_UNQUOTED([DEFAULT_XKB_RULES], ["$DEFAULT_XKB_RULES"],
+ [Default XKB ruleset])
+
+AC_ARG_WITH([default_model],
+ [AS_HELP_STRING([--with-default-model=<path>],
+ [Default XKB model (default: pc105)])],
+ [DEFAULT_XKB_MODEL="$withval"],
+ [DEFAULT_XKB_MODEL="pc105"])
+AC_DEFINE_UNQUOTED([DEFAULT_XKB_MODEL], ["$DEFAULT_XKB_MODEL"],
+ [Default XKB model])
+
+AC_ARG_WITH([default_layout],
+ [AS_HELP_STRING([--with-default-layout=<path>],
+ [Default XKB layout (default: us)])],
+ [DEFAULT_XKB_LAYOUT="$withval"],
+ [DEFAULT_XKB_LAYOUT="us"])
+AC_DEFINE_UNQUOTED([DEFAULT_XKB_LAYOUT], ["$DEFAULT_XKB_LAYOUT"],
+ [Default XKB layout])
+
+AC_ARG_WITH([default_variant],
+ [AS_HELP_STRING([--with-default-variant=<path>],
+ [Default XKB variant (default: (none))])],
+ [DEFAULT_XKB_VARIANT="$withval"],
+ [DEFAULT_XKB_VARIANT=])
+AS_IF([test "x$DEFAULT_XKB_VARIANT" != x], [
+ AC_DEFINE_UNQUOTED([DEFAULT_XKB_VARIANT], ["$DEFAULT_XKB_VARIANT"],
+ [Default XKB variant])
+])
+
+AC_ARG_WITH([default_options],
+ [AS_HELP_STRING([--with-default-options=<path>],
+ [Default XKB options (default: (none))])],
+ [DEFAULT_XKB_OPTIONS="$withval"],
+ [DEFAULT_XKB_OPTIONS=])
+AS_IF([test "x$DEFAULT_XKB_OPTIONS" != x], [
+ AC_DEFINE_UNQUOTED([DEFAULT_XKB_OPTIONS], ["$DEFAULT_XKB_OPTIONS"],
+ [Default XKB options])
+])
+
+AC_ARG_ENABLE([x11],
+ [AS_HELP_STRING([--disable-x11],
+ [Disable support for creating keymaps with the X11 protocol (default: enabled)])],
+ [], [enable_x11=yes])
+AS_IF([test "x$enable_x11" = xyes], [
+ PKG_CHECK_MODULES([XCB_XKB], [xcb xcb-xkb >= 1.10], [],
+ [AC_MSG_ERROR([xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \
+You can disable X11 support with --disable-x11.])])
+], [enable_x11=no])
+AM_CONDITIONAL([ENABLE_X11], [test "x$enable_x11" = xyes])
+
+AC_CONFIG_FILES([
+ Makefile
+ xkbcommon-uninstalled.pc
+ xkbcommon.pc
+ xkbcommon-x11.pc
+ xkbcommon-x11-uninstalled.pc
+ doc/Doxyfile
+])
+AC_OUTPUT
+
+AC_MSG_RESULT([
+ $PACKAGE_NAME $VERSION
+
+ libxkbcommon: yes
+ libxkbcommon-x11: ${enable_x11}
+ documentation: ${build_docs}
+
+ default XKB rules: ${DEFAULT_XKB_RULES}
+ default XKB model: ${DEFAULT_XKB_MODEL}
+ default XKB layout: ${DEFAULT_XKB_LAYOUT}
+ default XKB variant: ${DEFAULT_XKB_VARIANT}
+ default XKB options: ${DEFAULT_XKB_OPTIONS}
+
+ prefix: ${prefix}
+ includedir: ${includedir}
+ lib dir: ${libdir}
+ XKB config root: ${XKBCONFIGROOT}
+ X11 locale root: ${XLOCALEDIR}
])