Просмотр исходного кода

Add support for enabling use of libintl.
Add support for libstd++ in full locale mode, and remove the need for
config hacks when using uClibc stub locale support.
TODO --
gdb intl support is still broken.
uClibc should auto-download the pregenerated locale data

Manuel Novoa III 22 лет назад
Родитель
Сommit
0e956fc164

+ 4 - 0
Makefile

@@ -20,6 +20,7 @@
 
 
 TARGETS=
+DISABLE_NLS=
 #############################################################
 #
 # EDIT this stuff to suit your system and preferences
@@ -69,6 +70,9 @@ OPTIMIZE_FOR_CPU=$(ARCH)
 EXTRA_GCC_CONFIG_OPTIONS=
 #EXTRA_GCC_CONFIG_OPTIONS=--without-float
 
+# Uncomment the following if you don't want gettext support.
+DISABLE_NLS:=--disable-nls
+
 #############################################################
 #
 # The list of stuff to build for the target filesystem

+ 4 - 1
make/bash.mk

@@ -17,6 +17,9 @@ bash-source: $(DL_DIR)/$(BASH_SOURCE)
 
 $(BASH_DIR)/.unpacked: $(DL_DIR)/$(BASH_SOURCE)
 	$(BASH_CAT) $(DL_DIR)/$(BASH_SOURCE) | tar -C $(BUILD_DIR) -xvf -
+	# This is broken when -lintl is added to LIBS
+	perl -i -p -e 's,LIBS_FOR_BUILD =.*,LIBS_FOR_BUILD =,g' \
+		$(BASH_DIR)/builtins/Makefile.in
 	touch $(BASH_DIR)/.unpacked
 
 $(BASH_DIR)/.configured: $(BASH_DIR)/.unpacked
@@ -38,7 +41,7 @@ $(BASH_DIR)/.configured: $(BASH_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--with-curses \
 		--enable-alias \
 	);

+ 2 - 1
make/bison.mk

