Browse Source

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 năm trước cách đây
mục cha
commit
b870fba08e
3 tập tin đã thay đổi với 104 bổ sung93 xóa
  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}