Browse Source

This commit merges David Schleef's updates to the build system, which a
few tiny fixups here and there from me. Seems to work just fine and
will hopefully be a bit better behaved.
-Erik

Eric Andersen 23 years ago
parent
commit
ffc7bb39cc

+ 57 - 45
Makefile

@@ -32,10 +32,6 @@ include Rules.mak
 
 DIRS = extra ldso libc libcrypt libresolv libutil libm  
 
-ifndef $(TARGET_PREFIX)
-	TARGET_PREFIX = `pwd`/_install
-endif
-
 all: headers uClibc_config.h subdirs $(DO_SHARED) done
 
 Config:
@@ -64,12 +60,12 @@ done: $(DO_SHARED)
 headers: dummy
 	@rm -f include/asm include/linux include/bits
 	@if [ $(TARGET_ARCH) = "powerpc" ];then \
-	    ln -s $(KERNEL_SOURCE)/include/asm-ppc include/asm; \
+	    ln -fs $(KERNEL_SOURCE)/include/asm-ppc include/asm; \
 	else \
 	    if [ $(HAS_MMU) != "true" ]; then \
-			ln -s $(KERNEL_SOURCE)/include/asm-$(TARGET_ARCH)nommu include/asm;\
+			ln -fs $(KERNEL_SOURCE)/include/asm-$(TARGET_ARCH)nommu include/asm;\
 		else \
-			ln -s $(KERNEL_SOURCE)/include/asm-$(TARGET_ARCH) include/asm; \
+			ln -fs $(KERNEL_SOURCE)/include/asm-$(TARGET_ARCH) include/asm; \
 		fi; \
 	fi;
 	@if [ ! -f include/asm/unistd.h ] ; then \
@@ -86,8 +82,8 @@ headers: dummy
 	    echo " "; \
 	    sleep 10; \
 	fi;
-	@ln -s $(KERNEL_SOURCE)/include/linux include/linux
-	@ln -s ../libc/sysdeps/linux/$(TARGET_ARCH)/bits include/bits
+	@ln -fs $(KERNEL_SOURCE)/include/linux include/linux
+	@ln -fs ../libc/sysdeps/linux/$(TARGET_ARCH)/bits include/bits
 	(cd include/bits; ln -sf ../../../../../uClibc_config.h uClibc_config.h)
 	$(MAKE) -C libc/sysdeps/linux/$(TARGET_ARCH) headers
 
@@ -173,54 +169,70 @@ $(patsubst %, _dir_%, $(DIRS)) : dummy
 tags:
 	ctags -R
 
-install: install_dev
+install: install_dev install_runtime install_gcc
 
-# Installs shared libraries for a target.
+# install_target:
+# Installs run-time libraries and helper apps (ldconfig) to the
+# locations that one would expect on a host that is running uClibc
+# as the primary libc.  TARGET_PREFIX is the location of the root
+# directory.
 install_target:
 ifeq ($(DO_SHARED),shared)
