From 3ad3d8a1d8c25bab9937e2d9e08ccdbb0b042543 Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Fri, 3 Sep 2004 00:49:43 +0000 Subject: Update to what I'm currently using. Lots of changes... 1) Allow selection of binutils/gcc/gdb/kernel headers to build, although some of the older tool patches probably need updating. 2) Rework gdb build so that remote debugging now works with gdbserver. 3) Misc. other package updates.3) Misc. other package updates.3) Misc. other package updates. --- make/autoconf.mk | 4 +- make/automake.mk | 4 +- make/bash.mk | 1 + make/binutils-uclibc.mk | 26 +++-- make/busybox.mk | 8 +- make/ccache.mk | 32 +++--- make/ext2root.mk | 2 +- make/gcc-uclibc-2.95.mk | 35 +++--- make/gcc-uclibc-3.3.mk | 272 --------------------------------------------- make/gcc-uclibc-3.x.mk | 285 ++++++++++++++++++++++++++++++++++++++++++++++++ make/gdb.mk | 189 +++++++++++++++++++++++++------- make/gdbserver.mk | 53 --------- make/kernel-headers.mk | 44 ++++++-- make/libtool.mk | 6 +- make/linux.mk | 8 +- make/ltrace.mk | 6 +- make/ncurses.mk | 3 +- make/sed.mk | 4 +- make/strace.mk | 6 +- make/uclibc.mk | 60 ++++------ make/util-linux.mk | 2 +- 21 files changed, 569 insertions(+), 481 deletions(-) delete mode 100644 make/gcc-uclibc-3.3.mk create mode 100644 make/gcc-uclibc-3.x.mk delete mode 100644 make/gdbserver.mk (limited to 'make') diff --git a/make/autoconf.mk b/make/autoconf.mk index 8343160ae..4b39ebf9b 100644 --- a/make/autoconf.mk +++ b/make/autoconf.mk @@ -3,10 +3,10 @@ # autoconf # ############################################################# -AUTOCONF_SOURCE:=autoconf-2.57.tar.bz2 +AUTOCONF_SOURCE:=autoconf-2.59.tar.bz2 AUTOCONF_SITE:=ftp://ftp.gnu.org/gnu/autoconf AUTOCONF_CAT:=bzcat -AUTOCONF_DIR:=$(BUILD_DIR)/autoconf-2.57 +AUTOCONF_DIR:=$(BUILD_DIR)/autoconf-2.59 AUTOCONF_BINARY:=autoconf AUTOCONF_TARGET_BINARY:=usr/bin/autoconf diff --git a/make/automake.mk b/make/automake.mk index 6ac66003a..31abb805b 100644 --- a/make/automake.mk +++ b/make/automake.mk @@ -3,10 +3,10 @@ # automake # ############################################################# -AUTOMAKE_SOURCE:=automake-1.6.3.tar.bz2 +AUTOMAKE_SOURCE:=automake-1.9.tar.bz2 AUTOMAKE_SITE:=ftp://ftp.gnu.org/gnu/automake AUTOMAKE_CAT:=bzcat -AUTOMAKE_DIR:=$(BUILD_DIR)/automake-1.6.3 +AUTOMAKE_DIR:=$(BUILD_DIR)/automake-1.9 AUTOMAKE_BINARY:=automake AUTOMAKE_TARGET_BINARY:=usr/bin/automake diff --git a/make/bash.mk b/make/bash.mk index 26c408fc9..855c0fbe0 100644 --- a/make/bash.mk +++ b/make/bash.mk @@ -46,6 +46,7 @@ $(BASH_DIR)/.configured: $(BASH_DIR)/.unpacked $(DISABLE_LARGEFILE) \ --with-curses \ --enable-alias \ + --without-bash-malloc \ ); touch $(BASH_DIR)/.configured diff --git a/make/binutils-uclibc.mk b/make/binutils-uclibc.mk index 0f3296497..8ed94d6f3 100644 --- a/make/binutils-uclibc.mk +++ b/make/binutils-uclibc.mk @@ -3,25 +3,37 @@ # build binutils for use on the host system # ############################################################# +BINUTILS_VERSION:=$(strip $(BINUTILS_VERSION)) + BINUTILS_SITE:=http://ftp.kernel.org/pub/linux/devel/binutils -BINUTILS_SOURCE:=binutils-2.14.90.0.6.tar.bz2 -BINUTILS_DIR:=$(TOOL_BUILD_DIR)/binutils-2.14.90.0.6 +ifeq ($(BINUTILS_VERSION),2.15) +BINUTILS_SITE:=http://ftp.gnu.org/gnu/binutils/ +endif +ifeq ($(BINUTILS_VERSION),2.14) +BINUTILS_SITE:=http://ftp.gnu.org/gnu/binutils/ +endif +ifeq ($(BINUTILS_VERSION),2.13) +BINUTILS_SITE:=http://ftp.gnu.org/gnu/binutils/ +endif + +BINUTILS_SOURCE:=binutils-$(BINUTILS_VERSION).tar.bz2 +BINUTILS_DIR:=$(TOOL_BUILD_DIR)/binutils-$(BINUTILS_VERSION) BINUTILS_CAT:=bzcat -BINUTILS_DIR1:=$(TOOL_BUILD_DIR)/binutils-build +BINUTILS_DIR1:=$(TOOL_BUILD_DIR)/binutils-$(BINUTILS_VERSION)-build $(DL_DIR)/$(BINUTILS_SOURCE): + mkdir -p $(DL_DIR) $(WGET) -P $(DL_DIR) $(BINUTILS_SITE)/$(BINUTILS_SOURCE) $(BINUTILS_DIR)/.unpacked: $(DL_DIR)/$(BINUTILS_SOURCE) mkdir -p $(TOOL_BUILD_DIR) - mkdir -p $(DL_DIR) $(BINUTILS_CAT) $(DL_DIR)/$(BINUTILS_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf - touch $(BINUTILS_DIR)/.unpacked $(BINUTILS_DIR)/.patched: $(BINUTILS_DIR)/.unpacked - # Apply any files named binutils-*.patch from the source directory to binutils - $(SOURCE_DIR)/patch-kernel.sh $(BINUTILS_DIR) $(SOURCE_DIR) binutils-uclibc*.patch + # Apply appropriate binutils patches. + $(SOURCE_DIR)/patch-kernel.sh $(BINUTILS_DIR) $(SOURCE_DIR)/binutils/$(BINUTILS_VERSION) *.patch touch $(BINUTILS_DIR)/.patched $(BINUTILS_DIR1)/.configured: $(BINUTILS_DIR)/.patched @@ -77,7 +89,7 @@ binutils-dirclean: # build binutils for use on the target system # ############################################################# -BINUTILS_DIR2:=$(BUILD_DIR)/binutils-target +BINUTILS_DIR2:=$(BUILD_DIR)/binutils-$(BINUTILS_VERSION)-target $(BINUTILS_DIR2)/.configured: $(BINUTILS_DIR)/.patched mkdir -p $(BINUTILS_DIR2) (cd $(BINUTILS_DIR2); \ diff --git a/make/busybox.mk b/make/busybox.mk index 4ad737ccd..b6cd287fc 100644 --- a/make/busybox.mk +++ b/make/busybox.mk @@ -4,14 +4,14 @@ # ############################################################# -ifeq ($(USE_BUSYBOX_SNAPSHOT),true) +ifneq ($(strip $(USE_BUSYBOX_SNAPSHOT)),) # Be aware that this changes daily.... BUSYBOX_DIR:=$(BUILD_DIR)/busybox -BUSYBOX_SOURCE:=busybox-snapshot.tar.bz2 +BUSYBOX_SOURCE:=busybox-$(strip $(USE_BUSYBOX_SNAPSHOT)).tar.bz2 BUSYBOX_SITE:=http://www.busybox.net/downloads/snapshots else -BUSYBOX_DIR:=$(BUILD_DIR)/busybox-1.00-pre8 -BUSYBOX_SOURCE:=busybox-1.00-pre8.tar.bz2 +BUSYBOX_DIR:=$(BUILD_DIR)/busybox-1.00-rc2 +BUSYBOX_SOURCE:=busybox-1.00-rc2.tar.bz2 BUSYBOX_SITE:=http://www.busybox.net/downloads endif BUSYBOX_UNZIP=bzcat diff --git a/make/ccache.mk b/make/ccache.mk index f495be954..eea70017f 100644 --- a/make/ccache.mk +++ b/make/ccache.mk @@ -19,8 +19,11 @@ $(CCACHE_DIR1)/.unpacked: $(DL_DIR)/$(CCACHE_SOURCE) touch $(CCACHE_DIR1)/.unpacked $(CCACHE_DIR1)/.patched: $(CCACHE_DIR1)/.unpacked - $(SED) "s,getenv(\"CCACHE_PATH\"),\"$(STAGING_DIR)/usr/bin\",g" \ + # WARNING - this will break if the toolchain is moved. + # Should probably patch things to use a relative path. + $(SED) "s,getenv(\"CCACHE_PATH\"),\"$(STAGING_DIR)/bin-ccache\",g" \ $(CCACHE_DIR1)/execute.c + # WARNING - this will break if the toolchain build dir is deleted. $(SED) "s,getenv(\"CCACHE_DIR\"),\"$(CCACHE_DIR1)/cache\",g" \ $(CCACHE_DIR1)/ccache.c mkdir -p $(CCACHE_DIR1)/cache @@ -43,14 +46,16 @@ $(CCACHE_DIR1)/$(CCACHE_BINARY): $(CCACHE_DIR1)/.configured $(STAGING_DIR)/$(CCACHE_TARGET_BINARY): $(CCACHE_DIR1)/$(CCACHE_BINARY) mkdir -p $(STAGING_DIR)/usr/bin; - mkdir -p $(TOOL_BUILD_DIR)/.ccache; cp $(CCACHE_DIR1)/ccache $(STAGING_DIR)/usr/bin - (cd $(STAGING_DIR)/usr/bin; \ + # Keep the actual toolchain binaries in a directory at the same level. + # Otherwise, relative paths for include dirs break. + mkdir -p $(STAGING_DIR)/bin-ccache; + (cd $(STAGING_DIR)/bin-ccache; \ ln -fs $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(OPTIMIZE_FOR_CPU)-linux-gcc; \ ln -fs $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(OPTIMIZE_FOR_CPU)-linux-cc; \ ln -fs $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(OPTIMIZE_FOR_CPU)-linux-uclibc-cc); [ -f $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc ] && \ - mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(STAGING_DIR)/usr/bin/ + mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(STAGING_DIR)/bin-ccache/ (cd $(STAGING_DIR)/bin; \ ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-cc; \ ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-gcc; \ @@ -58,9 +63,9 @@ $(STAGING_DIR)/$(CCACHE_TARGET_BINARY): $(CCACHE_DIR1)/$(CCACHE_BINARY) ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc); ifeq ($(INSTALL_LIBSTDCPP),true) [ -f $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-c++ ] && \ - mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-c++ $(STAGING_DIR)/usr/bin/ + mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-c++ $(STAGING_DIR)/bin-ccache/ [ -f $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-g++ ] && \ - mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-g++ $(STAGING_DIR)/usr/bin/ + mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-g++ $(STAGING_DIR)/bin-ccache/ (cd $(STAGING_DIR)/bin; \ ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-c++; \ ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-g++;\ @@ -68,11 +73,7 @@ ifeq ($(INSTALL_LIBSTDCPP),true) ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-uclibc-g++); endif -ifeq ($(GCC_2_95_TOOLCHAIN),true) -ccache: gcc2_95 $(STAGING_DIR)/$(CCACHE_TARGET_BINARY) -else -ccache: gcc3_3 $(STAGING_DIR)/$(CCACHE_TARGET_BINARY) -endif +ccache: gcc $(STAGING_DIR)/$(CCACHE_TARGET_BINARY) ccache-clean: $(MAKE) -C $(CCACHE_DIR1) uninstall @@ -128,12 +129,11 @@ $(TARGET_DIR)/$(CCACHE_TARGET_BINARY): $(CCACHE_DIR2)/$(CCACHE_BINARY) $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc # put a bunch of symlinks into /bin, since that is earlier # in the default PATH than /usr/bin where gcc lives - (cd $(TARGET_DIR)/usr/bin; ln -fs gcc cc) (cd $(TARGET_DIR)/bin; \ - ln -fs ../usr/bin/ccache cc; \ - ln -fs ../usr/bin/ccache gcc; \ - ln -fs ../usr/bin/ccache c++; \ - ln -fs ../usr/bin/ccache g++;) + ln -fs /usr/bin/ccache cc; \ + ln -fs /usr/bin/ccache gcc; \ + ln -fs /usr/bin/ccache c++; \ + ln -fs /usr/bin/ccache g++;) ccache_target: uclibc $(TARGET_DIR)/$(CCACHE_TARGET_BINARY) diff --git a/make/ext2root.mk b/make/ext2root.mk index 84e14b48f..ff2877145 100644 --- a/make/ext2root.mk +++ b/make/ext2root.mk @@ -34,7 +34,7 @@ genext2fs: $(GENEXT2_DIR)/genext2fs # How much KB we want to add to the calculated size for slack space GENEXT2_REALSIZE=$(subst total,, $(shell LANG=C du $(TARGET_DIR) -s -c -k | grep total )) GENEXT2_ADDTOROOTSIZE=$(shell if [ $(GENEXT2_REALSIZE) -ge 20000 ] ; then echo 16384; else echo 16; fi) -GENEXT2_SIZE=$(shell expr $(GENEXT2_REALSIZE) + $(GENEXT2_ADDTOROOTSIZE)) +GENEXT2_SIZE=$(shell expr $(GENEXT2_REALSIZE) + $(GENEXT2_ADDTOROOTSIZE) + 200) # We currently add about 400 device nodes, so add that into the total GENEXT2_INODES=$(shell expr $(shell find $(TARGET_DIR) | wc -l) + 400) #GENEXT2_SIZE=100000 diff --git a/make/gcc-uclibc-2.95.mk b/make/gcc-uclibc-2.95.mk index 9294b53f7..ddbf118e9 100644 --- a/make/gcc-uclibc-2.95.mk +++ b/make/gcc-uclibc-2.95.mk @@ -17,7 +17,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -ifeq ($(GCC_2_95_TOOLCHAIN),true) +ifeq ($(findstring 2.95,$(GCC_VERSION)),2.95) +GCC_VERSION:=$(strip $(GCC_VERSION)) GCC_SITE:=http://www.uclibc.org/downloads/toolchain GCC_SOURCE:=gcc-20011006.tar.bz2 @@ -48,20 +49,20 @@ endif # build the first pass gcc compiler # ############################################################# -GCC_BUILD_DIR1:=$(TOOL_BUILD_DIR)/gcc2_95-initial +GCC_BUILD_DIR1:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)-initial $(DL_DIR)/$(GCC_SOURCE): + mkdir -p $(DL_DIR) $(WGET) -P $(DL_DIR) $(GCC_SITE)/$(GCC_SOURCE) $(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE) + mkdir -p $(TOOL_BUILD_DIR) $(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf - touch $(GCC_DIR)/.unpacked $(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked # Apply any files named gcc-*.patch from the source directory to gcc - $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) gcc2.95-mega.patch.bz2 - $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) gcc2.95-uclibc-conf.patch - #$(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) gcc-uclibc2_95*.patch + $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR)/gcc/$(GCC_VERSION) *.patch # # We do not wish to build the libstdc++ library provided with gcc, # since it doesn't seem to work at all with uClibc plus gcc 2.95... @@ -107,13 +108,13 @@ $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc: $(GCC_BUILD_DIR1)/.compiled #rm -f $(STAGING_DIR)/bin/gccbug $(STAGING_DIR)/bin/gcov #rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc $(STAGING_DIR)/share/locale -gcc2_95_initial: uclibc-configured binutils $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc +gcc_initial: uclibc-configured binutils $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc -gcc2_95_initial-clean: +gcc_initial-clean: rm -rf $(GCC_BUILD_DIR1) rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)* -gcc2_95_initial-dirclean: +gcc_initial-dirclean: rm -rf $(GCC_BUILD_DIR1) ############################################################# @@ -156,7 +157,7 @@ stlport-dirclean: # the newly built shared uClibc library. # ############################################################# -GCC_BUILD_DIR2:=$(TOOL_BUILD_DIR)/gcc2_95-final +GCC_BUILD_DIR2:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)-final $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a mkdir -p $(GCC_BUILD_DIR2) @@ -200,16 +201,16 @@ endif ); touch $(GCC_BUILD_DIR2)/.installed -gcc2_95: uclibc-configured binutils gcc2_95_initial $(LIBFLOAT_TARGET) uclibc \ +gcc: uclibc-configured binutils gcc_initial $(LIBFLOAT_TARGET) uclibc \ $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) $(STLPORT_TARGET) -gcc2_95-source: $(DL_DIR)/$(GCC_SOURCE) +gcc-source: $(DL_DIR)/$(GCC_SOURCE) -gcc2_95-clean: +gcc-clean: rm -rf $(GCC_BUILD_DIR2) rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)* -gcc2_95-dirclean: +gcc-dirclean: rm -rf $(GCC_BUILD_DIR2) ############################################################# @@ -217,7 +218,7 @@ gcc2_95-dirclean: # Next build target gcc compiler # ############################################################# -GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc2_95-target +GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-$(GCC_VERSION)-target $(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR2)/.installed mkdir -p $(GCC_BUILD_DIR3) @@ -264,13 +265,13 @@ $(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled #rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so* #touch -c $(TARGET_DIR)/usr/bin/gcc -gcc2_95_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc +gcc_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc -gcc2_95_target-clean: +gcc_target-clean: rm -rf $(GCC_BUILD_DIR3) rm -f $(TARGET_DIR)/bin/$(REAL_GNU_TARGET_NAME)* -gcc2_95_target-dirclean: +gcc_target-dirclean: rm -rf $(GCC_BUILD_DIR3) endif diff --git a/make/gcc-uclibc-3.3.mk b/make/gcc-uclibc-3.3.mk deleted file mode 100644 index d39eed590..000000000 --- a/make/gcc-uclibc-3.3.mk +++ /dev/null @@ -1,272 +0,0 @@ -# Makefile for to build a gcc/uClibc toolchain -# -# Copyright (C) 2002-2003 Erik Andersen -# Copyright (C) 2004 Manuel Novoa III -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -ifneq ($(GCC_2_95_TOOLCHAIN),true) - -# Shiny new stuff... -GCC_VERSION:=3.3.4 -GCC_SITE:=ftp://ftp.gnu.org/gnu/gcc/releases/gcc-$(GCC_VERSION) -GCC_SITE:=http://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-$(GCC_VERSION) - -# -# snapshots.... -#GCC_VERSION:=3.3-20031013 -#GCC_SITE:=http://gcc.get-software.com/snapshots/$(GCC_VERSION) -# -GCC_SOURCE:=gcc-$(GCC_VERSION).tar.bz2 -GCC_DIR:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION) -GCC_CAT:=bzcat -GCC_STRIP_HOST_BINARIES:=true - -############################################################# -# -# Setup some initial stuff -# -############################################################# - -ifeq ($(INSTALL_LIBGCJ),true) -TARGET_LANGUAGES:=c,c++,java -else -ifeq ($(INSTALL_LIBSTDCPP),true) -TARGET_LANGUAGES:=c,c++ -else -TARGET_LANGUAGES:=c -endif -endif - -############################################################# -# -# build the first pass gcc compiler -# -############################################################# -GCC_BUILD_DIR1:=$(TOOL_BUILD_DIR)/gcc-3.3-initial - -$(DL_DIR)/$(GCC_SOURCE): - $(WGET) -P $(DL_DIR) $(GCC_SITE)/$(GCC_SOURCE) - -$(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE) - $(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf - - touch $(GCC_DIR)/.unpacked - -$(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked - # Apply any files named gcc-*.patch from the source directory to gcc - $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) gcc-uclibc-3.3*.patch -ifeq ($(SOFT_FLOAT),true) -ifeq ("$(strip $(ARCH))","i386") - $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) i386-gcc-soft-float.patch -endif -endif - touch $(GCC_DIR)/.patched - -# The --without-headers option stopped working with gcc 3.0 and has never been -# # fixed, so we need to actually have working C library header files prior to -# # the step or libgcc will not build... -$(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.patched - mkdir -p $(GCC_BUILD_DIR1) - -mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include - (cd $(GCC_BUILD_DIR1); PATH=$(TARGET_PATH) \ - $(GCC_DIR)/configure \ - --prefix=$(STAGING_DIR) \ - --build=$(GNU_HOST_NAME) \ - --host=$(GNU_HOST_NAME) \ - --target=$(REAL_GNU_TARGET_NAME) \ - --enable-languages=c \ - --disable-shared \ - --includedir=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include \ - --with-sysroot=$(TOOL_BUILD_DIR)/uClibc_dev/ \ - --disable-__cxa_atexit \ - --enable-target-optspace \ - --with-gnu-ld \ - $(DISABLE_NLS) \ - $(MULTILIB) \ - $(SOFT_FLOAT_CONFIG_OPTION) \ - $(EXTRA_GCC_CONFIG_OPTIONS)); - touch $(GCC_BUILD_DIR1)/.configured - -$(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured - PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) all-gcc - touch $(GCC_BUILD_DIR1)/.compiled - -$(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc: $(GCC_BUILD_DIR1)/.compiled - PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) install-gcc - #rm -f $(STAGING_DIR)/bin/gccbug $(STAGING_DIR)/bin/gcov - #rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc $(STAGING_DIR)/share/locale - -gcc3_3_initial: uclibc-configured binutils $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc - -gcc3_3_initial-clean: - rm -rf $(GCC_BUILD_DIR1) - rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)* - -gcc3_3_initial-dirclean: - rm -rf $(GCC_BUILD_DIR1) - -############################################################# -# -# second pass compiler build. Build the compiler targeting -# the newly built shared uClibc library. -# -############################################################# -GCC_BUILD_DIR2:=$(TOOL_BUILD_DIR)/gcc-3.3-final -$(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a - mkdir -p $(GCC_BUILD_DIR2) - # Important! Required for limits.h to be fixed. - ln -sf include $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/sys-include - (cd $(GCC_BUILD_DIR2); PATH=$(TARGET_PATH) \ - $(GCC_DIR)/configure \ - --prefix=$(STAGING_DIR) \ - --build=$(GNU_HOST_NAME) \ - --host=$(GNU_HOST_NAME) \ - --target=$(REAL_GNU_TARGET_NAME) \ - --enable-languages=$(TARGET_LANGUAGES) \ - --enable-shared \ - --with-gxx-include-dir=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include/c++ \ - --disable-__cxa_atexit \ - --enable-target-optspace \ - --with-gnu-ld \ - $(DISABLE_NLS) \ - $(MULTILIB) \ - $(SOFT_FLOAT_CONFIG_OPTION) \ - $(GCC_USE_SJLJ_EXCEPTIONS) \ - $(EXTRA_GCC_CONFIG_OPTIONS)); - touch $(GCC_BUILD_DIR2)/.configured - -$(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured - PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR2) all - touch $(GCC_BUILD_DIR2)/.compiled - -$(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled - PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR2) install - # Strip the host binaries -ifeq ($(GCC_STRIP_HOST_BINARIES),true) - -strip --strip-all -R .note -R .comment $(STAGING_DIR)/bin/* -endif - # Set up the symlinks to enable lying about target name. - set -e; \ - (cd $(STAGING_DIR); \ - ln -sf $(REAL_GNU_TARGET_NAME) $(GNU_TARGET_NAME); \ - cd bin; \ - for app in $(REAL_GNU_TARGET_NAME)-* ; do \ - ln -sf $${app} \ - $(GNU_TARGET_NAME)$${app##$(REAL_GNU_TARGET_NAME)}; \ - done; \ - ); -ifeq ($(SOFT_FLOAT),true) - # Replace specs file with one that defaults to soft float mode. - if [ ! -f $(STAGING_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs ] ; then \ - echo staging dir specs file is missing ; \ - /bin/false ; \ - fi; - cp $(SOURCE_DIR)/specs-$(ARCH)-soft-float \ - $(STAGING_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs -endif - touch $(GCC_BUILD_DIR2)/.installed - -$(TARGET_DIR)/lib/libgcc_s.so.1: $(GCC_BUILD_DIR2)/.installed - # These are in /lib, so... - rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so* - -$(STRIP) $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libgcc_s.so.1 - -cp -a $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libgcc_s* $(TARGET_DIR)/lib/ - -gcc3_3: uclibc-configured binutils gcc3_3_initial $(LIBFLOAT_TARGET) uclibc \ - $(TARGET_DIR)/lib/libgcc_s.so.1 $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) - -gcc3_3-source: $(DL_DIR)/$(GCC_SOURCE) - -gcc3_3-clean: - rm -rf $(GCC_BUILD_DIR2) - rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)* - -gcc3_3-dirclean: - rm -rf $(GCC_BUILD_DIR2) - -############################################################# -# -# Next build target gcc compiler -# -############################################################# -GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-3.3-target - -$(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR2)/.installed - mkdir -p $(GCC_BUILD_DIR3) - (cd $(GCC_BUILD_DIR3); PATH=$(TARGET_PATH) \ - $(GCC_DIR)/configure \ - --prefix=/usr \ - --build=$(GNU_HOST_NAME) \ - --host=$(REAL_GNU_TARGET_NAME) \ - --target=$(REAL_GNU_TARGET_NAME) \ - --enable-languages=$(TARGET_LANGUAGES) \ - --enable-shared \ - --with-gxx-include-dir=/usr/include/c++ \ - --disable-__cxa_atexit \ - --enable-target-optspace \ - --with-gnu-ld \ - $(DISABLE_NLS) \ - $(MULTILIB) \ - $(SOFT_FLOAT_CONFIG_OPTION) \ - $(GCC_USE_SJLJ_EXCEPTIONS) \ - $(EXTRA_GCC_CONFIG_OPTIONS)); - touch $(GCC_BUILD_DIR3)/.configured - -$(GCC_BUILD_DIR3)/.compiled: $(GCC_BUILD_DIR3)/.configured - PATH=$(TARGET_PATH) \ - $(MAKE) $(JLEVEL) $(TARGET_GCC_ARGS) -C $(GCC_BUILD_DIR3) all - touch $(GCC_BUILD_DIR3)/.compiled - -$(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled - PATH=$(TARGET_PATH) \ - $(MAKE) $(JLEVEL) DESTDIR=$(TARGET_DIR) -C $(GCC_BUILD_DIR3) install -ifeq ($(SOFT_FLOAT),true) - # Replace specs file with one that defaults to soft float mode. - if [ ! -f $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs ] ; then \ - echo target dir specs file is missing ; \ - /bin/false ; \ - fi; - cp $(SOURCE_DIR)/specs-$(ARCH)-soft-float $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs - # Make sure gcc does not think we are cross compiling - $(SED) "s/^1/0/;" $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs -else - # Remove broken specs file (cross compile flag is set). - rm -f $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs -endif - -(cd $(TARGET_DIR)/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) - -(cd $(TARGET_DIR)/usr/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) - -(cd $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION); $(STRIP) cc1 cc1plus collect2 > /dev/null 2>&1) - -(cd $(TARGET_DIR)/usr/lib; $(STRIP) libstdc++.so.*.*.* > /dev/null 2>&1) - -(cd $(TARGET_DIR)/lib; $(STRIP) libgcc_s.so.*.*.* > /dev/null 2>&1) - # - rm -f $(TARGET_DIR)/usr/lib/*.la* - #rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ - # $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc - # Work around problem of missing syslimits.h - cp -f $(STAGING_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/include/syslimits.h $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/include/ - # These are in /lib, so... - #rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so* - #touch -c $(TARGET_DIR)/usr/bin/gcc - -gcc3_3_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc - -gcc3_3_target-clean: - rm -rf $(GCC_BUILD_DIR3) - rm -f $(TARGET_DIR)/bin/$(REAL_GNU_TARGET_NAME)* - -gcc3_3_target-dirclean: - rm -rf $(GCC_BUILD_DIR3) - -endif diff --git a/make/gcc-uclibc-3.x.mk b/make/gcc-uclibc-3.x.mk new file mode 100644 index 000000000..a4760dbdf --- /dev/null +++ b/make/gcc-uclibc-3.x.mk @@ -0,0 +1,285 @@ +# Makefile for to build a gcc/uClibc toolchain +# +# Copyright (C) 2002-2003 Erik Andersen +# Copyright (C) 2004 Manuel Novoa III +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +ifneq ($(findstring 2.95,$(GCC_VERSION)),2.95) +GCC_VERSION:=$(strip $(GCC_VERSION)) + +GCC_SITE:=ftp://ftp.gnu.org/gnu/gcc/releases/gcc-$(GCC_VERSION) +#GCC_SITE:=http://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-$(GCC_VERSION) + +# +# snapshots.... +#GCC_VERSION:=3.3-20031013 +#GCC_SITE:=http://gcc.get-software.com/snapshots/$(GCC_VERSION) +# +GCC_SOURCE:=gcc-$(GCC_VERSION).tar.bz2 +GCC_DIR:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION) +GCC_CAT:=bzcat +GCC_STRIP_HOST_BINARIES:=true + +############################################################# +# +# Setup some initial stuff +# +############################################################# + +ifeq ($(INSTALL_LIBGCJ),true) +TARGET_LANGUAGES:=c,c++,java +else +ifeq ($(INSTALL_LIBSTDCPP),true) +TARGET_LANGUAGES:=c,c++ +else +TARGET_LANGUAGES:=c +endif +endif + +############################################################# +# +# build the first pass gcc compiler +# +############################################################# +GCC_BUILD_DIR1:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)-initial + +$(DL_DIR)/$(GCC_SOURCE): + echo GCC_SOURCE is $(GCC_SOURCE) + /bin/false + mkdir -p $(DL_DIR) + $(WGET) -P $(DL_DIR) $(GCC_SITE)/$(GCC_SOURCE) + +$(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE) + mkdir -p $(TOOL_BUILD_DIR) + $(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf - + touch $(GCC_DIR)/.unpacked + +$(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked + # Apply any files named gcc-*.patch from the source directory to gcc + $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR)/gcc/$(GCC_VERSION) *.patch + # Note: The soft float situation has improved considerably with gcc 3.4.x. + # We can dispense with the custom spec files, as well as libfloat for the arm case. + # However, we still need a patch for arm. There's a similar patch for gcc 3.3.x + # which needs to be integrated so we can kill of libfloat for good, except for + # anyone (?) who might still be using gcc 2.95. mjn3 +ifeq ($(SOFT_FLOAT),true) +ifeq ("$(strip $(ARCH))","arm") + $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR)/gcc/$(GCC_VERSION) arm-softfloat.patch.conditional +endif + # Not yet updated to 3.4.1. + #ifeq ("$(strip $(ARCH))","i386") + #$(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR)/gcc i386-gcc-soft-float.patch + #endif +endif + touch $(GCC_DIR)/.patched + +# The --without-headers option stopped working with gcc 3.0 and has never been +# # fixed, so we need to actually have working C library header files prior to +# # the step or libgcc will not build... + +$(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.patched + mkdir -p $(GCC_BUILD_DIR1) + (cd $(GCC_BUILD_DIR1); PATH=$(TARGET_PATH) \ + $(GCC_DIR)/configure \ + --prefix=$(STAGING_DIR) \ + --build=$(GNU_HOST_NAME) \ + --host=$(GNU_HOST_NAME) \ + --target=$(REAL_GNU_TARGET_NAME) \ + --enable-languages=c \ + --disable-shared \ + --with-sysroot=$(TOOL_BUILD_DIR)/uClibc_dev/ \ + --disable-__cxa_atexit \ + --enable-target-optspace \ + --with-gnu-ld \ + $(DISABLE_NLS) \ + $(MULTILIB) \ + $(SOFT_FLOAT_CONFIG_OPTION) \ + $(GCC_WITH_CPU) $(GCC_WITH_ARCH) $(GCC_WITH_TUNE) \ + $(EXTRA_GCC_CONFIG_OPTIONS)); + touch $(GCC_BUILD_DIR1)/.configured + +$(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured + PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) all-gcc + touch $(GCC_BUILD_DIR1)/.compiled + +$(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc: $(GCC_BUILD_DIR1)/.compiled + PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) install-gcc + #rm -f $(STAGING_DIR)/bin/gccbug $(STAGING_DIR)/bin/gcov + #rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc $(STAGING_DIR)/share/locale + +gcc_initial: uclibc-configured binutils $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc + +gcc_initial-clean: + rm -rf $(GCC_BUILD_DIR1) + rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)* + +gcc_initial-dirclean: + rm -rf $(GCC_BUILD_DIR1) + +############################################################# +# +# second pass compiler build. Build the compiler targeting +# the newly built shared uClibc library. +# +############################################################# +# +# Sigh... I had to rework things because using --with-gxx-include-dir +# causes issues with include dir search order for g++. This seems to +# have something to do with "path translations" and possibly doesn't +# affect gcc-target. However, I haven't tested gcc-target yet so no +# guarantees. mjn3 + +GCC_BUILD_DIR2:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)-final +$(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched $(STAGING_DIR)/lib/libc.a + mkdir -p $(GCC_BUILD_DIR2) + # Important! Required for limits.h to be fixed. + ln -sf ../include $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/sys-include + (cd $(GCC_BUILD_DIR2); PATH=$(TARGET_PATH) \ + $(GCC_DIR)/configure \ + --prefix=$(STAGING_DIR) \ + --build=$(GNU_HOST_NAME) \ + --host=$(GNU_HOST_NAME) \ + --target=$(REAL_GNU_TARGET_NAME) \ + --enable-languages=$(TARGET_LANGUAGES) \ + --enable-shared \ + --disable-__cxa_atexit \ + --enable-target-optspace \ + --with-gnu-ld \ + $(DISABLE_NLS) \ + $(MULTILIB) \ + $(SOFT_FLOAT_CONFIG_OPTION) \ + $(GCC_WITH_CPU) $(GCC_WITH_ARCH) $(GCC_WITH_TUNE) \ + $(GCC_USE_SJLJ_EXCEPTIONS) \ + $(EXTRA_GCC_CONFIG_OPTIONS)); + touch $(GCC_BUILD_DIR2)/.configured + +$(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured + PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR2) all + touch $(GCC_BUILD_DIR2)/.compiled + +$(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled + PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR2) install + # Strip the host binaries +ifeq ($(GCC_STRIP_HOST_BINARIES),true) + -strip --strip-all -R .note -R .comment $(STAGING_DIR)/bin/* +endif + # Set up the symlinks to enable lying about target name. + set -e; \ + (cd $(STAGING_DIR); \ + ln -sf $(REAL_GNU_TARGET_NAME) $(GNU_TARGET_NAME); \ + cd bin; \ + for app in $(REAL_GNU_TARGET_NAME)-* ; do \ + ln -sf $${app} \ + $(GNU_TARGET_NAME)$${app##$(REAL_GNU_TARGET_NAME)}; \ + done; \ + ); + touch $(GCC_BUILD_DIR2)/.installed + +$(TARGET_DIR)/lib/libgcc_s.so.1: $(GCC_BUILD_DIR2)/.installed + # These are in /lib, so... + rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so* + -$(STRIP) $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libgcc_s.so.1 + -cp -a $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libgcc_s* $(TARGET_DIR)/lib/ + +gcc: uclibc-configured binutils gcc_initial $(LIBFLOAT_TARGET) uclibc \ + $(TARGET_DIR)/lib/libgcc_s.so.1 $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) + +gcc-source: $(DL_DIR)/$(GCC_SOURCE) + +gcc-clean: + rm -rf $(GCC_BUILD_DIR2) + rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)* + +gcc-dirclean: + rm -rf $(GCC_BUILD_DIR2) + +############################################################# +# +# Next build target gcc compiler +# +############################################################# +GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-$(GCC_VERSION)-target + +$(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR2)/.installed + mkdir -p $(GCC_BUILD_DIR3) + (cd $(GCC_BUILD_DIR3); PATH=$(TARGET_PATH) \ + $(GCC_DIR)/configure \ + --prefix=/usr \ + --build=$(GNU_HOST_NAME) \ + --host=$(REAL_GNU_TARGET_NAME) \ + --target=$(REAL_GNU_TARGET_NAME) \ + --enable-languages=$(TARGET_LANGUAGES) \ + --enable-shared \ + --with-gxx-include-dir=/usr/include/c++ \ + --disable-__cxa_atexit \ + --enable-target-optspace \ + --with-gnu-ld \ + $(DISABLE_NLS) \ + $(MULTILIB) \ + $(SOFT_FLOAT_CONFIG_OPTION) \ + $(GCC_WITH_CPU) $(GCC_WITH_ARCH) $(GCC_WITH_TUNE) \ + $(GCC_USE_SJLJ_EXCEPTIONS) \ + $(EXTRA_GCC_CONFIG_OPTIONS)); + touch $(GCC_BUILD_DIR3)/.configured + +$(GCC_BUILD_DIR3)/.compiled: $(GCC_BUILD_DIR3)/.configured + PATH=$(TARGET_PATH) \ + $(MAKE) $(JLEVEL) $(TARGET_GCC_ARGS) -C $(GCC_BUILD_DIR3) all + touch $(GCC_BUILD_DIR3)/.compiled + +# +# gcc-lib dir changes names to gcc with 3.4.mumble +# +ifeq ($(findstring 3.4.,$(GCC_VERSION)),3.4.) +GCC_LIB_SUBDIR=lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION) +else +GCC_LIB_SUBDIR=lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION) +endif + +$(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled + PATH=$(TARGET_PATH) \ + $(MAKE) $(JLEVEL) DESTDIR=$(TARGET_DIR) -C $(GCC_BUILD_DIR3) install + # Remove broken specs file (cross compile flag is set). + rm -f $(TARGET_DIR)/usr/$(GCC_LIB_SUBDIR)/specs + -(cd $(TARGET_DIR)/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) + -(cd $(TARGET_DIR)/usr/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) + -(cd $(TARGET_DIR)/usr/$(GCC_LIB_SUBDIR); $(STRIP) cc1 cc1plus collect2 > /dev/null 2>&1) + -(cd $(TARGET_DIR)/usr/lib; $(STRIP) libstdc++.so.*.*.* > /dev/null 2>&1) + -(cd $(TARGET_DIR)/lib; $(STRIP) libgcc_s.so.*.*.* > /dev/null 2>&1) + # + rm -f $(TARGET_DIR)/usr/lib/*.la* + #rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ + # $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc + # Work around problem of missing syslimits.h + @if [ ! -f $(TARGET_DIR)/usr/$(GCC_LIB_SUBDIR)/include/syslimits.h ] ; then \ + echo "warning: working around missing syslimits.h" ; \ + cp -f $(STAGING_DIR)/$(GCC_LIB_SUBDIR)/include/syslimits.h \ + $(TARGET_DIR)/usr/$(GCC_LIB_SUBDIR)/include/ ; \ + fi + # These are in /lib, so... + #rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so* + #touch -c $(TARGET_DIR)/usr/bin/gcc + +gcc_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc + +gcc_target-clean: + rm -rf $(GCC_BUILD_DIR3) + rm -f $(TARGET_DIR)/bin/$(REAL_GNU_TARGET_NAME)* + +gcc_target-dirclean: + rm -rf $(GCC_BUILD_DIR3) + +endif diff --git a/make/gdb.mk b/make/gdb.mk index 59a08be3d..4030ede7f 100644 --- a/make/gdb.mk +++ b/make/gdb.mk @@ -1,42 +1,112 @@ -############################################################# +###################################################################### # # gdb # -############################################################# +###################################################################### +GDB_VERSION:=$(strip $(GDB_VERSION)) -GDB_SITE:=ftp://ftp.gnu.org/gnu/gdb/ -GDB_DIR:=$(BUILD_DIR)/gdb-5.3 -GDB_SOURCE:=gdb-5.3.tar.gz -GDB_PATCH:=$(SOURCE_DIR)/gdb.patch -GDB_UCLIBC_PATCH:=$(SOURCE_DIR)/gdb-5.3-uclibc.patch +GDB_SITE:=http://ftp.gnu.org/gnu/gdb + +ifeq ($(GDB_VERSION),5.3) +GDB_SOURCE:=gdb-$(GDB_VERSION).tar.gz +GDB_CAT:=zcat +else +GDB_SOURCE:=gdb-$(GDB_VERSION).tar.bz2 +GDB_CAT:=bzcat +endif + +GDB_DIR:=$(TOOL_BUILD_DIR)/gdb-$(GDB_VERSION) $(DL_DIR)/$(GDB_SOURCE): $(WGET) -P $(DL_DIR) $(GDB_SITE)/$(GDB_SOURCE) -$(GDB_DIR)/.unpacked: $(DL_DIR)/$(GDB_SOURCE) $(GDB_PATCH) - gunzip -c $(DL_DIR)/$(GDB_SOURCE) | tar -C $(BUILD_DIR) -xvf - - cat $(GDB_PATCH) | patch -p1 -d $(GDB_DIR) - cat $(GDB_UCLIBC_PATCH) | patch -p1 -d $(GDB_DIR) - touch $(GDB_DIR)/.unpacked - -$(GDB_DIR)/.configured: $(GDB_DIR)/.unpacked +$(GDB_DIR)/.unpacked: $(DL_DIR)/$(GDB_SOURCE) + $(GDB_CAT) $(DL_DIR)/$(GDB_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf - + $(SOURCE_DIR)/patch-kernel.sh $(GDB_DIR) $(SOURCE_DIR)/gdb/$(GDB_VERSION) *.patch # Copy a config.sub from gcc. This is only necessary until # gdb's config.sub supports -linux-uclibc tuples. + # Should probably integrate this into the patch. +ifeq ($(GDB_VERSION),5.3) + chmod u+x $(GDB_DIR)/gdb/gdbserver/configure cp $(GCC_DIR)/config.sub $(GDB_DIR) cp $(GCC_DIR)/config.sub $(GDB_DIR)/readline/support/ - (cd $(GDB_DIR); rm -rf config.cache; \ +endif + touch $(GDB_DIR)/.unpacked + +###################################################################### +# +# gdb target +# +###################################################################### + +GDB_TARGET_DIR:=$(BUILD_DIR)/gdb-$(GDB_VERSION)-target + +GDB_TARGET_CONFIGURE_VARS:= \ + ac_cv_type_uintptr_t=yes \ + gt_cv_func_gettext_libintl=yes \ + ac_cv_func_dcgettext=yes \ + gdb_cv_func_sigsetjmp=yes \ + bash_cv_func_strcoll_broken=no \ + bash_cv_must_reinstall_sighandlers=no \ + bash_cv_func_sigsetjmp=present \ + bash_cv_have_mbstate_t=yes + +$(GDB_TARGET_DIR)/.configured: $(GDB_DIR)/.unpacked + mkdir -p $(GDB_TARGET_DIR) + (cd $(GDB_TARGET_DIR); \ $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS)" \ - ac_cv_type_uintptr_t=yes \ - gt_cv_func_gettext_libintl=yes \ - ac_cv_func_dcgettext=yes \ - gdb_cv_func_sigsetjmp=yes \ - bash_cv_func_strcoll_broken=no \ - bash_cv_must_reinstall_sighandlers=no \ - bash_cv_func_sigsetjmp=present \ - ./configure \ + CFLAGS_FOR_TARGET="$(TARGET_CFLAGS)" \ + $(GDB_TARGET_CONFIGURE_VARS) \ + $(GDB_DIR)/configure \ + --build=$(GNU_HOST_NAME) \ + --host=$(REAL_GNU_TARGET_NAME) \ --target=$(REAL_GNU_TARGET_NAME) \ + --prefix=/usr \ + $(DISABLE_NLS) \ + --without-uiout --disable-gdbmi \ + --disable-tui --disable-gdbtk --without-x \ + --disable-sim --enable-gdbserver \ + --without-included-gettext \ + ); +ifeq ($(ENABLE_LOCALE),true) + -$(SED) "s,^INTL *=.*,INTL = -lintl,g;" $(GDB_DIR)/gdb/Makefile +endif + touch $(GDB_TARGET_DIR)/.configured + +$(GDB_TARGET_DIR)/gdb/gdb: $(GDB_TARGET_DIR)/.configured + $(MAKE) CC=$(TARGET_CC) MT_CFLAGS="$(TARGET_CFLAGS)" \ + -C $(GDB_TARGET_DIR) + $(STRIP) $(GDB_TARGET_DIR)/gdb/gdb + +$(TARGET_DIR)/usr/bin/gdb: $(GDB_TARGET_DIR)/gdb/gdb + install -c $(GDB_TARGET_DIR)/gdb/gdb $(TARGET_DIR)/usr/bin/gdb + +gdb_target: $(TARGET_DIR)/usr/bin/gdb + +gdb_target-source: $(DL_DIR)/$(GDB_SOURCE) + +gdb_target-clean: + $(MAKE) -C $(GDB_DIR) clean + +gdb_target-dirclean: + rm -rf $(GDB_DIR) + +###################################################################### +# +# gdbserver +# +###################################################################### + +GDB_SERVER_DIR:=$(BUILD_DIR)/gdbserver-$(GDB_VERSION) + +$(GDB_SERVER_DIR)/.configured: $(GDB_DIR)/.unpacked + mkdir -p $(GDB_SERVER_DIR) + (cd $(GDB_SERVER_DIR); \ + $(TARGET_CONFIGURE_OPTS) \ + $(GDB_DIR)/gdb/gdbserver/configure \ + --build=$(GNU_HOST_NAME) \ --host=$(REAL_GNU_TARGET_NAME) \ + --target=$(REAL_GNU_TARGET_NAME) \ --prefix=/usr \ --exec-prefix=/usr \ --bindir=/usr/bin \ @@ -51,30 +121,65 @@ $(GDB_DIR)/.configured: $(GDB_DIR)/.unpacked $(DISABLE_NLS) \ --without-uiout --disable-gdbmi \ --disable-tui --disable-gdbtk --without-x \ - --disable-sim --enable-gdbserver \ --without-included-gettext \ ); -ifeq ($(ENABLE_LOCALE),true) - -$(SED) "s,^INTL *=.*,INTL = -lintl,g;" $(GDB_DIR)/gdb/Makefile -endif - touch $(GDB_DIR)/.configured + touch $(GDB_SERVER_DIR)/.configured -$(GDB_DIR)/gdb/gdb: $(GDB_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) -C $(GDB_DIR) - $(STRIP) $(GDB_DIR)/gdb/gdb +$(GDB_SERVER_DIR)/gdbserver: $(GDB_SERVER_DIR)/.configured + $(MAKE) CC=$(TARGET_CC) MT_CFLAGS="$(TARGET_CFLAGS)" \ + -C $(GDB_SERVER_DIR) + $(STRIP) $(GDB_SERVER_DIR)/gdbserver -$(TARGET_DIR)/usr/bin/gdb: $(GDB_DIR)/gdb/gdb - install -c $(GDB_DIR)/gdb/gdb $(TARGET_DIR)/usr/bin/gdb - rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ - $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc +$(TARGET_DIR)/usr/bin/gdbserver: $(GDB_SERVER_DIR)/gdbserver + install -c $(GDB_SERVER_DIR)/gdbserver $(TARGET_DIR)/usr/bin/gdbserver -gdb: $(TARGET_DIR)/usr/bin/gdb +gdbserver: $(TARGET_DIR)/usr/bin/gdbserver -gdb-source: $(DL_DIR)/$(GDB_SOURCE) +gdbserver-clean: + $(MAKE) -C $(GDB_SERVER_DIR) clean + +gdbserver-dirclean: + rm -rf $(GDB_SERVER_DIR) + +###################################################################### +# +# gdb client +# +###################################################################### + +GDB_CLIENT_DIR:=$(TOOL_BUILD_DIR)/gdbclient-$(GDB_VERSION) + +$(GDB_CLIENT_DIR)/.configured: $(GDB_DIR)/.unpacked + mkdir -p $(GDB_CLIENT_DIR) + (cd $(GDB_CLIENT_DIR); \ + $(GDB_DIR)/configure \ + --prefix=$(STAGING_DIR) \ + --build=$(GNU_HOST_NAME) \ + --host=$(GNU_HOST_NAME) \ + --target=$(REAL_GNU_TARGET_NAME) \ + $(DISABLE_NLS) \ + --without-uiout --disable-gdbmi \ + --disable-tui --disable-gdbtk --without-x \ + --without-included-gettext \ + ); + touch $(GDB_CLIENT_DIR)/.configured + +$(GDB_CLIENT_DIR)/gdb/gdb: $(GDB_CLIENT_DIR)/.configured + $(MAKE) -C $(GDB_CLIENT_DIR) + strip $(GDB_CLIENT_DIR)/gdb/gdb + +$(TARGET_CROSS)gdb: $(GDB_CLIENT_DIR)/gdb/gdb + install -c $(GDB_CLIENT_DIR)/gdb/gdb $(TARGET_CROSS)gdb + ln -s ../../bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-gdb \ + $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/bin/gdb + +gdbclient: $(TARGET_CROSS)gdb + +gdbclient-clean: + $(MAKE) -C $(GDB_CLIENT_DIR) clean + +gdbclient-dirclean: + rm -rf $(GDB_CLIENT_DIR) -gdb-clean: - $(MAKE) -C $(GDB_DIR) clean -gdb-dirclean: - rm -rf $(GDB_DIR) diff --git a/make/gdbserver.mk b/make/gdbserver.mk deleted file mode 100644 index 1ab44a236..000000000 --- a/make/gdbserver.mk +++ /dev/null @@ -1,53 +0,0 @@ -############################################################# -# -# gdbserver -# -############################################################# - -#Use GDB_DIR/etc values from gdb.mk -#Build gdbserver in a dir outside of the main gdb tree -GDB_WDIR:=$(BUILD_DIR)/gdbserver - - -$(GDB_WDIR)/.configured: $(GDB_DIR)/.unpacked - mkdir -p $(GDB_WDIR) - (cd $(GDB_WDIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(GDB_DIR)/gdb/gdbserver/configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --prefix=/usr \ - --exec-prefix=/usr \ - --bindir=/usr/bin \ - --sbindir=/usr/sbin \ - --libexecdir=/usr/lib \ - --sysconfdir=/etc \ - --datadir=/usr/share \ - --localstatedir=/var \ - --mandir=/usr/man \ - --infodir=/usr/info \ - --includedir=$(STAGING_DIR)/include \ - $(DISABLE_NLS) \ - --without-uiout --disable-gdbmi \ - --disable-tui --disable-gdbtk --without-x \ - --without-included-gettext \ - ); - touch $(GDB_WDIR)/.configured - -$(GDB_WDIR)/gdbserver: $(GDB_WDIR)/.configured - $(MAKE) CC=$(TARGET_CC) -C $(GDB_WDIR) - $(STRIP) $(GDB_WDIR)/gdbserver - -$(TARGET_DIR)/usr/bin/gdbserver: $(GDB_WDIR)/gdbserver - install -c $(GDB_WDIR)/gdbserver $(TARGET_DIR)/usr/bin/gdbserver - rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ - $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc - -gdbserver: $(TARGET_DIR)/usr/bin/gdbserver - -gdbserver-clean: - $(MAKE) -C $(GDB_WDIR) clean - -gdbserver-dirclean: - rm -rf $(GDB_WDIR) - diff --git a/make/kernel-headers.mk b/make/kernel-headers.mk index c7b5a39e6..921b08cf9 100644 --- a/make/kernel-headers.mk +++ b/make/kernel-headers.mk @@ -7,28 +7,44 @@ # ############################################################# ifneq ($(filter $(TARGETS),kernel-headers),) +DEFAULT_KERNEL_HEADERS:=$(strip $(DEFAULT_KERNEL_HEADERS)) -VERSION=2 -PATCHLEVEL=4 -SUBLEVEL=25 +LINUX_SITE:=127.0.0.1 +LINUX_SOURCE:=unspecified-kernel-headers + +ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.25") +VERSION:=2 +PATCHLEVEL:=4 +SUBLEVEL:=25 LINUX_SITE:=http://www.uclibc.org/downloads/toolchain LINUX_SOURCE:=kernel-headers-2.4.25.tar.bz2 LINUX_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux +endif +ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.7") +VERSION:=2 +PATCHLEVEL:=6 +SUBLEVEL:=7 +LINUX_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/ +LINUX_SOURCE:=linux-libc-headers-2.6.7.0.tar.bz2 +LINUX_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.7.0 +endif -# Uncomment this for 2.6.x kernel header files -#VERSION=2 -#PATCHLEVEL=6 -#SUBLEVEL=8 -#LINUX_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/ -#LINUX_SOURCE:=linux-libc-headers-2.6.8.0.tar.bz2 -#LINUX_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.8.0 - +ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.8") +VERSION:=2 +PATCHLEVEL:=6 +SUBLEVEL:=8 +LINUX_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/ +LINUX_SOURCE:=linux-libc-headers-2.6.8.0.tar.bz2 +LINUX_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.8.0 +endif +LINUX_VERSION:=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL) LINUX_DIR:=$(TOOL_BUILD_DIR)/linux $(DL_DIR)/$(LINUX_SOURCE): + mkdir -p $(DL_DIR) $(WGET) -P $(DL_DIR) $(LINUX_SITE)/$(LINUX_SOURCE) $(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_SOURCE) @@ -39,7 +55,11 @@ ifneq ($(LINUX_UNPACK_DIR),$(LINUX_DIR)) endif touch $(LINUX_DIR)/.unpacked -$(LINUX_DIR)/.configured: $(LINUX_DIR)/.unpacked +$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked + $(SOURCE_DIR)/patch-kernel.sh $(LINUX_DIR) $(SOURCE_DIR) linux-libc-headers-$(LINUX_VERSION)-*.patch + touch $(LINUX_DIR)/.patched + +$(LINUX_DIR)/.configured: $(LINUX_DIR)/.patched rm -f $(LINUX_DIR)/include/asm @if [ ! -f $(LINUX_DIR)/Makefile ] ; then \ echo -e "VERSION = $(VERSION)\nPATCHLEVEL = $(PATCHLEVEL)\n" > \ diff --git a/make/libtool.mk b/make/libtool.mk index fbe1fb663..fbee18e74 100644 --- a/make/libtool.mk +++ b/make/libtool.mk @@ -3,10 +3,10 @@ # libtool # ############################################################# -LIBTOOL_SOURCE:=libtool_1.4.3.orig.tar.gz -LIBTOOL_SITE:=http://ftp.debian.org/debian/pool/main/libt/libtool +LIBTOOL_SOURCE:=libtool-1.5.8.tar.gz +LIBTOOL_SITE:=ftp://ftp.gnu.org/gnu/libtool LIBTOOL_CAT:=zcat -LIBTOOL_DIR:=$(BUILD_DIR)/libtool-1.4.3 +LIBTOOL_DIR:=$(BUILD_DIR)/libtool-1.5.8 LIBTOOL_BINARY:=libtool LIBTOOL_TARGET_BINARY:=usr/bin/libtool diff --git a/make/linux.mk b/make/linux.mk index bb8f96b19..844429d24 100644 --- a/make/linux.mk +++ b/make/linux.mk @@ -45,11 +45,13 @@ LINUX_SOURCE_DIR=$(LINUX_DIR) $(DL_DIR)/$(LINUX_SOURCE): - $(WGET) -P $(DL_DIR) $(LINUX_SITE)/$(LINUX_SOURCE) + mkdir $(DL_DIR) + $(WGET) -P $(DL_DIR) $(LINUX_SITE)/$(LINUX_SOURCE) $(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_SOURCE) - mkdir -p $(LINUX_DIR) $(TOOL_BUILD_DIR) - rm -rf $(LINUX_DIR) + mkdir $(TOOL_BUILD_DIR) + #mkdir -p $(LINUX_DIR) + #rm -rf $(LINUX_DIR) bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar -C $(BUILD_DIR) -xvf - ifneq ($(DOWNLOAD_LINUX_VERSION),$(LINUX_VERSION)) # Rename the dir from the downloaded version to the AFTER patch version diff --git a/make/ltrace.mk b/make/ltrace.mk index 146bd4049..2170e3306 100644 --- a/make/ltrace.mk +++ b/make/ltrace.mk @@ -3,9 +3,9 @@ # ltrace # ############################################################# -LTRACE_SOURCE=ltrace_0.3.32.tar.gz +LTRACE_SOURCE=ltrace_0.3.35.tar.gz LTRACE_SITE=http://ftp.debian.org/debian/pool/main/l/ltrace -LTRACE_DIR=$(BUILD_DIR)/ltrace-0.3.32 +LTRACE_DIR=$(BUILD_DIR)/ltrace-0.3.35 LTRACE_BINARY=ltrace LTRACE_TARGET_BINARY=usr/bin/ltrace @@ -29,7 +29,7 @@ $(LTRACE_DIR)/.configured: $(LTRACE_DIR)/.source touch $(LTRACE_DIR)/.configured; $(LTRACE_DIR)/$(LTRACE_BINARY): $(LTRACE_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) -C $(LTRACE_DIR) + $(MAKE) CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld -C $(LTRACE_DIR) $(TARGET_DIR)/$(LTRACE_TARGET_BINARY): $(LTRACE_DIR)/$(LTRACE_BINARY) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(LTRACE_DIR) install diff --git a/make/ncurses.mk b/make/ncurses.mk index 1768c1e4e..f57868e54 100644 --- a/make/ncurses.mk +++ b/make/ncurses.mk @@ -5,7 +5,7 @@ # ############################################################# # Copyright (C) 2002 by Ken Restivo -# $Id: ncurses.mk,v 1.33 2004/07/28 19:26:04 andersen Exp $ +# $Id: ncurses.mk,v 1.34 2004/09/03 00:49:33 mjn3 Exp $ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Library General Public License as @@ -35,6 +35,7 @@ $(NCURSES_DIR)/.dist: $(DL_DIR)/$(NCURSES_SOURCE) #use the local tic and not whatever the build system was going to find. $(SED) 's~\$$srcdir/shlib tic\$$suffix~/usr/bin/tic~' \ $(NCURSES_DIR)/misc/run_tic.in + $(SOURCE_DIR)/patch-kernel.sh $(NCURSES_DIR) $(SOURCE_DIR) ncurses-*.patch touch $(NCURSES_DIR)/.dist $(NCURSES_DIR)/.configured: $(NCURSES_DIR)/.dist diff --git a/make/sed.mk b/make/sed.mk index 2476c59aa..5d2f0f8b9 100644 --- a/make/sed.mk +++ b/make/sed.mk @@ -18,7 +18,8 @@ SED:=$(STAGING_DIR)/bin/sed -i -e HOST_SED_TARGET=$(shell ./sources/sedcheck.sh) $(DL_DIR)/$(SED_SOURCE): - $(WGET) -P $(DL_DIR) $(SED_SITE)/$(SED_SOURCE) + mkdir -p $(DL_DIR) + $(WGET) -P $(DL_DIR) $(SED_SITE)/$(SED_SOURCE) sed-source: $(DL_DIR)/$(SED_SOURCE) @@ -30,7 +31,6 @@ sed-source: $(DL_DIR)/$(SED_SOURCE) ############################################################# $(SED_DIR1)/.unpacked: $(DL_DIR)/$(SED_SOURCE) mkdir -p $(TOOL_BUILD_DIR) - mkdir -p $(DL_DIR) mkdir -p $(STAGING_DIR)/bin; $(SED_CAT) $(DL_DIR)/$(SED_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf - touch $(SED_DIR1)/.unpacked diff --git a/make/strace.mk b/make/strace.mk index 546584d80..f74897465 100644 --- a/make/strace.mk +++ b/make/strace.mk @@ -3,10 +3,12 @@ # strace # ############################################################# -STRACE_SOURCE:=strace-4.5.3.tar.bz2 +#STRACE_SOURCE:=strace-4.5.3.tar.bz2 +STRACE_SOURCE:=strace-4.5.6.tar.bz2 STRACE_SITE:=http://aleron.dl.sourceforge.net/sourceforge/strace STRACE_CAT:=bzcat -STRACE_DIR:=$(BUILD_DIR)/strace-4.5.3 +#STRACE_DIR:=$(BUILD_DIR)/strace-4.5.3 +STRACE_DIR:=$(BUILD_DIR)/strace-4.5.6 $(DL_DIR)/$(STRACE_SOURCE): diff --git a/make/uclibc.mk b/make/uclibc.mk index e0de21a7e..7a837e427 100644 --- a/make/uclibc.mk +++ b/make/uclibc.mk @@ -3,14 +3,17 @@ # uClibc (the C library) # ############################################################# -ifeq ($(USE_UCLIBC_SNAPSHOT),true) + +ifneq ($(strip $(USE_UCLIBC_SNAPSHOT)),) # Be aware that this changes daily.... -UCLIBC_DIR=$(BUILD_DIR)/uClibc -UCLIBC_SOURCE=uClibc-snapshot.tar.bz2 +UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc +UCLIBC_SOURCE:=uClibc-$(strip $(USE_UCLIBC_SNAPSHOT)).tar.bz2 UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots else -UCLIBC_DIR:=$(BUILD_DIR)/uClibc-0.9.26 -UCLIBC_SOURCE:=uClibc-0.9.26.tar.bz2 +# Note: 0.9.26 has known problems. So best use a snapshot until .27 is out. +# Anticipate the change. +UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-0.9.27 +UCLIBC_SOURCE:=uClibc-0.9.27.tar.bz2 UCLIBC_SITE:=http://www.uclibc.org/downloads endif @@ -30,21 +33,12 @@ UCLIBC_TARGET_ARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \ $(DL_DIR)/$(UCLIBC_SOURCE): + mkdir -p $(DL_DIR) $(WGET) -P $(DL_DIR) $(UCLIBC_SITE)/$(UCLIBC_SOURCE) $(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE) -ifeq ($(SOFT_FLOAT),true) - # Make sure we have a soft float specs file for this arch - if [ ! -f $(SOURCE_DIR)/specs-$(ARCH)-soft-float ] ; then \ - echo soft float configured but no specs file for this arch ; \ - /bin/false ; \ - fi; -endif - bzcat $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(BUILD_DIR) -xvf - - #(cd $(BUILD_DIR) ; ln -s $(DL_DIR)/uClibc) - #-mkdir $(UCLIBC_DIR) - #(cd $(DL_DIR)/uClibc && tar cf - .) | (cd $(UCLIBC_DIR) && tar xvfp - ) - $(SOURCE_DIR)/patch-kernel.sh $(UCLIBC_DIR) $(SOURCE_DIR) uClibc-*.patch + mkdir -p $(TOOL_BUILD_DIR) + bzcat $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf - touch $(UCLIBC_DIR)/.unpacked $(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked $(LINUX_DIR)/.configured @@ -77,38 +71,32 @@ endif mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/usr/include mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/usr/lib mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/lib - -$(MAKE) -C $(UCLIBC_DIR) \ - PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ - DEVEL_PREFIX=/usr/ \ - RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ - HOSTCC="$(HOSTCC)" \ - oldconfig; - -$(MAKE) -C $(UCLIBC_DIR) \ + $(MAKE) -C $(UCLIBC_DIR) \ PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ DEVEL_PREFIX=/usr/ \ RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ HOSTCC="$(HOSTCC)" \ - headers pregen install_dev; + pregen install_dev; touch $(UCLIBC_DIR)/.configured $(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(LIBFLOAT_TARGET) $(MAKE) -C $(UCLIBC_DIR) \ PREFIX= \ - DEVEL_PREFIX=$(REAL_GNU_TARGET_NAME)/ \ + DEVEL_PREFIX=/ \ RUNTIME_PREFIX=/ \ HOSTCC="$(HOSTCC)" \ all -$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a +$(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a $(MAKE) -C $(UCLIBC_DIR) \ PREFIX=$(STAGING_DIR)/ \ - DEVEL_PREFIX=$(REAL_GNU_TARGET_NAME)/ \ - RUNTIME_PREFIX=$(REAL_GNU_TARGET_NAME)/ \ + DEVEL_PREFIX=/ \ + RUNTIME_PREFIX=/ \ install_runtime $(MAKE) -C $(UCLIBC_DIR) \ PREFIX=$(STAGING_DIR)/ \ - DEVEL_PREFIX=$(REAL_GNU_TARGET_NAME)/ \ - RUNTIME_PREFIX=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/ \ + DEVEL_PREFIX=/ \ + RUNTIME_PREFIX=/ \ install_dev $(MAKE) -C $(UCLIBC_DIR) \ PREFIX=$(STAGING_DIR) \ @@ -118,7 +106,7 @@ $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a $(MAKE) -C $(UCLIBC_DIR)/utils clean ifneq ($(TARGET_DIR),) -$(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a +$(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/lib/libc.a $(MAKE) -C $(UCLIBC_DIR) \ PREFIX=$(TARGET_DIR) \ DEVEL_PREFIX=/usr/ \ @@ -134,7 +122,7 @@ endif uclibc-configured: $(UCLIBC_DIR)/.configured -uclibc: $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a \ +uclibc: $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc $(STAGING_DIR)/lib/libc.a \ $(UCLIBC_TARGETS) uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE) @@ -165,11 +153,7 @@ $(TARGET_DIR)/usr/lib/libc.a: $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a RUNTIME_PREFIX=/ \ install_dev -ifeq ($(GCC_2_95_TOOLCHAIN),true) -uclibc_target: gcc2_95 uclibc $(TARGET_DIR)/usr/lib/libc.a -else -uclibc_target: gcc3_3 uclibc $(TARGET_DIR)/usr/lib/libc.a -endif +uclibc_target: gcc uclibc $(TARGET_DIR)/usr/lib/libc.a uclibc_target-clean: rm -f $(TARGET_DIR)/include diff --git a/make/util-linux.mk b/make/util-linux.mk index c29a8403b..2a77d18f4 100644 --- a/make/util-linux.mk +++ b/make/util-linux.mk @@ -5,7 +5,7 @@ ############################################################# UTIL-LINUX_SOURCE:=util-linux_2.12.orig.tar.gz UTIL-LINUX_SITE:=http://ftp.debian.org/debian/pool/main/u/util-linux/ -UTIL-LINUX_PATCH:=util-linux_2.12-6.diff.gz +UTIL-LINUX_PATCH:=util-linux_2.12-7.diff.gz UTIL-LINUX_CAT:=zcat UTIL-LINUX_DIR:=$(BUILD_DIR)/util-linux-2.12 UTIL-LINUX_BINARY:=$(UTIL-LINUX_DIR)/misc-utils/mcookie -- cgit v1.2.3