@@ -22,6 +22,7 @@ $(BISON_DIR)/.unpacked: $(DL_DIR)/$(BISON_SOURCE)
 $(BISON_DIR)/.configured: $(BISON_DIR)/.unpacked
 	(cd $(BISON_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
+		gt_cv_func_gnugettext2_libintl=yes \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
@@ -36,7 +37,7 @@ $(BISON_DIR)/.configured: $(BISON_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(BISON_DIR)/.configured
 

+ 4 - 1
make/coreutils.mk

@@ -38,7 +38,7 @@ $(COREUTILS_DIR)/.configured: $(COREUTILS_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--disable-rpath \
 		--disable-dependency-tracking \
 	);
@@ -46,6 +46,9 @@ $(COREUTILS_DIR)/.configured: $(COREUTILS_DIR)/.unpacked
 	# is not set when cross compiling
 	perl -i -p -e 's,.*UTILS_OPEN_MAX.*,#define UTILS_OPEN_MAX 1019,g' \
 		$(COREUTILS_DIR)/config.h
+	# This is undefined when crosscompiling...
+	perl -i -p -e 's,.*HAVE_PROC_UPTIME.*,#define HAVE_PROC_UPTIME 1,g' \
+		$(COREUTILS_DIR)/config.h
 	touch  $(COREUTILS_DIR)/.configured
 
 $(COREUTILS_DIR)/$(COREUTILS_BINARY): $(COREUTILS_DIR)/.configured

+ 1 - 1
make/diffutils.mk

@@ -36,7 +36,7 @@ $(DIFFUTILS_DIR)/.configured: $(DIFFUTILS_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(DIFFUTILS_DIR)/.configured
 

+ 1 - 1
make/dropbear_sshd.mk

@@ -38,7 +38,7 @@ $(DROPBEAR_SSHD_DIR)/.configured: $(DROPBEAR_SSHD_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--with-shared \
 	);
 	touch  $(DROPBEAR_SSHD_DIR)/.configured

+ 1 - 1
make/ed.mk

@@ -33,7 +33,7 @@ $(ED_DIR)/.configured: $(ED_DIR)/.unpacked
 		--build=$(GNU_HOST_NAME) \
 		--prefix=/usr \
 		--exec-prefix=/usr \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(ED_DIR)/.configured
 

+ 1 - 1
make/file.mk

@@ -40,7 +40,7 @@ $(FILE_DIR)/.configured: $(FILE_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--enable-fsect-man5 \
 	);
 	touch  $(FILE_DIR)/.configured

+ 1 - 1
make/findutils.mk

@@ -38,7 +38,7 @@ $(FINDUTILS_DIR)/.configured: $(FINDUTILS_DIR)/.unpacked
 		--localstatedir=/var/lib \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(FINDUTILS_DIR)/.configured
 

+ 1 - 1
make/flex.mk

@@ -41,7 +41,7 @@ $(FLEX_DIR)/.configured: $(FLEX_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(FLEX_DIR)/.configured
 

+ 1 - 1
make/gawk.mk

@@ -37,7 +37,7 @@ $(GAWK_DIR)/.configured: $(GAWK_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(GAWK_DIR)/.configured
 

+ 28 - 38
make/gcc_target.mk

@@ -148,18 +148,18 @@ $(TARGET_DIR)/usr/bin/ld: $(BINUTILS_DIR2)/binutils/objdump
 		GCC_FOR_TARGET=$(TARGET_CROSS)gcc \
 		CXX_FOR_TARGET=$(TARGET_CROSS)g++ \
 		RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \
-		prefix=$(TARGET_DIR)/usr \
-		exec_prefix=$(TARGET_DIR)/usr \
-		bindir=$(TARGET_DIR)/usr/bin \
-		sbindir=$(TARGET_DIR)/usr/sbin \
-		libexecdir=$(TARGET_DIR)/usr/lib \
-		datadir=$(TARGET_DIR)/usr/share \
-		sysconfdir=$(TARGET_DIR)/etc \
-		localstatedir=$(TARGET_DIR)/var \
-		libdir=$(TARGET_DIR)/usr/lib \
-		infodir=$(TARGET_DIR)/usr/info \
-		mandir=$(TARGET_DIR)/usr/man \
-		includedir=$(TARGET_DIR)/usr/include \
+		prefix=/usr \
+		exec_prefix=/usr \
+		bindir=/usr/bin \
+		sbindir=/usr/sbin \
+		libexecdir=/usr/lib \
+		datadir=/usr/share \
+		sysconfdir=/etc \
+		localstatedir=/var \
+		libdir=/usr/lib \
+		infodir=/usr/info \
+		mandir=/usr/man \
+		includedir=/usr/include \
 		DESTDIR=$(TARGET_DIR) install
 	rm -rf $(TARGET_DIR)/info $(TARGET_DIR)/man $(TARGET_DIR)/share/doc \
 		$(TARGET_DIR)/share/locale
@@ -275,18 +275,6 @@ $(GCC_DIR)/.g++_build_hacks: $(GCC_DIR)/.gcc_build_hacks
 		$(GCC_DIR)/libstdc++-v3/src/Makefile.am $(GCC_DIR)/libstdc++-v3/src/Makefile.in;
 	perl -i -p -e "s,3\.0\.0,9.9.0,g;" $(GCC_DIR)/libstdc++-v3/acinclude.m4 \
 		$(GCC_DIR)/libstdc++-v3/aclocal.m4 $(GCC_DIR)/libstdc++-v3/configure;
-	#
-	# For now, we don't support locale-ified ctype (we will soon), 
-	# so bypass that problem for now...
-	#
-	perl -i -p -e "s,defined.*_GLIBCPP_USE_C99.*,1,g;" \
-		$(GCC_DIR)/libstdc++-v3/config/locale/generic/c_locale.cc;
-	cp $(GCC_DIR)/libstdc++-v3/config/os/generic/bits/ctype_base.h \
-		$(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/bits/
-	cp $(GCC_DIR)/libstdc++-v3/config/os/generic/bits/ctype_inline.h \
-		$(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/bits/
-	cp $(GCC_DIR)/libstdc++-v3/config/os/generic/bits/ctype_noninline.h \
-		$(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/bits/
 	touch $(GCC_DIR)/.g++_build_hacks
 endif
 
@@ -340,7 +328,7 @@ $(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR3)/.gcc_build_hacks
 		--with-local-prefix=/usr/local \
 		--libdir=/usr/lib \
 		--disable-shared $(MULTILIB) \
-		--enable-target-optspace --disable-nls \
+		--enable-target-optspace $(DISABLE_NLS) \
 		--with-gnu-ld --disable-__cxa_atexit \
 		--enable-languages=$(TARGET_LANGUAGES) \
 		$(EXTRA_GCC_CONFIG_OPTIONS) \
@@ -376,18 +364,18 @@ $(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled
 		GCC_FOR_TARGET=$(TARGET_CROSS)gcc \
 		CXX_FOR_TARGET=$(TARGET_CROSS)g++ \
 		RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \
-		prefix=$(TARGET_DIR)/usr \
-		exec_prefix=$(TARGET_DIR)/usr \
-		bindir=$(TARGET_DIR)/usr/bin \
-		sbindir=$(TARGET_DIR)/usr/sbin \
-		libexecdir=$(TARGET_DIR)/usr/lib \
-		datadir=$(TARGET_DIR)/usr/share \
-		sysconfdir=$(TARGET_DIR)/etc \
-		localstatedir=$(TARGET_DIR)/var \
-		libdir=$(TARGET_DIR)/usr/lib \
-		infodir=$(TARGET_DIR)/usr/info \
-		mandir=$(TARGET_DIR)/usr/man \
-		includedir=$(TARGET_DIR)/usr/include \
+		prefix=/usr \
+		exec_prefix=/usr \
+		bindir=/usr/bin \
+		sbindir=/usr/sbin \
+		libexecdir=/usr/lib \
+		datadir=/usr/share \
+		sysconfdir=/etc \
+		localstatedir=/var \
+		libdir=/usr/lib \
+		infodir=/usr/info \
+		mandir=/usr/man \
+		includedir=/usr/include \
 		DESTDIR=$(TARGET_DIR) install
 	(cd $(TARGET_DIR)/usr/bin; ln -fs gcc cc)
 	(cd $(TARGET_DIR)/lib; ln -fs /usr/bin/cpp)
@@ -401,7 +389,9 @@ $(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled
 	-mv $(TARGET_DIR)/lib/*.a $(TARGET_DIR)/usr/lib/
 	-mv $(TARGET_DIR)/lib/*.la $(TARGET_DIR)/usr/lib/
 	rm -f $(TARGET_DIR)/lib/libstdc++.so
-	-(cd $(TARGET_DIR)/usr/lib; ln -fs /lib/libstdc++.so.5.0.2 libstdc++.so)
+	-(cd $(TARGET_DIR)/usr/lib; ln -fs /lib/libstdc++.so.5.0.5 libstdc++.so)
+	# A nasty hack to work around g++ adding -lgcc_eh to the link
+	-(cd $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/3.3.1/ ; ln -s libgcc.a libgcc_eh.a)
 	-(cd $(TARGET_DIR)/bin; find -type f | xargs $(STRIP) 2>&1 > /dev/null)
 	-(cd $(TARGET_DIR)/usr/bin; find -type f | xargs $(STRIP) 2>&1 > /dev/null)
 	rm -f $(TARGET_DIR)/usr/lib/*.la*

+ 5 - 1
make/gdb.mk

@@ -15,11 +15,15 @@ $(DL_DIR)/$(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)
+	#-perl -i -p -e "s,\@INTLLIBS\@,-lintl,g;" $(GDB_DIR)/gdb/Makefile.in
 	touch  $(GDB_DIR)/.unpacked
 
 $(GDB_DIR)/.configured: $(GDB_DIR)/.unpacked
 	(cd $(GDB_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
+		ac_cv_type_uintptr_t=yes \
+		gt_cv_func_gettext_libintl=yes \
+		ac_cv_func_dcgettext=yes \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
@@ -34,7 +38,7 @@ $(GDB_DIR)/.configured: $(GDB_DIR)/.unpacked
 		--mandir=/usr/man \
 		--infodir=/usr/info \
 		--includedir=$(STAGING_DIR)/include \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--without-uiout --disable-gdbmi \
 		--disable-tui --disable-gdbtk --without-x \
 		--disable-sim --enable-gdbserver \

+ 1 - 1
make/gdbserver.mk

@@ -27,7 +27,7 @@ $(GDB_WDIR)/.configured: $(GDB_DIR)/.unpacked
 		--mandir=/usr/man \
 		--infodir=/usr/info \
 		--includedir=$(STAGING_DIR)/include \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--without-uiout --disable-gdbmi \
 		--disable-tui --disable-gdbtk --without-x \
 		--without-included-gettext \

+ 1 - 1
make/grep.mk

@@ -36,7 +36,7 @@ $(GNUGREP_DIR)/.configured: $(GNUGREP_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--disable-perl-regexp \
 		--without-included-regex \
 	);

+ 1 - 1
make/gzip.mk

@@ -40,7 +40,7 @@ $(GZIP_DIR)/.configured: $(GZIP_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		$(GZIP_LARGEFILE) \
 	);
 	touch  $(GZIP_DIR)/.configured

+ 1 - 1
make/libglib12.mk

@@ -35,7 +35,7 @@ $(LIBGLIB12_DIR)/.configured: $(LIBGLIB12_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--enable-shared \
 	);
 	touch  $(LIBGLIB12_DIR)/.configured

+ 1 - 1
make/libtool.mk

@@ -36,7 +36,7 @@ $(LIBTOOL_DIR)/.configured: $(LIBTOOL_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(LIBTOOL_DIR)/.configured
 

+ 1 - 1
make/links.mk

@@ -33,7 +33,7 @@ $(LINKS_DIR)/.configured: $(LINKS_DIR)/.unpacked
 		--localstatedir=/tmp \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(LINKS_DIR)/.configured
 

+ 1 - 1
make/lrzsz.mk

@@ -51,7 +51,7 @@ $(LRZSZ_DIR)/.configured: $(LRZSZ_DIR)/.unpacked
 		--localstatedir=/tmp \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--disable-timesync \
 	);
 	perl -i -p -e "s/-lnsl//;" $(LRZSZ_DIR)/src/Makefile

+ 1 - 1
make/make.mk

@@ -36,7 +36,7 @@ $(GNUMAKE_DIR)/.configured: $(GNUMAKE_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(GNUMAKE_DIR)/.configured
 

+ 1 - 1
make/mke2fs.mk

@@ -41,7 +41,7 @@ $(MKE2FS_DIR)/.configured: $(MKE2FS_DIR)/.unpacked
 		--disable-elf-shlibs --disable-swapfs \
 		--disable-debugfs --disable-imager \
 		--disable-resizer --disable-fsck \
-		--without-catgets --disable-nls \
+		--without-catgets $(DISABLE_NLS) \
 	);
 	touch  $(MKE2FS_DIR)/.configured
 

+ 2 - 2
make/ncurses.mk

@@ -5,7 +5,7 @@
 #
 #############################################################
 # Copyright (C) 2002 by Ken Restivo <ken@246gt.com>
-# $Id: ncurses.mk,v 1.26 2003/08/22 12:49:54 andersen Exp $
+# $Id: ncurses.mk,v 1.27 2003/09/03 07:18:14 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
@@ -58,7 +58,7 @@ $(NCURSES_DIR)/.configured: $(NCURSES_DIR)/.dist
 		--with-default-terminfo-dir=/usr/share/terminfo \
 		--libdir=$(STAGING_DIR)/lib \
 		--with-shared --without-cxx --without-cxx-binding \
-		--without-ada --without-progs --disable-nls \
+		--without-ada --without-progs $(DISABLE_NLS) \
 		--without-profile --without-debug --disable-rpath \
 		--enable-echo --enable-const --enable-overwrite \
 	);

+ 1 - 1
make/newt.mk

@@ -38,7 +38,7 @@ $(NEWT_DIR)/.configured: $(NEWT_DIR)/.source
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch $(NEWT_DIR)/.configured;
 

+ 1 - 1
make/ntp.mk

@@ -39,7 +39,7 @@ $(NTP_DIR)/.configured: $(NTP_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--with-shared \
 	);
 	touch  $(NTP_DIR)/.configured

+ 1 - 2
make/openssh.mk

@@ -35,11 +35,10 @@ $(OPENSSH_DIR)/.configured: $(OPENSSH_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
 		--includedir=$(STAGING_DIR)/include \
 		--disable-lastlog --disable-utmp \
 		--disable-utmpx --disable-wtmp --disable-wtmpx \
-		--disable-nls --without-x \
+		--without-x $(DISABLE_NLS) \
 	);
 	touch  $(OPENSSH_DIR)/.configured
 

+ 1 - 1
make/patch.mk

@@ -36,7 +36,7 @@ $(GNUPATCH_DIR)/.configured: $(GNUPATCH_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(GNUPATCH_DIR)/.configured
 

+ 1 - 1
make/pciutils.mk

@@ -43,7 +43,7 @@ $(PCIUTILS_DIR)/.configured: $(PCIUTILS_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(PCIUTILS_DIR)/.configured
 

+ 1 - 1
make/pppd.mk

@@ -41,7 +41,7 @@ $(PPPD_DIR)/.configured: $(PPPD_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(PPPD_DIR)/.configured
 

+ 1 - 1
make/sed.mk

@@ -36,7 +36,7 @@ $(SED_DIR)/.configured: $(SED_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(SED_DIR)/.configured
 

+ 1 - 1
make/socat.mk

@@ -42,7 +42,7 @@ $(SOCAT_WORKDIR)/Makefile: $(SOCAT_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
         
 $(SOCAT_WORKDIR)/socat:	$(SOCAT_WORKDIR)/Makefile

+ 1 - 1
make/strace.mk

@@ -35,7 +35,7 @@ $(STRACE_DIR)/.configured: $(STRACE_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(STRACE_DIR)/.configured
 

+ 1 - 1
make/tar.mk

@@ -36,7 +36,7 @@ $(GNUTAR_DIR)/.configured: $(GNUTAR_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	touch  $(GNUTAR_DIR)/.configured
 

+ 1 - 1
make/tn5250.mk

@@ -26,7 +26,7 @@ $(TN5250_DIR)/.configured: $(TN5250_DIR)/.dist
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--with-slang --without-x --without-ssl \
 	);
 	touch  $(TN5250_DIR)/.configured

+ 6 - 15
make/uclibc_toolchain.mk

@@ -271,7 +271,7 @@ $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc_build_hacks
 		--infodir=$(STAGING_DIR)/info \
 		--with-local-prefix=$(STAGING_DIR)/usr/local \
 		--oldincludedir=$(STAGING_DIR)/include $(MULTILIB) \
-		--enable-target-optspace --disable-nls --with-gnu-ld \
+		--enable-target-optspace $(DISABLE_NLS) --with-gnu-ld \
 		--disable-shared --enable-languages=c --disable-__cxa_atexit \
 		$(EXTRA_GCC_CONFIG_OPTIONS) --program-prefix=$(ARCH)-uclibc-);
 	touch $(GCC_BUILD_DIR1)/.configured
@@ -338,7 +338,10 @@ $(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked $(BUILD_DIR)/linux/.configure
 	perl -i -p -e 's,^LD_BIN.*,LD_BIN=$(STAGING_DIR)/bin/$(ARCH)-uclibc-ld,g' \
 		$(UCLIBC_DIR)/extra/gcc-uClibc/Makefile
 	$(MAKE) -C $(UCLIBC_DIR) oldconfig
-	$(MAKE) -C $(UCLIBC_DIR) headers install_dev;
+	$(MAKE) -C $(UCLIBC_DIR) headers
+	zcat $(DL_DIR)/uClibc-locale-030818.tgz | tar -C $(UCLIBC_DIR)/extra/locale -xvf -
+	$(MAKE) -C $(UCLIBC_DIR)/extra/locale pregen 
+	$(MAKE) -C $(UCLIBC_DIR) install_dev;
 	touch $(UCLIBC_DIR)/.configured
 
 $(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured
@@ -390,18 +393,6 @@ $(GCC_DIR)/.g++_build_hacks: $(GCC_DIR)/.patched
 		$(GCC_DIR)/libstdc++-v3/src/Makefile.am $(GCC_DIR)/libstdc++-v3/src/Makefile.in;
 	perl -i -p -e "s,3\.0\.0,9.9.0,g;" $(GCC_DIR)/libstdc++-v3/acinclude.m4 \
 		$(GCC_DIR)/libstdc++-v3/aclocal.m4 $(GCC_DIR)/libstdc++-v3/configure;
-	#
-	# For now, we don't support locale-ified ctype (we will soon), 
-	# so bypass that problem for now...
-	#
-	perl -i -p -e "s,defined.*_GLIBCPP_USE_C99.*,1,g;" \
-		$(GCC_DIR)/libstdc++-v3/config/locale/generic/c_locale.cc;
-	cp $(GCC_DIR)/libstdc++-v3/config/os/generic/ctype_base.h \
-		$(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/
-	cp $(GCC_DIR)/libstdc++-v3/config/os/generic/ctype_inline.h \
-		$(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/
-	cp $(GCC_DIR)/libstdc++-v3/config/os/generic/ctype_noninline.h \
-		$(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/
 	touch $(GCC_DIR)/.g++_build_hacks
 
 $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.g++_build_hacks
@@ -428,7 +419,7 @@ $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.g++_build_hacks
 		--with-gxx-include-dir=$(STAGING_DIR)/include/c++ \
 		--oldincludedir=$(STAGING_DIR)/include \
 		--enable-shared $(MULTILIB) \
-		--enable-target-optspace --disable-nls \
+		--enable-target-optspace $(DISABLE_NLS) \
 		--with-gnu-ld --disable-__cxa_atexit \
 		--enable-languages=$(TARGET_LANGUAGES) \
 		$(EXTRA_GCC_CONFIG_OPTIONS) \

+ 2 - 2
make/uclibc_toolchain_2_95.mk

@@ -295,7 +295,7 @@ $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc_build_hacks
 		--infodir=$(STAGING_DIR)/info \
 		--with-local-prefix=$(STAGING_DIR)/usr/local \
 		--oldincludedir=$(STAGING_DIR)/include $(MULTILIB) \
-		--enable-target-optspace --disable-nls --with-gnu-ld \
+		--enable-target-optspace $(DISABLE_NLS) --with-gnu-ld \
 		--disable-shared --enable-languages=c --disable-__cxa_atexit \
 		$(EXTRA_GCC_CONFIG_OPTIONS) --program-prefix=$(ARCH)-uclibc-);
 	touch $(GCC_BUILD_DIR1)/.configured
@@ -488,7 +488,7 @@ $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.g++_build_hacks
 		--with-gxx-include-dir=$(STAGING_DIR)/include/c++ \
 		--oldincludedir=$(STAGING_DIR)/include \
 		--enable-shared $(MULTILIB) \
-		--enable-target-optspace --disable-nls \
+		--enable-target-optspace $(DISABLE_NLS) \
 		--with-gnu-ld --disable-__cxa_atexit \
 		--enable-languages=$(TARGET_LANGUAGES) \
 		$(EXTRA_GCC_CONFIG_OPTIONS) \

+ 1 - 1
make/util-linux.mk

@@ -32,7 +32,7 @@ $(UTIL-LINUX_DIR)/.configured: $(UTIL-LINUX_DIR)/.unpacked
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 	);
 	perl -pi -e "s,^INSTALLSUID=.*,INSTALLSUID=\\$$\(INSTALL\) -m \\$$\(BINMODE\)," \
 		$(UTIL-LINUX_DIR)/MCONFIG

+ 1 - 1
make/valgrind.mk

@@ -37,7 +37,7 @@ $(VALGRIND_DIR)/.configured: $(VALGRIND_DIR)/.patched
 		--localstatedir=/var \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
-		--disable-nls \
+		$(DISABLE_NLS) \
 		--without-uiout --disable-valgrindmi \
 		--disable-tui --disable-valgrindtk \
 		--without-x --without-included-gettext \

+ 1 - 1
make/wtools.mk

@@ -5,7 +5,7 @@
 #############################################################
 #
 WTOOLS_SOURCE_URL=http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux
-WTOOLS_SOURCE=wireless_tools.26.pre7.tar.gz
+WTOOLS_SOURCE=wireless_tools.26.tar.gz
 WTOOLS_BUILD_DIR=$(BUILD_DIR)/wireless_tools.26
 
 $(DL_DIR)/$(WTOOLS_SOURCE):

+ 200 - 0
sources/gcc-810-libstd++-locale.patch

@@ -0,0 +1,200 @@
+diff -urN gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/c_locale.cc gcc-3.3.1/libstdc++-v3/config/locale/gnu/c_locale.cc
+--- gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/c_locale.cc	2003-02-28 00:09:52.000000000 -0600
++++ gcc-3.3.1/libstdc++-v3/config/locale/gnu/c_locale.cc	2003-08-31 10:55:17.000000000 -0500
+@@ -195,12 +195,15 @@
+       "LC_TIME", 
+       "LC_COLLATE", 
+       "LC_MONETARY",
+-      "LC_MESSAGES", 
++      "LC_MESSAGES"
++#if _GLIBCPP_NUM_CATEGORIES != 0
++      , 
+       "LC_PAPER", 
+       "LC_NAME", 
+       "LC_ADDRESS",
+       "LC_TELEPHONE", 
+       "LC_MEASUREMENT", 
+       "LC_IDENTIFICATION" 
++#endif
+     };
+ }  // namespace std
+diff -urN gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/c_locale.h gcc-3.3.1/libstdc++-v3/config/locale/gnu/c_locale.h
+--- gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/c_locale.h	2003-01-23 12:56:16.000000000 -0600
++++ gcc-3.3.1/libstdc++-v3/config/locale/gnu/c_locale.h	2003-08-31 10:55:17.000000000 -0500
+@@ -46,6 +46,10 @@
+ #define _GLIBCPP_C_LOCALE_GNU 1
+ 
+ #define _GLIBCPP_NUM_CATEGORIES 6
++#ifdef __UCLIBC__
++#undef _GLIBCPP_NUM_CATEGORIES
++#define _GLIBCPP_NUM_CATEGORIES 0
++#endif
+ 
+ #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+ namespace __gnu_cxx
+diff -urN gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/c++locale_internal.h gcc-3.3.1/libstdc++-v3/config/locale/gnu/c++locale_internal.h
+--- gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/c++locale_internal.h	2002-09-05 02:46:16.000000000 -0500
++++ gcc-3.3.1/libstdc++-v3/config/locale/gnu/c++locale_internal.h	2003-08-31 10:55:17.000000000 -0500
+@@ -48,7 +48,9 @@
+ extern "C" __typeof(towlower_l) __towlower_l;
+ extern "C" __typeof(towupper_l) __towupper_l;
+ extern "C" __typeof(wcscoll_l) __wcscoll_l;
++#ifdef HAVE_WCSFTIME
+ extern "C" __typeof(wcsftime_l) __wcsftime_l;
++#endif
+ extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
+ extern "C" __typeof(wctype_l) __wctype_l;
+ extern "C" __typeof(newlocale) __newlocale;
+diff -urN gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/messages_members.cc gcc-3.3.1/libstdc++-v3/config/locale/gnu/messages_members.cc
+--- gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/messages_members.cc	2003-02-28 00:09:52.000000000 -0600
++++ gcc-3.3.1/libstdc++-v3/config/locale/gnu/messages_members.cc	2003-08-31 10:55:17.000000000 -0500
+@@ -36,6 +36,13 @@
+ #include <locale>
+ #include <bits/c++locale_internal.h>
+ 
++#ifdef __UCLIBC__
++extern "C" char *__dcgettext(const char *domainname,
++			     const char *msgid, int category);
++#undef gettext
++#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
++#endif
++
+ namespace std
+ {
+   // Specializations.
+diff -urN gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/messages_members.h gcc-3.3.1/libstdc++-v3/config/locale/gnu/messages_members.h
+--- gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/messages_members.h	2003-01-06 16:20:03.000000000 -0600
++++ gcc-3.3.1/libstdc++-v3/config/locale/gnu/messages_members.h	2003-08-31 10:55:17.000000000 -0500
+@@ -33,6 +33,12 @@
+ 
+ // Written by Benjamin Kosnik <bkoz@redhat.com>
+ 
++#ifdef __UCLIBC__
++extern "C" char *__textdomain(const char *domainname);
++extern "C" char *__bindtextdomain(const char *domainname,
++				  const char *dirname);
++#endif
++
+   // Non-virtual member functions.
+   template<typename _CharT>
+      messages<_CharT>::messages(size_t __refs)
+@@ -61,7 +67,11 @@
+     messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
+ 			   const char* __dir) const
+     { 
++#ifdef __UCLIBC__
++      __bindtextdomain(__s.c_str(), __dir);
++#else
+       bindtextdomain(__s.c_str(), __dir);
++#endif
+       return this->do_open(__s, __loc); 
+     }
+ 
+@@ -83,7 +93,11 @@
+     { 
+       // No error checking is done, assume the catalog exists and can
+       // be used.
++#ifdef __UCLIBC__
++      __textdomain(__s.c_str());
++#else
+       textdomain(__s.c_str());
++#endif
+       return 0;
+     }
+ 
+diff -urN gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/numeric_members.cc gcc-3.3.1/libstdc++-v3/config/locale/gnu/numeric_members.cc
+--- gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/numeric_members.cc	2003-02-28 00:09:52.000000000 -0600
++++ gcc-3.3.1/libstdc++-v3/config/locale/gnu/numeric_members.cc	2003-08-31 10:55:18.000000000 -0500
+@@ -86,8 +86,13 @@
+       else
+ 	{
+ 	  // Named locale.
++#ifdef __UCLIBC__
++	  _M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __cloc->decimal_point_wc }).__w);
++	  _M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __cloc->thousands_sep_wc }).__w);
++#else
+ 	  _M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w);
+ 	  _M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w);
++#endif
+ 	  if (_M_thousands_sep == L'\0')
+ 	    _M_grouping = "";
+ 	  else
+diff -urN gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/time_members.cc gcc-3.3.1/libstdc++-v3/config/locale/gnu/time_members.cc
+--- gcc-3.3.1-old/libstdc++-v3/config/locale/gnu/time_members.cc	2003-02-28 00:09:52.000000000 -0600
++++ gcc-3.3.1/libstdc++-v3/config/locale/gnu/time_members.cc	2003-08-31 10:55:18.000000000 -0500
+@@ -183,6 +183,7 @@
+ 	}
+     }
+ 
++#ifndef __UCLIBC__
+ #ifdef _GLIBCPP_USE_WCHAR_T
+   template<>
+     void
+@@ -328,4 +329,5 @@
+ 	}
+     }
+ #endif
++#endif
+ }
+diff -urN gcc-3.3.1-old/libstdc++-v3/config/os/gnu-linux/ctype_base.h gcc-3.3.1/libstdc++-v3/config/os/gnu-linux/ctype_base.h
+--- gcc-3.3.1-old/libstdc++-v3/config/os/gnu-linux/ctype_base.h	2002-09-09 15:26:41.000000000 -0500
++++ gcc-3.3.1/libstdc++-v3/config/os/gnu-linux/ctype_base.h	2003-08-31 10:55:18.000000000 -0500
+@@ -36,11 +36,18 @@
+   struct ctype_base
+   {
+     // Non-standard typedefs.
++#ifdef __UCLIBC__
++    typedef const __ctype_touplow_t* __to_type;
++    // NB: Offsets into ctype<char>::_M_table force a particular size
++    // on the mask type. Because of this, we don't use an enum.
++    typedef __ctype_mask_t	mask;   
++#else
+     typedef const int* 		__to_type;
+-
+     // NB: Offsets into ctype<char>::_M_table force a particular size
+     // on the mask type. Because of this, we don't use an enum.
+     typedef unsigned short 	mask;   
++#endif
++
+     static const mask upper    	= _ISupper;
+     static const mask lower 	= _ISlower;
+     static const mask alpha 	= _ISalpha;
+diff -urN gcc-3.3.1-old/libstdc++-v3/include/c_std/std_cstdlib.h gcc-3.3.1/libstdc++-v3/include/c_std/std_cstdlib.h
+--- gcc-3.3.1-old/libstdc++-v3/include/c_std/std_cstdlib.h	2003-04-18 05:08:05.000000000 -0500
++++ gcc-3.3.1/libstdc++-v3/include/c_std/std_cstdlib.h	2003-08-31 10:55:18.000000000 -0500
+@@ -101,9 +101,11 @@
+   using ::labs;
+   using ::ldiv;
+   using ::malloc;
++#if _GLIBCPP_USE_WCHAR_T
+   using ::mblen;
+   using ::mbstowcs;
+   using ::mbtowc;
++#endif
+   using ::qsort;
+   using ::rand;
+   using ::realloc;
+@@ -112,8 +114,10 @@
+   using ::strtol;
+   using ::strtoul;
+   using ::system;
++#if _GLIBCPP_USE_WCHAR_T
+   using ::wcstombs;
+   using ::wctomb;
++#endif
+ 
+   inline long 
+   abs(long __i) { return labs(__i); }
+diff -urN gcc-3.3.1-old/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.3.1/libstdc++-v3/include/c_std/std_cwchar.h
+--- gcc-3.3.1-old/libstdc++-v3/include/c_std/std_cwchar.h	2003-04-18 05:08:05.000000000 -0500
++++ gcc-3.3.1/libstdc++-v3/include/c_std/std_cwchar.h	2003-08-31 10:55:18.000000000 -0500
+@@ -165,7 +165,9 @@
+   using ::wcscoll;
+   using ::wcscpy;
+   using ::wcscspn;
++#ifdef HAVE_WCSFTIME
+   using ::wcsftime;
++#endif
+   using ::wcslen;
+   using ::wcsncat;
+   using ::wcsncmp;