-	install -d $(TARGET_PREFIX)$(ROOT_DIR)/lib
-	cp -fa lib/*.so* $(TARGET_PREFIX)$(ROOT_DIR)/lib;
-	install -d $(TARGET_PREFIX)$(ROOT_DIR)/etc
-	install -d $(TARGET_PREFIX)$(ROOT_DIR)/sbin
-	install -d $(TARGET_PREFIX)$(ROOT_DIR)/usr/bin
-	cp -f ldso/util/ldd $(TARGET_PREFIX)$(ROOT_DIR)/usr/bin
-	cp -f ldso/util/ldconfig $(TARGET_PREFIX)$(ROOT_DIR)/sbin
+	install -d $(TARGET_PREFIX)/lib
+	install -d $(TARGET_PREFIX)/etc
+	install -d $(TARGET_PREFIX)/sbin
+	install -d $(TARGET_PREFIX)/usr/bin
+	install -m 644 lib/lib*-0.9.5.so $(TARGET_PREFIX)/lib
+	cp -a lib/*.so.* $(TARGET_PREFIX)/lib
+ifeq ($(LDSO_PRESENT),$(TARGET_ARCH))
+	install -m 755 lib/ld-uClibc-0.9.5.so $(TARGET_PREFIX)/lib
+	install -m 755 ldso/util/ldd $(TARGET_PREFIX)/usr/bin
+	install -m 755 ldso/util/ldconfig $(TARGET_PREFIX)/sbin
+endif
 ifeq ($(NATIVE_ARCH), $(TARGET_ARCH))
-	-@if [ -x ldso/util/ldconfig ] ; then ldso/util/ldconfig; fi
+#	-@if [ -x ldso/util/ldconfig ] ; then ldso/util/ldconfig; fi
+endif
+endif
+
+# install_runtime:
+# Installs run-time libraries and helper apps (ldconfig) to the
+# locations one would expect on a host that is running a different
+# libary as the primary libc.
+install_runtime:
+ifeq ($(DO_SHARED),shared)
+	install -d $(DEVEL_PREFIX)/lib
+	install -d $(DEVEL_PREFIX)/etc
+	install -d $(DEVEL_PREFIX)/bin
+	install -m 644 lib/lib*-0.9.5.so $(DEVEL_PREFIX)/lib
+	cp -a lib/*.so.* $(DEVEL_PREFIX)/lib
+ifeq ($(LDSO_PRESENT),$(TARGET_ARCH))
+	install -m 755 lib/ld-uClibc-0.9.5.so $(DEVEL_PREFIX)/lib
+	install -m 755 ldso/util/ldd $(DEVEL_PREFIX)/bin
+	install -m 755 ldso/util/ldconfig $(DEVEL_PREFIX)/bin
+	install -d $(PREFIX)/bin
+	ln -fs $(DEVEL_PREFIX)/bin/ldd $(PREFIX)/bin/$(TARGET_ARCH)-uclibc-ldd
+	install -d $(PREFIX)/sbin
+	ln -fs $(DEVEL_PREFIX)/sbin/ldconfig $(PREFIX)/sbin/$(TARGET_ARCH)-uclibc-ldconfig
 endif
 endif
 
-# Installs development library and headers
-# This is done with the assumption that it can blow away anything
-# in $(DEVEL_PREFIX)$(ROOT_DIR)/include.  Probably true only if you're using
-# a packaging system.
+# install_dev:
+# Installs header files and development library links.
+# DEVEL_PREFIX should be $(PREFIX)/$(target)-linux-uclibc/
 install_dev:
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/usr/lib
-	cp -fa lib/*.[ao] $(DEVEL_PREFIX)$(ROOT_DIR)/usr/lib;
+	install -d $(DEVEL_PREFIX)/lib
+	install -m 644 lib/*.[ao] $(DEVEL_PREFIX)/lib/
 ifeq ($(DO_SHARED),shared)
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/lib
-	cp -fa lib/*.so* $(DEVEL_PREFIX)$(ROOT_DIR)/lib;
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/etc
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/sbin
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/usr/bin
-	cp -f ldso/util/ldd $(DEVEL_PREFIX)$(ROOT_DIR)/usr/bin
-	cp -f ldso/util/ldconfig $(DEVEL_PREFIX)$(ROOT_DIR)/sbin
+	find lib/ -type l -name '*.so' -exec cp -a {} $(DEVEL_PREFIX)/lib ';'
 ifeq ($(NATIVE_ARCH), $(TARGET_ARCH))
-	-@if [ -x ldso/util/ldconfig ] ; then ldso/util/ldconfig; fi
+#	-@if [ -x ldso/util/ldconfig ] ; then ldso/util/ldconfig; fi
 endif
 endif
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/etc
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/usr/include
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/usr/include/bits
-	rm -f $(DEVEL_PREFIX)$(ROOT_DIR)/usr/include/asm
-	rm -f $(DEVEL_PREFIX)$(ROOT_DIR)/usr/include/linux
-	ln -s $(KERNEL_SOURCE)/include/asm $(DEVEL_PREFIX)$(ROOT_DIR)/usr/include/asm
-	ln -s $(KERNEL_SOURCE)/include/linux $(DEVEL_PREFIX)$(ROOT_DIR)/usr/include/linux
-	find include/ -type f -depth -not -path "*CVS*" -exec install \
-	    -D -m 644 {} $(DEVEL_PREFIX)$(ROOT_DIR)/usr/'{}' ';'
-	find include/bits/ -type f -depth -not -path "*CVS*" -exec install \
-	    -D -m 644 {} $(DEVEL_PREFIX)$(ROOT_DIR)/usr/'{}' ';'
-	install -m 644 include/bits/uClibc_config.h $(DEVEL_PREFIX)$(ROOT_DIR)/usr/include/bits/
+	install -d $(DEVEL_PREFIX)/include
+	find include/ -name '*.h' -depth -follow -exec install \
+	    -D -m 644 {} $(DEVEL_PREFIX)/'{}' ';'
+
+install_gcc:
 	$(MAKE) -C extra/gcc-uClibc install
 
 clean:

+ 44 - 8
README

@@ -1,20 +1,56 @@
-To build and install the uClibc development environment,
 
-1) cp ./extra/Configs/Config.<your arch> ./Config
-2) Edit ./Config for your setup.
-3) make
-4) make install_dev (as root if necessary, depending on your Config)
+* Configuration:
 
+  cp ./extra/Configs/Config.<target arch> .Config
 
-To install the runtime environment,
-   make install_target  (again, as root if necessary)
+Then edit ./Config for your setup.  In particular, modify
+CROSS and KERNEL_SOURCE as necessary.  You may also want
+to modify PREFIX if you want to install the development
+environment to /usr/local/ or elsewhere.  By default, the
+development environment is installed into /usr and
+/usr/<arch>-linux-uclibc/.
+
+
+* Building:
+
+  make
+
+
+* Installing the development environment:
+
+(As root, if necessary,)
+
+  make install
+
+This will install the header files, libraries, and the gcc
+wrapper into the directories defined in Config.
+
+If you are targetting the same architecture as the host machine,
+you may want to add a link from /lib/ld-uclibc.0 to the location
+where ld-uclibc.0 was installed.  This allows you to run binaries
+compiled against uClibc without contaminating /lib too much.
+
+
+* Installing the target runtime environment:
+
+(As root, if necessary,)
+
+   make TARGET_PREFIX=`pwd`/_install install_target
+
+This installs only the files that are necessary to run binaries
+compiled against uClibc.  Hint: You really don't want to install
+the target runtime environment on the host machine.
+
+
+* Using uClibc:
 
 To compile programs with uClibc,
 
-   export PATH={uClibc DEVEL_PREFIX/ROOT_DIR}/bin:$PATH
+   export PATH={uClibc DEVEL_PREFIX}/bin:$PATH
 
 and then just ./configure and make as usual.
 
 Note: You may also want to look at extra/gcc-uclibc/gcc-uclibc.c for
       additional information concerning what options and environment
       variables the gcc wrapper handles.
+

+ 9 - 5
Rules.mak

@@ -30,7 +30,7 @@ MINOR_VERSION=9.5
 LIBNAME=libc.a
 SHARED_FULLNAME=libuClibc-$(MAJOR_VERSION).$(MINOR_VERSION).so
 SHARED_MAJORNAME=libc.so.$(MAJOR_VERSION)
-UCLIBC_LDSO=ld-uclibc.so.$(MAJOR_VERSION)
+UCLIBC_LDSO=ld-uClibc.so.$(MAJOR_VERSION)
 LIBC=$(TOPDIR)libc/libc.a
 
 BUILDTIME = $(shell TZ=UTC date --utc "+%Y.%m.%d-%H:%M%z")
@@ -65,12 +65,14 @@ else
     TARGET_LDFLAGS = --uclibc-use-build-dir -s -Wl,-warn-common
 endif
 ifeq ($(strip $(DOPIC)),true)
-    CFLAGS += -fPIC -D__PIC__
+    CFLAGS += -fPIC
 endif
 
 
-ifndef $(PREFIX)
-    PREFIX = `pwd`/_install
+ifndef PREFIX
+    PREFIX = `pwd`/_install/
+    DEVEL_PREFIX = $(PREFIX)
+    TARGET_PREFIX = $(PREFIX)
 endif
 
 NATIVE_ARCH = $(shell uname -m | sed -e 's/i.86/i386/' -e 's/sparc.*/sparc/' -e 's/arm.*/arm/g' -e 's/m68k.*/m68k/' -e 's/ppc/powerpc/g')
