<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-23605464</id><updated>2011-11-28T00:43:24.922+01:00</updated><category term='arm'/><category term='ecos'/><category term='software'/><category term='subversion'/><title type='text'>Moaning Marmot</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23605464.post-7622475976826076268</id><published>2009-03-26T01:00:00.003+01:00</published><updated>2009-03-26T01:01:59.433+01:00</updated><title type='text'>Blog has been moved</title><content type='html'>New blog address &lt;a href="http://blog.moaningmarmot.info"&gt;http://blog.moaningmarmot.info&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-7622475976826076268?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.moaningmarmot.info' title='Blog has been moved'/><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/7622475976826076268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=7622475976826076268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/7622475976826076268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/7622475976826076268'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2009/03/blog-has-been-moved.html' title='Blog has been moved'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-3036509682158503408</id><published>2008-10-26T18:46:00.001+01:00</published><updated>2008-10-28T01:19:32.088+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>SVN 1.5.4 binaries for Mac OS X 10.5</title><content type='html'>Download the precompiled archive: &lt;a href="http://idisk.mac.com/emmanuel.blot-Public/subversion-1.5.4-macosx.tz2"&gt;subversion-1.5.4-macosx.tz2&lt;/a&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-3036509682158503408?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/3036509682158503408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=3036509682158503408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/3036509682158503408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/3036509682158503408'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2008/10/svn-154-binaries-for-mac-os-x-105-64.html' title='SVN 1.5.4 binaries for Mac OS X 10.5'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-2172074751283938001</id><published>2008-10-26T14:21:00.001+01:00</published><updated>2008-10-26T14:21:13.597+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecos'/><title type='text'>Fixing eCos warnings</title><content type='html'>&lt;p&gt;If you build eCos with a GCC 4.x compiler, you'll see new warnings as GCC 4.x series are stricter about C syntax.&lt;/p&gt;

&lt;p&gt;The following patch fixes up several warnings:&lt;/p&gt;
&lt;pre&gt;
Index: trunk/ecos/packages/kernel/current/include/instrument_desc.h
===================================================================
--- trunk/ecos/packages/kernel/current/include/instrument_desc.h (revision 2)
+++ trunk/ecos/packages/kernel/current/include/instrument_desc.h (revision 4513)
@@ -3,7 +3,7 @@
 /* Install tree   : INSTALL/include/cyg/kernel/instrument_desc.h       */
 
 struct instrument_desc_s {                                
-    char *   msg;                                         
+    const char * msg;                                         
     CYG_WORD num;                                         
 };                                                        
 
Index: trunk/ecos/packages/kernel/current/include/instrmnt.h
===================================================================
--- trunk/ecos/packages/kernel/current/include/instrmnt.h (revision 4)
+++ trunk/ecos/packages/kernel/current/include/instrmnt.h (revision 4513)
@@ -87,7 +87,7 @@
 #endif
 
 #ifdef CYGDBG_KERNEL_INSTRUMENT_MSGS
-externC char * cyg_instrument_msg(CYG_WORD16 type);
+externC const char * cyg_instrument_msg(CYG_WORD16 type);
 #endif 
 
 // -------------------------------------------------------------------------
Index: trunk/ecos/packages/kernel/current/src/debug/dbg_gdb.cxx
===================================================================
--- trunk/ecos/packages/kernel/current/src/debug/dbg_gdb.cxx (revision 1926)
+++ trunk/ecos/packages/kernel/current/src/debug/dbg_gdb.cxx (revision 4513)
@@ -229,7 +229,7 @@
 //--------------------------------------------------------------------------
 // Some support routines for manufacturing thread info strings
 
