changeset 530:ea7a010e5c47

Add ldd/readelf/ldconfig to cross and native toolchains, and teach build to fallback to stable miniconfig when miniconfig-alt is absent.
author Rob Landley <rob@landley.net>
date Wed, 10 Dec 2008 05:36:41 -0600
parents 71690bef8287
children 4828f4597ede
files cross-compiler.sh mini-native.sh sources/functions.sh sources/patches/uClibc-installutils.patch
diffstat 4 files changed, 67 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/cross-compiler.sh	Mon Dec 08 21:48:07 2008 -0600
+++ b/cross-compiler.sh	Wed Dec 10 05:36:41 2008 -0600
@@ -89,22 +89,17 @@
 # Build and install uClibc
 
 setupfor uClibc
-if unstable uClibc
-then
-  CONFIGFILE=miniconfig-alt-uClibc
-  BUILDIT="install -j $CPUS"
-else
-  CONFIGFILE=miniconfig-uClibc
-  BUILDIT="install -j $CPUS"
-fi
+make CROSS= KCONFIG_ALLCONFIG="$(getconfig uClibc)" allnoconfig &&
+make CROSS="${ARCH}-" KERNEL_HEADERS="${CROSS}/include" PREFIX="${CROSS}/" \
+     RUNTIME_PREFIX=/ DEVEL_PREFIX=/ -j $CPUS install hostutils || dienow
+for i in $(cd utils; ls *.host | sed 's/\.host//')
+do
+  cp utils/"$i".host "$CROSS/bin/$ARCH-$i" || dienow
+done
+cd ..
 
-make CROSS= KCONFIG_ALLCONFIG="${CONFIG_DIR}"/$CONFIGFILE allnoconfig &&
-make CROSS="${ARCH}-" KERNEL_HEADERS="${CROSS}/include" PREFIX="${CROSS}/" \
-     RUNTIME_PREFIX=/ DEVEL_PREFIX=/ $BUILDIT &&
-cd ..
 cleanup uClibc
 
-
 cat > "${CROSS}"/README << EOF &&
 Cross compiler for $ARCH
 From http://impactlinux.com/fwl
--- a/mini-native.sh	Mon Dec 08 21:48:07 2008 -0600
+++ b/mini-native.sh	Wed Dec 10 05:36:41 2008 -0600
@@ -40,8 +40,7 @@
 # Install Linux kernel headers (for use by uClibc).
 make headers_install -j "$CPUS" ARCH="${KARCH}" INSTALL_HDR_PATH="${TOOLS}" &&
 # build bootable kernel for target
-make ARCH="${KARCH}" KCONFIG_ALLCONFIG="${CONFIG_DIR}/miniconfig-linux" \
-  allnoconfig &&
+make ARCH="${KARCH}" KCONFIG_ALLCONFIG="$(getconfig linux)" allnoconfig &&
 cp .config "${TOOLS}"/src/config-linux &&
 make -j $CPUS ARCH="${KARCH}" CROSS_COMPILE="${ARCH}-" &&
 cp "${KERNEL_PATH}" "${WORK}/zImage-${ARCH}" &&
@@ -53,23 +52,12 @@
 # toolchain, but this is cleaner.)
 
 setupfor uClibc
-if unstable uClibc
-then
-  CONFIGFILE=miniconfig-alt-uClibc
-  BUILDIT="install -j $CPUS"
-else
-  CONFIGFILE=miniconfig-uClibc
-  BUILDIT="install -j $CPUS"
-fi
-make CROSS="${ARCH}-" KCONFIG_ALLCONFIG="${CONFIG_DIR}"/$CONFIGFILE allnoconfig &&
+make CROSS="${ARCH}-" KCONFIG_ALLCONFIG="$(getconfig uClibc)" allnoconfig &&
 cp .config "${TOOLS}"/src/config-uClibc &&
 make CROSS="${ARCH}-" KERNEL_HEADERS="${TOOLS}/include" \
      PREFIX="${UCLIBC_TOPDIR}/" \
      RUNTIME_PREFIX="$UCLIBC_DLPREFIX/" DEVEL_PREFIX="$UCLIBC_DLPREFIX/" \