@@ -90,10 +92,12 @@ endif
 
 ifeq ($(LDSO_PRESENT), $(TARGET_ARCH))
 	LDSO=$(TOPDIR)lib/$(UCLIBC_LDSO)
-	DYNAMIC_LINKER=$(ROOT_DIR)/lib/$(UCLIBC_LDSO)
+	DYNAMIC_LINKER=/lib/$(UCLIBC_LDSO)
+	BUILD_DYNAMIC_LINKER=$(shell cd $(TOPDIR)lib; pwd)/$(UCLIBC_LDSO)
 else
 	LDSO=$(SYSTEM_LDSO)
 	DYNAMIC_LINKER=$(SYSTEM_LDSO)
+	BUILD_DYNAMIC_LINKER=$(shell cd $(TOPDIR)lib; pwd)/$(UCLIBC_LDSO)
 endif
 
 # Disable libm if HAS_FLOATING_POINT isn't true.

+ 27 - 18
extra/Configs/Config.arm

@@ -139,22 +139,31 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
 #
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-DEVEL_PREFIX = 
-ROOT_DIR = /usr/$(TARGET_ARCH)-linux-uclibc
-TARGET_PREFIX = 
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+PREFIX = /usr
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-linux-uclibc
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 27 - 18
extra/Configs/Config.cross.arm.uclinux

