summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-10-08 09:38:44 +0000
committerMike Frysinger <vapier@gentoo.org>2010-10-08 09:38:44 +0000
commitc258c11a9528a1b8f111feca4e39e77da47c1d4f (patch)
treeb7e754c32b183a87fe598a5f5ed0b1d71b4ba088 /dev-embedded/sdcc
parentBump to 0.4.10. Bunch of 64-bit and SSE improvements amongst other fixes. (diff)
downloadhistorical-c258c11a9528a1b8f111feca4e39e77da47c1d4f.tar.gz
historical-c258c11a9528a1b8f111feca4e39e77da47c1d4f.tar.bz2
historical-c258c11a9528a1b8f111feca4e39e77da47c1d4f.zip
Version bump #270621 by Karl Hiramoto. Merge & clean up the sdcc-svn package and fix #251876 #255659 by Diego E. Pettenò in the process.
Package-Manager: portage-2.2_rc86/cvs/Linux x86_64
Diffstat (limited to 'dev-embedded/sdcc')
-rw-r--r--dev-embedded/sdcc/ChangeLog14
-rw-r--r--dev-embedded/sdcc/Manifest21
-rw-r--r--dev-embedded/sdcc/files/sdcc-2.9.0-build.patch51
-rw-r--r--dev-embedded/sdcc/files/sdcc-2.9.0-gcc44.patch15
-rw-r--r--dev-embedded/sdcc/files/sdcc-2.9.0-getline.patch16
-rw-r--r--dev-embedded/sdcc/files/sdcc-2.9.0-headers.patch209
-rw-r--r--dev-embedded/sdcc/files/sdcc-9999-build.patch53
-rw-r--r--dev-embedded/sdcc/sdcc-2.9.0.ebuild97
-rw-r--r--dev-embedded/sdcc/sdcc-9999.ebuild85
9 files changed, 558 insertions, 3 deletions
diff --git a/dev-embedded/sdcc/ChangeLog b/dev-embedded/sdcc/ChangeLog
index 6424b8be27a8..00add45b246a 100644
--- a/dev-embedded/sdcc/ChangeLog
+++ b/dev-embedded/sdcc/ChangeLog
@@ -1,6 +1,16 @@
# ChangeLog for dev-embedded/sdcc
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-embedded/sdcc/ChangeLog,v 1.42 2009/08/10 08:11:49 ssuominen Exp $
+# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/dev-embedded/sdcc/ChangeLog,v 1.43 2010/10/08 09:38:44 vapier Exp $
+
+*sdcc-9999 (08 Oct 2010)
+*sdcc-2.9.0 (08 Oct 2010)
+
+ 08 Oct 2010; Mike Frysinger <vapier@gentoo.org> +sdcc-2.9.0.ebuild,
+ +files/sdcc-2.9.0-build.patch, +files/sdcc-2.9.0-gcc44.patch,
+ +files/sdcc-2.9.0-getline.patch, +files/sdcc-2.9.0-headers.patch,
+ +sdcc-9999.ebuild, +files/sdcc-9999-build.patch:
+ Version bump #270621 by Karl Hiramoto. Merge & clean up the sdcc-svn
+ package and fix #251876 #255659 by Diego E. Pettenò in the process.
10 Aug 2009; Samuli Suominen <ssuominen@gentoo.org> sdcc-2.8.0.ebuild,
+files/sdcc-2.8.0-gcc44.patch:
diff --git a/dev-embedded/sdcc/Manifest b/dev-embedded/sdcc/Manifest
index 2a00b54c698f..cb0356442c88 100644
--- a/dev-embedded/sdcc/Manifest
+++ b/dev-embedded/sdcc/Manifest
@@ -1,16 +1,35 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
AUX sdcc-2.8.0-flags.patch 2103 RMD160 35f207ff98855e9c347e751f272e9f7fc9392315 SHA1 9ea13dc7501a7a8ca10c290dda897e954f1cfe18 SHA256 bc578efacde9ebf65f49c2d209854a7ada18f337da894ed37414fde0dd1bc046
AUX sdcc-2.8.0-gcc44.patch 313 RMD160 1b4740b353869421c22749af1ed97df9781bad08 SHA1 461775e92045d42d38e5d190506fb385bb51fbbc SHA256 ae0a477edc8f9aa0f6bb6b08fcde4538fd465708c0d79dc5bdc96969feacc115
+AUX sdcc-2.9.0-build.patch 2443 RMD160 d9344af14933372a17040592ca054c1d46ce3ca0 SHA1 7f4435a858ffcf2a9649cf4808435a853799740f SHA256 11ea67c70cc4cca2d487ad3ffc140023ff3d7d67fe7ba04f5529515e6baf2b1b
+AUX sdcc-2.9.0-gcc44.patch 419 RMD160 5f2e9bcd5b2e5f2a16c600097ab0f7575fa2ec39 SHA1 ec2dc87ceedfebc7fe2bc5522bf7eff7ab06dc60 SHA256 ffc643045f09d0b191172faf79dcdf58c3f6d8cf8361b0d75b65fafa7b29f3a8
+AUX sdcc-2.9.0-getline.patch 308 RMD160 84d1ee72caca6e250de921a3a6c22a61b317d273 SHA1 04f165c05e942628e5f60c0d7141e8b7bbc38f1d SHA256 c51c06e536bb761f301a816916f467b29b4e144b9380dbc1163799ea6e24a95a
+AUX sdcc-2.9.0-headers.patch 7919 RMD160 022b90dc61e2a2912bef5c6c6e5b3239c00d4f97 SHA1 b5c068e6a3531066537d0e5d5cc637834e4c72a9 SHA256 8c5e0162f52eaaad91e4dee2c5197dfa7ec075dca953bdf00b5623a15ca867f8
+AUX sdcc-9999-build.patch 2533 RMD160 ca049af62e06f47bc7aa881de6aa4df28c9218b0 SHA1 aac016ab093f015490e8566e9ce190913265bd3d SHA256 c58317e2e281bcd2acddd01b91f5abeb11ced9e28f1153032a66b185e3170b2d
DIST sdcc-doc-2.6.0.tar.gz 1026186 RMD160 bec50c8a4ca1263dd4cd533bf2802cfe17cc8f6c SHA1 7689d13886d2cf9b1e346ec2d86595046b08ef1b SHA256 fca8592706f76ed7063652dafa8c18c79070a1b31c12b8834b7feffbcb945817
DIST sdcc-doc-2.7.0.tar.bz2 1211113 RMD160 5eb71415084561db980bdc81d104427e647277a4 SHA1 d2dd4318b308372fea36a9093b597127dd258e1c SHA256 3a70654c9c0a0f86d9632d85f94eed946c9faf946c266fceadc5f60f590c0b70
DIST sdcc-doc-2.8.0.tar.bz2 1363271 RMD160 845993157869fd7b5dc889141c1d07c2873f671a SHA1 a6d3154f7a54e341597e88acb723fed1e41c1938 SHA256 b40fd15e69d89872c2982fe8a9ed2cc0415d05d0e830b4969714e0af8db21f6d
+DIST sdcc-doc-2.9.0.tar.bz2 1388379 RMD160 ff65d86810133385e288e2a43438d4c98ae1a8da SHA1 6bb0bebd5517df3d2a558943ac921f41913be215 SHA256 b3a210dfeb46b924cf36531a6e5a11b9d7334765a61e46688ad3f7016802d057
DIST sdcc-doc-20060502.tar.gz 1027650 RMD160 4c4d1b4f2f5b72c7fe61aff2c354e4f1b7a035d4 SHA1 b9800ca1421443f006881ae9bd11b039269d0123 SHA256 b2663f2a9a195d94990fe6a958b7f1b1b96f5f11e12a7b738613ca762f927407
DIST sdcc-src-2.6.0.tar.gz 4229518 RMD160 2ae5904913e6f106da75df641cbcad9c3a202bdb SHA1 ec30089a879ea15f68dc3f86d0b4cc6b1d60bbb1 SHA256 6534450fef981502d5e540464fe0d4332e0f47704548354b59af90eaf290cf93
DIST sdcc-src-2.7.0.tar.bz2 3405687 RMD160 8056b35c87a55cffa7e313fb0f180f464725f7a9 SHA1 f1bc9eda688216187d5a4c1ede9dbeb11d0d31e9 SHA256 315caf8b239dfe4f922f090f33d24e822eb49a1b443d4be020056c91277ffd95
DIST sdcc-src-2.8.0.tar.bz2 3460693 RMD160 b91d6ca5642011f0e735c63e0ed4bc6b33128b9f SHA1 487a9c576130bb1bfb225fe36984f485aac0f513 SHA256 cbb035699d8910c7ca2fa360a773504b44165e98042ed8c208fea2fe47a96557
+DIST sdcc-src-2.9.0.tar.bz2 3764926 RMD160 38f23365b676132651f0322779bff498eb7e2b8d SHA1 03308a233a67e7fdce3f7e4972acb8731ae42666 SHA256 5f48246ea233bcfa63fafc23898584388b207caa80c5cc21485f089c87eaf68b
DIST sdcc-src-20060502.tar.gz 4145716 RMD160 9d66bba6c0f7712473b8d36ea6ee4b314a846230 SHA1 10638665cf27e5f63830723d7b7e5c736341e81c SHA256 4433dbafdf9dcc3b3528c9dbbcc1eb4c572c1ff2179286010c56fe529f90799e
EBUILD sdcc-2.5.0_p20060502.ebuild 1685 RMD160 6a10a5fe2d41bb4d66ff23a5efd3b91db326129f SHA1 ccbc121042ce925aa7872b896d404e66c302cf26 SHA256 0e76f2a1e0b3d57622646497674f998cf52c22e2c7ded443d465e7156bd58830
EBUILD sdcc-2.6.0.ebuild 1577 RMD160 d329f21aaf869396f263553e38141858feb27983 SHA1 cea82a4b7f296c6b61ba5564a3bdc13c25018e4f SHA256 3bb6b398a01cb89a9cce2cc9999e1660fd751bbe26cff7391f8f6df4d5e644a4
EBUILD sdcc-2.7.0.ebuild 1579 RMD160 1a780dc6032104b25ca836ef3eb41938795b5b2f SHA1 296dc07d261ddc7d04fedf43de5a4d38f6c648db SHA256 23bc7739153df1455245842f525137acdc9192d83b7a3fda85bf263942d26383
EBUILD sdcc-2.8.0.ebuild 2091 RMD160 4d1d75514a42b1dde02e72cf85866229281bb7cd SHA1 839f413cc5af2b7c357b3f1e279626b2b0623a17 SHA256 c175cbe0bd81d986adce15cc936c91d672b28e6969271f897c6898b998b20d2d
-MISC ChangeLog 6674 RMD160 d7a77a1f2ecca05b3f866a66f7a3c51528cd5478 SHA1 6722ff2ca1f9d4cbf64a64cfedb1b6686c9c0d07 SHA256 26c0119a432758347ec68e1f6aad0852a50fdc5ff61b0d0d7ee26b8cf1b42201
+EBUILD sdcc-2.9.0.ebuild 2396 RMD160 17ee8ac9c340d62323bd80ef4cec22fb294e17f5 SHA1 6f0fe23ac3dbbc33747543db7497e39088c69b7e SHA256 326504d5b4f77aa03bdd100a811f6fdc0c9fc054b2794c09367a33a19f7b2c4a
+EBUILD sdcc-9999.ebuild 2107 RMD160 8933e0435a00aa84e9ae7e723eedbf4a871ccc85 SHA1 12816f03855266220a7286dca476c56e5de7c694 SHA256 1a8d446a21516aa8f36bfed89446eb0a11117447412f1a85db96b466cc733962
+MISC ChangeLog 7119 RMD160 0b177cc348f9583d95d6c7235df13a24210f7249 SHA1 775b4254d22fa30b9064196c570a1b6f0005f830 SHA256 fbef2cc0a5dc0014898e7f84f4b16b3ffe89e1dc87104be515bb522822e41207
MISC metadata.xml 371 RMD160 a7669f3a27e2ef27e4c28e775c094c76e17d7e92 SHA1 1c3f3979c3437b7f77b38f7e697fdc99719c4967 SHA256 436922a2a0e576d911c70892a4fefd75dcf8d1a41f6a4a7b47aa4d816a39a79e
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.16 (GNU/Linux)
+
+iF4EAREIAAYFAkyu5kYACgkQTwhj9JtAlp5thgD/fpdceTggg1nAc2eAbizQh/oA
+Z1VI55woBvl1C0KLJWQA/1oGJzMbPBdiXjMrdV2Kk/r/q/39zI2ZoYDUaeWYq/pn
+=m+Lj
+-----END PGP SIGNATURE-----
diff --git a/dev-embedded/sdcc/files/sdcc-2.9.0-build.patch b/dev-embedded/sdcc/files/sdcc-2.9.0-build.patch
new file mode 100644
index 000000000000..b944b00d83a5
--- /dev/null
+++ b/dev-embedded/sdcc/files/sdcc-2.9.0-build.patch
@@ -0,0 +1,51 @@
+fix parallel build issues
+
+--- sdcc/device/lib/Makefile.in
++++ sdcc/device/lib/Makefile.in
+@@ -347,37 +347,21 @@
+ cp -f $(PORT)/bin/*.* $(SDCCPORTDIR); \
+ fi
+
+-$(LIB_FILES): $(OBJECTS_FLOAT) $(OBJECTS_INT) $(OBJECTS_LONG) $(OBJECTS_SDCC)
+ ifeq ($(LIB_TYPE), SDCCLIB)
+- ../../bin/sdcclib -a $(SDCCPORTDIR)/libfloat.lib $(OBJECTS_FLOAT)
+- ../../bin/sdcclib -a $(SDCCPORTDIR)/libint.lib $(OBJECTS_INT)
+- ../../bin/sdcclib -a $(SDCCPORTDIR)/liblong.lib $(OBJECTS_LONG)
+- ../../bin/sdcclib -a $(SDCCPORTDIR)/libsdcc.lib $(OBJECTS_SDCC)
++mklib = ../../bin/sdcclib -a $@ $^
+ else ifeq ($(LIB_TYPE), AR)
+- ar -Scq $(SDCCPORTDIR)/libfloat.lib $(OBJECTS_FLOAT)
+- ar -Scq $(SDCCPORTDIR)/libint.lib $(OBJECTS_INT)
+- ar -Scq $(SDCCPORTDIR)/liblong.lib $(OBJECTS_LONG)
+- ar -Scq $(SDCCPORTDIR)/libsdcc.lib $(OBJECTS_SDCC)
++mklib = ar -Scq $@ $^
+ else ifeq ($(LIB_TYPE), RANLIB)
+- ar -Scq $(SDCCPORTDIR)/libfloat.lib $(OBJECTS_FLOAT); $(top_builddir)/bin/asranlib $(SDCCPORTDIR)/libfloat.lib
+- ar -Scq $(SDCCPORTDIR)/libint.lib $(OBJECTS_INT); $(top_builddir)/bin/asranlib $(SDCCPORTDIR)/libint.lib
+- ar -Scq $(SDCCPORTDIR)/liblong.lib $(OBJECTS_LONG); $(top_builddir)/bin/asranlib $(SDCCPORTDIR)/liblong.lib
+- ar -Scq $(SDCCPORTDIR)/libsdcc.lib $(OBJECTS_SDCC); $(top_builddir)/bin/asranlib $(SDCCPORTDIR)/libsdcc.lib
++mklib = ar -Scq $@ $^ && $(top_builddir)/bin/asranlib $@
+ else
+- rm -f $(SDCCPORTDIR)/libfloat.lib
+- for i in $(notdir $(basename $(OBJECTS_FLOAT))); do echo $$i >> $(SDCCPORTDIR)/libfloat.lib; done
+- cp $(OBJECTS_FLOAT) $(SDCCPORTDIR)
+- rm -f $(SDCCPORTDIR)/libint.lib
+- for i in $(notdir $(basename $(OBJECTS_INT))); do echo $$i >> $(SDCCPORTDIR)/libint.lib; done
+- cp $(OBJECTS_INT) $(SDCCPORTDIR)
+- rm -f $(SDCCPORTDIR)/liblong.lib
+- for i in $(notdir $(basename $(OBJECTS_LONG))); do echo $$i >> $(SDCCPORTDIR)/liblong.lib; done
+- cp $(OBJECTS_LONG) $(SDCCPORTDIR)
+- rm -f $(SDCCPORTDIR)/libsdcc.lib
+- for i in $(notdir $(basename $(OBJECTS_SDCC))); do echo $$i >> $(SDCCPORTDIR)/libsdcc.lib; done
+- cp $(OBJECTS_SDCC) $(SDCCPORTDIR)
++mklib = for i in $(notdir $(basename $^)); do echo $$i; done >> $@; cp $^ $(SDCCPORTDIR)
+ endif
+
++$(SDCCPORTDIR)/libfloat.lib: $(OBJECTS_FLOAT); $(mklib)
++$(SDCCPORTDIR)/libint.lib: $(OBJECTS_INT); $(mklib)
++$(SDCCPORTDIR)/liblong.lib: $(OBJECTS_LONG); $(mklib)
++$(SDCCPORTDIR)/libsdcc.lib: $(OBJECTS_SDCC); $(mklib)
++
+ clean_intermediate:
+ rm -f $(SDCCPORTDIR)/*.lst $(SDCCPORTDIR)/*.sym
+
diff --git a/dev-embedded/sdcc/files/sdcc-2.9.0-gcc44.patch b/dev-embedded/sdcc/files/sdcc-2.9.0-gcc44.patch
new file mode 100644
index 000000000000..fb4ac7918c51
--- /dev/null
+++ b/dev-embedded/sdcc/files/sdcc-2.9.0-gcc44.patch
@@ -0,0 +1,15 @@
+like fix already in upstream
+
+* sim/ucsim/cmd.src/cmdlex.cc: regenerated,
+ fix for parch #3038644: Fix for GCC-4.4 compile error
+
+--- trunk/sdcc/sim/ucsim/cmd.src/cmdlex.cc 2010/08/04 15:21:39 5910
++++ trunk/sdcc/sim/ucsim/cmd.src/cmdlex.cc 2010/08/04 17:17:09 5911
+@@ -85,6 +85,7 @@
+ #include <errno.h>
+ #include <cstdlib>
+ #include <cstring>
++#include <cstdio>
+ /* end standard C++ headers. */
+
+ #ifdef __cplusplus
diff --git a/dev-embedded/sdcc/files/sdcc-2.9.0-getline.patch b/dev-embedded/sdcc/files/sdcc-2.9.0-getline.patch
new file mode 100644
index 000000000000..f7ca6237cf57
--- /dev/null
+++ b/dev-embedded/sdcc/files/sdcc-2.9.0-getline.patch
@@ -0,0 +1,16 @@
+upstream has reworked their code, so just do a minimal hack for the older ver
+
+http://bugs.gentoo.org/270621
+
+--- sdcc/as/link/getline.h
++++ sdcc/as/link/getline.h
+@@ -30,6 +30,9 @@
+
+ #include <stdio.h>
+
++#undef getline /* just in case */
++#define getline sdcc_getline
++
+ #ifdef __cplusplus
+ extern "C"
+ {
diff --git a/dev-embedded/sdcc/files/sdcc-2.9.0-headers.patch b/dev-embedded/sdcc/files/sdcc-2.9.0-headers.patch
new file mode 100644
index 000000000000..58d10299aa8f
--- /dev/null
+++ b/dev-embedded/sdcc/files/sdcc-2.9.0-headers.patch
@@ -0,0 +1,209 @@
+fix from upstream for implicit decls
+
+--- trunk/sdcc/debugger/mcs51/sdcdb.c 2009/09/20 11:50:19 5517
++++ trunk/sdcc/debugger/mcs51/sdcdb.c 2010/04/14 16:18:37 5813
+@@ -34,6 +34,10 @@
+ #include <readline/readline.h>
+ #include <readline/history.h>
+ #endif /* HAVE_LIBREADLINE */
++#ifdef HAVE_UNISTD_H
++#include <unistd.h>
++#endif
++#include <sys/wait.h>
+
+ #ifdef SDCDB_DEBUG
+ int sdcdbDebug = 0;
+@@ -1609,7 +1609,7 @@ static void parseCmdLine (int argc, char **argv)
+ }
+
+ if (strncmp(argv[i],"-cd=",4) == 0) {
+- chdir(argv[i][4]);
++ chdir(&argv[i][4]);
+ continue;
+ }
+
+--- trunk/sdcc/debugger/mcs51/config.h.in
++++ trunk/sdcc/debugger/mcs51/config.h.in
+@@ -15,6 +15,10 @@
+
+ #undef HAVE_LIBREADLINE
+
++#undef HAVE_UNISTD_H
++
++#undef HAVE_SYS_WAIT_H
++
+ #endif
+
+ /* End of config.h */
+
+fix from upstream for collision between "link" in unistd.h and local "link"
+
+--- trunk/sdcc/debugger/mcs51/symtab.h 2006/09/16 14:10:20 4379
++++ trunk/sdcc/debugger/mcs51/symtab.h 2010/04/14 16:18:37 5813
+@@ -106,13 +106,13 @@
+ short num_elem; /* # of elems if type==array */
+ short ptr_const :1; /* pointer is constant */
+ short ptr_volatile:1; /* pointer is volatile */
+- struct link *tspec; /* pointer type specifier */
++ struct st_link *tspec; /* pointer type specifier */
+ } declarator ;
+
+ #define DECLARATOR 0
+ #define SPECIFIER 1
+
+-typedef struct link {
++typedef struct st_link {
+ unsigned class : 1 ; /* DECLARATOR or SPECIFIER */
+ unsigned tdef : 1 ; /* current link created by */
+ /* typedef if this flag is set*/
+@@ -121,8 +121,8 @@
+ declarator d ; /* if CLASS == DECLARATOR */
+ } select ;
+
+- struct link *next ; /* next element on the chain */
+-} link ;
++ struct st_link *next ; /* next element on the chain */
++} st_link ;
+
+ typedef struct symbol {
+ char *name ;
+@@ -136,8 +136,8 @@
+ unsigned addr ; /* address if the symbol */
+ unsigned eaddr ; /* end address for functions */
+ char addr_type ; /* which address space */
+- link *type ; /* start of type chain */
+- link *etype ; /* end of type chain */
++ st_link *type ; /* start of type chain */
++ st_link *etype ; /* end of type chain */
+ char scopetype ; /* 'G' global, 'F' - file, 'L' local */
+ char *sname ; /* if 'F' or 'L' then scope name */
+ char *rname ; /* real name i.e. mangled beyond recognition */
+@@ -242,6 +242,6 @@
+ DEFSETFUNC(moduleWithName);
+ DEFSETFUNC(moduleWithCName);
+ DEFSETFUNC(moduleWithAsmName);
+-unsigned int getSize (link *);
++unsigned int getSize (st_link *);
+
+ #endif
+
+--- a/sdcc/debugger/mcs51/symtab.c
++++ b/sdcc/debugger/mcs51/symtab.c
+@@ -31,7 +31,7 @@ DEFSETFUNC(symWithRName);
+ /*------------------------------------------------------------------*/
+ /* getSize - returns size of a type chain in bits */
+ /*------------------------------------------------------------------*/
+-unsigned int getSize ( link *p )
++unsigned int getSize ( st_link *p )
+ {
+ /* if nothing return 0 */
+ if ( ! p )
+@@ -127,8 +127,8 @@ static char *parseTypeInfo (symbol *sym, char *s)
+ /* bp now points to '}' ... go past it */
+ s = ++bp;
+ while (*s != ')') { /* till we reach the end */
+- link *type;
+- type = Safe_calloc(1,sizeof(link));
++ st_link *type;
++ type = Safe_calloc(1,sizeof(st_link));
+ if (*s == ',') s++;
+
+ /* is a declarator */
+--- a/sdcc/debugger/mcs51/cmd.c
++++ b/sdcc/debugger/mcs51/cmd.c
+@@ -327,8 +327,8 @@ static char *warranty=
+ "POSSIBILITY OF SUCH DAMAGES.\n";
+ #endif
+
+-static void printTypeInfo(link *);
+-static void printValAggregates (symbol *,link *,char,unsigned int,int);
++static void printTypeInfo(st_link *);
++static void printValAggregates (symbol *,st_link *,char,unsigned int,int);
+ static int printOrSetSymValue (symbol *sym, context *cctxt,
+ int flg, int dnum, int fmt,
+ char *rs, char *val, char cmp);
+@@ -2323,7 +2323,7 @@ int cmdListSrc (char *s, context *cctxt)
+ return 0;
+ }
+
+-static unsigned long getValBasic(symbol *sym, link *type, char *val)
++static unsigned long getValBasic(symbol *sym, st_link *type, char *val)
+ {
+ char *s;
+ union
+@@ -2347,7 +2347,7 @@ static unsigned long getValBasic(symbol *sym, link *type, char *val)
+ {
+ if (IS_INTEGRAL(type))
+ {
+- link *etype;
++ st_link *etype;
+ if ( type->next )
+ etype = type->next;
+ else
+@@ -2460,7 +2460,7 @@ static void printFmtInteger(char *deffmt,int fmt, long val,
+ /*-----------------------------------------------------------------*/
+ /* printValBasic - print value of basic types */
+ /*-----------------------------------------------------------------*/
+-static void printValBasic(symbol *sym, link *type,
++static void printValBasic(symbol *sym, st_link *type,
+ char mem, unsigned addr,int size, int fmt)
+ {
+ union {
+@@ -2484,7 +2484,7 @@ static void printValBasic(symbol *sym, link *type,
+ else
+ if (IS_INTEGRAL(type))
+ {
+- link *etype;
++ st_link *etype;
+ if ( type->next )
+ etype = type->next;
+ else
+@@ -2534,10 +2534,10 @@ static void printValFunc (symbol *sym, int fmt)
+ /*-----------------------------------------------------------------*/
+ /* printArrayValue - will print the values of array elements */
+ /*-----------------------------------------------------------------*/
+-static void printArrayValue (symbol *sym, link *type,
++static void printArrayValue (symbol *sym, st_link *type,
+ char space, unsigned int addr, int fmt)
+ {
+- link *elem_type = type->next;
++ st_link *elem_type = type->next;
+ int i;
+
+ fprintf(stdout,"{");
+@@ -2558,7 +2558,7 @@ static void printArrayValue (symbol *sym, link *type,
+ /*-----------------------------------------------------------------*/
+ /* printStructValue - prints structures elements */
+ /*-----------------------------------------------------------------*/
+-static void printStructValue (symbol *sym, link *type,
++static void printStructValue (symbol *sym, st_link *type,
+ char space, unsigned int addr, int fmt)
+ {
+ symbol *fields = SPEC_STRUCT(type)->fields;
+@@ -2581,7 +2581,7 @@ static void printStructValue (symbol *sym, link *type,
+ /*-----------------------------------------------------------------*/
+ /* printValAggregates - print value of aggregates */
+ /*-----------------------------------------------------------------*/
+-static void printValAggregates (symbol *sym, link *type,
++static void printValAggregates (symbol *sym, st_link *type,
+ char space,unsigned int addr, int fmt)
+ {
+
+@@ -2606,7 +2606,7 @@ static int printOrSetSymValue (symbol *sym, context *cctxt,
+ static char fmtChar[] = " todx ";
+ static int stack = 1;
+ symbol *fields;
+- link *type;
++ st_link *type;
+ unsigned int addr;
+ int size, n;
+ char *s, *s2;
+@@ -2808,7 +2808,7 @@ static void printStructInfo (structdef *sdef)
+ /*-----------------------------------------------------------------*/
+ /* printTypeInfo - print out the type information */
+ /*-----------------------------------------------------------------*/
+-static void printTypeInfo(link *p)
++static void printTypeInfo(st_link *p)
+ {
+ if (!p)
+ return ;
diff --git a/dev-embedded/sdcc/files/sdcc-9999-build.patch b/dev-embedded/sdcc/files/sdcc-9999-build.patch
new file mode 100644
index 000000000000..9af5080ecd9e
--- /dev/null
+++ b/dev-embedded/sdcc/files/sdcc-9999-build.patch
@@ -0,0 +1,53 @@
+fix parallel build issues
+
+--- sdcc/device/lib/Makefile.in
++++ sdcc/device/lib/Makefile.in
+@@ -349,40 +349,23 @@
+ cp -f $(PORT)/bin/*.* $(SDCCPORTDIR); \
+ fi
+
+-$(LIB_FILES): $(OBJECTS_FLOAT) $(OBJECTS_INT) $(OBJECTS_LONG) $(OBJECTS_SDCC)
+ ifeq ($(LIB_TYPE), SDCCLIB)
+- ../../bin/sdcclib -a $(SDCCPORTDIR)/libfloat.lib $(OBJECTS_FLOAT)
+- ../../bin/sdcclib -a $(SDCCPORTDIR)/libint.lib $(OBJECTS_INT)
+- ../../bin/sdcclib -a $(SDCCPORTDIR)/liblong.lib $(OBJECTS_LONG)
+- ../../bin/sdcclib -a $(SDCCPORTDIR)/libsdcc.lib $(OBJECTS_SDCC)
++ mklib = ../../bin/sdcclib -a $@ $^
+ else
+ ifeq ($(LIB_TYPE), AR)
+- $(AR_S) -cq $(SDCCPORTDIR)/libfloat.lib $(OBJECTS_FLOAT)
+- $(AR_S) -cq $(SDCCPORTDIR)/libint.lib $(OBJECTS_INT)
+- $(AR_S) -cq $(SDCCPORTDIR)/liblong.lib $(OBJECTS_LONG)
+- $(AR_S) -cq $(SDCCPORTDIR)/libsdcc.lib $(OBJECTS_SDCC)
++ mklib = $(AR_S) -cq $@ $^
+ else
+ ifeq ($(LIB_TYPE), RANLIB)
+- $(AR_S) -cq $(SDCCPORTDIR)/libfloat.lib $(OBJECTS_FLOAT); $(top_builddir)/bin/asranlib $(SDCCPORTDIR)/libfloat.lib
+- $(AR_S) -cq $(SDCCPORTDIR)/libint.lib $(OBJECTS_INT); $(top_builddir)/bin/asranlib $(SDCCPORTDIR)/libint.lib
+- $(AR_S) -cq $(SDCCPORTDIR)/liblong.lib $(OBJECTS_LONG); $(top_builddir)/bin/asranlib $(SDCCPORTDIR)/liblong.lib
+- $(AR_S) -cq $(SDCCPORTDIR)/libsdcc.lib $(OBJECTS_SDCC); $(top_builddir)/bin/asranlib $(SDCCPORTDIR)/libsdcc.lib
++ mklib = $(AR_S) -cq $@ $^ && $(top_builddir)/bin/asranlib $@
+ else
+- rm -f $(SDCCPORTDIR)/libfloat.lib
+- for i in $(notdir $(basename $(OBJECTS_FLOAT))); do echo $$i >> $(SDCCPORTDIR)/libfloat.lib; done
+- cp $(OBJECTS_FLOAT) $(SDCCPORTDIR)
+- rm -f $(SDCCPORTDIR)/libint.lib
+- for i in $(notdir $(basename $(OBJECTS_INT))); do echo $$i >> $(SDCCPORTDIR)/libint.lib; done
+- cp $(OBJECTS_INT) $(SDCCPORTDIR)
+- rm -f $(SDCCPORTDIR)/liblong.lib
+- for i in $(notdir $(basename $(OBJECTS_LONG))); do echo $$i >> $(SDCCPORTDIR)/liblong.lib; done
+- cp $(OBJECTS_LONG) $(SDCCPORTDIR)
+- rm -f $(SDCCPORTDIR)/libsdcc.lib
+- for i in $(notdir $(basename $(OBJECTS_SDCC))); do echo $$i >> $(SDCCPORTDIR)/libsdcc.lib; done
+- cp $(OBJECTS_SDCC) $(SDCCPORTDIR)
++ mklib = for i in $(notdir $(basename $^)); do echo $$i; done >> $@ && cp $^ $(SDCCPORTDIR)
+ endif
+ endif
+ endif
++$(SDCCPORTDIR)/libfloat.lib: $(OBJECTS_FLOAT); $(mklib)
++$(SDCCPORTDIR)/libint.lib: $(OBJECTS_INT); $(mklib)
++$(SDCCPORTDIR)/liblong.lib: $(OBJECTS_LONG); $(mklib)
++$(SDCCPORTDIR)/libsdcc.lib: $(OBJECTS_SDCC); $(mklib)
+
+ clean_intermediate:
+ rm -f $(SDCCPORTDIR)/*.lst $(SDCCPORTDIR)/*.sym
diff --git a/dev-embedded/sdcc/sdcc-2.9.0.ebuild b/dev-embedded/sdcc/sdcc-2.9.0.ebuild
new file mode 100644
index 000000000000..a28c4e1cb6a1
--- /dev/null
+++ b/dev-embedded/sdcc/sdcc-2.9.0.ebuild
@@ -0,0 +1,97 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-embedded/sdcc/sdcc-2.9.0.ebuild,v 1.1 2010/10/08 09:38:44 vapier Exp $
+
+EAPI="2"
+
+inherit eutils
+
+if [[ ${PV} == "9999" ]] ; then
+ ESVN_REPO_URI="https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc"
+ inherit subversion autotools
+ docs_compile() { return 0; }
+else
+ SRC_URI="mirror://sourceforge/sdcc/${PN}-src-${PV}.tar.bz2
+ doc? ( mirror://sourceforge/sdcc/${PN}-doc-${PV}.tar.bz2 )"
+ KEYWORDS="~amd64 ~ppc ~x86"
+ docs_compile() { return 1; }
+fi
+
+DESCRIPTION="Small device C compiler (for various microprocessors)"
+HOMEPAGE="http://sdcc.sourceforge.net/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="+boehm-gc doc"
+RESTRICT="strip"
+
+RDEPEND="sys-libs/ncurses
+ sys-libs/readline
+ >=dev-embedded/gputils-0.13.7
+ boehm-gc? ( dev-libs/boehm-gc )
+ !dev-embedded/sdcc-svn"
+DEPEND="${RDEPEND}"
+if docs_compile ; then
+ DEPEND+="
+ doc? (
+ >=app-office/lyx-1.3.4
+ dev-tex/latex2html
+ )"
+fi
+
+S=${WORKDIR}/${PN}
+
+src_prepare() {
+ # Fix conflicting variable names between Gentoo and sdcc
+ find \
+ '(' -name 'Makefile*.in' -o -name configure ')' \
+ -exec sed -r -i \
+ -e 's:\<(PORTDIR|ARCH)\>:SDCC\1:g' \
+ {} + || die
+
+ epatch "${FILESDIR}"/${P}-gcc44.patch
+ epatch "${FILESDIR}"/${P}-getline.patch
+ epatch "${FILESDIR}"/${P}-headers.patch
+ epatch "${FILESDIR}"/${P}-build.patch
+
+ # We'll install doc manually
+ sed -i -e '/SDCC_DOC/d' Makefile.in || die
+ sed -i -e 's/all install-doc/all/' as/Makefile.in || die
+ sed -i -e 's/ doc//' sim/ucsim/packages_in.mk || die
+
+ [[ ${PV} == "9999" ]] && eautoreconf
+}
+
+src_configure() {
+ ac_cv_prog_STRIP=true \
+ econf \
+ $(use_enable boehm-gc libgc) \
+ $(docs_compile && use_enable doc || echo --disable-doc)
+}
+
+fsrc_compile() {
+ emake || die
+ if docs_compile && use doc ; then
+ cd doc
+ local d
+ for d in cdbfileformat sdccman test_suite_spec ; do
+ lyx -e html ${d} || die
+ done
+ fi
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die
+ dodoc doc/*.txt doc/*/*.txt
+ find "${D}" -name .deps -exec rm -rf {} +
+
+ if use doc ; then
+ docs_compile || cd "${WORKDIR}"/doc
+ dohtml -r *
+ fi
+
+ # a bunch of archives (*.a) are built & installed by gputils
+ # for PIC processors, but they do not work with standard `ar`
+ # & `scanelf` utils and they're not for the host.
+ env RESTRICT="" prepstrip "${D%/}"/usr/bin
+}
diff --git a/dev-embedded/sdcc/sdcc-9999.ebuild b/dev-embedded/sdcc/sdcc-9999.ebuild
new file mode 100644
index 000000000000..926984d7b284
--- /dev/null
+++ b/dev-embedded/sdcc/sdcc-9999.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-embedded/sdcc/sdcc-9999.ebuild,v 1.1 2010/10/08 09:38:44 vapier Exp $
+
+EAPI="2"
+
+inherit eutils
+
+if [[ ${PV} == "9999" ]] ; then
+ ESVN_REPO_URI="https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc"
+ inherit subversion autotools
+ docs_compile() { return 0; }
+else
+ SRC_URI="mirror://sourceforge/sdcc/${PN}-src-${PV}.tar.bz2
+ doc? ( mirror://sourceforge/sdcc/${PN}-doc-${PV}.tar.bz2 )"
+ KEYWORDS="~amd64 ~ppc ~x86"
+ docs_compile() { return 1; }
+fi
+
+DESCRIPTION="Small device C compiler (for various microprocessors)"
+HOMEPAGE="http://sdcc.sourceforge.net/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="+boehm-gc doc"
+RESTRICT="strip"
+
+RDEPEND="sys-libs/ncurses
+ sys-libs/readline
+ >=dev-embedded/gputils-0.13.7
+ boehm-gc? ( dev-libs/boehm-gc )
+ !dev-embedded/sdcc-svn"
+DEPEND="${RDEPEND}"
+if docs_compile ; then
+ DEPEND+="
+ doc? (
+ >=app-office/lyx-1.3.4
+ dev-tex/latex2html
+ )"
+fi
+
+S=${WORKDIR}/${PN}
+
+src_prepare() {
+ # Fix conflicting variable names between Gentoo and sdcc
+ find \
+ '(' -name 'Makefile*.in' -o -name configure ')' \
+ -exec sed -r -i \
+ -e 's:\<(PORTDIR|ARCH)\>:SDCC\1:g' \
+ {} + || die
+
+ epatch "${FILESDIR}"/${P}-build.patch
+
+ # We'll install doc manually
+ sed -i -e '/SDCC_DOC/d' Makefile.in || die
+ sed -i -e 's/ doc//' sim/ucsim/packages_in.mk || die
+
+ [[ ${PV} == "9999" ]] && eautoreconf
+
+ # workaround parallel build issues with lyx
+ mkdir -p "${HOME}"/.lyx
+}
+
+src_configure() {
+ ac_cv_prog_STRIP=true \
+ econf \
+ $(use_enable boehm-gc libgc) \
+ $(docs_compile && use_enable doc || echo --disable-doc)
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die
+ dodoc doc/*.txt doc/*/*.txt
+ find "${D}" -name .deps -exec rm -rf {} +
+
+ if use doc ; then
+ docs_compile || cd "${WORKDIR}"/doc
+ dohtml -r *
+ fi
+
+ # a bunch of archives (*.a) are built & installed by gputils
+ # for PIC processors, but they do not work with standard `ar`
+ # & `scanelf` utils and they're not for the host.
+ env RESTRICT="" prepstrip "${D%/}"/usr/bin
+}