-     UCLIBC_LDSO_NAME=ld-uClibc $BUILDIT &&
-# utils_install wants to put stuff in usr/bin instead of bin.
-# make BLAH=blah utils
-# install -m 755 utils/{readelf,ldd,ldconfig} "${TOOLS}/bin" &&
+     UCLIBC_LDSO_NAME=ld-uClibc -j $CPUS install install_utils &&
 cd ..
 
 cleanup uClibc
@@ -84,6 +72,7 @@
   cp toybox "$TOOLS/bin" &&
   ln -s toybox "$TOOLS/bin/patch" &&
   ln -s toybox "$TOOLS/bin/oneit" &&
+  #ln -s toybox "$TOOLS/bin/netcat" &&
   cd ..
 else
   make install_flat PREFIX="${TOOLS}"/bin CROSS="${ARCH}-" &&
--- a/sources/functions.sh	Mon Dec 08 21:48:07 2008 -0600
+++ b/sources/functions.sh	Wed Dec 10 05:36:41 2008 -0600
@@ -7,6 +7,19 @@
   [ ! -z "$(echo ,"$USE_UNSTABLE", | grep ,"$1",)" ]
 }
 
+# Find appropriate miniconfig file
+
+function getconfig()
+{
+  if unstable "$1" && [ -f "$CONFIG_DIR/miniconfig-alt-$1" ]
+  then
+    echo "$CONFIG_DIR/miniconfig-alt-$1"
+    return
+  fi
+
+  echo "$CONFIG_DIR/miniconfig-$1"
+}
+
 # Strip the version number off a tarball
 
 function cleanup()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sources/patches/uClibc-installutils.patch	Wed Dec 10 05:36:41 2008 -0600
@@ -0,0 +1,42 @@
+Index: Makefile.in
+===================================================================
+--- a/Makefile.in	(revision 24348)
++++ b/Makefile.in	(working copy)
+@@ -447,6 +447,9 @@
+ install_utils: utils
+ 	$(MAKE) CROSS="$(CROSS)" CC="$(CC)" -C utils utils_install
+ 
++install_hostutils: hostutils
++	$(MAKE) CROSS="$(CROSS)" CC="$(CC)" -C utils utils_install DOTHOST=.host
++
+ endif # ifeq ($(HAVE_DOT_CONFIG),y)
+ 
+ include/bits include/config:
+Index: utils/Makefile.in
+===================================================================
+--- a/utils/Makefile.in	(revision 24348)
++++ b/utils/Makefile.in	(working copy)
+@@ -83,15 +83,17 @@
+ 
+ install-y += utils_install
+ 
+-utils_install: utils
+-	#$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/readelf $(PREFIX)$(RUNTIME_PREFIX)usr/bin/readelf
++# This installs both utils and hostutils, so doesn't depend on either.
++
++utils_install:
++	$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/readelf$(DOTHOST) $(PREFIX)$(RUNTIME_PREFIX)bin/readelf
+ ifeq ($(HAVE_SHARED),y)
+-	$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/ldd $(PREFIX)$(RUNTIME_PREFIX)usr/bin/ldd
+-	$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/ldconfig $(PREFIX)$(RUNTIME_PREFIX)sbin/ldconfig
++	$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/ldd$(DOTHOST) $(PREFIX)$(RUNTIME_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 $(PREFIX)$(RUNTIME_PREFIX)usr/bin/iconv
+-	$(Q)$(INSTALL) -m 755 $(utils_OUT)/locale $(PREFIX)$(RUNTIME_PREFIX)usr/bin/locale
++	$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/iconv$(DOTHOST) $(PREFIX)$(RUNTIME_PREFIX)bin/iconv
++	$(Q)$(INSTALL) -m 755 $(utils_OUT)/locale$(DOTHOST) $(PREFIX)$(RUNTIME_PREFIX)bin/locale
+ endif
+ 
+ objclean-y += utils_clean