aboutsummaryrefslogtreecommitdiffstats
path: root/tools/sdcc
diff options
context:
space:
mode:
Diffstat (limited to 'tools/sdcc')
-rw-r--r--tools/sdcc/Makefile43
-rw-r--r--tools/sdcc/patches/100-workaround-gcc-4.6.2-hang.patch20
-rw-r--r--tools/sdcc/patches/200-fix_order_of_linking.patch92
3 files changed, 155 insertions, 0 deletions
diff --git a/tools/sdcc/Makefile b/tools/sdcc/Makefile
new file mode 100644
index 000000000..3210bb3e7
--- /dev/null
+++ b/tools/sdcc/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=sdcc
+PKG_VERSION:=3.0.0
+
+PKG_SOURCE:=$(PKG_NAME)-src-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=@SF/$(PKG_NAME)
+PKG_MD5SUM:=20fbd49a3421e09fe65577c45524c89e
+
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)
+
+include $(INCLUDE_DIR)/host-build.mk
+
+HOST_LDFLAGS += $(HOST_STATIC_LINKING)
+HOST_CONFIGURE_ARGS += \
+ --disable-ucsim \
+ --enable-packihx \
+ --enable-sdcpp \
+ --disable-sdcdb \
+ --disable-gbz80-port \
+ --disable-z80-port \
+ --disable-ds390-port \
+ --disable-ds400-port \
+ --disable-pic-port \
+ --disable-pic16-port \
+ --disable-hc08-port \
+ --disable-avr-port \
+ --disable-xa51-port \
+ --enable-mcs51-port \
+ --enable-device-lib \
+
+define Host/Clean
+ -$(MAKE) -C $(HOST_BUILD_DIR) uninstall
+ $(call Host/Clean/Default)
+endef
+
+$(eval $(call HostBuild))
diff --git a/tools/sdcc/patches/100-workaround-gcc-4.6.2-hang.patch b/tools/sdcc/patches/100-workaround-gcc-4.6.2-hang.patch
new file mode 100644
index 000000000..71db14f81
--- /dev/null
+++ b/tools/sdcc/patches/100-workaround-gcc-4.6.2-hang.patch
@@ -0,0 +1,20 @@
+--- a/src/SDCCicode.c
++++ b/src/SDCCicode.c
+@@ -1130,6 +1130,9 @@ iCode *getBuiltinParms (iCode *ic, int *
+ return ic;
+ }
+
++#pragma GCC push_options
++#pragma GCC optimize ("O0")
++
+ /*-----------------------------------------------------------------*/
+ /* operandOperation - performs operations on operands */
+ /*-----------------------------------------------------------------*/
+@@ -1405,6 +1408,7 @@ operandOperation (operand * left, operan
+
+ return retval;
+ }
++#pragma GCC pop_options
+
+
+ /*-----------------------------------------------------------------*/
diff --git a/tools/sdcc/patches/200-fix_order_of_linking.patch b/tools/sdcc/patches/200-fix_order_of_linking.patch
new file mode 100644
index 000000000..644349755
--- /dev/null
+++ b/tools/sdcc/patches/200-fix_order_of_linking.patch
@@ -0,0 +1,92 @@
+diff --git a/sdcc/sdas/as6808/Makefile.in b/sdcc/sdas/as6808/Makefile.in
+index 5041265..0b8732e 100644
+--- a/sdas/as6808/Makefile.in
++++ b/sdas/as6808/Makefile.in
+@@ -36,7 +36,8 @@ VPATH = @srcdir@
+
+ CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/Util
+ CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
+-LDFLAGS = @LDFLAGS@ -lm
++LDFLAGS = @LDFLAGS@
++LIBS = -lm
+
+ OBJDIR = obj
+
+@@ -65,7 +66,7 @@ transform = @program_transform_name@
+ all: checkconf $(ASX)
+
+ $(ASX): $(ASOBJECTS)
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS) $(LIBS)
+
+ # Compiling and installing everything and running test
+ # ----------------------------------------------------
+diff --git a/sdcc/sdas/as8051/Makefile.in b/sdcc/sdas/as8051/Makefile.in
+index 8fa5946..fde3001 100644
+--- a/sdas/as8051/Makefile.in
++++ b/sdas/as8051/Makefile.in
+@@ -36,7 +36,8 @@ VPATH = @srcdir@
+
+ CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/Util
+ CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
+-LDFLAGS = @LDFLAGS@ -lm
++LDFLAGS = @LDFLAGS@
++LIBS = -lm
+
+ OBJDIR = obj
+
+@@ -65,7 +66,7 @@ transform = @program_transform_name@
+ all: checkconf $(ASX)
+
+ $(ASX): $(ASOBJECTS)
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS) $(LIBS)
+
+ # Compiling and installing everything and running test
+ # ----------------------------------------------------
+diff --git a/sdcc/sdas/asgb/Makefile.in b/sdcc/sdas/asgb/Makefile.in
+index 2763b3f..f9afb23 100644
+--- a/sdas/asgb/Makefile.in
++++ b/sdas/asgb/Makefile.in
+@@ -36,7 +36,8 @@ VPATH = @srcdir@
+
+ CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/Util
+ CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
+-LDFLAGS = @LDFLAGS@ -lm
++LDFLAGS = @LDFLAGS@
++LIBS = -lm
+
+ OBJDIR = obj
+
+@@ -65,7 +66,7 @@ transform = @program_transform_name@
+ all: checkconf $(ASX)
+
+ $(ASX): $(ASOBJECTS)
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS) $(LIBS)
+
+ # Compiling and installing everything and running test
+ # ----------------------------------------------------
+diff --git a/sdcc/sdas/asz80/Makefile.in b/sdcc/sdas/asz80/Makefile.in
+index d2bf1ac..89bd91c 100644
+--- a/sdas/asz80/Makefile.in
++++ b/sdas/asz80/Makefile.in
+@@ -36,7 +36,8 @@ VPATH = @srcdir@
+
+ CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/Util
+ CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
+-LDFLAGS = @LDFLAGS@ -lm
++LDFLAGS = @LDFLAGS@
++LIBS = -lm
+
+ OBJDIR = obj
+
+@@ -65,7 +66,7 @@ transform = @program_transform_name@
+ all: checkconf $(ASX)
+
+ $(ASX): $(ASOBJECTS)
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS) $(LIBS)
+
+ # Compiling and installing everything and running test
+ # ----------------------------------------------------