From 18cefb81d1b7374131a9c8cc4cdf63188914994e Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Wed, 11 Feb 2004 03:32:34 +0000 Subject: [PATCH] Use --enable-sjlj-exceptions when configuring gcc so that exception handling works for dynamicly linked executables. Only tested so far on i386 with gcc 3.3.2. But combined with the latest ldso updates, I can now get a dynamicly linked java helloworld app to run. Add a config toggle for building gcj and libgcj. The build runs fine through gcc-final but currently requires hand interventions to build gcc-target. Again, only tested so far on i386. --- Makefile | 14 ++++++++++++++ make/gcc-uclibc-3.3.mk | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/Makefile b/Makefile index 9842a510a9..fabca35bfd 100644 --- a/Makefile +++ b/Makefile @@ -94,6 +94,11 @@ SOFT_FLOAT:=false TARGET_OPTIMIZATION=-Os TARGET_DEBUGGING= #-g +# Currently the unwind stuff seems to work for staticly linked apps but +# not dynamic. So use setjmp/longjmp exceptions by default. +GCC_USE_SJLJ_EXCEPTIONS:=--enable-sjlj-exceptions +#GCC_USE_SJLJ_EXCEPTIONS:= + # Any additional gcc options you may want to include.... EXTRA_GCC_CONFIG_OPTIONS:= @@ -108,6 +113,11 @@ MULTILIB:=--enable-multilib # Build/install c++ compiler and libstdc++? 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 + # For SMP machines some stuff can be run in parallel #JLEVEL=-j3 @@ -209,6 +219,10 @@ TARGET_SOFT_FLOAT:= ARCH_FPU_SUFFIX:= endif +ifeq ($(INSTALL_LIBGCJ),true) +INSTALL_LIBSTDCPP:=true +endif + # WARNING -- uClibc currently disables large file support on cris. ifeq ("$(strip $(ARCH))","cris") BUILD_WITH_LARGEFILE:=false diff --git a/make/gcc-uclibc-3.3.mk b/make/gcc-uclibc-3.3.mk index 2a6fedb6ec..93c92318b0 100644 --- a/make/gcc-uclibc-3.3.mk +++ b/make/gcc-uclibc-3.3.mk @@ -39,11 +39,15 @@ GCC_CAT:=bzcat # ############################################################# +ifeq ($(INSTALL_LIBGCJ),true) +TARGET_LANGUAGES:=c,c++,java +else ifeq ($(INSTALL_LIBSTDCPP),true) TARGET_LANGUAGES:=c,c++ else TARGET_LANGUAGES:=c endif +endif ############################################################# # @@ -138,6 +142,7 @@ $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched $(STAGING_DIR)/$(REAL_GNU_TAR $(DISABLE_NLS) \ $(MULTILIB) \ $(SOFT_FLOAT_CONFIG_OPTION) \ + $(GCC_USE_SJLJ_EXCEPTIONS) \ $(EXTRA_GCC_CONFIG_OPTIONS)); touch $(GCC_BUILD_DIR2)/.configured @@ -205,6 +210,7 @@ $(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR2)/.installed $(DISABLE_NLS) \ $(MULTILIB) \ $(SOFT_FLOAT_CONFIG_OPTION) \ + $(GCC_USE_SJLJ_EXCEPTIONS) \ $(EXTRA_GCC_CONFIG_OPTIONS)); touch $(GCC_BUILD_DIR3)/.configured -- 2.30.2