@@ -139,22 +139,31 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
 #
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-DEVEL_PREFIX = /opt/uClinux/arm-elf 
-ROOT_DIR = /opt/uClinux/arm-elf
-TARGET_PREFIX = /opt/uClinux/arm-elf 
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+PREFIX = /opt/uClinux
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-elf
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 27 - 19
extra/Configs/Config.i386

@@ -139,23 +139,31 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
 #
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-
-DEVEL_PREFIX = 
-ROOT_DIR = /usr/$(TARGET_ARCH)-linux-uclibc
-TARGET_PREFIX = 
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+PREFIX = /usr
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-linux-uclibc
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 29 - 21
extra/Configs/Config.m68k

@@ -139,27 +139,6 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
-#
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-
-DEVEL_PREFIX = 
-ROOT_DIR = /opt/uClinux/$(TARGET_ARCH)-pic-elf
-TARGET_PREFIX = 
-
 #
 # ARCH_CFLAGS if your have something special to add to the CFLAGS
 #
@@ -173,3 +152,32 @@ ARCH_CFLAGS2 = -I$(KERNEL_SOURCE)/include
 #
 OPTIMIZATION = $(DEBUG_CFLAGS)
 
+
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
+#
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+PREFIX = /opt/uClinux
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-elf
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 30 - 21
extra/Configs/Config.m68k.coff

@@ -139,27 +139,6 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
-#
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-
-DEVEL_PREFIX = 
-ROOT_DIR = /opt/uClinux
-TARGET_PREFIX = 
-
 #
 # ARCH_CFLAGS if your have something special to add to the CFLAGS
 #
@@ -175,3 +154,33 @@ OPTIMIZATION = $(DEBUG_CFLAGS)
 
 # This is a COFF compiler (ick), so disable all the cool stuff
 HAVE_ELF = false
+
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
+#
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+
+PREFIX = /opt/uClinux
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-coff
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 27 - 19
extra/Configs/Config.mips

@@ -139,23 +139,31 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
 #
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-
-DEVEL_PREFIX = 
-ROOT_DIR = /usr/$(TARGET_ARCH)-linux-uclibc
-TARGET_PREFIX = 
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+PREFIX = /usr
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-linux-uclibc
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 27 - 19
extra/Configs/Config.mipsel

@@ -139,23 +139,31 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
 #
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-
-DEVEL_PREFIX = 
-ROOT_DIR = /usr/$(TARGET_ARCH)-linux-uclibc
-TARGET_PREFIX = 
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+PREFIX = /usr
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-linux-uclibc
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 30 - 22
extra/Configs/Config.powerpc

@@ -35,7 +35,7 @@ TARGET_ARCH=powerpc
 # If you are running a cross compiler, you may want to set this
 # to something more interesting...
 NATIVE_CC = gcc
-CROSS = #powerpc-linux-
+CROSS = #$(TARGET_ARCH)-linux-
 CC = $(CROSS)gcc
 AR = $(CROSS)ar
 LD = $(CROSS)ld
@@ -73,11 +73,11 @@ HAS_FLOATING_POINT = true
 
 # Set this to `false' if you don't have/need float functions in libm.
 # Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well.
