summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Novoa III <mjn3@codepoet.org>2004-02-11 03:32:34 +0000
committerManuel Novoa III <mjn3@codepoet.org>2004-02-11 03:32:34 +0000
commit18cefb81d1b7374131a9c8cc4cdf63188914994e (patch)
treee3760dfae2b083f2d185a3f4eda41853cc136ab0
parent0209686130ce8721ddc03f481a39940dbbbb82cb (diff)
downloadbuildroot-novena-18cefb81d1b7374131a9c8cc4cdf63188914994e.tar.gz
buildroot-novena-18cefb81d1b7374131a9c8cc4cdf63188914994e.zip
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.
-rw-r--r--Makefile14
-rw-r--r--make/gcc-uclibc-3.3.mk6
2 files changed, 20 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 9842a510a..fabca35bf 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 2a6fedb6e..93c92318b 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