# make the build silent. Set this to something else to make it noisy again.
V=false
+VERSION = 068
ROOT = udev
DAEMON = udevd
SENDER = udevsend
+COMPILE = udevrulescompile
INITSENDER = udevinitsend
RECORDER = udeveventrecorder
CONTROL = udevcontrol
+MONITOR = udevmonitor
INFO = udevinfo
TESTER = udevtest
STARTER = udevstart
-VERSION = 058
RELEASE_NAME = $(ROOT)-$(VERSION)
LOCAL_CFG_DIR = etc/udev
DESTDIR =
etcdir = ${prefix}/etc
sbindir = ${exec_prefix}/sbin
usrbindir = ${exec_prefix}/usr/bin
+usrsbindir = ${exec_prefix}/usr/sbin
mandir = ${prefix}/usr/share/man
configdir = ${etcdir}/udev
srcdir = .
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
# place to put our device nodes
-udevdir = ${prefix}/udev
+udevdir = /dev
udevdb = ${udevdir}/.udevdb
# set up PWD so that older versions of make will work with our build.
# code taken from uClibc to determine the libgcc.a filename
GCC_LIB := $(shell $(CC) -print-libgcc-file-name )
-# use '-Os' optimization if available, else use -O2
-OPTIMIZATION := ${shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \
- then echo "-Os"; else echo "-O2" ; fi}
-
# check if compiler option is supported
-cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;}
+cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi;}
-CFLAGS += -Wall -fno-builtin -Wchar-subscripts -Wpointer-arith -Wstrict-prototypes -Wsign-compare
-CFLAGS += $(call cc-supports,-Wno-pointer-sign)
-CFLAGS += $(call cc-supports,-Wdeclaration-after-statement)
+CFLAGS += -Wall -fno-builtin -Wchar-subscripts -Wpointer-arith \
+ -Wstrict-prototypes -Wsign-compare
+CFLAGS += $(call cc-supports, -Wdeclaration-after-statement, )
CFLAGS += -pipe
-CFLAGS += -D_GNU_SOURCE
+CFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
+
+# use '-Os' optimization if available, else use -O2
+OPTFLAGS := $(call cc-supports, -Os, -O2)
HEADERS = \
- udev.h \
- udev_utils.h \
- udev_rules.h \
- udev_version.h \
- udev_db.h \
- udev_sysfs.h \
- logging.h \
- udev_libc_wrapper.h \
- udev_selinux.h \
+ udev.h \
+ udev_utils.h \
+ udev_rules.h \
+ udev_version.h \
+ udev_db.h \
+ udev_sysfs.h \
+ logging.h \
+ udev_libc_wrapper.h \
+ udev_selinux.h \
list.h
SYSFS_OBJS = \
- libsysfs/sysfs_class.o \
- libsysfs/sysfs_device.o \
- libsysfs/sysfs_dir.o \
- libsysfs/sysfs_driver.o \
- libsysfs/sysfs_utils.o \
+ libsysfs/sysfs_class.o \
+ libsysfs/sysfs_device.o \
+ libsysfs/sysfs_dir.o \
+ libsysfs/sysfs_driver.o \
+ libsysfs/sysfs_utils.o \
libsysfs/dlist.o
UDEV_OBJS = \
- udev_utils.o \
- udev_config.o \
- udev_add.o \
- udev_remove.o \
- udev_sysfs.o \
- udev_db.o \
- udev_rules.o \
- udev_rules_parse.o \
+ udev_event.o \
+ udev_device.o \
+ udev_config.o \
+ udev_add.o \
+ udev_remove.o \
+ udev_sysfs.o \
+ udev_db.o \
+ udev_rules.o \
+ udev_rules_parse.o \
+ udev_utils.o \
+ udev_utils_string.o \
+ udev_utils_file.o \
+ udev_utils_run.o \
udev_libc_wrapper.o
OBJS = \
SYSFS = $(PWD)/libsysfs/sysfs.a
-CFLAGS += -I$(PWD)/libsysfs/sysfs \
+MAN_PAGES = \
+ udevmonitor.8 \
+ udevd.8 \
+ udevtest.8 \
+ udevinfo.8 \
+ udevstart.8
+
+CFLAGS += -I$(PWD)/libsysfs/sysfs \
-I$(PWD)/libsysfs
ifeq ($(strip $(USE_LOG)),true)
LDFLAGS += -Wl
STRIPCMD = /bin/true -Since_we_are_debugging
else
- CFLAGS += $(OPTIMIZATION) -fomit-frame-pointer
+ CFLAGS += $(OPTFLAGS) -fomit-frame-pointer
LDFLAGS += -s -Wl
STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment
endif
# link udev against it statically. Otherwise, use glibc and link dynamically.
ifeq ($(strip $(USE_KLIBC)),true)
KLIBC_INSTALL = $(PWD)/klibc/.install
- KLCC = $(KLIBC_INSTALL)/bin/klcc
+ KLCC = $(KLIBC_INSTALL)/bin/$(CROSS)klcc
CC = $(KLCC)
LD = $(KLCC)
else
# config files automatically generated
GEN_CONFIGS = $(LOCAL_CFG_DIR)/udev.conf
-all: $(ROOT) $(SENDER) $(INITSENDER) $(RECORDER) $(CONTROL) $(DAEMON) $(INFO) $(TESTER) $(STARTER) $(GEN_CONFIGS) $(KLCC)
+all: $(ROOT) $(SENDER) $(COMPILE) $(INITSENDER) $(RECORDER) $(CONTROL) $(MONITOR)\
+ $(DAEMON) $(COMPILE) $(INFO) $(TESTER) $(STARTER) $(GEN_CONFIGS) $(KLCC)
@extras="$(EXTRAS)" ; for target in $$extras ; do \
echo $$target ; \
$(MAKE) prefix=$(prefix) \
$(LOCAL_CFG_DIR)/udev.conf:
sed -e "s:@udevdir@:$(udevdir):" -e "s:@configdir@:$(configdir):" < $(LOCAL_CFG_DIR)/udev.conf.in > $@
-GEN_MANPAGES = udev.8
-GEN_MANPAGESIN = udev.8.in
-# Rules on how to create the man pages
-$(GEN_MANPAGES): $(GEN_MANPAGESIN)
- sed -e "s:@udevdir@:$(udevdir):" < $@.in > $@
+# man pages
+%.8: docs/%.xml
+ xmlto man $?
$(UDEV_OBJS): $(HEADERS) $(GEN_HEADERS) $(HOST_PROGS) $(KLCC)
$(SYSFS_OBJS): $(HEADERS) $(HOST_PROGS) $(KLCC)
$(INFO).o: $(HEADERS) $(GEN_HEADERS) $(HOST_PROGS) $(KLCC)
$(DAEMON).o: $(HEADERS) $(GEN_HEADERS) $(HOST_PROGS) $(KLCC)
$(SENDER).o: $(HEADERS) $(GEN_HEADERS) $(HOST_PROGS) $(KLCC)
+$(COMPILE).o: $(HEADERS) $(GEN_HEADERS) $(HOST_PROGS) $(KLCC)
$(INITSENDER).o: $(GEN_HEADERS) $(HOST_PROGS) $(KLCC)
$(RECORDER).o: $(GEN_HEADERS) $(HOST_PROGS) $(KLCC)
$(CONTROL).o: $(HEADERS) $( $(HEADERS)GEN_HEADERS) $(HOST_PROGS) $(KLCC)
+$(MONITOR).o: $(HEADERS) $( $(HEADERS)GEN_HEADERS) $(HOST_PROGS) $(KLCC)
$(STARTER).o: $(HEADERS) $(GEN_HEADERS) $(HOST_PROGS) $(KLCC)
-$(ROOT): $(KLCC) $(ROOT).o $(OBJS) $(HEADERS) $(GEN_MANPAGES)
+$(ROOT): $(KLCC) $(ROOT).o $(OBJS) $(HEADERS) $(MAN_PAGES)
$(QUIET) $(LD) $(LDFLAGS) -o $@ $(ROOT).o $(OBJS) $(LIB_OBJS)
$(QUIET) $(STRIPCMD) $@
$(QUIET) $(LD) $(LDFLAGS) -o $@ $(SENDER).o $(OBJS) $(LIB_OBJS)
$(QUIET) $(STRIPCMD) $@
+$(COMPILE): $(KLCC) $(COMPILE).o $(OBJS)
+ $(QUIET) $(LD) $(LDFLAGS) -o $@ $(COMPILE).o $(OBJS) $(LIB_OBJS)
+ $(QUIET) $(STRIPCMD) $@
+
$(INITSENDER): $(KLCC) $(INITSENDER).o $(OBJS) udevd.h
$(QUIET) $(LD) $(LDFLAGS) -o $@ $(INITSENDER).o $(OBJS) $(LIB_OBJS)
$(QUIET) $(STRIPCMD) $@
$(QUIET) $(LD) $(LDFLAGS) -o $@ $(CONTROL).o $(OBJS) $(LIB_OBJS)
$(QUIET) $(STRIPCMD) $@
+$(MONITOR): $(KLCC) $(MONITOR).o $(OBJS) udevd.h
+ $(QUIET) $(LD) $(LDFLAGS) -o $@ $(MONITOR).o $(OBJS) $(LIB_OBJS)
+ $(QUIET) $(STRIPCMD) $@
+
$(STARTER): $(KLCC) $(STARTER).o $(OBJS)
$(QUIET) $(LD) $(LDFLAGS) -o $@ $(STARTER).o $(OBJS) $(LIB_OBJS)
$(QUIET) $(STRIPCMD) $@
clean:
-find . \( -not -type d \) -and \( -name '*~' -o -name '*.[oas]' \) -type f -print \
| xargs rm -f
- -rm -f core $(ROOT) $(GEN_HEADERS) $(GEN_CONFIGS) $(GEN_MANPAGES) $(INFO) $(DAEMON) \
- $(SENDER) $(INITSENDER) $(RECORDER) $(CONTROL) $(TESTER) $(STARTER)
+ -rm -f core $(ROOT) $(GEN_HEADERS) $(GEN_CONFIGS) $(INFO) $(DAEMON) \
+ $(SENDER) $(COMPILE) $(INITSENDER) $(RECORDER) $(CONTROL) $(MONITOR) $(TESTER) $(STARTER)
-rm -f ccdv
$(MAKE) -C klibc SUBDIRS=klibc clean
@extras="$(EXTRAS)" ; for target in $$extras ; do \
$(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.conf $(DESTDIR)$(configdir); \
fi
@if [ ! -r $(DESTDIR)$(configdir)/rules.d/50-udev.rules ]; then \
- echo $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.rules $(DESTDIR)$(configdir)/rules.d/50-udev.rules; \
- $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.rules $(DESTDIR)$(configdir)/rules.d/50-udev.rules; \
+ echo ; \
+ echo "pick a udev rules file from the etc/udev directory that matches your distribution"; \
+ echo ; \
fi
install-man:
$(INSTALL_DATA) -D udevtest.8 $(DESTDIR)$(mandir)/man8/udevtest.8
$(INSTALL_DATA) -D udevstart.8 $(DESTDIR)$(mandir)/man8/udevstart.8
$(INSTALL_DATA) -D udevd.8 $(DESTDIR)$(mandir)/man8/udevd.8
+ $(INSTALL_DATA) -D udevmonitor.8 $(DESTDIR)$(mandir)/man8/udevmonitor.8
- ln -f -s udevd.8 $(DESTDIR)$(mandir)/man8/udevsend.8
+ - ln -f -s udevd.8 $(DESTDIR)$(mandir)/man8/udevcontrol.8
uninstall-man:
- rm $(mandir)/man8/udev.8
- rm $(mandir)/man8/udevtest.8
- rm $(mandir)/man8/udevstart.8
- rm $(mandir)/man8/udevd.8
+ - rm $(mandir)/man8/udevmonitor.8
- rm $(mandir)/man8/udevsend.8
+ - rm $(mandir)/man8/udevcontrol.8
install: install-config install-man all
$(INSTALL) -d $(DESTDIR)$(udevdir)
$(INSTALL_PROGRAM) -D $(DAEMON) $(DESTDIR)$(sbindir)/$(DAEMON)
$(INSTALL_PROGRAM) -D $(SENDER) $(DESTDIR)$(sbindir)/$(SENDER)
$(INSTALL_PROGRAM) -D $(CONTROL) $(DESTDIR)$(sbindir)/$(CONTROL)
+ $(INSTALL_PROGRAM) -D $(MONITOR) $(DESTDIR)$(usrsbindir)/$(MONITOR)
$(INSTALL_PROGRAM) -D $(INFO) $(DESTDIR)$(usrbindir)/$(INFO)
$(INSTALL_PROGRAM) -D $(TESTER) $(DESTDIR)$(usrbindir)/$(TESTER)
$(INSTALL_PROGRAM) -D $(STARTER) $(DESTDIR)$(sbindir)/$(STARTER)
ifndef DESTDIR
- killall $(DAEMON)
- - $(sbindir)/$(DAEMON) --daemon
- rm -rf $(udevdb)
+ - $(sbindir)/$(DAEMON) --daemon
endif
@extras="$(EXTRAS)" ; for target in $$extras ; do \
echo $$target ; \
- rm $(sbindir)/$(RECORDER)
- rm $(sbindir)/$(CONTROL)
- rm $(sbindir)/$(STARTER)
+ - rm $(usrsbindir)/$(MONITOR)
- rm $(usrbindir)/$(INFO)
- rm $(usrbindir)/$(TESTER)
- rm -rf $(udevdb)
test: all
@ cd test && ./udev-test.pl
@ cd test && ./udevstart-test.pl
+
+tests: test