-HAS_LIBM_FLOAT = false
+HAS_LIBM_FLOAT = true
 
 # Set this to `false' if you don't have/need double functions in libm.
 # Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well.
-HAS_LIBM_DOUBLE = false
+HAS_LIBM_DOUBLE = true
 
 # Set this to `false' if you don't have/need long double functions in libm.
 # Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well.
@@ -139,23 +139,31 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
 #
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-
-DEVEL_PREFIX = 
-ROOT_DIR = /usr/$(TARGET_ARCH)-linux-uclibc
-TARGET_PREFIX = 
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+PREFIX = /usr
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-linux-uclibc
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 27 - 19
extra/Configs/Config.sh

@@ -160,23 +160,31 @@ INCLUDE_IPV6 = false
 # If you want to compile the library as PIC code, turn this on.
 DOPIC = false
 
-# ROOT_DIR is the base directory which will be compiled into the uClibc 
-# runtime environment.  When compiled as a shared library, the shared
-# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
-# for shared libraries.
+# PREFIX is the directory prefix that is applied to all installed
+# files.  Typically, it is set to /usr or /usr/local, although it
+# could also be /opt/vendor_name_here/some/random/path/.  The
+# install_runtime makefile target installs a few symbolic links
+# based on PREFIX, not DEVEL_PREFIX.
 #
-# DEVEL_PREFIX is the base directory which will be compiled into the uClibc 
-# development environment.  The uClibc development environment will
-# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
-# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
-# Also, 'make install' will install the compiler tools to 
-# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
-#
-# TARGET_PREFIX is the directory under which 'make install' will install the 
-# uClibc runtime environment.   This path does not get compiled into anything,
-# and is provided simply to make it easier to build standalone target systems.
-# Note: This doesn't do anything if there are no shared libs.
-
-DEVEL_PREFIX = 
-ROOT_DIR = /opt/uClinux/$(TARGET_ARCH)-pic-elf
-TARGET_PREFIX = 
+# DEVEL_PREFIX is the directory into which the development environment
+# will be installed.  Include files are installed into
+# $(DEVEL_PREFIX)/include, libraries into $(DEVEL_PREFIX)/lib, etc.
+# This directory is compiled into the uclibc cross compiler spoofer.
+# Generally, DEVEL_PREFIX should be $(PREFIX)/$(TARGET_ARCH)-uclibc-linux.
+# DEVEL_PREFIX is used by the Makefile install targets install_gcc,
+# install_dev, and install_runtime.
+# 
+# TARGET_PREFIX is the directory into which the target runtime
+# environment is installed.  The target runtime environment is
+# what one would use for a embedded system where uclibc is the
+# native libaray.  This will typically be a staging area for
+# creating a root filesystem for the target system, so the default
+# is in the local directory.
+# 
+# If you want to install to a temporary directory before copying
+# files to their final location, you can change PREFIX after build
+# but before 'make install'.
+PREFIX = /opt/uClinux
+DEVEL_PREFIX = $(PREFIX)/$(TARGET_ARCH)-elf
+TARGET_PREFIX = $(TOPDIR)/_install
+

+ 13 - 20
extra/gcc-uClibc/Makefile

@@ -11,7 +11,6 @@ all: gcc-uClibc ld-uClibc
 
 gcc-uClibc.h: $(TOPDIR)/Config
 	@echo "/* this file was autogenerated by make */" > gcc-uClibc.h
-	@echo "#define UCLIBC_ROOT_DIR " \"$(ROOT_DIR)\" >> gcc-uClibc.h
 	@echo "#define UCLIBC_DEVEL_PREFIX " \"$(DEVEL_PREFIX)\" >> gcc-uClibc.h
 	@echo "#define UCLIBC_BUILD_DIR " \"$(UCLIBC_DIR)/\" >> gcc-uClibc.h
 	@echo "#define GCC_BIN " \"$(GCC_BIN)\" >> gcc-uClibc.h
@@ -27,30 +26,24 @@ gcc-uClibc: gcc-uClibc.h gcc-uClibc.c
 ld-uClibc:
 	@echo "#!/bin/sh" > $(TARGET_ARCH)-uclibc-ld
 	@echo "# This file was autogenerated by make" >> $(TARGET_ARCH)-uclibc-ld
