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