eudev/configure.ac
Ian Stakenvicius 9a769172c3 Revert "static-nodes: remove creation of static nodes if HAVE_LIBKMOD"
This reverts commit aa417a4d83.

Preface:  The kmod+tmpfiles static dev-node creation requires two commands to
be executed at runtime -- it is not something that will automatically occur
without a system's setup being explicitly designed or changed so that these
commands are executed.

Preface2:  In order for the kmod+tmpfiles static dev-node creation to work
properly, that -must- be executed at startup before {systemd-,}udevd starts.
The reason for this is because udevd will only set permissions on those files
at startup, and so if udevd starts beforehand then these nodes will exist with
permissions that are (probably) too restrictive.

The function in udevd which creates static-nodes is non-fatal and only updates
mtime on the devnodes if they already exist.  As such, if a system is configured
to execute kmod+tmpfiles to create static-nodes, because that must occur first,
eudev's udevd will not conflict.  Also, if a system does not execute kmod+tmpfiles,
then eudev will still create the static devnodes, even if kmod-14 or higher is
installed.

There *may* be a conflict if kmod+tmpfiles is executed after udevd starts, but
as per "preface2" this is not a supported configuration.

Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
2013-07-31 13:07:33 -04:00

383 lines
13 KiB
Plaintext

AC_PREREQ([2.68])
AC_INIT([eudev],[1.2],[https://github.com/gentoo/eudev/issues])
AC_SUBST(UDEV_VERSION, 205)
AC_CONFIG_SRCDIR([src/udev/udevd.c])
AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE
AC_PREFIX_DEFAULT([/usr])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign 1.11])
AM_SILENT_RULES([yes])
LT_PREREQ(2.2)
LT_INIT
# Checks for programs.
AC_PROG_MKDIR_P
AC_PROG_LN_S
AC_PROG_SED
AC_PROG_GREP
AC_PROG_AWK
AC_PROG_CC_C99
AS_IF([test "x$ac_cv_prog_cc_c99" = "xno"], [
AC_MSG_ERROR([no C99 compiler found, $PACKAGE requires a C99 compiler.])
])
AC_PROG_CXX
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PATH_PROG([M4], [m4])
AC_PATH_PROG([XSLTPROC], [xsltproc])
# Checks for header files.
AC_CHECK_HEADERS(
[arpa/inet.h fcntl.h inttypes.h langinfo.h limits.h locale.h \
netinet/in.h sys/ioctl.h sys/mount.h \
sys/param.h sys/socket.h sys/statvfs.h sys/time.h sys/vfs.h syslog.h \
termios.h unistd.h],
[],
[AC_MSG_ERROR([*** POSIX header not found])]
)
# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_UID_T
AC_C_INLINE
AC_TYPE_MODE_T
AC_TYPE_PID_T
AC_CHECK_MEMBERS([struct stat.st_rdev])
AC_CHECK_DECLS([gettid, pivot_root, name_to_handle_at, accept4, mkostemp], [], [], [[#include <sys/types.h>
#include <unistd.h>
#include <sys/mount.h>
#include <fcntl.h>
#include <sys/socket.h>]])
# Checks for library functions.
AC_FUNC_CHOWN
AC_FUNC_FORK
AC_FUNC_FSEEKO
AC_FUNC_GETGROUPS
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
AC_HEADER_MAJOR
AC_FUNC_MKTIME
AC_FUNC_MMAP
AC_CHECK_FUNCS(
[alarm dup2 ftruncate localtime_r mempcpy \
mkdir munmap nl_langinfo rmdir setlocale socket stpcpy \
uname],
[],
[AC_MSG_ERROR([*** POSIX function not found])]
)
AC_SEARCH_LIBS([clock_gettime], [rt], [], [AC_MSG_ERROR([*** POSIX librt not found])])
AC_SEARCH_LIBS([sqrt], [m], [], [AC_MSG_ERROR([*** POSIX libm not found])])
# ------------------------------------------------------------------------------
# TODO: the old python checks are irrelevant, but we do need python and perl for tests
# ------------------------------------------------------------------------------
# Set paths here
AC_ARG_WITH(
[rootprefix],
[AS_HELP_STRING(
[--with-rootprefix=DIR],
[rootfs directory prefix for config files and kernel modules])],
[],
[with_rootprefix="\${prefix}"]
)
AC_ARG_WITH(
[rootlibdir],
[AS_HELP_STRING(
[--with-rootlibdir=DIR],
[Root directory for libraries necessary for boot])],
[],
[with_rootlibdir=${libdir}]
)
AC_ARG_ENABLE(
[split-usr],
[AS_HELP_STRING(
[--enable-split-usr],
[Include hard-coded default search paths in / and /usr])],
[],
[AS_IF(
[test "x${ac_default_prefix}" != "x${with_rootprefix}" && test "x${with_rootprefix}" != "x\${prefix}"],
[enable_split_usr=yes],
[enable_split_usr=no])]
)
AS_IF(
[test "x${enable_split_usr}" = "xyes"],
[AC_DEFINE(HAVE_SPLIT_USR, 1, [Define to include hard-coded default search paths in / and /usr])]
)
# Configured paths
AC_SUBST([rootprefix], [$with_rootprefix])
AC_SUBST([rootlibdir], [$with_rootlibdir])
AC_SUBST([udevlibexecdir], [${rootprefix}/lib/udev])
# sysconfdir paths
AC_SUBST([udevconfdir],[${sysconfdir}/udev])
AC_SUBST([udevconffile],[${udevconfdir}/udev.conf])
AC_SUBST([udevhwdbdir],[${udevconfdir}/hwdb.d])
AC_SUBST([udevhwdbbin],[${udevconfdir}/hwdb.bin])
# udevlibexecdir paths
AC_SUBST([udevkeymapdir],[${udevlibexecdir}/keymaps])
AC_SUBST([udevkeymapforceredir],[${udevkeymapdir}/force-release])
AC_SUBST([udevrulesdir],[${udevlibexecdir}/rules.d])
# pkgconfigdir paths
AC_SUBST([pkgconfiglibdir], [${libdir}/pkgconfig])
AC_SUBST([sharepkgconfigdir],[${datadir}/pkgconfig])
# gudev paths
AC_SUBST([libgudev_includedir],[${includedir}/gudev-1.0/gudev])
# introspection paths
AC_SUBST([girdir], [${datadir}/gir-1.0])
AC_SUBST([typelibsdir], [${libdir}/girepository-1.0])
# ------------------------------------------------------------------------------
GOBJECT_INTROSPECTION_CHECK([1.31.1])
AM_CONDITIONAL([HAVE_INTROSPECTION], [test "$enable_introspection" = "yes"])
# ------------------------------------------------------------------------------
have_blkid=no
AC_ARG_ENABLE(blkid, AS_HELP_STRING([--disable-blkid], [Disable optional blkid support]))
if test "x$enable_blkid" != "xno"; then
PKG_CHECK_MODULES([BLKID], [blkid >= 2.20],
[AC_DEFINE(HAVE_BLKID, 1, [Define if blkid is available]) have_blkid=yes], have_blkid=no)
if test "x$have_blkid" = xno -a "x$enable_blkd" = xyes; then
AC_MSG_ERROR([*** blkid support requested but not found])
fi
fi
AM_CONDITIONAL(HAVE_BLKID, [test "x$have_blkid" = "xyes"])
# ------------------------------------------------------------------------------
have_selinux=no
AC_ARG_ENABLE(selinux, AS_HELP_STRING([--disable-selinux], [Disable optional SELINUX support]))
if test "x$enable_selinux" != "xno"; then
PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.1.9],
[AC_DEFINE(HAVE_SELINUX, 1, [Define if SELinux is available]) have_selinux=yes], have_selinux=no)
if test "x$have_selinux" = xno -a "x$enable_selinux" = xyes; then
AC_MSG_ERROR([*** SELinux support requested but libraries not found])
fi
fi
AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"])
if test "x${have_selinux}" != xno ; then
sushell=/sbin/sushell
else
sushell=/bin/bash
fi
AC_SUBST(sushell)
# ------------------------------------------------------------------------------
AC_CHECK_DECL([unshare],
[AC_DEFINE(HAVE_UNSHARE, 1, [Define if unshare is declared])],
[AC_CHECK_DECL([SYS_unshare],
[ ] ,
[AC_MSG_ERROR([*** unshare nor SYS_unshare found.])],
[#include <syscall.h>])],
[#include <sched.h>])
# ------------------------------------------------------------------------------
AC_ARG_WITH(firmware-path,
AS_HELP_STRING([--with-firmware-path=DIR[[[:DIR[...]]]]],
[Firmware search path (default="")]),
[], [with_firmware_path=""])
OLD_IFS=$IFS
IFS=:
for i in $with_firmware_path; do
if test "x${FIRMWARE_PATH}" = "x"; then
FIRMWARE_PATH="\\\"${i}/\\\""
else
FIRMWARE_PATH="${FIRMWARE_PATH}, \\\"${i}/\\\""
fi
done
IFS=$OLD_IFS
AC_SUBST(FIRMWARE_PATH)
AS_IF([test "x${FIRMWARE_PATH}" != "x"], [ AC_DEFINE(HAVE_FIRMWARE, 1, [Define if FIRMWARE is available]) ])
AM_CONDITIONAL(ENABLE_FIRMWARE, [test "x${FIRMWARE_PATH}" != "x"])
# ------------------------------------------------------------------------------
AC_ARG_ENABLE([gudev],
AS_HELP_STRING([--disable-gudev], [disable Gobject libudev support @<:@default=enabled@:>@]),
[], [enable_gudev=yes])
AS_IF([test "x$enable_gudev" = "xyes"], [ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0]) ])
AM_CONDITIONAL([ENABLE_GUDEV], [test "x$enable_gudev" = "xyes"])
# ------------------------------------------------------------------------------
AC_ARG_ENABLE([keymap],
AS_HELP_STRING([--disable-keymap], [disable keymap fixup support @<:@default=enabled@:>@]),
[], [enable_keymap=yes])
if test "x$enable_keymap" = "xyes"; then
AC_PATH_TOOL(GPERF, gperf)
if test -z "$GPERF" ; then
AC_MSG_ERROR([*** gperf not found])
fi
AC_DEFINE([ENABLE_KEYMAP], [1], [Define if we are enabling rule generator])
fi
AM_CONDITIONAL([ENABLE_KEYMAP], [test "x$enable_keymap" = "xyes"])
# ------------------------------------------------------------------------------
GTK_DOC_CHECK([1.18],[--flavour no-tmpl])
AM_CONDITIONAL([ENABLE_GTK_DOC],[test "x$enable_gtk_doc" = "xyes"])
AS_IF([test "x$enable_gtk_doc" = "xyes" -a "x$XSLTPROC" = x], [
AC_MSG_ERROR([*** GTK doc requested but xsltproc not found])
])
# ------------------------------------------------------------------------------
have_manpages=no
AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
AS_IF([test "x$enable_manpages" != xno], [
AS_IF([test "x$enable_manpages" = xyes -a "x$XSLTPROC" = x], [
AC_MSG_ERROR([*** Manpages requested but xsltproc not found])
])
AS_IF([test "x$XSLTPROC" != x], [have_manpages=yes])
])
AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
# ------------------------------------------------------------------------------
AC_ARG_ENABLE(modules, [AS_HELP_STRING([--disable-modules], [Disable loadable module support @<:@default=enabled@:>@])], [], [enable_modules=yes])
AC_ARG_ENABLE(libkmod, [AS_HELP_STRING([--enable-libkmod], [Enable module loading through kmod @<:@default=disabled@:>@])], [], [enable_libkmod=no])
if test "x${enable_modules}" = xyes; then
AC_DEFINE([HAVE_MODULES], [1], [Define if we support loading modules])
AS_IF([test "x${enable_libkmod}" = xyes],
[AC_CHECK_LIB([kmod], [main],
[PKG_CHECK_MODULES(KMOD, [libkmod >= 5])
AC_SUBST([LIBKMOD], ["-lkmod"])
AC_DEFINE([HAVE_LIBKMOD], [1],
[Define if you have libkmod])
],
[AC_MSG_FAILURE(
[--enable-libkmod was given, but test for kmod failed])],
[-lkmod])])
fi
AM_CONDITIONAL([HAVE_MODULES], [test "x${enable_modules}" = xyes])
AM_CONDITIONAL([HAVE_LIBKMOD], [test "x${enable_libkmod}" = xyes])
# ------------------------------------------------------------------------------
AC_ARG_WITH([modprobe],
[AS_HELP_STRING([--with-modprobe=modprobe],
[specify location of modprobe when -- @<:@default=$sbindir/modprobe@:>@])],
[],
[with_modprobe="${sbindir}/modprobe"])
AC_SUBST([MODPROBE], ["${with_modprobe}"])
# ------------------------------------------------------------------------------
# rule-generator - persistent network and optical device rule generator
# ------------------------------------------------------------------------------
AC_ARG_ENABLE([rule-generator],
AS_HELP_STRING([--enable-rule-generator], [enable legacy persistent network, cdrom support]),
[], [enable_rule_generator=no])
if test "x${enable_rule_generator}" != xno; then
AC_DEFINE([ENABLE_RULE_GENERATOR], [1], [Define if we are enabling rule generator])
fi
AM_CONDITIONAL([ENABLE_RULE_GENERATOR], [test "x$enable_rule_generator" = xyes])
# ------------------------------------------------------------------------------
AC_CONFIG_FILES([Makefile
docs/Makefile
docs/gudev/Makefile
docs/gudev/version.xml
docs/libudev/Makefile
docs/libudev/version.xml
hwdb/Makefile
man/Makefile
rules/Makefile
rule_generator/Makefile
rule_generator/write_cd_rules
rule_generator/write_net_rules
src/Makefile
src/accelerometer/Makefile
src/ata_id/Makefile
src/cdrom_id/Makefile
src/collect/Makefile
src/mtd_probe/Makefile
src/scsi_id/Makefile
src/v4l_id/Makefile
src/gudev/Makefile
src/gudev/gudev-1.0.pc
src/libudev/Makefile
src/libudev/libudev.pc
src/udev/Makefile
src/udev/udev.pc
test/Makefile])
AC_OUTPUT
# ------------------------------------------------------------------------------
AC_MSG_RESULT([
prefix: ${prefix}
exec_prefix: ${exec_prefix}
sysconfdir: ${sysconfdir}
datadir: ${datadir}
includedir: ${includedir}
libdir: ${libdir}
rootprefix: ${rootprefix}
rootlibdir: ${rootlibdir}
udevlibexecdir: ${udevlibexecdir}
datarootdir: ${datarootdir}
udevconfdir: ${udevconfdir}
udevconffile: ${udevconffile}
udevhwdbdir: ${udevhwdbdir}
udevhwdbbin: ${udevhwdbbin}
udevkeymapdir: ${udevkeymapdir}
udevkeymapforceredir: ${udevkeymapforceredir}
udevrulesdir: ${udevrulesdir}
pkgconfiglibdir: ${libdir}/pkgconfig
sharepkgconfigdir ${datadir}/pkgconfig
libgudev_includedir ${includedir}/gudev-1.0/gudev
girdir ${datadir}/gir-1.0
typelibsdir ${libdir}/girepository-1.0
])
# ------------------------------------------------------------------------------
dnl Set configured scripts executable
if test -f src/keymap/check-keymaps.sh; then
chmod +x src/keymap/check-keymaps.sh
fi
if test -f src/keymap/keyboard-force-release.sh; then
chmod +x src/keymap/keyboard-force-release.sh
fi