mirror of
https://github.com/troglobit/finit.git
synced 2026-10-01 05:22:48 +07:00
With the introduction of GLIBC v2.34, all 32-bit devices running Linux get the option of having a 64-bit time_t to survice the UNIX 2038 apocalypse. Support for 64-bit time_t was added to libuev in v2.4.0. The build flags for linking against libuev are defined in the library's .pc files, which basically gives you -D_TIME_BITS=64 for your CPPFLAGS. However, it turns out the $(uev_CFLAGS) from pkg-config were only used when building the main finit binary -- not for the plugins, causing some really wacky behavior as a result. All plugins and Finit itself had some very different opinions on what `struct plugin` looked like, including offsets and size. This led to all I/O plugins initializing their sockets at the wrong offset -- little-endian 32-bit targets set the HOOK_SHUTDOWN callback hook to address 0x1 -- which the reboot code then tried to execute, of course leading to a segfault. This is quite possibly the root cause of issue #216 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
94 lines
2.0 KiB
Makefile
94 lines
2.0 KiB
Makefile
pkglibdir = $(plugin_path)
|
|
AM_LDFLAGS = -module -avoid-version -shared
|
|
AM_CFLAGS = -W -Wall -Wextra -Wno-unused-parameter -std=gnu99
|
|
AM_CPPFLAGS = -I$(top_srcdir)/src -U_FORTIFY_SOURCE
|
|
AM_CPPFLAGS += -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_GNU_SOURCE -D_DEFAULT_SOURCE
|
|
AM_CPPFLAGS += $(lite_CFLAGS) $(uev_CFLAGS)
|
|
|
|
if STATIC
|
|
noinst_LTLIBRARIES = libplug.la
|
|
libplug_la_SOURCES = bootmisc.c modprobe.c pidfile.c procps.c sys.c tty.c usr.c
|
|
|
|
if BUILD_ALSA_UTILS_PLUGIN
|
|
libplug_la_SOURCES += alsa-utils.c
|
|
endif
|
|
|
|
if BUILD_DBUS_PLUGIN
|
|
libplug_la_SOURCES += dbus.c
|
|
endif
|
|
|
|
if BUILD_HOTPLUG_PLUGIN
|
|
libplug_la_SOURCES += hotplug.c
|
|
endif
|
|
|
|
if BUILD_MODULES_LOAD_PLUGIN
|
|
libplug_la_SOURCES += modules-load.c
|
|
endif
|
|
|
|
if BUILD_NETLINK_PLUGIN
|
|
libplug_la_SOURCES += netlink.c
|
|
endif
|
|
|
|
if BUILD_RESOLVCONF_PLUGIN
|
|
libplug_la_SOURCES += resolvconf.c
|
|
endif
|
|
|
|
if BUILD_RTC_PLUGIN
|
|
libplug_la_SOURCES += rtc.c
|
|
endif
|
|
|
|
if BUILD_URANDOM_PLUGIN
|
|
libplug_la_SOURCES += urandom.c
|
|
endif
|
|
|
|
if BUILD_X11_COMMON_PLUGIN
|
|
libplug_la_SOURCES += x11-common.c
|
|
endif
|
|
|
|
else
|
|
pkglib_LTLIBRARIES = bootmisc.la modprobe.la pidfile.la procps.la sys.la tty.la usr.la
|
|
|
|
if BUILD_ALSA_UTILS_PLUGIN
|
|
pkglib_LTLIBRARIES += alsa-utils.la
|
|
endif
|
|
|
|
if BUILD_DBUS_PLUGIN
|
|
pkglib_LTLIBRARIES += dbus.la
|
|
endif
|
|
|
|
if BUILD_HOTPLUG_PLUGIN
|
|
pkglib_LTLIBRARIES += hotplug.la
|
|
endif
|
|
|
|
if BUILD_MODULES_LOAD_PLUGIN
|
|
pkglib_LTLIBRARIES += modules-load.la
|
|
endif
|
|
|
|
if BUILD_NETLINK_PLUGIN
|
|
pkglib_LTLIBRARIES += netlink.la
|
|
endif
|
|
|
|
if BUILD_RESOLVCONF_PLUGIN
|
|
pkglib_LTLIBRARIES += resolvconf.la
|
|
endif
|
|
|
|
if BUILD_RTC_PLUGIN
|
|
pkglib_LTLIBRARIES += rtc.la
|
|
endif
|
|
|
|
if BUILD_URANDOM_PLUGIN
|
|
pkglib_LTLIBRARIES += urandom.la
|
|
endif
|
|
|
|
if BUILD_X11_COMMON_PLUGIN
|
|
pkglib_LTLIBRARIES += x11-common.la
|
|
endif
|
|
|
|
# Clean up .la files installed by libtool despite being in -module mode
|
|
install-exec-hook:
|
|
@(cd $(DESTDIR)$(pkglibdir) && $(RM) $(pkglib_LTLIBRARIES))
|
|
|
|
uninstall-hook:
|
|
@(cd $(DESTDIR)$(pkglibdir) && for file in $(pkglib_LTLIBRARIES); do $(RM) `basename $$file .la`.so; done)
|
|
endif
|