mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-20 08:00:08 +01:00
248 lines
8.7 KiB
Text
248 lines
8.7 KiB
Text
AC_PREREQ([2.64])
|
|
|
|
m4_define([libinput_major_version], [1])
|
|
m4_define([libinput_minor_version], [4])
|
|
m4_define([libinput_micro_version], [3])
|
|
m4_define([libinput_version],
|
|
[libinput_major_version.libinput_minor_version.libinput_micro_version])
|
|
|
|
AC_INIT([libinput],
|
|
[libinput_version],
|
|
[https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component=libinput&version=libinput_version],
|
|
[libinput],
|
|
[http://www.freedesktop.org/wiki/Software/libinput/])
|
|
|
|
AC_SUBST([LIBINPUT_VERSION_MAJOR], [libinput_major_version])
|
|
AC_SUBST([LIBINPUT_VERSION_MINOR], [libinput_minor_version])
|
|
AC_SUBST([LIBINPUT_VERSION_MICRO], [libinput_micro_version])
|
|
AC_SUBST([LIBINPUT_VERSION], [libinput_version])
|
|
|
|
AC_DEFINE([LIBINPUT_VERSION_MAJOR], [libinput_major_version], "libinput major version number")
|
|
AC_DEFINE([LIBINPUT_VERSION_MINOR], [libinput_minor_version], "libinput minor version number")
|
|
AC_DEFINE([LIBINPUT_VERSION_MICRO], [libinput_micro_version], "libinput micro version number")
|
|
|
|
AC_CONFIG_HEADERS([config.h])
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
|
|
|
|
# Before making a release, the LIBINPUT_LT_VERSION string should be
|
|
# modified.
|
|
# The string is of the form C:R:A.
|
|
# a) If binary compatibility has been broken (eg removed or changed interfaces)
|
|
# change to C+1:0:0. DO NOT DO THIS! Use symbol versioning instead and
|
|
# do b) instead.
|
|
# b) If interfaces have been changed or added, but binary compatibility has
|
|
# been preserved, change to C+1:0:A+1
|
|
# c) If the interface is the same as the previous version, change to C:R+1:A
|
|
LIBINPUT_LT_VERSION=19:4:9
|
|
AC_SUBST(LIBINPUT_LT_VERSION)
|
|
|
|
AM_SILENT_RULES([yes])
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
|
|
# Check for programs
|
|
AC_PROG_CC_C99
|
|
AC_PROG_CXX # Only used by build C++ test
|
|
AC_PROG_GREP
|
|
|
|
# Initialize libtool
|
|
LT_PREREQ([2.2])
|
|
LT_INIT
|
|
|
|
AC_CHECK_DECL(EPOLL_CLOEXEC, [],
|
|
[AC_MSG_ERROR("EPOLL_CLOEXEC is needed to compile libinput")],
|
|
[[#include <sys/epoll.h>]])
|
|
AC_CHECK_DECL(TFD_CLOEXEC,[],
|
|
[AC_MSG_ERROR("TFD_CLOEXEC is needed to compile libinput")],
|
|
[[#include <sys/timerfd.h>]])
|
|
AC_CHECK_DECL(CLOCK_MONOTONIC,[],
|
|
[AC_MSG_ERROR("CLOCK_MONOTONIC is needed to compile libinput")],
|
|
[[#include <time.h>]])
|
|
AC_CHECK_DECL(static_assert, [],
|
|
[AC_DEFINE(static_assert(...), [/* */], [noop static_assert() replacement]),
|
|
AC_MSG_RESULT([no])],
|
|
[[#include <assert.h>]])
|
|
|
|
PKG_PROG_PKG_CONFIG()
|
|
PKG_CHECK_MODULES(MTDEV, [mtdev >= 1.1.0])
|
|
PKG_CHECK_MODULES(LIBUDEV, [libudev])
|
|
PKG_CHECK_MODULES(LIBEVDEV, [libevdev >= 0.4])
|
|
|
|
AC_CHECK_LIB([m], [atan2])
|
|
AC_CHECK_LIB([rt], [clock_gettime])
|
|
|
|
if test "x$GCC" = "xyes"; then
|
|
GCC_CXXFLAGS="-Wall -Wextra -Wno-unused-parameter -g -fvisibility=hidden"
|
|
GCC_CFLAGS="$GCC_CXXFLAGS -Wmissing-prototypes -Wstrict-prototypes"
|
|
fi
|
|
AC_SUBST(GCC_CFLAGS)
|
|
AC_SUBST(GCC_CXXFLAGS)
|
|
|
|
udev_dir_default="$libdir/udev"
|
|
AC_ARG_WITH(udev-dir,
|
|
AS_HELP_STRING([--with-udev-dir=DIR],
|
|
[udev base directory [[default=$udev_dir_default]]]),
|
|
[],
|
|
[with_udev_dir="yes"])
|
|
AS_CASE($with_udev_dir,
|
|
[no|""], [AC_MSG_ERROR([You must define a udev base directory])],
|
|
[yes], [udevdir="$udev_dir_default"],
|
|
[udevdir="$with_udev_dir"])
|
|
UDEV_DIR=${udevdir}
|
|
AC_SUBST(UDEV_DIR)
|
|
|
|
AC_ARG_ENABLE([documentation],
|
|
[AC_HELP_STRING([--enable-documentation],
|
|
[Enable building the documentation (default=auto)])],
|
|
[build_documentation="$enableval"],
|
|
[build_documentation="auto"])
|
|
|
|
if test "x$build_documentation" = "xyes" -o "x$build_documentation" = "xauto"; then
|
|
AC_PATH_PROG(DOXYGEN, doxygen)
|
|
if test "x$DOXYGEN" = "x"; then
|
|
if test "x$build_documentation" = "xyes"; then
|
|
AC_MSG_ERROR([Documentation build requested but doxygen not found. Install doxygen or disable the documentation using --disable-documentation])
|
|
fi
|
|
else
|
|
AC_MSG_CHECKING([for compatible doxygen version])
|
|
doxygen_version=`$DOXYGEN --version`
|
|
AS_VERSION_COMPARE([$doxygen_version], [1.6.0],
|
|
[AC_MSG_RESULT([no])
|
|
DOXYGEN=""],
|
|
[AC_MSG_RESULT([yes])],
|
|
[AC_MSG_RESULT([yes])])
|
|
if test "x$DOXYGEN" = "x" -a "x$build_documentation" = "xyes"; then
|
|
AC_MSG_ERROR([Doxygen $doxygen_version too old. Doxygen 1.6+ required for documentation build. Install required doxygen version or disable the documentation using --disable-documentation])
|
|
fi
|
|
fi
|
|
|
|
AC_PATH_PROG(DOT, dot)
|
|
if test "x$DOT" = "x"; then
|
|
if test "x$build_documentation" = "xyes"; then
|
|
AC_MSG_ERROR([Documentation build requested but graphviz's dot not found. Install graphviz or disable the documentation using --disable-documentation])
|
|
fi
|
|
else
|
|
AC_MSG_CHECKING([for compatible dot version])
|
|
dot_version=`$DOT -V 2>&1|$GREP -oP '(?<=version\W)@<:@0-9.@:>@*(?=\W(.*))'`
|
|
AS_VERSION_COMPARE([$dot_version], [2.26.0],
|
|
[AC_MSG_RESULT([no])
|
|
DOT=""],
|
|
[AC_MSG_RESULT([yes])],
|
|
[AC_MSG_RESULT([yes])])
|
|
if test "x$DOT" = "x" -a "x$build_documentation" = "xyes"; then
|
|
AC_MSG_ERROR([Graphviz dot $dot_version too old. Graphviz 2.26+ required for documentation build. Install required graphviz version or disable the documentation using --disable-documentation])
|
|
fi
|
|
fi
|
|
|
|
if test "x$DOXYGEN" != "x" -a "x$DOT" != "x"; then
|
|
build_documentation="yes"
|
|
else
|
|
build_documentation="no"
|
|
fi
|
|
fi
|
|
|
|
AC_ARG_ENABLE(event-gui,
|
|
AS_HELP_STRING([--enable-event-gui], [Build the GUI event viewer (default=auto)]),
|
|
[build_eventgui="$enableval"],
|
|
[build_eventgui="auto"])
|
|
PKG_CHECK_EXISTS([cairo glib-2.0 gtk+-3.0], [HAVE_GUILIBS="yes"], [HAVE_GUILIBS="no"])
|
|
|
|
if test "x$build_eventgui" = "xauto"; then
|
|
build_eventgui="$HAVE_GUILIBS"
|
|
fi
|
|
if test "x$build_eventgui" = "xyes"; then
|
|
PKG_CHECK_MODULES(CAIRO, [cairo])
|
|
PKG_CHECK_MODULES(GTK, [glib-2.0 gtk+-3.0])
|
|
fi
|
|
AM_CONDITIONAL(BUILD_EVENTGUI, [test "x$build_eventgui" = "xyes"])
|
|
|
|
AC_ARG_ENABLE(tests,
|
|
AS_HELP_STRING([--enable-tests], [Build the tests (default=auto)]),
|
|
[build_tests="$enableval"],
|
|
[build_tests="auto"])
|
|
|
|
PKG_CHECK_MODULES(CHECK, [check >= 0.9.10], [HAVE_CHECK="yes"], [HAVE_CHECK="no"])
|
|
|
|
if test "x$build_tests" = "xauto"; then
|
|
build_tests="$HAVE_CHECK"
|
|
fi
|
|
if test "x$build_tests" = "xyes"; then
|
|
if test "x$HAVE_CHECK" = "xno"; then
|
|
AC_MSG_ERROR([Cannot build tests, check is missing])
|
|
fi
|
|
|
|
AC_PATH_PROG(VALGRIND, [valgrind])
|
|
|
|
AC_ARG_WITH(libunwind,
|
|
AS_HELP_STRING([--without-libunwind],[Do not use libunwind]))
|
|
|
|
AS_IF([test "x$with_libunwind" != "xno"],
|
|
[PKG_CHECK_MODULES(LIBUNWIND,
|
|
[libunwind],
|
|
[HAVE_LIBUNWIND=yes],
|
|
[HAVE_LIBUNWIND=no])],
|
|
[HAVE_LIBUNWIND=no])
|
|
|
|
AS_IF([test "x$HAVE_LIBUNWIND" = "xyes"],
|
|
[AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])],
|
|
[AS_IF([test "x$with_libunwind" = "xyes"],
|
|
[AC_MSG_ERROR([libunwind requested but not found])])])
|
|
|
|
AC_PATH_PROG(ADDR2LINE, [addr2line])
|
|
if test "x$ADDR2LINE" != "x"; then
|
|
AC_DEFINE_UNQUOTED(HAVE_ADDR2LINE, 1, [addr2line found])
|
|
AC_DEFINE_UNQUOTED(ADDR2LINE, ["$ADDR2LINE"], [Path to addr2line])
|
|
fi
|
|
|
|
AC_DEFINE(LITEST_UDEV_LOCKFILE, ["/tmp/litest-udev.lock"],
|
|
[Lock file used to restrict udev reloads during tests])
|
|
fi
|
|
AM_CONDITIONAL(HAVE_LIBUNWIND, [test "x$HAVE_LIBUNWIND" = xyes])
|
|
|
|
AC_ARG_ENABLE(libwacom,
|
|
AS_HELP_STRING([--enable-libwacom],
|
|
[Use libwacom for tablet identification (default=enabled)]),
|
|
[use_libwacom="$enableval"],
|
|
[use_libwacom="yes"])
|
|
if test "x$use_libwacom" = "xyes"; then
|
|
PKG_CHECK_MODULES(LIBWACOM, [libwacom >= 0.12], [HAVE_LIBWACOM="yes"])
|
|
AC_DEFINE(HAVE_LIBWACOM, 1, [Build with libwacom])
|
|
fi
|
|
|
|
AM_CONDITIONAL(HAVE_VALGRIND, [test "x$VALGRIND" != "x"])
|
|
AM_CONDITIONAL(BUILD_TESTS, [test "x$build_tests" = "xyes"])
|
|
AM_CONDITIONAL(BUILD_DOCS, [test "x$build_documentation" = "xyes"])
|
|
|
|
# Used by the udev rules so we can use callouts during testing without
|
|
# installing everything first. Default is the empty string so the installed
|
|
# rule will use udev's default path. Override is in udev/Makefile.am
|
|
AC_SUBST(UDEV_TEST_PATH, "")
|
|
AC_PATH_PROG(SED, [sed])
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
doc/Makefile
|
|
doc/libinput.doxygen
|
|
src/Makefile
|
|
src/libinput.pc
|
|
src/libinput-version.h
|
|
test/Makefile
|
|
tools/Makefile
|
|
udev/Makefile
|
|
udev/80-libinput-device-groups.rules
|
|
udev/90-libinput-model-quirks.rules])
|
|
AC_CONFIG_FILES([test/symbols-leak-test],
|
|
[chmod +x test/symbols-leak-test])
|
|
AC_OUTPUT
|
|
|
|
AC_MSG_RESULT([
|
|
Prefix ${prefix}
|
|
udev base dir ${UDEV_DIR}
|
|
|
|
libwacom enabled ${use_libwacom}
|
|
Build documentation ${build_documentation}
|
|
Build tests ${build_tests}
|
|
Tests use valgrind ${VALGRIND}
|
|
Tests use libunwind ${HAVE_LIBUNWIND}
|
|
Build GUI event tool ${build_eventgui}
|
|
])
|