# Makefile for uClibc
#
-# Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org>
+# Copyright (C) 2000-2009 Erik Andersen <andersen@uclibc.org>
#
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+subdirs += utils
+
# "make utils" flags
-# ldconfig,ldd,readelf had also:
-# -Wl,-rpath,/lib
-# -Wl,--dynamic-linker,/lib/ld-uClibc.so.0
-# -Wl,--hash-style=gnu
+CFLAGS-utils := \
+ $(SSP_ALL_CFLAGS) \
+ -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
+ -I$(top_srcdir)ldso/include \
+ -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
+ -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\" \
+ -I$(top_srcdir)/$(KERNEL_HEADERS) \
+ -DNOT_IN_libc \
+ -B$(top_builddir)lib \
+ -Wl,-rpath-link,$(top_builddir)lib
ifeq ($(UCLIBC_BUILD_PIE),y)
CFLAGS-utils-shared := $(PIEFLAG) $(LDPIEFLAG)
CFLAGS-utils-shared :=
endif
-CFLAGS-ldconfig := \
- -I$(top_srcdir)ldso/include \
- -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
- -DUCLIBC_LDSO=$(UCLIBC_LDSO)
+CFLAGS-ldconfig := -DBUILDING_LINKAGE
ifeq ($(UCLIBC_STATIC_LDCONFIG),y)
CFLAGS-ldconfig += -static
else
-CFLAGS-ldconfig += \
- $(CFLAGS-utils-shared) \
- -Wl,-rpath-link,$(top_builddir)lib
+CFLAGS-ldconfig += $(CFLAGS-utils-shared)
endif
-# Can't just pull in $(CFLAGS), there are bad include paths.
-# We want to use "sanitized" headers in LOCAL_INSTALL_PATH.
-CFLAGS-ldconfig += \
- $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) $(OPTIMIZATION) \
- -nostdinc \
- -I $(top_builddir)/$(LOCAL_INSTALL_PATH)/usr/include \
- $(CC_INC) \
- -B$(top_builddir)lib \
-CFLAGS-ldd := \
- $(CFLAGS-utils-shared) \
- $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) $(OPTIMIZATION) \
- -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=$(UCLIBC_LDSO) \
- -nostdinc \
- -I$(top_srcdir)ldso/include \
- -I$(top_builddir)/$(LOCAL_INSTALL_PATH)/usr/include \
- $(CC_INC) \
- -B$(top_builddir)lib \
- -Wl,-rpath-link,$(top_builddir)lib \
+CFLAGS-ldd := $(CFLAGS-utils-shared) -DBUILDING_LINKAGE
-CFLAGS-readelf := \
+# Need CFLAGS-utils explicitly, because the source file is not located in utils
+CFLAGS-iconv := $(CFLAGS-utils) \
$(CFLAGS-utils-shared) \
- $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) $(OPTIMIZATION) \
- -nostdinc \
- -I $(top_builddir)/$(LOCAL_INSTALL_PATH)/usr/include \
- $(CC_INC) \
- -B$(top_builddir)lib \
- -Wl,-rpath-link,$(top_builddir)lib \
-
-# iconv and locale use non-sanitized headers by just pulling in $(CFLAGS)
-CFLAGS-iconv := \
- $(CFLAGS) $(CFLAGS-utils-shared) \
- -DNOT_IN_libc \
- -DL_iconv_main \
- -I$(top_srcdir)/$(KERNEL_HEADERS) \
- -B$(top_builddir)lib \
- -Wl,-rpath-link,$(top_builddir)lib \
-
-CFLAGS-locale := \
- $(CFLAGS) $(CFLAGS-utils-shared) \
- -DNOT_IN_libc \
- -B$(top_builddir)lib \
- -Wl,-rpath-link,$(top_builddir)lib \
+ -I$(top_srcdir)libc/misc/wchar
+CFLAGS-locale := $(CFLAGS-utils)
+CFLAGS-getconf :=$(CFLAGS-utils) \
+ -DGETCONF_DIR='"$(CURDIR)"'
# "make hostutils" flags
-ifeq ($(LDSO_CACHE_SUPPORT),y)
-LDSO_CACHE_SUPPORT := -D__LDSO_CACHE_SUPPORT__=1
-endif
+UTILS_CONFIG_FLAGS-y :=
+UTILS_CONFIG_FLAGS-$(LDSO_CACHE_SUPPORT) += -D__LDSO_CACHE_SUPPORT__
+UTILS_CONFIG_FLAGS-$(LDSO_LDD_SUPPORT) += -D__LDSO_LDD_SUPPORT__
+UTILS_CONFIG_FLAGS-$(LDSO_STANDALONE_SUPPORT) += -D__LDSO_STANDALONE_SUPPORT__
-BUILD_CFLAGS-ldconfig.host := -Wl,-s \
- -include $(top_srcdir)include/elf.h \
- -I$(top_srcdir)ldso/include \
+BUILD_CFLAGS-utils := \
-DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
- -DUCLIBC_LDSO=$(UCLIBC_LDSO) \
- $(LDSO_CACHE_SUPPORT) \
-
-BUILD_CFLAGS-ldd.host := -Wl,-s \
- -include $(top_srcdir)include/elf.h \
- -I$(top_srcdir)ldso/include \
- -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
- -DUCLIBC_LDSO=$(UCLIBC_LDSO) \
- $(LDSO_CACHE_SUPPORT) \
-
-BUILD_CFLAGS-readelf.host := -Wl,-s \
- -include $(top_srcdir)include/elf.h \
-
+ -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\" \
+ $(UTILS_CONFIG_FLAGS-y)
+BUILD_CFLAGS-ldconfig.host := \
+ -DBUILDING_LINKAGE \
+ -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
+ -I$(top_srcdir)ldso/include
+BUILD_CFLAGS-ldd.host := \
+ -DBUILDING_LINKAGE \
+ -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
+ -I$(top_srcdir)ldso/include \
+ -include $(top_srcdir)include/elf.h
+BUILD_CFLAGS-locale.host := \
+ -DNOT_IN_libc \
+ -I$(top_srcdir)utils/ \
+ -I.
+BUILD_CFLAGS-iconv.host := \
+ -include $(top_builddir)extra/locale/c8tables.h \
+ -I$(top_srcdir)libc/misc/wchar -DL_iconv_main
+
+BUILD_CFLAGS-getconf.host := \
+ -DGETCONF_DIR='"$(CURDIR)"'
# Rules
DEPS-ldconfig := $(utils_DIR)/chroot_realpath.c
DEPS-ldconfig.host := $(DEPS-ldconfig)
-utils_OBJ := readelf
+utils_OBJ := getconf
ifeq ($(HAVE_SHARED),y)
utils_OBJ += ldconfig ldd
endif
-utils_ICONV_OBJ :=
utils_LOCALE_OBJ :=
ifeq ($(UCLIBC_HAS_LOCALE),y)
-utils_ICONV_OBJ := $(utils_OUT)/iconv
-utils_LOCALE_OBJ := $(utils_OUT)/locale
+utils_OBJ += iconv
+#utils_LOCALE_OBJ += $(utils_OUT)/locale
endif
utils_OBJ := $(patsubst %,$(utils_OUT)/%,$(utils_OBJ))
hostutils_OBJ := $(patsubst %,%.host,$(utils_OBJ))
+hostutils_LOCALE_OBJ := $(patsubst %,%.host,$(utils_LOCALE_OBJ))
-utils: $(utils_OBJ) $(utils_ICONV_OBJ) $(utils_LOCALE_OBJ)
+utils: $(utils_OBJ) $(utils_LOCALE_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: $(top_srcdir)libc/misc/wchar/wchar.c | $(libc)
- $(compile.u)
-
$(utils_OUT)/locale: $(top_srcdir)extra/locale/programs/locale.c | $(libc)
$(compile.u)
-# Instruct make to install uclibc locally before buiding target utils
-$(utils_OBJ): | $(top_builddir)/$(LOCAL_INSTALL_PATH)
-$(utils_OUT)/iconv: | $(top_builddir)/$(LOCAL_INSTALL_PATH)
-$(utils_OUT)/locale: | $(top_builddir)/$(LOCAL_INSTALL_PATH)
-
-$(top_builddir)/$(LOCAL_INSTALL_PATH):
- $(Q)$(MAKE) -C $(top_builddir) $(LOCAL_INSTALL_PATH)
+$(utils_OUT)/locale.host: $(top_srcdir)extra/locale/programs/locale.c | $(libc)
+ $(hcompile.u)
-hostutils: $(hostutils_OBJ)
+hostutils: $(hostutils_OBJ) $(hostutils_LOCALE_OBJ)
$(hostutils_OBJ): $(utils_OUT)/%.host : $(utils_DIR)/%.c
$(hcompile.u)
# This installs both utils and hostutils, so doesn't depend on either.
-utils_install: $(addsuffix $(DOTHOST), $(utils_OBJ) $(utils_ICONV_OBJ) $(utils_LOCALE_OBJ))
- $(Q)$(INSTALL) -D -m 755 $(utils_OUT)/readelf$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/readelf
+utils_install: $(addsuffix $(DOTHOST), $(utils_OBJ) $(utils_LOCALE_OBJ))
+ $(Q)$(INSTALL) -D -m 755 $(utils_OUT)/getconf$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/getconf
ifeq ($(HAVE_SHARED),y)
$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/ldd$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/ldd
$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/ldconfig$(DOTHOST) $(PREFIX)$(RUNTIME_PREFIX)sbin/ldconfig
endif
ifeq ($(UCLIBC_HAS_LOCALE),y)
$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/iconv$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/iconv
- $(Q)$(INSTALL) -m 755 $(utils_OUT)/locale$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/locale
+ #$(Q)$(INSTALL) -m 755 $(utils_OUT)/locale$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/locale
endif
-objclean-y += utils_clean
+objclean-y += CLEAN_utils
-utils_clean:
- $(do_rm) $(addprefix $(utils_OUT)/, ldconfig ldd readelf iconv locale *.host)
- # This is a hack..
+CLEAN_utils:
+ $(do_rm) $(addprefix $(utils_OUT)/, getconf iconv ldconfig ldd locale *.host)
+ $(Q)# This is a hack..
$(Q)$(RM) $(utils_OUT)/.*.dep