-	@echo "$(LD_BIN) -L- -L$(DEVEL_PREFIX)$(ROOT_DIR)/lib -L$(DEVEL_PREFIX)$(ROOT_DIR)/usr/lib "\
+	@echo "$(LD_BIN) -L- -L$(DEVEL_PREFIX)/lib -L$(DEVEL_PREFIX)/usr/lib "\
 		"-L$(UCLIBC_DIR) \$$@" >> $(TARGET_ARCH)-uclibc-ld
 	chmod a+x $(TARGET_ARCH)-uclibc-ld
 
 install: all
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/bin;
-	install -d $(DEVEL_PREFIX)$(ROOT_DIR)/usr/bin;
-	if [ -x ./$(TARGET_ARCH)-uclibc-gcc ] ; then \
-		install -m 755 $(TARGET_ARCH)-uclibc-gcc $(DEVEL_PREFIX)$(ROOT_DIR)/usr/bin/ ; \
-		install -m 755 $(TARGET_ARCH)-uclibc-ld $(DEVEL_PREFIX)$(ROOT_DIR)/usr/bin/ ; \
-		ln -fs ../usr/bin/$(TARGET_ARCH)-uclibc-gcc $(DEVEL_PREFIX)$(ROOT_DIR)/bin/cc; \
-		ln -fs ../usr/bin/$(TARGET_ARCH)-uclibc-gcc $(DEVEL_PREFIX)$(ROOT_DIR)/bin/gcc; \
-		ln -fs ../usr/bin/$(TARGET_ARCH)-uclibc-ld $(DEVEL_PREFIX)$(ROOT_DIR)/bin/ld; \
-		ln -fs $(TARGET_ARCH)-uclibc-gcc $(DEVEL_PREFIX)$(ROOT_DIR)/usr/bin/$(TARGET_ARCH)-uclibc-cc; \
-	fi;
+	install -d $(DEVEL_PREFIX)/bin;
+	install -d $(PREFIX)/bin;
+	install -m 755 $(TARGET_ARCH)-uclibc-gcc $(PREFIX)/bin/
+	install -m 755 $(TARGET_ARCH)-uclibc-ld $(PREFIX)/bin/
+	ln -fs $(TARGET_ARCH)-uclibc-gcc $(PREFIX)/bin/$(TARGET_ARCH)-uclibc-cc
+	ln -fs $(PREFIX)/bin/$(TARGET_ARCH)-uclibc-gcc $(DEVEL_PREFIX)/bin/gcc
+	ln -fs $(PREFIX)/bin/$(TARGET_ARCH)-uclibc-gcc $(DEVEL_PREFIX)/bin/cc
+	ln -fs $(PREFIX)/bin/$(TARGET_ARCH)-uclibc-ld $(DEVEL_PREFIX)/bin/ld
 	for app in addr2line ar as cpp gasp nm objcopy \
-	objdump ranlib size strings strip; do \
-	    ln -fs `which $(CROSS)$${app}` $(DEVEL_PREFIX)$(ROOT_DIR)/bin/$${app}; \
-	done;
-	for app in addr2line ar as cpp gasp nm objcopy \
-	objdump ranlib size strings strip; do \
-	    ln -fs `which $(CROSS)$${app}` $(DEVEL_PREFIX)$(ROOT_DIR)/usr/bin/$(TARGET_ARCH)-uclibc-$${app}; \
-	done;
-
+	    objdump ranlib size strings strip; do \
+	  ln -fs `which $(CROSS)$${app}` $(DEVEL_PREFIX)/bin/$${app}; \
+	  ln -fs `which $(CROSS)$${app}` $(PREFIX)/bin/$(TARGET_ARCH)-uclibc-$${app}; \
+	done
 
 clean:
 	rm -f gcc-uClibc.h *-uclibc-gcc *-uclibc-ld core

+ 6 - 6
extra/gcc-uClibc/gcc-uClibc.c

