summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-embedded/sdcc')
-rw-r--r--dev-embedded/sdcc/Manifest12
-rw-r--r--dev-embedded/sdcc/files/sdcc-2.8.0-flags.patch74
-rw-r--r--dev-embedded/sdcc/files/sdcc-2.8.0-gcc44.patch9
-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/metadata.xml35
-rw-r--r--dev-embedded/sdcc/sdcc-2.5.0_p20060502.ebuild51
-rw-r--r--dev-embedded/sdcc/sdcc-2.6.0.ebuild47
-rw-r--r--dev-embedded/sdcc/sdcc-2.7.0.ebuild47
-rw-r--r--dev-embedded/sdcc/sdcc-2.8.0.ebuild75
-rw-r--r--dev-embedded/sdcc/sdcc-2.9.0.ebuild97
-rw-r--r--dev-embedded/sdcc/sdcc-3.5.0.ebuild121
-rw-r--r--dev-embedded/sdcc/sdcc-9999.ebuild98
15 files changed, 957 insertions, 0 deletions
diff --git a/dev-embedded/sdcc/Manifest b/dev-embedded/sdcc/Manifest
new file mode 100644
index 000000000000..164686ffce62
--- /dev/null
+++ b/dev-embedded/sdcc/Manifest
@@ -0,0 +1,12 @@
+DIST sdcc-doc-2.6.0.tar.gz 1026186 SHA256 fca8592706f76ed7063652dafa8c18c79070a1b31c12b8834b7feffbcb945817 SHA512 3cffb2ac4bbe65539951b134f89449341bff9f5682ec344c244b28efea5fe96c753caa873f26c75b8fc0a19f48404ae0a43f05e41eabafe66fd0f493b4065f97 WHIRLPOOL a047bc6c74f7968e63ad5ee540ae52e5e4b0007ea253a84f1b69b7f2ed13b247227aa5d9d366753fce0d58a6c3689b8d99fd7c636070c5bbe942f0c8be01ff84
+DIST sdcc-doc-2.7.0.tar.bz2 1211113 SHA256 3a70654c9c0a0f86d9632d85f94eed946c9faf946c266fceadc5f60f590c0b70 SHA512 2ed6503551b7c9e3e674a3bf391e731c2fa838f3978761982ab1a072d47b449b73e6efe3b05967bcdfe623c2fc933503702912721b90df95dab9b332dfacad9a WHIRLPOOL 28282a9c973f5d155c57c1ea9499ce673118e23e2c877a264ceaa2a022bb0442d04d0d3cb6e94109bdfe3a47cc618c43a05f9fee1fb424438b0776793b73343d
+DIST sdcc-doc-2.8.0.tar.bz2 1363271 SHA256 b40fd15e69d89872c2982fe8a9ed2cc0415d05d0e830b4969714e0af8db21f6d SHA512 201fcb0ffb96649507dcb0489789e7a89cb30705e9eae3f40b6ce907df3464439488d1369f7d5557873e28bcd44a2af82bb3dab2f02adbf0d6ea88a711bb5d9b WHIRLPOOL cd1bd3f46b931e59423100a88fa1827b35c0c1d746be28c1b17d0d4d57f1af57de215c7f0c4dfa9e7d1d072c1a63ba5ab53a2157a925b0450ef9610d01f732aa
+DIST sdcc-doc-2.9.0.tar.bz2 1388379 SHA256 b3a210dfeb46b924cf36531a6e5a11b9d7334765a61e46688ad3f7016802d057 SHA512 c0214437dada2d2acc3590d8a82b077cd841a93da7fe76cc259adea0da67e6ea0ced14dc80c5ce05261aa5d7e2f345f8cf994dafa4e38bd404b00fd6b5b2d168 WHIRLPOOL dc6957192735f5cca92c7c25c0431c93da3b52c5084a7affd62f43a30a8b0dacb522ce5ee99e823fd4a9f3ffad1d3d93e52f37a906de6cbbd8a030899a009b62
+DIST sdcc-doc-20060502.tar.gz 1027650 SHA256 b2663f2a9a195d94990fe6a958b7f1b1b96f5f11e12a7b738613ca762f927407 SHA512 aba51493c76a019fb439fa8ff2f645bc519bdb9ded30a2871d51f2dd6eedc7315f826e28d5efed0eae731060c22b82071025cec5ae4407c5f6acdd2c18292ff2 WHIRLPOOL e1bff5315e4a6f7902beeca6db641594bbf478d0d9f74e658b3569596d912941c8e62522122b4f34a6fa8b83d4a8402adfad61cce1602bff5c35c16cdd19d124
+DIST sdcc-doc-3.5.0.tar.bz2 1000775 SHA256 97c46765d42c710351a131c03cf32be2dd3841ce2941ea0c7f01fc960c8f3df3 SHA512 43de0c19ad538b4495218b04e5ab6a886fd9945c8a82c400e9a53314547f5d6ab0529989274faecc2d954f35f8fe60f338f09f93536b62a305203d2119df597e WHIRLPOOL 68e34cb5f84b66d2582e393bdd53382164b82ce0fb610ddbe17298c7b81dd0c0b45d1be06684a9aef4debbf036bf344b49a2d991e8a36e43f7e37ec57b5586e8
+DIST sdcc-src-2.6.0.tar.gz 4229518 SHA256 6534450fef981502d5e540464fe0d4332e0f47704548354b59af90eaf290cf93 SHA512 d5802ad7804c771c25b72b5038cdc291d3e67a618fde6a9d03235954a6a133e0ecc42f26eabcc933806e54457e44efea81dc79ac03cb547556da41dec3eff1e6 WHIRLPOOL db33972831052720d75544976bdd2e9eb4c6eeef692c428ee5d82acc016bdf8a6d1d45bc27b9056ca6da604adfd5d79fdaca0769076099d36f048eff86ce52cc
+DIST sdcc-src-2.7.0.tar.bz2 3405687 SHA256 315caf8b239dfe4f922f090f33d24e822eb49a1b443d4be020056c91277ffd95 SHA512 95625aadf386f0da65f4ddb856fd7da8a333ed884e308993a0897a205561438b60d2836a60e33a849f6b6ab5dd938b822072641866596897f48fa62a4c536dd3 WHIRLPOOL f2dea2053d0ed37d6326982bd87b157344caeadfdf92774f927bffb87dff0cf126aeb108ddd5c14b31275313affabf523f6de2762559d5121f3d8c89b809ddd2
+DIST sdcc-src-2.8.0.tar.bz2 3460693 SHA256 cbb035699d8910c7ca2fa360a773504b44165e98042ed8c208fea2fe47a96557 SHA512 91f43ea275f4c27e5c475a9dbfe5e9c7d5804a530151420473cbc65a48ca15c65a6e38628e0bf927d89cd8ddb6b6030d5d65aa9cba7963e23ac18bde42951fd5 WHIRLPOOL b5fc8de30117b0b35df40c7bd9ac6392fcb6fec20ffae5444b3c4005120c5d4607df2c73a8470600f21820ced3f83ce856167c757e5f9d3c6ea4b91abb86caf7
+DIST sdcc-src-2.9.0.tar.bz2 3764926 SHA256 5f48246ea233bcfa63fafc23898584388b207caa80c5cc21485f089c87eaf68b SHA512 0703f46db590fa3248c104d5045b0807fc18898aec13a8f5f762ff4e573f3fc199590050fd82c665ae71cd586081fe88db671dcc498770d736650be0dcf32b0e WHIRLPOOL fd0c46406c1ef1abe423020f8e9dd97848757ef843210198de52bf85f83ca4e36a7f43a2e6204b584e046399af354a3cb88f5b97cf8c278b32a0f8aaee632808
+DIST sdcc-src-20060502.tar.gz 4145716 SHA256 4433dbafdf9dcc3b3528c9dbbcc1eb4c572c1ff2179286010c56fe529f90799e SHA512 0817f14871822874a3e4b5d8be68df56c7f19444c283d4cd4aa8436af6984631dd0f8322080380d227bbc8d931e6cbc84a81cfbced20cd56f2765cdaf1d552cd WHIRLPOOL a44101b2f34f44c0fe1c2e0f81e4019f354f57460b2394ff560c7b4416d429efa51660d6b574813ef3d012e42a97689154f9470f607ce488ce0c443492c8d903
+DIST sdcc-src-3.5.0.tar.bz2 10504517 SHA256 f82978d1614244b22e093402c0a4de1f688a07c807b2980126c964eb3df85fa9 SHA512 a5842945da065ab566b7e073782e92f851da48c160990d49b76ab4773fe1c14286cab399fb7f2456432e4043ee7ce07c3b149aeb103c51f85a33fdc5f8798f4e WHIRLPOOL 8d3ca19e93d89efaa6577a8901cf5099c868158b16d25ecbeaeff67e890a110426cd6876c3f11b6d20153b27e69a118e9e7aad52b4acb178cf0c5e8d669e892a
diff --git a/dev-embedded/sdcc/files/sdcc-2.8.0-flags.patch b/dev-embedded/sdcc/files/sdcc-2.8.0-flags.patch
new file mode 100644
index 000000000000..cd920e988d9b
--- /dev/null
+++ b/dev-embedded/sdcc/files/sdcc-2.8.0-flags.patch
@@ -0,0 +1,74 @@
+diff -Nadur sdcc-orig/configure.in sdcc/configure.in
+--- sdcc-orig/configure.in 2008-04-20 15:24:14.000000000 +0200
++++ sdcc/configure.in 2008-04-20 15:27:18.000000000 +0200
+@@ -320,17 +320,6 @@
+ M_OR_MM=$sdcc_cv_MM
+ AC_SUBST(M_OR_MM)
+
+-# This is the first time when CFLAGS are set/modified!!
+-adl_DD_COPT(CC, ggdb)
+-if test "$sdcc_cv_CCggdb" = "yes"; then
+- CFLAGS="-ggdb ${CFLAGS}"
+-fi
+-
+-adl_DD_COPT(CC, pipe)
+-if test "$sdcc_cv_CCpipe" = "yes"; then
+- CFLAGS="-pipe $CFLAGS"
+-fi
+-
+
+ # Checks for typedefs, structures, and compiler characteristics.
+ # ===========================================================================
+diff -Nadur sdcc-orig/debugger/mcs51/configure.in sdcc/debugger/mcs51/configure.in
+--- sdcc-orig/debugger/mcs51/configure.in 2008-04-20 15:24:19.000000000 +0200
++++ sdcc/debugger/mcs51/configure.in 2008-04-20 15:26:53.000000000 +0200
+@@ -148,17 +148,6 @@
+ M_OR_MM=$sdcc_cv_MM
+ AC_SUBST(M_OR_MM)
+
+-# This is the first time when CFLAGS are set/modified!!
+-adl_DD_COPT(CC, ggdb)
+-if test "$sdcc_cv_CCggdb" = "yes"; then
+- CFLAGS="-ggdb ${CFLAGS}"
+-fi
+-
+-adl_DD_COPT(CC, pipe)
+-if test "$sdcc_cv_CCpipe" = "yes"; then
+- CFLAGS="-pipe $CFLAGS"
+-fi
+-
+
+ # Set standard installation paths
+ # ===========================================================================
+diff -Nadur sdcc-orig/sim/ucsim/configure.in sdcc/sim/ucsim/configure.in
+--- sdcc-orig/sim/ucsim/configure.in 2008-04-20 15:24:11.000000000 +0200
++++ sdcc/sim/ucsim/configure.in 2008-04-20 15:26:06.000000000 +0200
+@@ -514,28 +514,6 @@
+ M_OR_MM=$ucsim_cv_MM
+ AC_SUBST(M_OR_MM)
+
+-# This is the first time when CFLAGS are set/modified!!
+-
+-DD_COPT(CXX, ggdb)
+-DD_COPT(CXX, gstabs)
+-if test "$ucsim_cv_CXXgstabs" = "yes"; then
+- gopt="-gstabs+ -g3"
+-elif test "$ucsim_cv_CXXggdb" = "yes"; then
+- gopt="-ggdb -g3"
+-else
+- gopt="-g"
+-fi
+-if test "$CXXFLAGS"x = x ;then
+- CXXFLAGS="$gopt"
+-else
+- CXXFLAGS="$CXXFLAGS $gopt"
+-fi
+-
+-DD_COPT(CXX, pipe)
+-if test "$ucsim_cv_CXXpipe" = "yes"; then
+- CXXFLAGS="$CXXFLAGS -pipe"
+-fi
+-
+ PICOPT=""
+ SHAREDLIB="no"
+ DD_COPT_NO_IGNORE(CXX, fPIC)
diff --git a/dev-embedded/sdcc/files/sdcc-2.8.0-gcc44.patch b/dev-embedded/sdcc/files/sdcc-2.8.0-gcc44.patch
new file mode 100644
index 000000000000..8d0ddf045195
--- /dev/null
+++ b/dev-embedded/sdcc/files/sdcc-2.8.0-gcc44.patch
@@ -0,0 +1,9 @@
+diff -ur sdcc.orig/sim/ucsim/cmd.src/cmdlex.cc sdcc/sim/ucsim/cmd.src/cmdlex.cc
+--- sdcc.orig/sim/ucsim/cmd.src/cmdlex.cc 2004-07-16 19:32:30.000000000 +0300
++++ sdcc/sim/ucsim/cmd.src/cmdlex.cc 2009-08-10 11:09:58.000000000 +0300
+@@ -1,3 +1,5 @@
++#include <stdio.h>
++
+ #line 2 "cmdlex.cc"
+
+ #line 4 "cmdlex.cc"
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/metadata.xml b/dev-embedded/sdcc/metadata.xml
new file mode 100644
index 000000000000..e52e1f4e24a9
--- /dev/null
+++ b/dev-embedded/sdcc/metadata.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>dev-embedded</herd>
+ <longdescription>
+SDCC is a retargettable, optimizing ANSI - C compiler suite that targets the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), Maxim (formerly Dallas) DS80C390 variants, Freescale (formerly Motorola) HC08 based (hc08, s08), Zilog Z80 based MCUs (z80, z180, gbz80, Rabbit 2000/3000, Rabbit 3000A, TLCS-90) and STMicroelectronics STM8. It can be retargeted for other microprocessors.
+ </longdescription>
+ <upstream>
+ <remote-id type="sourceforge">sdcc</remote-id>
+ </upstream>
+ <use>
+ <flag name="boehm-gc">Enable Hans Boehm's garbage collector <pkg>dev-libs/boehm-gc</pkg></flag>
+ <flag name="device-lib">Enable built of devices libraries</flag>
+ <flag name="ds390">Add support for Dallas DS390</flag>
+ <flag name="ds400">Add support for Dallas DS400</flag>
+ <flag name="gbz80">Add support for Gameboy gbz80</flag>
+ <flag name="hc08">Add support for Freescale/Motorola HC08 based</flag>
+ <flag name="mcs51">Add support for Intel mcs51</flag>
+ <flag name="non-free">Enable non-free runtime library parts</flag>
+ <flag name="packihx">Enable Intel HEX files pack utility</flag>
+ <flag name="pic14">Add support for Microchip 14 bits PICs</flag>
+ <flag name="pic16">Add support for Microchip 16 bits PICs</flag>
+ <flag name="r2k">Add support for Rabbit 2000</flag>
+ <flag name="r3ka">Add support for Rabbit 3000A</flag>
+ <flag name="s08">Add support for Freescale/Motorola S08</flag>
+ <flag name="sdbinutils">Enable SDCC library archive utilities sdar, sdranlib, sdnm</flag>
+ <flag name="sdcdb">Enable SDCC source level debugger</flag>
+ <flag name="sdcpp">Enable SDCC preprocessor based on GCC cpp</flag>
+ <flag name="stm8">Add support for STMicroelectronics STM8</flag>
+ <flag name="tlcs90">Add support for TLCS-90</flag>
+ <flag name="ucsim">Enable software simulator for microcontrollers</flag>
+ <flag name="z180">Add support for Zilog Z180</flag>
+ <flag name="z80">Add support for Zilog Z80</flag>
+ </use>
+</pkgmetadata>
diff --git a/dev-embedded/sdcc/sdcc-2.5.0_p20060502.ebuild b/dev-embedded/sdcc/sdcc-2.5.0_p20060502.ebuild
new file mode 100644
index 000000000000..1b0b1a561b93
--- /dev/null
+++ b/dev-embedded/sdcc/sdcc-2.5.0_p20060502.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+inherit eutils
+
+MY_PV=${PV/*_p/}
+DESCRIPTION="Small device C compiler (for various microprocessors)"
+HOMEPAGE="http://sdcc.sourceforge.net/"
+SRC_URI="http://sdcc.sourceforge.net/snapshots/sdcc-src/${PN}-src-${MY_PV}.tar.gz
+ doc? ( http://sdcc.sourceforge.net/snapshots/docs/${PN}-doc-${MY_PV}.tar.gz )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc x86"
+IUSE="doc"
+
+DEPEND=">=dev-embedded/gputils-0.13.2
+ dev-libs/boehm-gc"
+RDEPEND="!dev-embedded/sdcc-svn
+ !dev-embedded/sdcc-svn"
+
+S=${WORKDIR}/${PN}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # Fix conflicting variable names between Gentoo and sdcc
+ find ./ -type f -exec sed -i s:PORTDIR:PORTINGDIR:g {} \; || die "sed failed"
+ find device/lib/pic*/ -type f -exec sed -i s:ARCH:SDCCARCH:g {} \; || die "sed failed"
+ find device/lib/pic/libdev/ -type f -exec sed -i s:CFLAGS:SDCCFLAGS:g {} \; || die "sed failed"
+
+ # --as-needed fix :
+ sed -i -e "s/= @CURSES_LIBS@ @LIBS@/= @CURSES_LIBS@ @LIBS@ -lcurses/" sim/ucsim/gui.src/serio.src/Makefile.in || die "sed failed"
+}
+
+src_compile() {
+ econf --enable-libgc docdir=/usr/share/doc/${PF} || die "configure failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die "Install failed"
+ dodoc ChangeLog
+ if use doc ; then
+ cp -pPR "${WORKDIR}"/doc/* "${D}"/usr/share/doc/${PF}/
+ fi
+ find "${D}"/usr/share/doc/${PF}/ -name *.txt -exec gzip -f -9 {} \;
+ find "${D}"/usr/share/doc/${PF}/ -name */*.txt -exec gzip -f -9 {} \;
+}
diff --git a/dev-embedded/sdcc/sdcc-2.6.0.ebuild b/dev-embedded/sdcc/sdcc-2.6.0.ebuild
new file mode 100644
index 000000000000..018af95e747f
--- /dev/null
+++ b/dev-embedded/sdcc/sdcc-2.6.0.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+DESCRIPTION="Small device C compiler (for various microprocessors)"
+HOMEPAGE="http://sdcc.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sdcc/${PN}-src-${PV}.tar.gz
+ doc? ( mirror://sourceforge/sdcc/${PN}-doc-${PV}.tar.gz )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE="doc"
+
+DEPEND=">=dev-embedded/gputils-0.13.2
+ dev-libs/boehm-gc"
+RDEPEND="!dev-embedded/sdcc-svn"
+
+S=${WORKDIR}/${PN}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # Fix conflicting variable names between Gentoo and sdcc
+ find ./ -type f -exec sed -i s:PORTDIR:PORTINGDIR:g {} \; || die "sed failed"
+ find device/lib/pic*/ -type f -exec sed -i s:ARCH:SDCCARCH:g {} \; || die "sed failed"
+ find device/lib/pic/libdev/ -type f -exec sed -i s:CFLAGS:SDCCFLAGS:g {} \; || die "sed failed"
+
+ # --as-needed fix :
+ sed -i -e "s/= @CURSES_LIBS@ @LIBS@/= @CURSES_LIBS@ @LIBS@ -lcurses/" sim/ucsim/gui.src/serio.src/Makefile.in || die "sed failed"
+}
+
+src_compile() {
+ econf --enable-libgc docdir=/usr/share/doc/${PF} || die "configure failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die "Install failed"
+ dodoc ChangeLog
+ if use doc ; then
+ cp -pPR "${WORKDIR}"/doc/* "${D}"/usr/share/doc/${PF}/
+ fi
+ find "${D}"/usr/share/doc/${PF}/ -name *.txt -exec gzip -f -9 {} \;
+ find "${D}"/usr/share/doc/${PF}/ -name */*.txt -exec gzip -f -9 {} \;
+}
diff --git a/dev-embedded/sdcc/sdcc-2.7.0.ebuild b/dev-embedded/sdcc/sdcc-2.7.0.ebuild
new file mode 100644
index 000000000000..f7c0e16ce2dd
--- /dev/null
+++ b/dev-embedded/sdcc/sdcc-2.7.0.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+DESCRIPTION="Small device C compiler (for various microprocessors)"
+HOMEPAGE="http://sdcc.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sdcc/${PN}-src-${PV}.tar.bz2
+ doc? ( mirror://sourceforge/sdcc/${PN}-doc-${PV}.tar.bz2 )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE="doc"
+
+DEPEND=">=dev-embedded/gputils-0.13.2
+ dev-libs/boehm-gc"
+RDEPEND="!dev-embedded/sdcc-svn"
+
+S=${WORKDIR}/${PN}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # Fix conflicting variable names between Gentoo and sdcc
+ find ./ -type f -exec sed -i s:PORTDIR:PORTINGDIR:g {} \; || die "sed failed"
+ find device/lib/pic*/ -type f -exec sed -i s:ARCH:SDCCARCH:g {} \; || die "sed failed"
+ find device/lib/pic/libdev/ -type f -exec sed -i s:CFLAGS:SDCCFLAGS:g {} \; || die "sed failed"
+
+ # --as-needed fix :
+ sed -i -e "s/= @CURSES_LIBS@ @LIBS@/= @CURSES_LIBS@ @LIBS@ -lcurses/" sim/ucsim/gui.src/serio.src/Makefile.in || die "sed failed"
+}
+
+src_compile() {
+ econf --enable-libgc docdir=/usr/share/doc/${PF} || die "configure failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die "Install failed"
+ dodoc ChangeLog
+ if use doc ; then
+ cp -pPR "${WORKDIR}"/doc/* "${D}"/usr/share/doc/${PF}/
+ fi
+ find "${D}"/usr/share/doc/${PF}/ -name *.txt -exec gzip -f -9 {} \;
+ find "${D}"/usr/share/doc/${PF}/ -name */*.txt -exec gzip -f -9 {} \;
+}
diff --git a/dev-embedded/sdcc/sdcc-2.8.0.ebuild b/dev-embedded/sdcc/sdcc-2.8.0.ebuild
new file mode 100644
index 000000000000..a7cef4183d8f
--- /dev/null
+++ b/dev-embedded/sdcc/sdcc-2.8.0.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+inherit eutils autotools
+
+DESCRIPTION="Small device C compiler (for various microprocessors)"
+HOMEPAGE="http://sdcc.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sdcc/${PN}-src-${PV}.tar.bz2
+ doc? ( mirror://sourceforge/sdcc/${PN}-doc-${PV}.tar.bz2 )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE="boehm-gc doc"
+
+DEPEND=">=dev-embedded/gputils-0.13.2
+ boehm-gc? ( dev-libs/boehm-gc )"
+RDEPEND="!dev-embedded/sdcc-svn"
+
+S=${WORKDIR}/${PN}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # Fix conflicting variable names between Gentoo and sdcc
+ find ./ -type f -exec sed -i s:PORTDIR:PORTINGDIR:g {} \; || die "sed failed"
+ find device/lib/pic*/ -type f -exec sed -i s:ARCH:SDCCARCH:g {} \; || die "sed failed"
+ find device/lib/pic/libdev/ -type f -exec sed -i s:CFLAGS:SDCCFLAGS:g {} \; || die "sed failed"
+
+ # Fix automagic C{,XX}FLAGS
+ epatch "${FILESDIR}"/${P}-flags.patch
+ epatch "${FILESDIR}"/${P}-gcc44.patch
+
+ # We'll install doc manually
+ sed -i -e '/SDCC_DOC/d' Makefile.in || die "sed failed"
+ sed -i -e 's/all install-doc/all/' as/Makefile.in || die "sed failed"
+ sed -i -e 's/ doc//' sim/ucsim/packages_in.mk || die "sed failed"
+
+ eautoreconf
+}
+
+src_compile() {
+ econf \
+ $(use_enable boehm-gc libgc) \
+ --disable-doc \
+ || die "configure failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die "Install failed"
+
+ insinto /usr/share/doc/${PF}
+ if use doc ; then
+ cd "${WORKDIR}"/doc
+ dohtml -r *.html ucsim
+ rm -rf *.html ucsim
+ dohtml as/asxhtm.html
+ rm -f as/asxhtm.html
+ rm -f INSTALL.txt
+ else
+ dohtml as/doc/asxhtm.html
+ rm -f as/doc/asxhtm.html
+ mv as/doc as/as || die "Failed to rename as/doc"
+ doins -r as/as
+ mv sim/ucsim/doc sim/ucsim/ucsim || die "Failed to rename sim/ucsim/doc"
+ dohtml -r sim/ucsim/ucsim
+ rm -f INSTALL.txt Makefile* *.mk
+ cd doc
+ fi
+ doins -r *
+ prepalldocs
+}
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..1a34c20e9937
--- /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
+# $Id$
+
+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-3.5.0.ebuild b/dev-embedded/sdcc/sdcc-3.5.0.ebuild
new file mode 100644
index 000000000000..aefd1bc03364
--- /dev/null
+++ b/dev-embedded/sdcc/sdcc-3.5.0.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit eutils toolchain-funcs
+
+if [[ ${PV} == "9999" ]] ; then
+ ESVN_REPO_URI="https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc"
+ inherit subversion
+ 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 ZLIB
+ non-free? ( MicroChip-SDCC )
+ packihx? ( public-domain )"
+SLOT="0"
+IUSE="mcs51 z80 z180 r2k r3ka gbz80 tlcs90 ds390 ds400 pic14 pic16 hc08 s08 stm8
+ucsim device-lib packihx +sdcpp sdcdb sdbinutils non-free +boehm-gc doc"
+
+REQUIRED_USE="
+ mcs51? ( sdbinutils )
+ ds390? ( sdbinutils )
+ ds400? ( sdbinutils )
+ hc08? ( sdbinutils )
+ s08? ( sdbinutils )"
+
+RESTRICT="strip"
+
+RDEPEND="dev-libs/boost:=
+ sys-libs/ncurses:=
+ sys-libs/readline:0=
+ >=dev-embedded/gputils-0.13.7
+ boehm-gc? ( dev-libs/boehm-gc:= )
+ !dev-embedded/sdcc-svn"
+DEPEND="${RDEPEND}
+ dev-util/gperf"
+if docs_compile ; then
+ DEPEND+="
+ doc? (
+ >=app-office/lyx-1.3.4
+ dev-tex/latex2html
+ )"
+fi
+
+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
+
+ # https://sourceforge.net/p/sdcc/bugs/2398/
+ sed -i '1iAR = @AR@' Makefile.common.in || die
+ sed -i \
+ -e "/^AR =/s:=.*:=$(tc-getAR):" \
+ support/cpp/Makefile.in || die
+
+ # Make sure timestamps don't get messed up.
+ [[ ${PV} == "9999" ]] && find "${S}" -type f -exec touch -r . {} +
+}
+
+src_configure() {
+ # sdbinutils subdir doesn't pass down --docdir properly, so need to
+ # expand $(datarootdir) ourselves.
+ econf \
+ ac_cv_prog_STRIP=true \
+ ac_cv_prog_AS="$(tc-getAS)" \
+ ac_cv_prog_AR="$(tc-getAR)" \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+ --without-ccache \
+ $(use_enable mcs51 mcs51-port) \
+ $(use_enable z80 z80-port) \
+ $(use_enable z180 z180-port) \
+ $(use_enable r2k r2k-port) \
+ $(use_enable r3ka r3ka-port) \
+ $(use_enable gbz80 gbz80-port) \
+ $(use_enable tlcs90 tlcs90-port) \
+ $(use_enable ds390 ds390-port) \
+ $(use_enable ds400 ds400-port) \
+ $(use_enable pic14 pic14-port) \
+ $(use_enable pic16 pic16-port) \
+ $(use_enable hc08 hc08-port) \
+ $(use_enable s08 s08-port) \
+ $(use_enable stm8 stm8-port) \
+ $(use_enable ucsim ucsim) \
+ $(use_enable device-lib device-lib) \
+ $(use_enable packihx packihx) \
+ $(use_enable sdcpp sdcpp) \
+ $(use_enable sdcdb sdcdb) \
+ $(use_enable sdbinutils sdbinutils) \
+ $(use_enable non-free non-free) \
+ $(use_enable boehm-gc libgc) \
+ $(docs_compile && use_enable doc || echo --disable-doc)
+}
+
+src_install() {
+ default
+ dodoc doc/*.txt
+ find "${D}" -name .deps -exec rm -rf {} + || die
+
+ 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..faffcf034d04
--- /dev/null
+++ b/dev-embedded/sdcc/sdcc-9999.ebuild
@@ -0,0 +1,98 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit eutils toolchain-funcs
+
+if [[ ${PV} == "9999" ]] ; then
+ ESVN_REPO_URI="https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc"
+ inherit subversion
+ 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="dev-libs/boost:=
+ sys-libs/ncurses:=
+ sys-libs/readline:0=
+ >=dev-embedded/gputils-0.13.7
+ boehm-gc? ( dev-libs/boehm-gc:= )
+ !dev-embedded/sdcc-svn"
+DEPEND="${RDEPEND}
+ dev-util/gperf"
+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
+
+ # https://sourceforge.net/p/sdcc/bugs/2398/
+ sed -i '1iAR = @AR@' Makefile.common.in || die
+ sed -i \
+ -e "/^AR =/s:=.*:=$(tc-getAR):" \
+ support/cpp/Makefile.in || die
+
+ # 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
+
+ # Make sure timestamps don't get messed up.
+ [[ ${PV} == "9999" ]] && find "${S}" -type f -exec touch -r . {} +
+
+ # workaround parallel build issues with lyx
+ mkdir -p "${HOME}"/.lyx
+}
+
+src_configure() {
+ # sdbinutils subdir doesn't pass down --docdir properly, so need to
+ # expand $(datarootdir) ourselves.
+ econf \
+ ac_cv_prog_STRIP=true \
+ ac_cv_prog_AS="$(tc-getAS)" \
+ ac_cv_prog_AR="$(tc-getAR)" \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+ --without-ccache \
+ $(use_enable boehm-gc libgc) \
+ $(docs_compile && use_enable doc || echo --disable-doc)
+}
+
+src_install() {
+ default
+ dodoc doc/*.txt
+ find "${D}" -name .deps -exec rm -rf {} + || die
+
+ 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
+}