Kaynağa Gözat

Make utils includable into main Makefile.in, add compile.u and hcompile.u, usable in utils and probably tests. vapier, please quite them if you want to

Peter S. Mazinger 20 yıl önce
ebeveyn
işleme
b870fba08e
3 değiştirilmiş dosya ile 104 ekleme ve 93 silme
  1. 6 0
      Makerules
  2. 3 93
      utils/Makefile
  3. 95 0
      utils/Makefile.in

+ 6 - 0
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)

+ 3 - 93
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

+ 95 - 0
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}