@@ -78,31 +78,31 @@
 #include "gcc-uClibc.h"
 
 static char *rpath_link[] = {
-	"-Wl,-rpath-link,"UCLIBC_DEVEL_PREFIX UCLIBC_ROOT_DIR"/lib",
+	"-Wl,-rpath-link,"UCLIBC_DEVEL_PREFIX"/lib",
 	"-Wl,-rpath-link,"UCLIBC_BUILD_DIR"/lib"
 };
 
 static char *rpath[] = {
-	"-Wl,-rpath,"UCLIBC_DEVEL_PREFIX UCLIBC_ROOT_DIR"/lib",
+	"-Wl,-rpath,"UCLIBC_DEVEL_PREFIX"/lib",
 	"-Wl,-rpath,"UCLIBC_BUILD_DIR"/lib"
 };
 
 static char *uClibc_inc[] = {
-	"-I"UCLIBC_DEVEL_PREFIX UCLIBC_ROOT_DIR"/usr/include/",
+	"-I"UCLIBC_DEVEL_PREFIX"/include/",
 	"-I"UCLIBC_BUILD_DIR"/include/"
 };
 
 static char *crt0_path[] = {
-	UCLIBC_DEVEL_PREFIX UCLIBC_ROOT_DIR"/usr/lib/crt0.o",
+	UCLIBC_DEVEL_PREFIX"/lib/crt0.o",
 	UCLIBC_BUILD_DIR"/lib/crt0.o"
 };
 
 static char *lib_path[] = {
-	"-L"UCLIBC_DEVEL_PREFIX UCLIBC_ROOT_DIR"/lib",
+	"-L"UCLIBC_DEVEL_PREFIX"/lib",
 	"-L"UCLIBC_BUILD_DIR"/lib"
 };
 
-static char *usr_lib_path = "-L"UCLIBC_DEVEL_PREFIX UCLIBC_ROOT_DIR"/usr/lib";
+static char *usr_lib_path = "-L"UCLIBC_DEVEL_PREFIX"/lib";
 
 static char static_linking[] = "-static";
 static char nostdinc[] = "-nostdinc";

+ 2 - 2
ldso/ldso/Makefile

@@ -28,8 +28,8 @@ TARGET_CFLAGS += #-DDL_DEBUG #-funroll-loops
 
 
 
-LDSO_FULLNAME=ld-uclibc-$(MAJOR_VERSION).$(MINOR_VERSION).so
-TARGET_CFLAGS+=-fPIC -D__PIC__ -DUCLIBC_ROOT_DIR=\"$(ROOT_DIR)\" -DUCLIBC_BUILD_DIR=\"$(shell cd $(TOPDIR); pwd)\"
+LDSO_FULLNAME=ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).so
+TARGET_CFLAGS+=-fPIC -D__PIC__ -DUCLIBC_ROOT_DIR=\"$(DEVEL_PREFIX)\" -DUCLIBC_BUILD_DIR=\"$(shell cd $(TOPDIR); pwd)\"
 CSRC= boot1.c hash.c readelflib1.c vsprintf.c $(TARGET_ARCH)/elfinterp.c
 COBJS=$(patsubst %.c,%.o, $(CSRC))
 ASRC=$(shell ls $(TARGET_ARCH)/*.S)

+ 2 - 2
ldso/util/Makefile

@@ -8,7 +8,7 @@ readsoname.o: readsoname.c readsoname2.c
 	$(STRIPTOOL) -x -R .note -R .comment $*.o
     
 ldconfig.o: ldconfig.c
-	$(TARGET_CC) $(TARGET_CFLAGS) -DUCLIBC_ROOT_DIR=\"$(ROOT_DIR)\" \
+	$(TARGET_CC) $(TARGET_CFLAGS) -DUCLIBC_ROOT_DIR=\"$(DEVEL_PREFIX)\" \
 		-c $< -o $@
 	$(STRIPTOOL) -x -R .note -R .comment $*.o
 
@@ -21,7 +21,7 @@ ldconfig: ldconfig.o readsoname.o
 	$(STRIPTOOL) -x -R .note -R .comment $@
 
 ldd: ldd.c
-	$(TARGET_CC) $(TARGET_CFLAGS) -DUCLIBC_ROOT_DIR=\"$(ROOT_DIR)\" \
+	$(TARGET_CC) $(TARGET_CFLAGS) -DUCLIBC_ROOT_DIR=\"$(DEVEL_PREFIX)\" \
 		-DUCLIBC_BUILD_DIR=\"$(shell cd $(TOPDIR); pwd)\" \
 		-static ldd.c -o $@
 	$(STRIPTOOL) -x -R .note -R .comment $@