[uClibc] [buildroot] Patch to add libstdc++ installation in root filesystem

Thomas Petazzoni thomas.petazzoni at enix.org
Thu Jan 20 00:17:41 UTC 2005


Hello,

What about this longstanding issue ?

Thomas

Thomas Petazzoni wrote:
> Hello,
>
> Enclosed is a small patch that changes a few options of the main
> Makefile to allow automatic installation of the libstdc++ in the root
> filesystem.
>
> Previsously, when INSTALL_LIBSTDCPP option was true, the c++ compiler
> and the libstdc++ were built. The name was strange, because it was
> talking about installing the standard C++ library, not building the C++
> compiler and its library.
>
> With this patch there are two different options :
>
>  * BUILD_CPP which has the same effect as the old INSTALL_LIBSTDCPP,
>  that is compile the C++ compiler and the C++ library.
>
>  * INSTALL_LIBSTDCPP now allows to install the C++ standard library
>  inside the root filesystem
>
> To be clean, I also rennamed the INSTALL_LIBGCJ option to BUILD_GCJ.
>
> The patch affect :
>  - Makefile
>  - make/gcc-uclibc-3.x.mk
>  - make/gcc-uclibc-2.95.mk
>  - make/ccache.mk
>
> I have tested it successfully with gcc-3.4, but I didn't tested it with
> gcc-2.95 so my changes in gcc-uclibc-2.95.mk might be wrong.
>
> Feel free to ask for more details,
>
> Thomas
>
>
> ------------------------------------------------------------------------
>
> Index: Makefile
> ===================================================================
> RCS file: /var/cvs/buildroot/Makefile,v
> retrieving revision 1.85
> diff -u -r1.85 Makefile
> --- Makefile	3 Sep 2004 01:12:33 -0000	1.85
> +++ Makefile	9 Sep 2004 13:47:19 -0000
> @@ -160,13 +160,15 @@
>  # If you want multilib enabled, enable this...
>  MULTILIB:=--enable-multilib
>
> -# Build/install c++ compiler and libstdc++?
> +# Build c++ compiler and libstdc++?
> +BUILD_CPP:=true
> +
> +# Install c++ libraries in target ?
>  INSTALL_LIBSTDCPP:=true
>
>  # Build/install java compiler and libgcj? (requires c++)
>  # WARNING!!! DOES NOT BUILD FOR TARGET WITHOUT INTERVENTION!!!  mjn3
> -#INSTALL_LIBGCJ:=true
> -INSTALL_LIBGCJ:=false
> +BUILD_GCJ:=false
>
>  # For SMP machines some stuff can be run in parallel
>  #JLEVEL=-j3
> @@ -264,8 +266,8 @@
>  ARCH_FPU_SUFFIX:=
>  endif
>
> -ifeq ($(INSTALL_LIBGCJ),true)
> -INSTALL_LIBSTDCPP:=true
> +ifeq ($(BUILD_GCJ),true)
> +BUILD_CPP:=true
>  endif
>
>  # WARNING -- uClibc currently disables large file support on cris.
> Index: make/ccache.mk
> ===================================================================
> RCS file: /var/cvs/buildroot/make/ccache.mk,v
> retrieving revision 1.10
> diff -u -r1.10 ccache.mk
> --- make/ccache.mk	3 Sep 2004 00:49:33 -0000	1.10
> +++ make/ccache.mk	9 Sep 2004 13:47:19 -0000
> @@ -61,7 +61,7 @@
>  		ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-gcc; \
>  		ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-uclibc-cc; \
>  		ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc);
> -ifeq ($(INSTALL_LIBSTDCPP),true)
> +ifeq ($(BUILD_CPP),true)
>  	[ -f $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-c++ ] && \
>  		mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-c++ $(STAGING_DIR)/bin-ccache/
>  	[ -f $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-g++ ] && \
> Index: make/gcc-uclibc-2.95.mk
> ===================================================================
> RCS file: /var/cvs/buildroot/make/gcc-uclibc-2.95.mk,v
> retrieving revision 1.9
> diff -u -r1.9 gcc-uclibc-2.95.mk
> --- make/gcc-uclibc-2.95.mk	9 Sep 2004 10:50:57 -0000	1.9
> +++ make/gcc-uclibc-2.95.mk	9 Sep 2004 13:47:19 -0000
> @@ -36,7 +36,7 @@
>  #
>  #############################################################
>
> -ifeq ($(INSTALL_LIBSTDCPP),true)
> +ifeq ($(BUILD_CPP),true)
>  TARGET_LANGUAGES:=c,c++
>  STLPORT_TARGET=stlport
>  else
> @@ -44,6 +44,13 @@
>  STLPORT_TARGET=
>  endif
>
> +ifeq ($(INSTALL_LIBSTDCPP),true)
> +	LIBSTDCPP_TARGET=$(TARGET_DIR)/lib/libstdc++.a
> +else
> +	LIBSTDCPP_TARGET=
> +endif
> +
> +
>  #############################################################
>  #
>  # build the first pass gcc compiler
> @@ -201,8 +208,13 @@
>  	);
>  	touch $(GCC_BUILD_DIR2)/.installed
>
> +$(TARGET_DIR)/lib/libstdc++.a: $(GCC_BUILD_DIR2)/.installed
> +	rm -rf $(TARGET_DIR)/usr/lib/libstdc++.*
> +	-$(STRIP) $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++.a
> +	-cp -a $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++.a $(TARGET_DIR)/lib/
> +
>  gcc: uclibc-configured binutils gcc_initial $(LIBFLOAT_TARGET) uclibc \
> -	$(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) $(STLPORT_TARGET)
> +	$(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) $(STLPORT_TARGET) $(LIBSTDCPP_TARGET)
>
>  gcc-source: $(DL_DIR)/$(GCC_SOURCE)
>
> Index: make/gcc-uclibc-3.x.mk
> ===================================================================
> RCS file: /var/cvs/buildroot/make/gcc-uclibc-3.x.mk,v
> retrieving revision 1.4
> diff -u -r1.4 gcc-uclibc-3.x.mk
> --- make/gcc-uclibc-3.x.mk	9 Sep 2004 10:50:57 -0000	1.4
> +++ make/gcc-uclibc-3.x.mk	9 Sep 2004 13:47:19 -0000
> @@ -39,16 +39,23 @@
>  #
>  #############################################################
>
> -ifeq ($(INSTALL_LIBGCJ),true)
> +ifeq ($(BUILD_GCJ),true)
>  TARGET_LANGUAGES:=c,c++,java
>  else
> -ifeq ($(INSTALL_LIBSTDCPP),true)
> +ifeq ($(BUILD_CPP),true)
>  TARGET_LANGUAGES:=c,c++
>  else
>  TARGET_LANGUAGES:=c
>  endif
>  endif
>
> +ifeq ($(INSTALL_LIBSTDCPP),true)
> +	LIBSTDCPP_TARGET=$(TARGET_DIR)/lib/libstdc++.so.6
> +else
> +	LIBSTDCPP_TARGET=
> +endif
> +
> +
>  #############################################################
>  #
>  # build the first pass gcc compiler
> @@ -195,8 +202,13 @@
>  	-$(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/
>
> +$(TARGET_DIR)/lib/libstdc++.so.6: $(GCC_BUILD_DIR2)/.installed
> +	rm -rf $(TARGET_DIR)/usr/lib/libstdc++.so*
> +	-$(STRIP) $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++.so.6
> +	-cp -a $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++.so* $(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)
> +	$(TARGET_DIR)/lib/libgcc_s.so.1 $(LIBSTDCPP_TARGET) $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS)
>
>  gcc-source: $(DL_DIR)/$(GCC_SOURCE)
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://uclibc.org/mailman/listinfo/uclibc


--
PETAZZONI Thomas - thomas.petazzoni at enix.org
http://thomas.enix.org - Jabber: thomas.petazzoni at jabber.dk
KOS: http://kos.enix.org/ - SOS: http://sos.enix.org
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
Url : http://lists.busybox.net/pipermail/uclibc/attachments/20050120/e8b73a9d/attachment.pgp 


More information about the uClibc mailing list