-static char *dbg_addstr(char *s, char *t)
+static char *dbg_addstr(char *s, const char *t)
 {
     while( (*s++ = *t++) != 0 );
 
@@ -241,7 +241,7 @@
     char buf[16];
     char sign = '+';
     cyg_count8 bpos;
-    char *digits = "0123456789ABCDEF";
+    const char *digits = "0123456789ABCDEF";
 
     if( n &lt; 0 ) n = -n, sign = '-';
     
@@ -292,7 +292,7 @@
     info-&gt;context_exists        = 1;
 
     char *sbp = statebuf;
-    char *s;
+    const char *s;
 
     if( thread-&gt;get_state() &amp; Cyg_Thread::SUSPENDED )
     {
Index: trunk/ecos/packages/kernel/current/src/instrmnt/meminst.cxx
===================================================================
--- trunk/ecos/packages/kernel/current/src/instrmnt/meminst.cxx (revision 1926)
+++ trunk/ecos/packages/kernel/current/src/instrmnt/meminst.cxx (revision 4513)
@@ -227,7 +227,7 @@
 #define CYGDBG_KERNEL_INSTRUMENT_MSGS_DEFINE_TABLE
 #include &lt;cyg/kernel/instrument_desc.h&gt;
 
-externC char * cyg_instrument_msg(CYG_WORD16 type) {
+externC const char * cyg_instrument_msg(CYG_WORD16 type) {
 
   struct instrument_desc_s *record;
   struct instrument_desc_s *end_record;
Index: trunk/ecos/packages/services/threadload/current/src/threadload.cxx
===================================================================
--- trunk/ecos/packages/services/threadload/current/src/threadload.cxx (revision 1926)
+++ trunk/ecos/packages/services/threadload/current/src/threadload.cxx (revision 4513)
@@ -125,10 +125,11 @@
  */
 static void cyg_threadload_startup(void)
 {
+    static const char * name = "THREADLOAD";
     cyg_thread_create( 30,					// Just before Idle task
                        cyg_threadload_init,
                        0,
-                       "THREADLOAD",
+                       (char *)name, // ugly? yes, eCos
                        &amp;threadload_stack[0],
                        sizeof(threadload_stack),
                        &amp;threadload_thread,
Index: trunk/ecos/packages/services/memalloc/common/current/include/dlmallocimpl.hxx
===================================================================
--- trunk/ecos/packages/services/memalloc/common/current/include/dlmallocimpl.hxx (revision 4)
+++ trunk/ecos/packages/services/memalloc/common/current/include/dlmallocimpl.hxx (revision 4513)
@@ -108,7 +108,7 @@
         Cyg_dlmalloc_size_t size;      /* Size in bytes, including overhead. */
         struct malloc_chunk* fd;   /* double links -- used only if free. */
         struct malloc_chunk* bk;
-    };
+    } malloc_chunk;
     
 protected:
     /* The first value returned from sbrk */
Index: trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoll.cxx
===================================================================
--- trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoll.cxx (revision 1926)
+++ trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoll.cxx (revision 4513)
@@ -175,7 +175,7 @@
             break;
         if (c &gt;= base)
             break;
-        if (any &lt; 0 || acc &gt; cutoff || acc == cutoff &amp;&amp; c &gt; cutlim)
+        if (any &lt; 0 || acc &gt; cutoff || (acc == cutoff &amp;&amp; c &gt; cutlim))
             any = -1;
         else {
             any = 1;
Index: trunk/ecos/packages/language/c/libc/stdlib/current/src/strtol.cxx
===================================================================
--- trunk/ecos/packages/language/c/libc/stdlib/current/src/strtol.cxx (revision 1926)
+++ trunk/ecos/packages/language/c/libc/stdlib/current/src/strtol.cxx (revision 4513)
@@ -179,7 +179,7 @@
             break;
         if (c &gt;= base)
             break;
-        if (any &lt; 0 || acc &gt; cutoff || acc == cutoff &amp;&amp; c &gt; cutlim)
+        if (any &lt; 0 || acc &gt; cutoff || (acc == cutoff &amp;&amp; c &gt; cutlim))
             any = -1;
         else {
             any = 1;
Index: trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoull.cxx
===================================================================
--- trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoull.cxx (revision 1926)
+++ trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoull.cxx (revision 4513)
@@ -151,7 +151,7 @@
             break;
         if (c &gt;= base)
             break;
-        if (any &lt; 0 || acc &gt; cutoff || acc == cutoff &amp;&amp; c &gt; cutlim)
+        if (any &lt; 0 || acc &gt; cutoff || (acc == cutoff &amp;&amp; c &gt; cutlim))
             any = -1;
         else {
             any = 1;
Index: trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoul.cxx
===================================================================
--- trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoul.cxx (revision 1926)
+++ trunk/ecos/packages/language/c/libc/stdlib/current/src/strtoul.cxx (revision 4513)
@@ -155,7 +155,7 @@
             break;
         if (c &gt;= base)
             break;
-        if (any &lt; 0 || acc &gt; cutoff || acc == cutoff &amp;&amp; c &gt; cutlim)
+        if (any &lt; 0 || acc &gt; cutoff || (acc == cutoff &amp;&amp; c &gt; cutlim))
             any = -1;
         else {
             any = 1;
&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-2172074751283938001?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/2172074751283938001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=2172074751283938001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/2172074751283938001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/2172074751283938001'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2008/10/fixing-ecos-warnings.html' title='Fixing eCos warnings'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-4824470716354853120</id><published>2008-10-26T14:01:00.001+01:00</published><updated>2008-10-26T14:01:12.754+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecos'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Make eCos compile quietly</title><content type='html'>&lt;p&gt;It would be nice that eCos offers an option to build quietly.&lt;br/&gt;
eCos Makefiles always print out the very long GCC command line to build every single file. This may lead to leave warning messages unnoticed, buried under the numerous lines of regular GCC option switches:&lt;/p&gt;
&lt;pre&gt;arm-elf-gcc -c  -I/tmp/build/ecos_build/../ecos_install/include -I/tmp/ecos/packages/infra/current -I/tmp/ecos/packages/infra/current/src -I/tmp/ecos/packages/infra/current/tests -I. -I/tmp/ecos/packages/infra/current/src/ -finline-limit=7000 -g -O0 -Wall -Wpointer-arith  -Wno-inline -Wundef -Woverloaded-virtual -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions   -Wp,-MD,src/delete.tmp -o src/infra_delete.o /tmp/ecos/packages/infra/current/src/delete.cxx
arm-elf-gcc -c  -I/tmp/build/ecos_build/../ecos_install/include -I/tmp/ecos/packages/infra/current -I/tmp/ecos/packages/infra/current/src -I/tmp/ecos/packages/infra/current/tests -I. -I/tmp/ecos/packages/infra/current/src/ -finline-limit=7000 -g -O0 -Wall -Wpointer-arith -Wstrict-prototypes -Wno-inline -Wundef  -ffunction-sections -fdata-sections  -fno-exceptions   -Wp,-MD,src/eprintf.tmp -o src/infra_eprintf.o /tmp/ecos/packages/infra/current/src/eprintf.c
arm-elf-gcc -c  -I/tmp/build/ecos_build/../ecos_install/include -I/tmp/ecos/packages/infra/current -I/tmp/ecos/packages/infra/current/src -I/tmp/ecos/packages/infra/current/tests -I. -I/tmp/ecos/packages/infra/current/src/ -finline-limit=7000 -g -O0 -Wall -Wpointer-arith  -Wno-inline -Wundef -Woverloaded-virtual -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions   -Wp,-MD,src/pure.tmp -o src/infra_pure.o /tmp/ecos/packages/infra/current/src/pure.cxx&lt;/pre&gt;

&lt;p&gt;The following patch tells eCos to build quielty, only showing the source files being compiled and linked up:&lt;/p&gt;
&lt;pre&gt; [CC] infra/current/src/delete.cxx
 [CC] infra/current/src/eprintf.c
 [CC] infra/current/src/pure.cxx&lt;/pre&gt;

&lt;p&gt;To restore the original behaviour, simply runs make from within the eCos build tree with the &lt;tt&gt;VERBOSE=1&lt;/tt&gt; option.&lt;/p&gt;

&lt;p&gt;Note that the patch requires to modify several files. If you use another processor but an ARM, you may need to tweak other files, using the same rules.&lt;/p&gt;

&lt;pre&gt;
Index: ecos/host/tools/configtool/common/common/build.cxx
===================================================================
--- ecos/host/tools/configtool/common/common/build.cxx (revision 1925)
+++ ecos/host/tools/configtool/common/common/build.cxx (revision 4424)
@@ -454,7 +454,12 @@
 		fprintf (stream, "OBJECTS := $(OBJECTS:.c=.o.d)\n");
 		fprintf (stream, "OBJECTS := $(OBJECTS:.S=.o.d)\n\n");
 		fprintf (stream, "$(LIBRARY).stamp: $(OBJECTS)\n");
+		fprintf (stream, "ifeq ($(VERBOSE),1)\n");
 		fprintf (stream, "\t$(AR) rcs $(PREFIX)/lib/$(@:.stamp=) $(foreach obj,$?,$(dir $(obj))$(OBJECT_PREFIX)_$(notdir $(obj:.o.d=.o)))\n");
+		fprintf (stream, "else\n");
+		fprintf (stream, "\t@echo \" [AR] $(subst $(REPOSITORY)/,,$(LIBRARY))\"\n");
+		fprintf (stream, "\t@$(AR) rcs $(PREFIX)/lib/$(@:.stamp=) $(foreach obj,$?,$(dir $(obj))$(OBJECT_PREFIX)_$(notdir $(obj:.o.d=.o)))\n");
+		fprintf (stream, "endif\n");
 		fprintf (stream, "\t@cat $^ &gt; $(@:.stamp=.deps)\n");
 		fprintf (stream, "\t@touch $@\n\n");
 	}	
@@ -560,16 +565,28 @@
 	fprintf (stream, "build: headers $(PREFIX)/include/pkgconf/ecos.mak\n");
 	for (make = 0; make &lt; info_make_vector.size (); make++) { // for each make
 		if (info_make_vector [make].loadable-&gt;makes [info_make_vector [make].make].priority &lt; 100) { // if priority higher than default complilation
+			fprintf (stream, "ifeq ($(VERBOSE),1)\n");
 			fprintf (stream, "\t$(MAKE) -r -C %s %s\n", info_make_vector [make].loadable-&gt;directory.c_str (), resolve_tokens (info_make_vector [make].loadable-&gt;makes [info_make_vector [make].make].target).c_str ());
+			fprintf (stream, "else\n");
+			fprintf (stream, "\t@$(MAKE) -r -C %s %s\n", info_make_vector [make].loadable-&gt;directory.c_str (), resolve_tokens (info_make_vector [make].loadable-&gt;makes [info_make_vector [make].make].target).c_str ());
+			fprintf (stream, "endif\n");
 		}
 	}
 	for (loadable = 0; loadable &lt; info_vector.size (); loadable++) { // for each buildable loaded package
 		const std::string source_path = info_vector [loadable].directory;
+		fprintf (stream, "ifeq ($(VERBOSE),1)\n");
 		fprintf (stream, "\t$(MAKE) -r -C %s $@\n", source_path.c_str ());
+		fprintf (stream, "else\n");
+		fprintf (stream, "\t@$(MAKE) -r -C %s $@\n", source_path.c_str ());
+		fprintf (stream, "endif\n");
 	}
 	for (make = 0; make &lt; info_make_vector.size (); make++) { // for each make
 		if (info_make_vector [make].loadable-&gt;makes [info_make_vector [make].make].priority &gt;= 100) { // if priority lower than or equal to default complilation
+			fprintf (stream, "ifeq ($(VERBOSE),1)\n");
 			fprintf (stream, "\t$(MAKE) -r -C %s %s\n", info_make_vector [make].loadable-&gt;directory.c_str (), resolve_tokens (info_make_vector [make].loadable-&gt;makes [info_make_vector [make].make].target).c_str ());
+			fprintf (stream, "else\n");
+			fprintf (stream, "\t@$(MAKE) -r -C %s %s\n", info_make_vector [make].loadable-&gt;directory.c_str (), resolve_tokens (info_make_vector [make].loadable-&gt;makes [info_make_vector [make].make].target).c_str ());
+			fprintf (stream, "endif\n");
 		}
 	}
 	fprintf (stream, "\t@echo $@ finished\n\n");
@@ -577,21 +594,33 @@
 	fprintf (stream, "clean:\n");
 	for (loadable = 0; loadable &lt; info_vector.size (); loadable++) { // for each buildable loaded package
 		const std::string source_path = info_vector [loadable].directory;
+		fprintf (stream, "ifeq ($(VERBOSE),1)\n");
 		fprintf (stream, "\t$(MAKE) -r -C %s $@\n", source_path.c_str ());
+		fprintf (stream, "else\n");
+		fprintf (stream, "\t@$(MAKE) -r -C %s $@\n", source_path.c_str ());
+		fprintf (stream, "endif\n");
 	}
 	fprintf (stream, "\t@echo $@ finished\n\n");
 
 	fprintf (stream, "tests: build\n");
 	for (loadable = 0; loadable &lt; info_vector.size (); loadable++) { // for each buildable loaded package
 		const std::string source_path = info_vector [loadable].directory;
+		fprintf (stream, "ifeq ($(VERBOSE),1)\n");
 		fprintf (stream, "\t$(MAKE) -r -C %s $@\n", source_path.c_str ());
+		fprintf (stream, "else\n");
+		fprintf (stream, "\t@$(MAKE) -r -C %s $@\n", source_path.c_str ());
+		fprintf (stream, "endif\n");
 	}
 	fprintf (stream, "\t@echo $@ finished\n\n");
 
 	fprintf (stream, "headers:\n");
 	for (loadable = 0; loadable &lt; info_vector.size (); loadable++) { // for each buildable loaded package
 		const std::string source_path = info_vector [loadable].directory;
+		fprintf (stream, "ifeq ($(VERBOSE),1)\n");
 		fprintf (stream, "\t$(MAKE) -r -C %s $@\n", source_path.c_str ());
+		fprintf (stream, "else\n");
+		fprintf (stream, "\t@$(MAKE) -r -C %s $@\n", source_path.c_str ());
+		fprintf (stream, "endif\n");
 	}
 	fprintf (stream, "\t@echo $@ finished\n\n");
Index: ecos/packages/services/memalloc/common/current/cdl/memalloc.cdl
===================================================================
--- ecos/packages/services/memalloc/common/current/cdl/memalloc.cdl (revision 1926)
+++ ecos/packages/services/memalloc/common/current/cdl/memalloc.cdl (revision 4423)
@@ -271,7 +271,8 @@
 
         make -priority 50 {
             heapgeninc.tcl : &lt;PACKAGE&gt;/src/heapgen.cpp
-            $(CC) $(ACTUAL_CXXFLAGS) $(INCLUDE_PATH) -Wp,-MD,heapgen.tmp -E $&lt; -o $@
+            @echo " [CC] $(subst $(REPOSITORY)/,,$&lt;)"
+            @$(CC) $(ACTUAL_CXXFLAGS) $(INCLUDE_PATH) -Wp,-MD,heapgen.tmp -E $&lt; -o $@
             @sed -e '/^ *\\/d' -e "s#.*: #$@: #" heapgen.tmp &gt; $(notdir $@).deps
             @rm heapgen.tmp
         }
@@ -283,6 +284,7 @@
         # an absolute path.
         make -priority 50 {
             heaps.cxx : heapgeninc.tcl &lt;PACKAGE&gt;/src/heapgen.tcl
+            @echo " [CC] $(subst $(REPOSITORY)/,,$&lt;)"
             XPWD=`pwd` ; cd $(REPOSITORY)/$(PACKAGE)/src ; sh heapgen.tcl "$(PREFIX)" "$$XPWD"
             @cp heaps.hxx "$(PREFIX)"/include/pkgconf/heaps.hxx
             @chmod u+w "$(PREFIX)"/include/pkgconf/heaps.hxx
@@ -290,7 +292,8 @@
 
         make_object {
             heaps.o.d : heaps.cxx
-            $(CC) $(ACTUAL_CXXFLAGS) $(INCLUDE_PATH) -Wp,-MD,heaps.tmp -c -o $(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+            @echo " [CC] $(subst $(REPOSITORY)/,,$&lt;)"
+            @$(CC) $(ACTUAL_CXXFLAGS) $(INCLUDE_PATH) -Wp,-MD,heaps.tmp -c -o $(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
             @sed -e '/^ *\\/d' -e "s#.*: #$@: #" heaps.tmp &gt; $@
             @rm heaps.tmp
         }
Index: ecos/packages/pkgconf/rules.mak
===================================================================
--- ecos/packages/pkgconf/rules.mak (revision 1930)
+++ ecos/packages/pkgconf/rules.mak (revision 4423)
@@ -91,7 +91,12 @@
 else
 	@mkdir -p $(dir $@)
 endif
+ifeq ($(VERBOSE),1)
 	$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+else
+	@echo " [CC] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+endif
 	@sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.o.d=.tmp) &gt; $@
 	@rm $(@:.o.d=.tmp)
 
@@ -101,7 +106,12 @@
 else
 	@mkdir -p $(dir $@)
 endif
+ifeq ($(VERBOSE),1)
 	$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+else
+	@echo " [CC] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+endif
 	@sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.o.d=.tmp) &gt; $@
 	@rm $(@:.o.d=.tmp)
 
@@ -111,7 +121,12 @@
 else
 	@mkdir -p $(dir $@)
 endif
+ifeq ($(VERBOSE),1)
 	$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+else
+	@echo " [CC] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+endif
 	@sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.o.d=.tmp) &gt; $@
 	@rm $(@:.o.d=.tmp)
 
@@ -121,7 +136,12 @@
 else
 	@mkdir -p $(dir $@)
 endif	
+ifeq ($(VERBOSE),1)
 	$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+else
+	@echo " [AS] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $&lt;
+endif
 	@sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.o.d=.tmp) &gt; $@
 	@rm $(@:.o.d=.tmp)
 
@@ -134,7 +154,12 @@
 else
 	@mkdir -p $(dir $@)
 endif
+ifeq ($(VERBOSE),1)
 	$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $&lt;
+else
+	@echo " [DEP] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $&lt;
+endif
 	@sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.d=.tmp) &gt; $@
 	@rm $(@:.d=.tmp)
 
@@ -144,7 +169,12 @@
 else
 	@mkdir -p $(dir $@)
 endif
+ifeq ($(VERBOSE),1)
 	$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $&lt;
+else
+	@echo " [DEP] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $&lt;
+endif
 	@sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.d=.tmp) &gt; $@
 	@rm $(@:.d=.tmp)
 
@@ -154,7 +184,12 @@
 else
 	@mkdir -p $(dir $@)
 endif
+ifeq ($(VERBOSE),1)
 	$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $&lt;
+else
+	@echo " [DEP] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $&lt;
+endif
 	@sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.d=.tmp) &gt; $@
 	@rm $(@:.d=.tmp)
 
@@ -164,7 +199,12 @@
 else
 	@mkdir -p $(dir $@)
 endif	
+ifeq ($(VERBOSE),1)
 	$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $&lt;
+else
+	@echo " [DEP] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -c $(INCLUDE_PATH) -I$(dir $&lt;) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $&lt;
+endif
 	@sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.d=.tmp) &gt; $@
 	@rm $(@:.d=.tmp)
 
@@ -176,9 +216,19 @@
 	@mkdir -p $(dir $@)
 endif	
 ifneq ($(IGNORE_LINK_ERRORS),)
+ifeq ($(VERBOSE),1)
 	-$(CC) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(&lt;:.d=.o) $(LDFLAGS)
 else
+	@echo " [LD] $(subst $(REPOSITORY)/,,$&lt;)"
+	@-$(CC) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(&lt;:.d=.o) $(LDFLAGS)
+endif
+else
+ifeq ($(VERBOSE),1)
 	$(CC) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(&lt;:.d=.o) $(LDFLAGS) 
+else
+	@echo " [LD] $(subst $(REPOSITORY)/,,$&lt;)"
+	@$(CC) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(&lt;:.d=.o) $(LDFLAGS) 
+endif
 endif
 
 # rule to generate all tests and create a dependency file "tests.deps" by
Index: ecos/packages/hal/arm/arch/current/cdl/hal_arm.cdl
===================================================================
--- ecos/packages/hal/arm/arch/current/cdl/hal_arm.cdl (revision 1926)
+++ ecos/packages/hal/arm/arch/current/cdl/hal_arm.cdl (revision 4423)
@@ -67,8 +67,9 @@
     # n.b. grep does not behave itself under win32
     make -priority 1 {
         arm.inc : &lt;PACKAGE&gt;/src/hal_mk_defs.c
-        $(CC) $(ACTUAL_CFLAGS) $(INCLUDE_PATH) -Wp,-MD,arm.tmp -o hal_mk_defs.tmp -S $&lt;
-        fgrep .equ hal_mk_defs.tmp | sed s/#// &gt; $@
+        @echo " [CPP] $(subst $(REPOSITORY)/,,$&lt;)"
+        @$(CC) $(ACTUAL_CFLAGS) $(INCLUDE_PATH) -Wp,-MD,arm.tmp -o hal_mk_defs.tmp -S $&lt;
+        @fgrep .equ hal_mk_defs.tmp | sed s/#// &gt; $@
         @echo $@ ": \\" &gt; $(notdir $@).deps
         @tail -n +2 arm.tmp &gt;&gt; $(notdir $@).deps
         @echo &gt;&gt; $(notdir $@).deps
@@ -77,7 +78,8 @@
 
     make {
         &lt;PREFIX&gt;/lib/vectors.o : &lt;PACKAGE&gt;/src/vectors.S
-        $(CC) -Wp,-MD,vectors.tmp $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -c -o $@ $&lt;
+        @echo " [AS] $(subst $(REPOSITORY)/,,$&lt;)"
+        @$(CC) -Wp,-MD,vectors.tmp $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -c -o $@ $&lt;
         @echo $@ ": \\" &gt; $(notdir $@).deps
         @tail -n +2 vectors.tmp &gt;&gt; $(notdir $@).deps
         @echo &gt;&gt; $(notdir $@).deps
@@ -86,7 +88,8 @@
 
     make {
         &lt;PREFIX&gt;/lib/target.ld: &lt;PACKAGE&gt;/src/arm.ld
-        $(CC) -E -P -Wp,-MD,target.tmp -xc $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -o $@ $&lt;
+        @echo " [CPP] $(subst $(REPOSITORY)/,,$&lt;)"
+        @$(CC) -E -P -Wp,-MD,target.tmp -xc $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -o $@ $&lt;
         @echo $@ ": \\" &gt; $(notdir $@).deps
         @tail -n +2 target.tmp &gt;&gt; $(notdir $@).deps
         @echo &gt;&gt; $(notdir $@).deps
Index: ecos/packages/hal/common/current/cdl/hal.cdl
===================================================================
--- ecos/packages/hal/common/current/cdl/hal.cdl (revision 1926)
+++ ecos/packages/hal/common/current/cdl/hal.cdl (revision 4423)
@@ -71,7 +71,8 @@
 
     make -priority 250 {
         &lt;PREFIX&gt;/lib/extras.o: &lt;PREFIX&gt;/lib/libextras.a
-        $(CC) $(CFLAGS) -nostdlib -Wl,-r -Wl,--whole-archive -o $@ $&lt;
+        @echo " [LD] $(subst $(REPOSITORY)/,,$&lt;)"
+        @$(CC) $(CFLAGS) -nostdlib -Wl,-r -Wl,--whole-archive -o $@ $&lt;
     }   
&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-4824470716354853120?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/4824470716354853120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=4824470716354853120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/4824470716354853120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/4824470716354853120'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2008/10/make-ecos-compile-quietly.html' title='Make eCos compile quietly'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-8450068207949672191</id><published>2008-10-26T13:21:00.001+01:00</published><updated>2008-10-26T13:31:14.223+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='ecos'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Building eCos toolchain for Mac OSX, Linux and Cygwin</title><content type='html'>&lt;p&gt;
The following document explains how to rebuild your own tool chain for an ARM v4/v5 processor in a Unix environment for the eCos platform.

The toolchains have been successfully rebuilt on the following host platforms:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mac OS X 10.5.5&lt;/li&gt;
&lt;li&gt;Linux 2.6.26&lt;/li&gt;
&lt;li&gt;Cygwin / WinXP Pro SP3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="Prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;
It is assumed that you have a valid environment for native compilation, with
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GNU C compiler suite&lt;/li&gt;
&lt;li&gt;GNU Make&lt;/li&gt;
&lt;li&gt;texinfo&lt;/li&gt;
&lt;li&gt;flex/bison&lt;/li&gt;
&lt;li&gt;gettext (including the 'development' version)&lt;/li&gt;
&lt;li&gt;m4&lt;/li&gt;
&lt;li&gt;makeinfo&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
If Insight is to be installed
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Tcl/Tk
&lt;/li&gt;&lt;li&gt;expat 
&lt;/li&gt;&lt;li&gt;ncurses, including the development package
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
If you wish to build GCC 4.3.0 or later, you also need two mathematical libraries: 
&lt;a class="ext-link" href="http://gmplib.org/"&gt;&lt;span class="icon"&gt;GMP&lt;/span&gt;&lt;/a&gt; and &lt;a class="ext-link" href="http://www.mpfr.org/"&gt;&lt;span class="icon"&gt;MPFR&lt;/span&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;if these libraries are not available on your host, you can recompile them from the source.

&lt;/li&gt;&lt;li&gt;it is recommended to install them into the same directory than the GCC tool chain if you are not using a package manager.
&lt;/li&gt;&lt;/ul&gt;&lt;h2 id="Gettingthesourcecode"&gt;Getting the source code&lt;/h2&gt;
&lt;p&gt;
The following source distribution are required:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Binutils&lt;/strong&gt; (assembler, linker and other binary file tools)
&lt;ul&gt;&lt;li&gt;Go to &lt;a class="ext-link" href="http://www.gnu.org/software/binutils"&gt;&lt;span class="icon"&gt;http://www.gnu.org/software/binutils&lt;/span&gt;&lt;/a&gt; and grab the latest release
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GNU C&lt;/strong&gt; compiler core
&lt;ul&gt;&lt;li&gt;Go to &lt;a class="ext-link" href="http://gcc.gnu.org"&gt;&lt;span class="icon"&gt;http://gcc.gnu.org&lt;/span&gt;&lt;/a&gt; then pick up a mirror, go down the &lt;tt&gt;releases&lt;/tt&gt; directory and grab the latest release that starts with &lt;i&gt;gcc-core&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GNU C++&lt;/strong&gt; compiler extension
&lt;ul&gt;&lt;li&gt;same as above, download the archive that starts with &lt;i&gt;gcc-g++&lt;/i&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Newlib&lt;/strong&gt;
&lt;ul&gt;&lt;li&gt;Go to &lt;a class="ext-link" href="http://sourceware.org/newlib"&gt;&lt;span class="icon"&gt;http://sourceware.org/newlib&lt;/span&gt;&lt;/a&gt;, follow the download link then the FTP directory link and grab the latest release
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Insight &amp;amp; GDB&lt;/strong&gt; [&lt;i&gt;optional&lt;/i&gt;]
&lt;ul&gt;&lt;li&gt;Go to &lt;a class="ext-link" href="http://sourceware.org/insight"&gt;&lt;span class="icon"&gt;http://sourceware.org/insight&lt;/span&gt;&lt;/a&gt;, follow the FTP directory link and grab the latest release
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GMP&lt;/strong&gt; [&lt;i&gt;only if not already available on your platform&lt;/i&gt;]
&lt;ul&gt;&lt;li&gt;Go to &lt;a class="ext-link" href="http://gmplib.org/#DOWNLOAD"&gt;&lt;span class="icon"&gt;http://gmplib.org/#DOWNLOAD&lt;/span&gt;&lt;/a&gt; and download the latest version
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MPFR&lt;/strong&gt;  [&lt;i&gt;only if not already available on your platform&lt;/i&gt;]
&lt;ul&gt;&lt;li&gt;Go to &lt;a class="ext-link" href="http://www.mpfr.org/mpfr-current/#download"&gt;&lt;span class="icon"&gt;http://www.mpfr.org/mpfr-current/#download&lt;/span&gt;&lt;/a&gt; and download the latest version
&lt;/li&gt;&lt;li&gt;Be sure to also download the &lt;i&gt;cumulative patch&lt;/i&gt; from the same page
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 id="Note"&gt;Note&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Insight and the GDB debugger are not required to build ARM libraries and applications.

However it is useful to build GDB and the Insight GUI to enable application debugging.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
The GNU tool chain has been rebuilt with the following versions of the tools
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Binutils 2.18: &lt;tt&gt;binutils-2.18.tar.bz2&lt;/tt&gt;
&lt;/li&gt;&lt;li&gt;GMP 4.2.4: &lt;tt&gt;gmp-4.2.4.tar.bz2&lt;/tt&gt;
&lt;/li&gt;&lt;li&gt;MPFR 2.3.2: &lt;tt&gt;mpfr-2.3.2.tar.bz2&lt;/tt&gt;
&lt;/li&gt;&lt;li&gt;GNU C/C++ 4.2.4: &lt;tt&gt;gcc-core-4.2.4.tar.bz2&lt;/tt&gt;, &lt;tt&gt;gcc-g++-4.2.4.tar.bz2&lt;/tt&gt;
&lt;/li&gt;&lt;li&gt;GNU C/C++ 4.3.2: &lt;tt&gt;gcc-core-4.3.2.tar.bz2&lt;/tt&gt;, &lt;tt&gt;gcc-g++-4.3.2.tar.bz2&lt;/tt&gt;
&lt;/li&gt;&lt;li&gt;Newlib 1.16: &lt;tt&gt;newlib-1.16.0.tar.gz&lt;/tt&gt;
&lt;/li&gt;&lt;li&gt;Insight 6.8: &lt;tt&gt;insight-6.8.tar.bz2&lt;/tt&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/tmp
wget 
&lt;/pre&gt;&lt;/div&gt;&lt;div class="code"&gt;&lt;pre&gt;mkdir src build
&lt;span class="nb"&gt;cd &lt;/span&gt;src
&lt;span class="k"&gt;for &lt;/span&gt;a in ../*.bz2; &lt;span class="k"&gt;do &lt;/span&gt;tar xjvf &lt;span class="nv"&gt;$a&lt;/span&gt;; &lt;span class="k"&gt;done
for &lt;/span&gt;a in ../*.gz; &lt;span class="k"&gt;do &lt;/span&gt;tar xzvf &lt;span class="nv"&gt;$a&lt;/span&gt;; &lt;span class="k"&gt;done
for &lt;/span&gt;d in *; &lt;span class="k"&gt;do &lt;/span&gt;mkdir ../build/&lt;span class="nv"&gt;$d&lt;/span&gt;; &lt;span class="k"&gt;done
&lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;gcc*
ln -s ../newlib*/libgloss
ln -s ../newlib*/newlib
&lt;span class="nb"&gt;cd&lt;/span&gt; ../..
&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="Definingtheglobalparameters"&gt;Defining the global parameters&lt;/h2&gt;
&lt;p&gt;
Here we define where the toolchain will be installed (&lt;tt&gt;PREFIX&lt;/tt&gt;) and the target (&lt;tt&gt;TARGET&lt;/tt&gt;) for which we want to build the toolchain.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;You can change the installation prefix, although depending on the OS (Linux, Windows, ...) you should follow the installation path guidelines...
&lt;/li&gt;&lt;li&gt;Never change the target, as long as you build a toolchain for an ARM processor
&lt;/li&gt;&lt;/ul&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/local/gnu
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;TARGET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;arm-elf
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
Clean up your PATH environment.

You need to be sure that no other cross-compiler for the same target already exists in your executable path.
&lt;/p&gt;
&lt;p&gt;
Typical settings, YMMV:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Windows/Cygwin
&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/bin:/bin:/cygdrive/c/WINDOWS/System32:/cygdrive/c/WINDOWS
&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Linux
&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/bin:/bin
&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 id="Note1"&gt;Note&lt;/h4&gt;
&lt;p&gt;
Keep in mind that these environment variables are only valid within the current shell, 
so if you close the session before the tool chain compilation is complete, you need to redefine 
these values in the new session before resuming the compilation
&lt;/p&gt;
&lt;h2 id="Compilingthetoolchain"&gt;Compiling the tool chain&lt;/h2&gt;
&lt;h4 id="Preliminarynotes"&gt;Preliminary notes&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;On Mac OS X, it is recommended to build with the new GCC compiler, so prefix each &lt;tt&gt;./configure&lt;/tt&gt; statement with 
&lt;pre class="wiki"&gt;CC=gcc-4.2 ./configure ...
&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;On 64-bit hosts (Core2 Duo for ex.), you may want to compile the toolchain in 64-bit mode.

Add the following flag before the ./configure statement
&lt;pre class="wiki"&gt;CFLAGS="-O2 -m64" ./configure ...
&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id="Compilingthebinutils"&gt;Compiling the binutils&lt;/h3&gt;
&lt;h4 id="Configurationoptions"&gt;Configuration options&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;discard native language support (all execution messages are dumped in english) 
&lt;/li&gt;&lt;li&gt;ensure we used shared libraries to save space (and SDK size)
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
 
&lt;/p&gt;
&lt;h4 id="Building"&gt;Building&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;build/binutils*
../../src/binutils*/configure --prefix&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt; --target&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$TARGET&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;  --enable-shared --enable-serial-configure --disable-nls
make
sudo make install
&lt;span class="nb"&gt;cd&lt;/span&gt; ../..
&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="Notes"&gt;Notes&lt;/h4&gt;
&lt;ol&gt;&lt;li&gt;On Cygwin, you do not need the &lt;tt&gt;sudo&lt;/tt&gt; command to install the toolchain. 
&lt;ul&gt;&lt;li&gt;Replace &lt;tt&gt;sudo make install&lt;/tt&gt; with &lt;tt&gt;make install&lt;/tt&gt; in the the following instructions
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;On Mac OS X, you need to build the static version of binutils (or fear compilation issues of the GCC cross compiler)
&lt;ul&gt;&lt;li&gt;Replace &lt;tt&gt;--enabled-shared&lt;/tt&gt; with &lt;tt&gt;--disabled-shared&lt;/tt&gt; in the above configuration line.

All the other tools of the toolchain may be built as shared libraries.
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;On some Linux host, the configure script fails to detect the installed &lt;tt&gt;makeinfo&lt;/tt&gt; tool, and in turn prevent from building the binutils.

As a dirty hack you can replace the &lt;tt&gt;../../src/binutils-2.18/missing&lt;/tt&gt; file with the &lt;tt&gt;env&lt;/tt&gt; command, so that it actually invoke the makeinfo tool - be sure it is installed though
&lt;pre class="wiki"&gt;(cd ../../src/binutils-2.18 &amp;amp;&amp;amp; mv missing missing.old &amp;amp;&amp;amp; ln -s /usr/bin/env missing)
&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 id="CompilingtheGMPlibrary"&gt;Compiling the GMP library&lt;/h3&gt;
&lt;p&gt;
This extra step is only required if GMP is already available on your platform.

Before rebuilding it from the sources, please check your favorite package manager cannot install it from your distribution server.

Note that many Linux distributions still offer outdated versions of these libraries which are too old for rebuilding GCC.&lt;br/&gt;
Cygwin package manager -&lt;tt&gt;setup.exe&lt;/tt&gt;- now offers the GMP amd MPFR libraries.
&lt;/p&gt;
&lt;h4 id="BuildingGMP"&gt;Building GMP&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;build/gmp*
../../src/gmp*/configure --prefix&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt; --disable-nls
make
make check
sudo make install
&lt;span class="nb"&gt;cd&lt;/span&gt; ../..
&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="CompilingtheMPFRlibrary"&gt;Compiling the MPFR library&lt;/h3&gt;
&lt;p&gt;
This extra step is only required if MPFR is already available on your platform.&lt;br/&gt;
Before rebuilding it from the sources, please check your favorite package manager cannot install it from your distribution server.
&lt;/p&gt;
&lt;h4 id="Configurationoptions1"&gt;Configuration options&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;MPFR need to know where GMP has been installed
&lt;/li&gt;&lt;/ul&gt;&lt;h4 id="BuildingMPFR"&gt;Building MPFR&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;build/mpfr*
../../src/mpfr*/configure --prefix&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt; --with-gmp&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;
make
sudo make install
&lt;span class="nb"&gt;cd&lt;/span&gt; ../..
&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="CompilingtheGNUCCcompiler"&gt;Compiling the GNU C/C++ compiler&lt;/h3&gt;
&lt;h4 id="Updatingtheexecutionpath"&gt;Updating the execution path&lt;/h4&gt;
&lt;p&gt;
Now that the binutils have been installed, the PATH environment variable needs to be updated 
so that the compiler may find them to generate the required libraries:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;:&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;/bin
&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="Configurationoptions2"&gt;Configuration options&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;discard native language support (all execution messages are dumped in english) 
&lt;/li&gt;&lt;li&gt;ensure we used shared libraries to save space (and SDK size)
&lt;/li&gt;&lt;li&gt;enable compiler support for both C and C++ language (the latter is required to build the eCos kernel)
&lt;/li&gt;&lt;li&gt;both the assembler and the linker are part of the GNU tool chain (&lt;i&gt;i.e.&lt;/i&gt; the GNU binutils)
&lt;/li&gt;&lt;li&gt;use the newlib library rather than the GNU libc library
&lt;/li&gt;&lt;li&gt;use a custom build string to differentiate this custom build from the official binary release
&lt;/li&gt;&lt;li&gt;do no build all the variants of the libraries (save a lot of time and space)
&lt;/li&gt;&lt;li&gt;the ARMv4/v5 processors do not sport a floating-point hardware unit (FPU)
&lt;/li&gt;&lt;li&gt;define the default settings for the ARMv4/v5 processor:
&lt;ul&gt;&lt;li&gt;endianess: little
&lt;/li&gt;&lt;li&gt;no support for Thumb 16-bit instruction set
&lt;/li&gt;&lt;li&gt;GNU ABI
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 id="Building1"&gt;Building&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;build/gcc*
../../src/gcc*/configure --prefix&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt; --target&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$TARGET&lt;/span&gt; --enable-shared --enable-languages&lt;span class="o"&gt;=&lt;/span&gt;c,c++ &lt;span class="se"&gt;\
&lt;/span&gt;  --disable-nls --with-gnu-as --with-gnu-ld --with-newlib --with-pkgversion&lt;span class="o"&gt;=&lt;/span&gt;eCos-SDK &lt;span class="se"&gt;\
&lt;/span&gt;  --with-gxx-include-dir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;/&lt;span class="nv"&gt;$TARGET&lt;/span&gt;/include --disable-multilib --enable-softfloat &lt;span class="se"&gt;\
&lt;/span&gt;  --disable-bigendian --disable-fpu --disable-interwork --disable-underscore &lt;span class="se"&gt;\
&lt;/span&gt;  --with-float&lt;span class="o"&gt;=&lt;/span&gt;soft --with-abi&lt;span class="o"&gt;=&lt;/span&gt;apcs-gnu --with-fpu&lt;span class="o"&gt;=&lt;/span&gt;fpa --with-mode&lt;span class="o"&gt;=&lt;/span&gt;arm --disable-__cxa_atexit 
make
suo make install
&lt;span class="nb"&gt;cd&lt;/span&gt; ../..
&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="Notes1"&gt;Notes&lt;/h4&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;same remark as for binutils about the super-user requirement
&lt;/li&gt;&lt;li&gt;if you have recompiled GMP and MPFR from the sources, you also need to tell the configure script where to find these libraries; append the following option switches to the configure parameters: 
&lt;pre class="wiki"&gt;--with-gmp=$PREFIX --with-mpfr=$PREFIX
&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;if you have chosen to build in 64-bit mode (&lt;tt&gt;-m64&lt;/tt&gt;), you need to:
&lt;ol&gt;&lt;li&gt;Append the following flags before the &lt;tt&gt;./configure&lt;/tt&gt; command:
&lt;pre class="wiki"&gt;CFLAGS_FOR_BUILD="-O2 -m64" CFLAGS_FOR_TARGET="-O2" CFLAGS="-O2 -m64"
&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Tweak the generated &lt;tt&gt;arm-elf/libgcc/Makefile&lt;/tt&gt;, as gcc configure script fails to deal with some cross-compilation setting, and attempts to apply the &lt;tt&gt;-m64&lt;/tt&gt; flag to the ARM compiler.

Add the following line right before the &lt;tt&gt;INTERNAL_CFLAGS =&lt;/tt&gt; line, to strip out the &lt;tt&gt;-m64&lt;/tt&gt; flag.
&lt;pre class="wiki"&gt;override LIBGCC2_CFLAGS := $(filter-out -m64,$(LIBGCC2_CFLAGS))
&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id="CompilingtheGDBdebuggerwithInsightgraphicaluserinterface"&gt;Compiling the GDB debugger with Insight graphical user interface&lt;/h3&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;h4 id="Configurationoptions3"&gt;Configuration options&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;The default configuration settings for Insight GDB do not require further customization.
&lt;/li&gt;&lt;li&gt;If you use a recent (4.x) GCC compiler to build up GDB, you'll need to tweak the generated Makefile: it enables the 'stop on warning' GCC compiler option, however the GDB source code does not compile without warnings with a recent GCC compiler:

After running the GDB &lt;tt&gt;configure&lt;/tt&gt; script, and before invoking &lt;tt&gt;make&lt;/tt&gt;, execute the following actions:
&lt;ol&gt;&lt;li&gt;Edit the generated &lt;tt&gt;gdb/Makefile&lt;/tt&gt; file
&lt;/li&gt;&lt;li&gt;Search for occurences of &lt;tt&gt;-Werror&lt;/tt&gt; and remove them
&lt;/li&gt;&lt;li&gt;Save the file
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 id="Building2"&gt;Building&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;build/insight*
../../src/insight*/configure --prefix&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt; --target&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$TARGET&lt;/span&gt;
make
sudo make install
&lt;span class="nb"&gt;cd&lt;/span&gt; ../..
&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="Fixingbuildissues"&gt;Fixing build issues&lt;/h4&gt;
&lt;p&gt;
You may have to edit a couple of Makefile to fix up the definitions (before invoking &lt;tt&gt;make&lt;/tt&gt;)
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;tt&gt;gdb/Makefile&lt;/tt&gt;: remove the "&lt;i&gt;-Werror&lt;/i&gt;" option, as GDB cannot be built without warnings with a GCC 4.x compiler
&lt;/li&gt;&lt;li&gt;on Mac OS X, add the path to the X11 library: add &lt;tt&gt;LDFLAGS=-L/usr/X11R6/lib&lt;/tt&gt; before the &lt;tt&gt;./configure&lt;/tt&gt; statement
&lt;/li&gt;&lt;/ul&gt;&lt;h2 id="Savingspace"&gt;Saving space&lt;/h2&gt;
&lt;p&gt;
All the executable files are built with optimization and debugger symbols enabled. 
There is no need to keep those debugging symbols except if the GNU compiler suite itself is to be debugged.
&lt;/p&gt;
&lt;p&gt;
Several dozens of megabytes can be saved off the generated executable files, hence producing a smaller GNU tool suite and a more compact installer file.
&lt;/p&gt;
&lt;h4 id="Strippingdownapplicationfiles"&gt;Stripping down application files&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre&gt;find &lt;span class="nv"&gt;$PREFIX&lt;/span&gt; -path &lt;span class="s2"&gt;"*bin/"&lt;/span&gt;* -exec strip &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt; 2&amp;gt; /dev/null
&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="VerifyingtheGNUtoolchain"&gt;Verifying the GNU tool chain&lt;/h2&gt;
&lt;p&gt;
Automatic test suite cannot be run as the tool chain being built is a cross-compilation tool chain, &lt;i&gt;i.e.&lt;/i&gt; it produces applications 
that may not be run on the machine where the applications are buit.
&lt;/p&gt;
&lt;p&gt;
However the compiler configuration can be dumped and verified this way:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre&gt;arm-elf-gcc -v --help 2&amp;gt;&amp;amp;1 | less
&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="Finalnote"&gt;Final notes&lt;/h2&gt;
&lt;p&gt;
Please remember to add the installation prefix to your PATH before building application, &lt;i&gt;i.e.&lt;/i&gt; &lt;tt&gt;$PREFIX/bin&lt;/tt&gt;
&lt;/p&gt;&lt;br /&gt;


&lt;p&gt;&lt;em&gt;Windows users&lt;/em&gt;: You may want to consider using a virtual machine with a Linux guest OS to build up eCos projects rather than using Cygwin.

Cygwin is a clever way to run software designed for Unix in a Windows environment, but it dramatically slows down compilation - a typical build runs 8 to 10 times slower than Linux on the same host machine.

Using a Windows VM to run Linux brings compilation time close to the &lt;em&gt;native&lt;/em&gt; compilation time.
&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-8450068207949672191?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/8450068207949672191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=8450068207949672191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/8450068207949672191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/8450068207949672191'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2008/10/building-ecos-toolchain-for-mac-osx.html' title='Building eCos toolchain for Mac OSX, Linux and Cygwin'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-2083736717289740200</id><published>2008-10-25T17:36:00.001+02:00</published><updated>2008-10-25T19:05:38.495+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecos'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>Make ecosconfig tool play fair with a Subversion repository</title><content type='html'>&lt;p&gt;eCos &lt;tt&gt;ecosconfig&lt;/tt&gt; tool has been designed with CVS repository in mind.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;However, if you need to store your eCos base code into a Subversion repository, &lt;tt&gt;ecosconfig&lt;/tt&gt; goes mad: it considers any hidden directory, such as &lt;tt&gt;.svn&lt;/tt&gt; SVN administrative dir from a SVN working copy, as an eCos package candidate for inclusion in the eCos build system.
&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;The net result is a ton of stupid warning messages that plague the log output of an eCos code build session.
&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;The following patch prevent &lt;tt&gt;ecosconfig&lt;/tt&gt; from parsing &lt;tt&gt;.svn&lt;/tt&gt; directories.
&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Note that a better, more generic fix would be to actually ignore any hidden directory, that is a directory which starts with a dot character.
&lt;/p&gt;
&lt;br /&gt;
&lt;pre&gt;
diff -r -u -x '*.svn*' vendor/ecos/host/libcdl/database.cxx new/ecos/host/libcdl/database.cxx
--- vendor/ecos/host/libcdl/database.cxx	2008-10-25 17:15:22.000000000 +0200
+++ new/ecos/host/libcdl/database.cxx	2008-10-14 00:35:28.000000000 +0200
@@ -221,7 +221,8 @@
                 unsigned int i;
                 interp-&gt;locate_subdirs(pkgdir, subdirs);
                 for (i = 0; i &lt; subdirs.size(); i++) {
-                    if (("CVS" == subdirs[i]) || ("cvs" == subdirs[i])) {
+                    if (("CVS" == subdirs[i]) || ("cvs" == subdirs[i]) || \
+                        (".svn" == subdirs[i])) {
                         continue;
                     }
                     if ("" != package.script) {
Only in branches/host_tools/ecostools/host/libcdl/doc: .cvsignore
diff -r -u -x '*.svn*' vendor/ecos/host/libcdl/interp.cxx new/ecos/host/libcdl/interp.cxx
--- vendor/ecos/host/libcdl/interp.cxx	2008-10-25 17:15:22.000000000 +0200
+++ new/ecos/host/libcdl/interp.cxx	2008-10-14 00:35:28.000000000 +0200
@@ -1179,7 +1179,7 @@
 foreach entry [glob -nocomplain -- $pattern] {              \n\
     if ([file isdirectory $entry]) {                        \n\
         set entry [file tail $entry]                        \n\
-        if {($entry != \"CVS\") &amp;&amp; ($entry != \"cvs\")} {   \n\
+        if {($entry != \"CVS\") &amp;&amp; ($entry != \"cvs\") &amp;&amp; ($entry != \".svn\")} {   \n\
             lappend result $entry                           \n\
         }                                                   \n\
     }                                                       \n\
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-2083736717289740200?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/2083736717289740200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=2083736717289740200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/2083736717289740200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/2083736717289740200'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2008/10/make-ecosconfig-tool-play-fair-with.html' title='Make ecosconfig tool play fair with a Subversion repository'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-5705091947591744592</id><published>2008-10-25T14:33:00.001+02:00</published><updated>2008-11-01T15:17:48.731+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecos'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>YAFFS2 for eCos</title><content type='html'>&lt;p&gt;As requested on the &lt;a href="mailto:yaffs@lists.aleph1.co.uk"&gt;YAFFS2 mailing-list&lt;/a&gt;, I've posted the first alpha release of YAFFS2 wrapper for the eCos file system API. You can download it from &lt;a href="http://idisk.mac.com/emmanuel.blot-Public/yaffs2-ecos-v0.1a.tar.bz2"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;Do not forget to read the README file included in the tarball. It contains important information about how to build the source code.
&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;&lt;strong&gt;Important note&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;YAFFS2 is released under a &lt;a href="http://www.yaffs.net/yaffs-licensing-overview"&gt;dual-license scheme&lt;/a&gt;. If you ever use the eCos port of YAFFS2, be sure to carefully understand the implications of such licenses. If you add YAFFS2 code to your eCos-based application, your code should either comply with the GPL license - &lt;em&gt;i.e.&lt;/em&gt; it requires that you publish the source code of the whole application, or you should buy a commercial license from &lt;a href="http://www.yaffs.net/taxonomy/term/53"&gt;Aleph One.&lt;/a&gt;
&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;Check out the &lt;a href="http://www.aleph1.co.uk/lurker/message/20081029.183252.c54b2e93.en.html"&gt;mailing list thread&lt;/a&gt; about licensing YAFFS2 w/ eCos.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-5705091947591744592?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/5705091947591744592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=5705091947591744592' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/5705091947591744592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/5705091947591744592'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2008/10/yaffs2-for-ecos.html' title='YAFFS2 for eCos'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-8116181636480979485</id><published>2008-10-25T00:18:00.001+02:00</published><updated>2008-10-25T19:07:25.812+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Building Subversion 1.5 on a Mac</title><content type='html'>&lt;p&gt;I often need the latest SVN client and server tools on my Mac, but I do not need nor want the fink or macports tools. 
SVN 1.5 brings very nice features, such as merging.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;The following instructions are for Leopard machines.
Instructions won't work on a Tiger or earlier OS X releases.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;You'll need a working development environment - the following instructions assume you've already installed the GNU toolchain which comes with Xcode (GCC 4.0)&lt;/p&gt;
&lt;br /&gt;
# Download the latest SVN 1.5.x archive
# replace 'x' with the actual release (1.5.4 by the time of writing)
&lt;pre&gt;wget http://subversion.tigris.org/downloads/subversion-1.5.x.tar.bz2&lt;/pre&gt;
# Download the latest companion archive for SVN 1.5.x
&lt;pre&gt;wget http://subversion.tigris.org/downloads/subversion-deps-1.5.x.tar.bz2&lt;/pre&gt;
# Untar the main archive
&lt;pre&gt;tar xjvf ../subversion-1.5.?.tar.bz2&lt;/pre&gt;
# Untar the missing dependencies (and only these ones)
&lt;pre&gt;tar xjvf ../subversion-deps-1.5.?.tar.bz2 subversion-1.5.?/neon
subversion-1.5.?/serf&lt;/pre&gt;
# Let's start. It would be nice to perform an out-of-source build of SVN, but early SVN 1.5.x release simply do not build in an out-of-source environment. So fall back to a in-source build for now
&lt;pre&gt;cd subversion-1.5.?/&lt;/pre&gt;
# Be sure to use the simplest PATH environment. 
# If you have installed other tools (such as MacPorts or fink, you might run into dependencies nightmares)
&lt;pre&gt;export PATH=/usr/bin:/bin:/usr/sbin:/sbin&lt;/pre&gt;
# Use the following configure settings. SVN will be installed in /usr/local/subversion, so it's easy to get rid of this version and/or replace it with a future release 
&lt;pre&gt;./configure --enable-shared --disable-static --with-apxs --with-ssl
--with-apr=/usr/bin/apr-1-config --with-apr-util=/usr/bin/apu-1-config
--prefix=/usr/local/subversion&lt;/pre&gt;
# Before starting to build SVN, you need to edit serf/Makefile, and remove every single occurence of "-static", or the build would fail
&lt;pre&gt;vim serf/Makefile
:%s/-static//g
:wq&lt;/pre&gt;
# Start the build. 
# Nearly everyone owns a multi-core CPU Mac nowadays, so let speed up the build, spawning several processes at once
&lt;pre&gt;make -j2&lt;/pre&gt;
# Optional: if you need the Python modules, let's build them
&lt;pre&gt;make -j2 swig-py&lt;/pre&gt;
# Leopard comes with a built-in release of Subversion (1.4.x) 
# Let's backup the Apache modules first
&lt;pre&gt;pushd /usr/libexec/apache2/
sudo mv mod_authz_svn.so mod_authz_svn.so.orig
sudo mv mod_dav_svn.so mod_dav_svn.so.orig
popd&lt;/pre&gt;
# Install the fresh built version of Subversion to /usr/local/&lt;pre&gt;subversion
sudo make install&lt;/pre&gt;
# Optional: install Python Subversion wrapper 
&lt;pre&gt;sudo make install-swig-py&lt;/pre&gt;
# Optional: replace the default Python wrapper with the new ones
pushd /System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python
&lt;pre&gt;sudo mv svn svn.orig
sudo mv libsvn libsvn.orig
sudo ln -s /usr/local/subversion/lib/svn-python/svn
sudo ln -s /usr/local/subversion/lib/svn-python/libsvn
popd&lt;/pre&gt;
# Optional but recommended:
# SVN 1.5 working copies cannot be used with a prior release of SVN, such as the one that comes with Leopard. If you access a 1.4 WC with a 1.5 client, the WC is automatically updated to the 1.5 format, which prevent any further access from the default 1.4 tools. To avoid compatibility issue, I recommend you only use *one* major release of SVN tools on your machine
# Replace the pristine release of SVN with the new one
&lt;pre&gt;pushd /usr/bin
for f in svn*; do sudo mv $f $f.orig; sudo ln -s
/usr/local/subversion/bin/$f; done
popd&lt;/pre&gt;
# Once you double check SVN 1.5.x is up and running, you can get rid of your source+build directory
&lt;pre&gt;cd ..
rm -rf subversion-*&lt;/pre&gt;
Enjoy !
&lt;pre&gt;$&gt; svn --version
svn, version 1.5.4 (r33841)
   compiled Oct 24 2008, 23:31:22&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-8116181636480979485?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/8116181636480979485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=8116181636480979485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/8116181636480979485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/8116181636480979485'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2008/10/building-subversion-15-on-mac.html' title='Building Subversion 1.5 on a Mac'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-114410828917505247</id><published>2006-04-01T14:22:00.000+02:00</published><updated>2006-04-04T01:51:29.193+02:00</updated><title type='text'>Projet No(No)32</title><content type='html'>Quelques photos de l'&lt;a href="http://www.flickr.com/photos/89746026@N00/sets/72057594095743160/show/"&gt;anniversaire de Nono&lt;/a&gt; sont en ligne.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-114410828917505247?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/114410828917505247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=114410828917505247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/114410828917505247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/114410828917505247'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2006/04/projet-nono32.html' title='Projet No(No)32'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-114264044940032719</id><published>2006-03-18T01:05:00.000+01:00</published><updated>2006-03-21T01:28:58.576+01:00</updated><title type='text'>Trac Revtree</title><content type='html'>Here is a snapshot of the RevTree plugin, a custom extension for &lt;a href="http://projects.edgewall.com/trac"&gt;Trac&lt;/a&gt;

This extension provides some kind of graphical view of a Subversion repository, similar to the ClearCase "version tree". As Subversion does not track merge, the RevTree plugin relies on special keywords the users need to add to their commit message.

The RevTree plugin is therefore tied to custom pre- and post- hook scripts, which handles log message validation and associated post processing.
&lt;a href="http://photos1.blogger.com/blogger/6/2428/1600/revtree.jpg"&gt;
&lt;/a&gt;&lt;a href="http://photos1.blogger.com/blogger/6/2428/1600/revtree.jpg"&gt;&lt;img alt="" border="0" src="http://photos1.blogger.com/blogger/6/2428/320/revtree.jpg" style="cursor:pointer; cursor:hand;"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-114264044940032719?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/114264044940032719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=114264044940032719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/114264044940032719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/114264044940032719'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2006/03/trac-revtree.html' title='Trac Revtree'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23605464.post-114175926438219866</id><published>2006-03-07T20:18:00.000+01:00</published><updated>2006-03-09T00:15:37.740+01:00</updated><title type='text'>Photos du WE ski a Grenoble</title><content type='html'>&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer;" src="http://photos1.blogger.com/blogger/6/2428/200/5.jpg" border="0" alt="" /&gt;
Les photos du dernier WE a Grenoble sont dispos sur &lt;a href="http://flickr.com/photos/89746026@N00/"&gt;Flickr&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23605464-114175926438219866?l=moaningmarmot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moaningmarmot.blogspot.com/feeds/114175926438219866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23605464&amp;postID=114175926438219866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/114175926438219866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23605464/posts/default/114175926438219866'/><link rel='alternate' type='text/html' href='http://moaningmarmot.blogspot.com/2006/03/photos-du-we-ski-grenoble.html' title='Photos du WE ski a Grenoble'/><author><name>MoaningMarmot</name><uri>http://www.blogger.com/profile/10645003767283285105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
