keysyms: fix comment for XKB_KEY_OCARON
[platform/upstream/libxkbcommon.git] / configure.ac
index 724fe0d..eaeb553 100644 (file)
@@ -21,94 +21,205 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 # Initialize Autoconf
-AC_PREREQ([2.60])
-AC_INIT([libxkbcommon], [0.1.0],
-    [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_PREREQ([2.63])
+AC_INIT([libxkbcommon], [0.8.2],
+        [https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon],
+        [libxkbcommon], [https://xkbcommon.org])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([src/config.h])
 AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_AUX_DIR([build-aux])
 
 # Initialize Automake
-AM_INIT_AUTOMAKE([foreign dist-bzip2])
-AM_MAINTAINER_MODE
+AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip subdir-objects color-tests parallel-tests check-news])
+AM_MAINTAINER_MODE([enable])
+
+# Get _GNU_SOURCE and friends
+AC_USE_SYSTEM_EXTENSIONS
 
 # Initialize libtool
-AC_PROG_LIBTOOL
+LT_INIT
 
-# Require xorg-macros minimum of 1.8 for AM_SILENT_RULES
+# Add xorg-macros stuff
 m4_ifndef([XORG_MACROS_VERSION],
-         [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.8)
+          [m4_fatal([must install xorg-macros 1.16 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.16)
 XORG_DEFAULT_OPTIONS
-XORG_CHECK_MALLOC_ZERO
+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_LEX
+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)
-if test ! -f "src/xkbcomp/xkbparse.c"; then
-   if test -z "$YACC_INST"; then
-      AC_MSG_ERROR([yacc not found - unable to compile src/xkbcomp/xkbparse.y])
-   fi
-fi
+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])
-if test "x$ac_cv_func_strcasecmp" = xno || \
-   test "x$ac_cv_func_strncasecmp" = xno; then
-    AC_MSG_ERROR([C library does not support strcasecmp/strncasecmp])
-fi
-
-# 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
-
-if  test "x$GCC" = xyes ; then
-  CFLAGS="$CFLAGS -fvisibility=hidden"
-fi
-
-# Obtain protocols headers include directives
-PKG_CHECK_MODULES([X11], [xproto kbproto >= 1.0.4])
-
-# Obtain the path to the X Window System Core Protocol
-AC_MSG_CHECKING([for X11 includedir])
-includex11dir="`$PKG_CONFIG --variable=includex11dir xproto`"
-AC_MSG_RESULT([$includex11dir])
-
-AC_MSG_CHECKING([keysym definitions])
-KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11
-FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h"
-for i in $FILES; do
-    if test -f "$KEYSYMDEFDIR/$i"; then
-            KEYSYMDEFS="$KEYSYMDEFS $KEYSYMDEFDIR/$i"
-    elif test "x$i" = "xkeysymdef.h"; then
-            AC_MSG_ERROR([Cannot find keysymdef.h])
-    fi
-done
-AC_MSG_RESULT([$KEYSYMDEFS])
-AC_SUBST(KEYSYMDEFS)
+AC_CHECK_FUNCS([eaccess euidaccess mmap mkostemp posix_fallocate])
+
+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)
+AX_GCC_BUILTIN(__builtin_popcount)
+
+# 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 -fno-strict-aliasing -fsanitize-undefined-trap-on-error])
+XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wextra -Wno-unused-parameter -Wno-missing-field-initializers])
+XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wdocumentation -Wno-documentation-deprecated-sync])
+
+# OpenBSD does not have DT_NEEDED entries for libc by design
+# so when these flags are passed to ld via libtool the checks will fail
+case "$host_os" in
+openbsd*)
+    ;;
+*)
+    XORG_CHECK_LINKER_FLAGS([-Wl,--no-undefined], [have_no_undefined=yes]) ;;
+esac
+AM_CONDITIONAL([HAVE_NO_UNDEFINED], [test "x$have_no_undefined" = xyes])
+
+XORG_CHECK_LINKER_FLAGS([-Wl,--version-script="$srcdir/xkbcommon.map"], [have_version_script=yes])
+AM_CONDITIONAL([HAVE_VERSION_SCRIPT], [test "x$have_version_script" = 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=<paths>],
-        [Set default XKB config root (default: ${datadir}/X11/xkb)])],
+    [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])
+
+WAYLAND_PKGS="wayland-client >= 1.2.0 wayland-protocols >= 1.7 wayland-scanner"
+AC_ARG_ENABLE([wayland],
+    [AS_HELP_STRING([--disable-wayland],
+        [Disable support for Wayland utility programs (default: auto)])],
+    [], [enable_wayland=auto])
+AS_IF([test "x$enable_wayland" = xauto], [
+    PKG_CHECK_EXISTS($WAYLAND_PKGS, [enable_wayland=yes], [enable_wayland=no])],
+    [])
+AS_IF([test "x$enable_wayland" = xyes], [
+    PKG_CHECK_MODULES([WAYLAND], $WAYLAND_PKGS, [],
+        [AC_MSG_ERROR([Wayland utilities require libwayland-client >= 1.2 which was not found. \
+You can disable Wayland support with --disable-wayland.])])
+    AC_PATH_PROG([wayland_scanner], [wayland-scanner])
+    wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
+    ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
+    AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
+], [enable_wayland=no])
+AM_CONDITIONAL([ENABLE_WAYLAND], [test "x$enable_wayland" = xyes])
+
 AC_CONFIG_FILES([
-       Makefile
-       xkbcommon.pc
-       include/Makefile
-       makekeys/Makefile
-       src/Makefile
-       src/xkbcomp/Makefile
-       test/Makefile])
+    Makefile
+    xkbcommon.pc
+    xkbcommon-x11.pc
+    doc/Doxyfile
+])
 AC_OUTPUT
+
+AC_MSG_RESULT([
+        $PACKAGE_NAME $VERSION
+
+        libxkbcommon:            yes
+        libxkbcommon-x11:        ${enable_x11}
+        Wayland utilities:       ${enable_wayland}
+        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}
+        datarootdir:             ${datarootdir}
+        XKB config root:         ${XKBCONFIGROOT}
+        X11 locale root:         ${XLOCALEDIR}
+])