mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
[PATCH] better allow builds of extras programs under udev
Here is an improved version of the patch that enables builds of the extras progams for the targets all, clean, install, and uninstall, and passes down the "prefix" for use by install and uninstall. This patch enables building of the "extras" programs using the same build environment as udev (i.e. build with udev's versions of klibc and sysfsutils). For example, build scsi_id and udev via: make EXTRAS=extras/scsi_id Build scsi_id and udev with klibc via: make KLIBC=true EXTRAS=extras/scsi_id
This commit is contained in:
parent
1bed1db499
commit
eadb1bbc2e
51
Makefile
51
Makefile
@ -42,6 +42,9 @@ INSTALL_PROGRAM = ${INSTALL}
|
|||||||
INSTALL_DATA = ${INSTALL} -m 644
|
INSTALL_DATA = ${INSTALL} -m 644
|
||||||
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
|
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
|
||||||
|
|
||||||
|
# To build any of the extras programs, run with:
|
||||||
|
# make EXTRAS="extras/a extras/b"
|
||||||
|
EXTRAS=
|
||||||
|
|
||||||
# place to put our device nodes
|
# place to put our device nodes
|
||||||
udevdir = ${prefix}/udev/
|
udevdir = ${prefix}/udev/
|
||||||
@ -60,7 +63,7 @@ AR = $(CROSS)ar
|
|||||||
STRIP = $(CROSS)strip
|
STRIP = $(CROSS)strip
|
||||||
RANLIB = $(CROSS)ranlib
|
RANLIB = $(CROSS)ranlib
|
||||||
|
|
||||||
export CROSS CC AR STRIP RANLIB
|
export CROSS CC AR STRIP RANLIB CFLAGS LDFLAGS LIB_OBJS ARCH_LIB_OBJS CRT0
|
||||||
|
|
||||||
# code taken from uClibc to determine the current arch
|
# code taken from uClibc to determine the current arch
|
||||||
ARCH := ${shell $(CC) -dumpmachine | sed -e s'/-.*//' -e 's/i.86/i386/' -e 's/sparc.*/sparc/' \
|
ARCH := ${shell $(CC) -dumpmachine | sed -e s'/-.*//' -e 's/i.86/i386/' -e 's/sparc.*/sparc/' \
|
||||||
@ -108,20 +111,20 @@ endif
|
|||||||
# If we are using our version of klibc, then we need to build and link it.
|
# If we are using our version of klibc, then we need to build and link it.
|
||||||
# Otherwise, use glibc and link statically.
|
# Otherwise, use glibc and link statically.
|
||||||
ifeq ($(strip $(KLIBC)),true)
|
ifeq ($(strip $(KLIBC)),true)
|
||||||
KLIBC_DIR = klibc/klibc
|
KLIBC_BASE = $(PWD)/klibc
|
||||||
|
KLIBC_DIR = $(KLIBC_BASE)/klibc
|
||||||
INCLUDE_DIR := $(KLIBC_DIR)/include
|
INCLUDE_DIR := $(KLIBC_DIR)/include
|
||||||
|
LINUX_INCLUDE_DIR := $(KLIBC_BASE)/linux/include
|
||||||
include $(KLIBC_DIR)/arch/$(ARCH)/MCONFIG
|
include $(KLIBC_DIR)/arch/$(ARCH)/MCONFIG
|
||||||
# arch specific objects
|
# arch specific objects
|
||||||
LIBGCC = $(shell $(CC) --print-libgcc)
|
|
||||||
ARCH_LIB_OBJS = \
|
ARCH_LIB_OBJS = \
|
||||||
$(KLIBC_DIR)/libc.a \
|
$(KLIBC_DIR)/libc.a
|
||||||
$(LIBGCC)
|
|
||||||
|
|
||||||
|
|
||||||
CRT0 = $(KLIBC_DIR)/crt0.o
|
CRT0 = $(KLIBC_DIR)/crt0.o
|
||||||
LIBC = $(ARCH_LIB_OBJS) $(LIB_OBJS) $(CRT0)
|
LIBC = $(ARCH_LIB_OBJS) $(LIB_OBJS) $(CRT0)
|
||||||
CFLAGS += -nostdinc -I$(INCLUDE_DIR) -I$(KLIBC_DIR)/arch/$(ARCH)/include \
|
CFLAGS += -nostdinc -I$(INCLUDE_DIR) -I$(KLIBC_DIR)/arch/$(ARCH)/include \
|
||||||
-I$(INCLUDE_DIR)/bits$(BITSIZE) -I$(GCCINCDIR) -Iklibc/linux/include \
|
-I$(INCLUDE_DIR)/bits$(BITSIZE) -I$(GCCINCDIR) -I$(LINUX_INCLUDE_DIR) \
|
||||||
-D__KLIBC__
|
-D__KLIBC__
|
||||||
LIB_OBJS =
|
LIB_OBJS =
|
||||||
LDFLAGS = --static --nostdlib -nostartfiles -nodefaultlibs
|
LDFLAGS = --static --nostdlib -nostartfiles -nodefaultlibs
|
||||||
@ -133,7 +136,14 @@ else
|
|||||||
LDFLAGS = --static
|
LDFLAGS = --static
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CFLAGS += -I$(PWD)/libsysfs
|
||||||
|
|
||||||
all: $(ROOT)
|
all: $(ROOT)
|
||||||
|
@for target in $(EXTRAS) ; do \
|
||||||
|
echo $$target ; \
|
||||||
|
$(MAKE) prefix=$(prefix) LD="$(LD)" SYSFS="$(SYSFS)" \
|
||||||
|
-C $$target $@ ; \
|
||||||
|
done ; \
|
||||||
|
|
||||||
$(ROOT): $(LIBC)
|
$(ROOT): $(LIBC)
|
||||||
|
|
||||||
@ -145,13 +155,13 @@ $(CRT0):
|
|||||||
TDB = tdb/tdb.o \
|
TDB = tdb/tdb.o \
|
||||||
tdb/spinlock.o
|
tdb/spinlock.o
|
||||||
|
|
||||||
SYSFS = libsysfs/sysfs_bus.o \
|
SYSFS = $(PWD)/libsysfs/sysfs_bus.o \
|
||||||
libsysfs/sysfs_class.o \
|
$(PWD)/libsysfs/sysfs_class.o \
|
||||||
libsysfs/sysfs_device.o \
|
$(PWD)/libsysfs/sysfs_device.o \
|
||||||
libsysfs/sysfs_dir.o \
|
$(PWD)/libsysfs/sysfs_dir.o \
|
||||||
libsysfs/sysfs_driver.o \
|
$(PWD)/libsysfs/sysfs_driver.o \
|
||||||
libsysfs/sysfs_utils.o \
|
$(PWD)/libsysfs/sysfs_utils.o \
|
||||||
libsysfs/dlist.o
|
$(PWD)/libsysfs/dlist.o
|
||||||
|
|
||||||
OBJS = udev.o \
|
OBJS = udev.o \
|
||||||
udev_config.o \
|
udev_config.o \
|
||||||
@ -192,6 +202,11 @@ clean:
|
|||||||
| xargs rm -f
|
| xargs rm -f
|
||||||
-rm -f core $(ROOT) $(GEN_HEADERS)
|
-rm -f core $(ROOT) $(GEN_HEADERS)
|
||||||
$(MAKE) -C klibc clean
|
$(MAKE) -C klibc clean
|
||||||
|
@for target in $(EXTRAS) ; do \
|
||||||
|
echo $$target ; \
|
||||||
|
$(MAKE) prefix=$(prefix) LD="$(LD)" SYSFS="$(SYSFS)" \
|
||||||
|
-C $$target $@ ; \
|
||||||
|
done ; \
|
||||||
|
|
||||||
DISTFILES = $(shell find . \( -not -name '.' \) -print | grep -v CVS | grep -v "\.tar\.gz" | grep -v "\/\." | grep -v releases | grep -v BitKeeper | grep -v SCCS | grep -v "\.tdb" | grep -v "test\/sys" | sort )
|
DISTFILES = $(shell find . \( -not -name '.' \) -print | grep -v CVS | grep -v "\.tar\.gz" | grep -v "\/\." | grep -v releases | grep -v BitKeeper | grep -v SCCS | grep -v "\.tdb" | grep -v "test\/sys" | sort )
|
||||||
DISTDIR := $(RELEASE_NAME)
|
DISTDIR := $(RELEASE_NAME)
|
||||||
@ -236,6 +251,11 @@ install: all
|
|||||||
$(INSTALL_DATA) udev.permissions $(DESTDIR)$(configdir)
|
$(INSTALL_DATA) udev.permissions $(DESTDIR)$(configdir)
|
||||||
- rm -f $(DESTDIR)$(hotplugdir)/udev.hotplug
|
- rm -f $(DESTDIR)$(hotplugdir)/udev.hotplug
|
||||||
- ln -s $(sbindir)/$(ROOT) $(DESTDIR)$(hotplugdir)/udev.hotplug
|
- ln -s $(sbindir)/$(ROOT) $(DESTDIR)$(hotplugdir)/udev.hotplug
|
||||||
|
@for target in $(EXTRAS) ; do \
|
||||||
|
echo $$target ; \
|
||||||
|
$(MAKE) prefix=$(prefix) LD="$(LD)" SYSFS="$(SYSFS)" \
|
||||||
|
-C $$target $@ ; \
|
||||||
|
done ; \
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
- rm $(hotplugdir)/udev.hotplug
|
- rm $(hotplugdir)/udev.hotplug
|
||||||
@ -247,5 +267,10 @@ uninstall:
|
|||||||
- rmdir $(hotplugdir)
|
- rmdir $(hotplugdir)
|
||||||
- rmdir $(configdir)
|
- rmdir $(configdir)
|
||||||
- rmdir $(udevdir)
|
- rmdir $(udevdir)
|
||||||
|
@for target in $(EXTRAS) ; do \
|
||||||
|
echo $$target ; \
|
||||||
|
$(MAKE) prefix=$(prefix) LD="$(LD)" SYSFS="$(SYSFS)" \
|
||||||
|
-C $$target $@ ; \
|
||||||
|
done ; \
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user