summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makerules6
-rw-r--r--utils/Makefile96
-rw-r--r--utils/Makefile.in95
3 files changed, 104 insertions, 93 deletions
diff --git a/Makerules b/Makerules
index 8ce7d4851..7c5552b38 100644
--- a/Makerules
+++ b/Makerules
@@ -85,6 +85,12 @@ cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)
cmd_strip = $(STRIPTOOL) $(STRIP_FLAGS) $^
cmd_ar = $(AR) $(ARFLAGS) $@ $^
+define compile.u
+ $(CC) $^ $(DEPS-$(notdir $@)) -o $@ $(CFLAGS) $(CFLAGS-$(notdir $(^D))) $(CFLAGS-$(notdir $@))
+ $(STRIPTOOL) $(STRIP_FLAGS) $@
+endef
+hcompile.u = $(HOSTCC) $^ $(DEPS-$(notdir $@)) -o $@ -Wl,-s $(HOSTCFLAGS) $(HOSTCFLAGS-$(notdir $(^D))) $(HOSTCFLAGS-$(notdir $@))
+
compile.c = @$(disp_compile.c) ; $(cmd_compile.c)
compile.E = $(cmd_compile.c:-c=-E)
compile.S = @$(disp_compile.S) ; $(cmd_compile.S)
diff --git a/utils/Makefile b/utils/Makefile
index d3961dc3b..bdaea9fd4 100644
--- a/utils/Makefile
+++ b/utils/Makefile
@@ -8,96 +8,6 @@
top_srcdir=../
top_builddir=../
include $(top_builddir)Rules.mak
-
-CFLAGS += $(SSP_ALL_CFLAGS) -B$(top_builddir)lib -I$(top_srcdir)ldso/include
-
-TARGETS = ldd ldconfig
-
-ifeq ($(UCLIBC_HAS_LOCALE),y)
-TARGET_ICONV = iconv
-else
-TARGET_ICONV =
-endif
-
-ifeq ($(LDSO_CACHE_SUPPORT),y)
-HOST_LDSO_CACHE_FLAG = -D__LDSO_CACHE_SUPPORT__=1
-else
-HOST_LDSO_CACHE_FLAG =
-endif
-
-# NOTE: We build the utils AFTER we have a uClibc-targeted toolchain.
-
-ifeq ($(HAVE_SHARED),y)
-all: $(TARGETS) $(TARGET_ICONV)
-else
-all: $(TARGET_ICONV)
-endif
-
-readelf: readelf.c
- $(CC) $(CFLAGS) $^ -o $@
- $(STRIPTOOL) -s -x -R .note -R .comment $@
-
-ifeq ($(UCLIBC_STATIC_LDCONFIG),y)
-LDCONFIG_CFLAGS := -static
-else
-LDCONFIG_CFLAGS := $(PIEFLAG) $(LDPIEFLAG)
-endif
-ldconfig: ldconfig.c chroot_realpath.c
- $(CC) $(CFLAGS) $(LDCONFIG_CFLAGS) \
- -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
- -DUCLIBC_LDSO=$(UCLIBC_LDSO) \
- $^ -o $@
- $(STRIPTOOL) -s -x -R .note -R .comment $@
-
-LDD_CFLAGS := $(PIEFLAG) $(LDPIEFLAG)
-ldd: ldd.c
- $(CC) $(CFLAGS) $(LDD_CFLAGS) \
- -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
- -DUCLIBC_LDSO=$(UCLIBC_LDSO) \
- $^ -o $@
- $(STRIPTOOL) -s -x -R .note -R .comment $@
-
-ICONV_CFLAGS := $(PIEFLAG) $(LDPIEFLAG)
-iconv: $(top_srcdir)libc/misc/wchar/wchar.c
- $(CC) $(CFLAGS) $(ICONV_CFLAGS) \
- -DL_iconv_main \
- $^ -o $@
- $(STRIPTOOL) -s -x -R .note -R .comment $@
-
-ifeq ($(HAVE_SHARED),y)
-hostutils: ldd.host ldconfig.host readelf.host
-else
-hostutils: readelf.host
-endif
-
-HOSTCFLAGS += -include $(top_srcdir)include/elf.h
-
-ldd.host: ldd.c
- $(HOSTCC) $(HOSTCFLAGS) -Wl,-s \
- -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" $(HOST_LDSO_CACHE_FLAG) \
- -DUCLIBC_LDSO=$(UCLIBC_LDSO) -I$(top_srcdir)ldso/include \
- $^ -o $@
-
-ldconfig.host: ldconfig.c chroot_realpath.c
- $(HOSTCC) $(HOSTCFLAGS) -Wl,-s \
- -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" $(HOST_LDSO_CACHE_FLAG) \
- -DUCLIBC_LDSO=$(UCLIBC_LDSO) -I$(top_srcdir)ldso/include \
- $^ -o $@
-
-readelf.host: readelf.c
- $(HOSTCC) $(HOSTCFLAGS) -Wl,-s $^ -o $@
-
-clean:
- $(RM) $(TARGETS) *.o *~ core readelf iconv *.host
-
-install: all
-ifeq ($(HAVE_SHARED),y)
- $(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)sbin
- $(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)usr/bin
- $(INSTALL) -m 755 ldd $(PREFIX)$(RUNTIME_PREFIX)usr/bin/ldd
- $(INSTALL) -m 755 ldconfig $(PREFIX)$(RUNTIME_PREFIX)sbin/ldconfig
- #$(INSTALL) -m 755 readelf $(PREFIX)$(RUNTIME_PREFIX)usr/bin/readelf
-endif
-ifeq ($(UCLIBC_HAS_LOCALE),y)
- $(INSTALL) -m 755 iconv $(PREFIX)$(RUNTIME_PREFIX)usr/bin/iconv
-endif
+all: utils
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/utils/Makefile.in b/utils/Makefile.in
new file mode 100644
index 000000000..d5b4da568
--- /dev/null
+++ b/utils/Makefile.in
@@ -0,0 +1,95 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CFLAGS-utils := $(SSP_ALL_CFLAGS) -B$(top_builddir)lib
+
+CFLAGS-utils-common := -I$(top_srcdir)ldso/include -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=$(UCLIBC_LDSO)
+CFLAGS-utils-shared := $(PIEFLAG) $(LDPIEFLAG)
+
+CFLAGS-ldconfig := $(CFLAGS-utils-common)
+
+ifeq ($(UCLIBC_STATIC_LDCONFIG),y)
+CFLAGS-ldconfig += -static
+else
+CFLAGS-ldconfig += $(CFLAGS-utils-shared)
+endif
+
+CFLAGS-ldd := $(CFLAGS-utils-common) $(CFLAGS-utils-shared)
+
+CFLAGS-iconv := $(CFLAGS-utils-shared) -DL_iconv_main
+
+CFLAGS-readelf := $(CFLAGS-utils-shared)
+
+HOSTCFLAGS-utils := -include $(top_srcdir)include/elf.h
+
+HOSTCFLAGS-utils-common := $(CFLAGS-utils-common)
+
+ifeq ($(LDSO_CACHE_SUPPORT),y)
+HOSTCFLAGS-utils-common += -D__LDSO_CACHE_SUPPORT__=1
+endif
+
+HOSTCFLAGS-ldconfig.host := $(HOSTCFLAGS-utils-common)
+
+HOSTCFLAGS-ldd.host := $(HOSTCFLAGS-utils-common) -D_GNU_SOURCE
+
+utils_DIR := $(top_srcdir)utils
+utils_OUT := $(top_builddir)utils
+
+DEPS-ldconfig := $(utils_DIR)/chroot_realpath.c
+DEPS-ldconfig.host := $(DEPS-ldconfig)
+
+utils_OBJ := readelf
+ifeq ($(HAVE_SHARED),y)
+utils_OBJ += ldconfig ldd
+endif
+
+utils_ICONV_OBJ =
+ifeq ($(UCLIBC_HAS_LOCALE),y)
+utils_ICONV_OBJ := $(utils_OUT)/iconv
+endif
+
+utils_OBJ := $(patsubst %,$(utils_OUT)/%,$(utils_OBJ))
+
+hostutils_OBJ := $(patsubst %,%.host,$(utils_OBJ))
+
+utils: $(utils_OBJ) $(utils_ICONV_OBJ)
+
+# NOTE: We build the utils AFTER we have a uClibc-targeted toolchain.
+
+$(utils_OBJ): $(utils_OUT)/% : $(utils_DIR)/%.c | $(libc)
+ $(compile.u)
+
+$(utils_OUT)/iconv.c: $(top_srcdir)libc/misc/wchar/wchar.c | $(libc)
+ $(compile.u)
+
+hostutils: $(hostutils_OBJ)
+
+$(hostutils_OBJ): $(utils_OUT)/%.host : $(utils_DIR)/%.c
+ $(hcompile.u)
+
+# to be removed after included by main Makefile.in
+install: install_utils
+clean: utils_clean
+
+install-y += install_utils
+
+install_utils: utils
+ $(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)usr/bin
+ #$(INSTALL) -m 755 $(utils_OUT)/readelf $(PREFIX)$(RUNTIME_PREFIX)usr/bin/readelf
+ifeq ($(HAVE_SHARED),y)
+ $(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)sbin
+ $(INSTALL) -m 755 $(utils_OUT)/ldd $(PREFIX)$(RUNTIME_PREFIX)usr/bin/ldd
+ $(INSTALL) -m 755 $(utils_OUT)/ldconfig $(PREFIX)$(RUNTIME_PREFIX)sbin/ldconfig
+endif
+ifeq ($(UCLIBC_HAS_LOCALE),y)
+ $(INSTALL) -m 755 $(utils_OUT)/iconv $(PREFIX)$(RUNTIME_PREFIX)usr/bin/iconv
+endif
+
+objclean-y += utils_clean
+
+utils_clean:
+ $(RM) $(utils_OUT)/{ldconfig,ldd,readelf,iconv,*.host}