Armin K. wrote:
Here are some corrections to your work. I've defined path to usb.ids and
pci.ids, added common library to shared libudev because there are
undefined references later when linking against that one. Also, I've
modified installation to install gtk-doc htmldocs that are present there.
I made a couple of changes that I think fixed the shared library in a
cleaner way. I also fixed the usb.ids, pci.ids, and the defines for
large files. The build is clean for me on both a 686 and x86_64.
I've not yet looked at the keyboard or gudev, but I'd appreciate it if
you would try linking against the libudev.so this file generates. If
there are unresolved references, would you please send me the output.
-- Bruce
# Custom systemd Makefile that builds/installs udev only for LFS
# Bruce Dubbs 2012-07-11
# vim: tabstop=3
SHELL=/bin/bash
VERSION=186
ifeq ($(V),)
VB = @
else
VB =
endif
WARN = -Wall -W -Wextra -Wno-inline -Wvla -Wundef -Wformat=2 \
-Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs \
-Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self \
-Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes \
-Wstrict-prototypes -Wredundant-decls -Wmissing-declarations \
-Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align \
-Wstrict-aliasing=2 -Wwrite-strings -Wno-overlength-strings \
-Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-result \
-Werror=overflow -Wp,-D_FORTIFY_SOURCE=2 -Wno-long-long
OPTIONS = -O2 -pipe -ffast-math -fno-common -fdiagnostics-show-option \
-fno-strict-aliasing -ffunction-sections -fdata-sections -fPIC
OPTIONS2 := $(OPTIONS) -fvisibility=hidden
LDFLAGS = -pthread -lrt -Wl,--as-needed -Wl,--gc-sections
LDFLAGS2 := $(LDFLAGS) -lblkid -lkmod
DEF = -include cfg.h \
-DSYSCONFDIR=\"/etc\" \
-DFIRMWARE_PATH="\"/lib/firmware/updates/\", \"/lib/firmware/\"" \
-DUSB_DATABASE=\"/usr/share/misc/usb.ids\" \
-DPCI_DATABASE=\"/usr/share/misc/pci.ids\" \
-DROOTPREFIX= \
-DUDEVLIBEXECDIR=\"/lib/udev\" \
-D_LARGEFILE_SOURCE \
-D_FILE_OFFSET_BITS=64
INCLUDE = -I src/libudev -I src/shared -I src -I src/login -I src/systemd
LIBUDEV_SRCS = libudev-device-private.c \
libudev-device.c \
libudev-enumerate.c \
libudev-list.c \
libudev-monitor.c \
libudev-queue-private.c \
libudev-queue.c \
libudev-util.c \
libudev.c
LIBUDEV_OBJS := $(addprefix build/, $(LIBUDEV_SRCS:.c=.o))
LIBUDEV = libudev
LIBUDEV_MAJOR = .1
LIBUDEV_MINOR = .0
LIBUDEV_PATCH = .2
LIBUDEV_SONAME := $(LIBUDEV).so
LIBUDEV_LINK_NAME := $(LIBUDEV_SONAME)$(LIBUDEV_MAJOR)
LIBUDEV_REAL_NAME := $(LIBUDEV_LINK_NAME)$(LIBUDEV_MINOR)$(LIBUDEV_PATCH)
COMMON_LIB = udev-local.a
COMMON_SRCS = log.c \
label.c \
mkdir.c \
cgroup-util.c \
strv.c \
path-util.c \
conf-files.c \
hashmap.c \
set.c \
exit-status.c \
util.c \
dev-setup.c \
sd-login.c \
sd-daemon.c
COMMON_OBJS := $(addprefix build/, $(COMMON_SRCS:.c=.o))
UDEVD_SRCS = udev-ctrl.c \
udev-rules.c \
udev-watch.c \
udev-event.c \
udev-node.c \
udev-builtin.c \
udev-builtin-blkid.c \
udev-builtin-firmware.c \
udev-builtin-path_id.c \
udev-builtin-hwdb.c \
udev-builtin-kmod.c \
udev-builtin-uaccess.c \
udev-builtin-usb_id.c \
udev-builtin-input_id.c
UDEVD_OBJS := $(addprefix build/, $(UDEVD_SRCS:.c=.o))
UDEV_ADMIN_SRCS = udevadm.c \
udevadm-test.c \
udevadm-monitor.c \
udevadm-settle.c \
udevadm-info.c \
udevadm-test-builtin.c \
udevadm-trigger.c \
udevadm-control.c \
udev-rules.c \
udev-ctrl.c \
udev-event.c \
udev-node.c \
udev-watch.c \
udev-builtin.c \
udev-builtin-blkid.c \
udev-builtin-firmware.c \
udev-builtin-path_id.c \
udev-builtin-hwdb.c \
udev-builtin-kmod.c \
udev-builtin-uaccess.c \
udev-builtin-usb_id.c \
udev-builtin-input_id.c
UDEV_ADMIN_OBJS := $(addprefix build/, $(UDEV_ADMIN_SRCS:.c=.o))
LFS_RULES = 55-lfs.rules
VPATH = src/login src/udev src/udev/accelerometer \
src/udev/scsi_id src/udev/cdrom_id src/udev/v4l_id \
src/udev/mtd_probe src/udev/collect src/udev/ata_id \
src/libsystemd-daemon
udev: cfg.h \
build \
build/$(COMMON_LIB) \
build/$(LIBUDEV_REAL_NAME) \
build/udevd \
build/udevadm \
build/accelerometer \
build/ata_id \
build/cdrom_id \
build/scsi_id \
build/v4l_id \
build/mtd_probe \
build/collect
build:
@mkdir -p build
cfg.h:
cp udev-lfs-$(VERSION)/cfg.h .
build/%o: %c
@echo CC $<
$(VB)gcc -c $(WARN) $(OPTIONS2) $(INCLUDE) $(DEF) -o $@ $<
# Sources from src/libudev use -fvisibility=hidden
build/%o: src/libudev/%c
@echo CC $<
$(VB)gcc -c $(WARN) $(OPTIONS) $(INCLUDE) $(DEF) -o $@ $<
# Sources from src/shared use -fvisibility=hidden
build/%o: src/shared/%c
@echo CC $<
$(VB)gcc -c $(WARN) $(OPTIONS) $(INCLUDE) $(DEF) -o $@ $<
# Build the dynamic library
build/$(LIBUDEV_REAL_NAME): $(LIBUDEV_OBJS)
@echo LINK $@
$(VB)gcc -shared \
-o build/$(LIBUDEV_REAL_NAME) \
$(LIBUDEV_OBJS) \
build/$(COMMON_LIB) -ldl -lrt \
-Wl,-soname,$(LIBUDEV_LINK_NAME) \
-Wl,--export-dynamic \
-Wl,--no-whole-archive \
-Wl,--as-needed \
-Wl,--gc-sections
ln -sfn $(LIBUDEV_REAL_NAME) build/$(LIBUDEV_LINK_NAME)
ln -sfn $(LIBUDEV_REAL_NAME) build/$(LIBUDEV_SONAME)
# Build the static library for internal use
build/$(COMMON_LIB): $(COMMON_OBJS) $(LIBUDEV_OBJS) $(UDEVD_OBJS)
@echo AR $@
$(VB)ar rcs build/$(COMMON_LIB) $(COMMON_OBJS) $(LIBUDEV_OBJS)
build/udevd: build/$(COMMON_LIB) build/udevd.o
@echo LINK $@
$(VB)gcc build/udevd.o $(UDEVD_OBJS) -o $@ $(LDFLAGS2) \
build/udev-local.a build/$(COMMON_LIB)
$(VB)strip --strip-unneeded $@
build/udevadm: $(UDEV_ADMIN_OBJS)
@echo LINK $@
$(VB)gcc $(UDEV_ADMIN_OBJS) -o $@ $(LDFLAGS2) build/$(COMMON_LIB) \
build/udev-local.a
$(VB)strip --strip-unneeded $@
build/accelerometer: build/accelerometer.o build/$(COMMON_LIB)
@echo LINK $@
$(VB)gcc build/accelerometer.o -o $@ \
build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS) -lm
$(VB)strip --strip-unneeded $@
build/scsi_id: build/scsi_id.o build/scsi_serial.o build/$(COMMON_LIB)
@echo LINK $@
$(VB)gcc build/scsi_id.o build/scsi_serial.o -o $@ \
build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS)
$(VB)strip --strip-unneeded $@
build/ata_id: build/ata_id.o build/$(COMMON_LIB)
@echo LINK $@
$(VB)gcc build/ata_id.o -o $@ build/udev-local.a build/$(COMMON_LIB)
$(LDFLAGS)
$(VB)strip --strip-unneeded $@
build/cdrom_id: build/cdrom_id.o build/$(COMMON_LIB)
@echo LINK $@
$(VB)gcc build/cdrom_id.o -o $@ build/udev-local.a build/$(COMMON_LIB)
$(LDFLAGS)
$(VB)strip --strip-unneeded $@
build/v4l_id: build/v4l_id.o build/$(COMMON_LIB)
@echo LINK $@
$(VB)gcc build/v4l_id.o -o $@ build/udev-local.a build/$(COMMON_LIB)
$(LDFLAGS)
$(VB)strip --strip-unneeded $@
build/mtd_probe: build/mtd_probe.o build/probe_smartmedia.o build/$(COMMON_LIB)
@echo LINK $@
$(VB)gcc build/mtd_probe.o build/probe_smartmedia.o -o $@ \
build/udev-local.a build/$(COMMON_LIB) $(LDFLAGS)
$(VB)strip --strip-unneeded $@
build/collect: build/collect.o build/$(COMMON_LIB)
@echo LINK $@
$(VB)gcc build/collect.o -o $@ build/udev-local.a build/$(COMMON_LIB)
$(LDFLAGS)
$(VB)strip --strip-unneeded $@
install: udev
@mkdir -pv $(DESTDIR)/lib/udev/devices/pts $(DESTDIR)/lib/udev/rules.d \
$(DESTDIR){,/usr}/lib/firmware $(DESTDIR)/sbin \
$(DESTDIR)/usr/lib/pkgconfig $(DESTDIR)/etc/udev/rules.d \
$(DESTDIR)/usr/share/doc/udev/lfs \
$(DESTDIR)/usr/share/man/man{7,8}
# Copy executables
@cp -v build/udevadm $(DESTDIR)/sbin
@cp -v
build/{udevd,accelerometer,ata_id,cdrom_id,collect,mtd_probe,scsi_id,v4l_id} \
$(DESTDIR)/lib/udev
@cp -v udev-lfs-$(VERSION)/write* $(DESTDIR)/lib/udev
@cp -v udev-lfs-$(VERSION)/*functions $(DESTDIR)/lib/udev
# Copy and set up library and associated files
@cp -v udev-lfs-$(VERSION)/*.pc $(DESTDIR)/usr/lib/pkgconfig
@cp -v udev-lfs-$(VERSION)/*.la $(DESTDIR)/usr/lib
@cp -v build/$(LIBUDEV_REAL_NAME) $(DESTDIR)/usr/lib
@ln -svfn $(DESTDIR)/usr/lib/$(LIBUDEV_REAL_NAME) $(LIBUDEV_SONAME)
@ln -svfn $(DESTDIR)/usr/lib/$(LIBUDEV_REAL_NAME) $(LIBUDEV_LINK_NAME)
# Create null device and copy rules
@rm -f $(DESTDIR)/lib/udev/devices/null
@mknod -m0666 $(DESTDIR)/lib/udev/devices/null
c 1 3
@cp -v rules/* $(DESTDIR)/lib/udev/rules.d
@rm -v $(DESTDIR)/lib/udev/rules.d/99*
@cp -v udev-lfs-$(VERSION)/*lfs.rules $(DESTDIR)/etc/udev/rules.d
# Copy documentation
@cp -v man/udev.7 $(DESTDIR)/usr/share/man/man7
@cp -v man/udevadm.8 $(DESTDIR)/usr/share/man/man8
@cp -v man/systemd-udevd.8
$(DESTDIR)/usr/share/man/man8/udevd.8
@cp -v man/udev*.html $(DESTDIR)/usr/share/doc/udev
@cp -v udev-lfs-$(VERSION)/doc/* $(DESTDIR)/usr/share/doc/udev/lfs
clean:
rm -rf build
rm -f cfg.h
.PHONY: clean
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page