Index: trunk/dports/lang/gcc46/Portfile
===================================================================
--- trunk/dports/lang/gcc46/Portfile	(revision 68777)
+++ trunk/dports/lang/gcc46/Portfile	(revision 68778)
@@ -4,5 +4,5 @@
 
 name			gcc46
-version			4.6-20100508
+version			4.6-20100605
 platforms		darwin
 categories		lang
@@ -16,7 +16,8 @@
 
 homepage		http://gcc.gnu.org/
-master_sites    ftp://ftp.gwdg.de/pub/linux/gcc/snapshots/${version}/ \
-				ftp://ftp.funet.fi/pub/mirrors/sources.redhat.com/pub/gcc/snapshots/${version}/ \
-				ftp://gcc.gnu.org/pub/gcc/snapshots/${version}/
+master_sites            ftp://ftp.gwdg.de/pub/linux/gcc/snapshots/${version}/:gcc \
+			ftp://ftp.funet.fi/pub/mirrors/sources.redhat.com/pub/gcc/snapshots/${version}/:gcc \
+			ftp://gcc.gnu.org/pub/gcc/snapshots/${version}/:gcc \
+			ftp://sourceware.org/pub/java/:ecj
 
 set dcore		gcc-core-${version}.tar.bz2
@@ -25,26 +26,32 @@
 set djava		gcc-java-${version}.tar.bz2
 set dobjc		gcc-objc-${version}.tar.bz2
-distfiles		${dcore} ${dfort} ${dcxx} ${djava} ${dobjc}
+set ecj			ecj-4.5.jar
+distfiles		${dcore}:gcc ${dfort}:gcc ${dcxx}:gcc ${djava}:gcc ${dobjc}:gcc ${ecj}:ecj
+extract.only		${dcore} ${dfort} ${dcxx} ${djava} ${dobjc}
 
 checksums           gcc-core-${version}.tar.bz2 \
-                    md5     8ba704b7c3f741e2640762201eaa7bb3 \
-                    sha1    01672a44844c5a663f67043972d7b15266f65c28 \
-                    rmd160  368f769c0bb6eaaddca0627bf8480e178558c7ad \
+                    md5     d7d0f9c790971cdc0adb0ba49ecedaf6 \
+                    sha1    0fe47cc0bc568d46421bee44f3a0df3b2e245cc1 \
+                    rmd160  b142243ec63556c5070ffb0f7da60e8d35a22038 \
                     gcc-fortran-${version}.tar.bz2 \
-                    md5     cc801a8814ccc1b4f81f3c8a57cee429 \
-                    sha1    292511c76a3f2797201dddd0ae826c97fdac6320 \
-                    rmd160  efd4d2456452e9ac66842f7b8bc0df03a87fdc42 \
+                    md5     7ec02efa15cbefc8d68ef2a261c9e7fc \
+                    sha1    7d178372332e991432a93d82513da2bab9ea53c4 \
+                    rmd160  0492921259b940d4a39a010e3f7c893df35c5ddd \
                     gcc-g++-${version}.tar.bz2 \
-                    md5     4457a96af1244e4e5d4213ce7d0ced9e \
-                    sha1    8599f936c66520d328752db5222ef509be917a76 \
-                    rmd160  7b48d44c800a926db216484227ea789e10ca5c0b \
+                    md5     e92e0bcbc915b3ca1a7c7b6e3d82ed07 \
+                    sha1    9bd89fe21472c71ca7a7955cabf8813872b5663f \
+                    rmd160  fe2c6eff683507be825ae45198ff1d84e21839ad \
                     gcc-java-${version}.tar.bz2 \
-                    md5     59ce09dab13e8711938b556e206aab91 \
-                    sha1    ef51c9ade9e9eaa16eddf841f7fa94e83c49aab7 \
-                    rmd160  9287fc3d29e5bb69bb085c6c75f0e4ed41bdc4e4 \
+                    md5     b48455d9eab4b2fb8c6696e571d3ecc3 \
+                    sha1    d0715e9b78418945ff0ba3a4a1da8116d2d8fd13 \
+                    rmd160  61c23146727213fd05a647463e0ec1c8e8e73452 \
                     gcc-objc-${version}.tar.bz2 \
-                    md5     fd6a4db8468ce6b96ad33c14b018ebd8 \
-                    sha1    0aae17fc79c1d7e3b02073fccecd91e80cdc31d0 \
-                    rmd160  bdc05738a54ad1631505be94bdaccbc44603b337
+                    md5     a1102de51a7fd9c98f4c6aa797dfa883 \
+                    sha1    6dd1bc286a535936c84a0e1532b2034881d09ae1 \
+                    rmd160  d58496f1bcd1fbf34cb753ceb9a24f5fdf75cd2b \
+                    ${ecj} \
+                    md5     d7cd6a27c8801e66cbaa964a039ecfdb \
+                    sha1    58c1d79c64c8cd718550f32a932ccfde8d1e6449 \
+                    rmd160  d3f4da657f086b6423f74e93f001132f4855368a
 
 use_bzip2		yes
@@ -54,4 +61,7 @@
 
 depends_lib		port:gmp port:mpfr port:libiconv port:libmpc
+
+patchfiles		tls_configure_fix.diff
+patch.dir		${workpath}/gcc-${version}
 
 set major		4.6
@@ -65,4 +75,8 @@
     configure.objc_archflags
     configure.pre_args-append --build=${build_arch}-apple-darwin${os.major}
+}
+
+post-extract {
+	copy ${distpath}/${ecj} ${workpath}/gcc-${version}/ecj.jar
 }
 
@@ -117,4 +131,8 @@
 }
 
+platform darwin 10 {
+	configure.args-append --enable-fully-dynamic-string
+}
+
 # due to popular request - untested for the BETA; will be removed as soon as other languages than C compile successfuly
 variant gfortran conflicts java \
Index: trunk/dports/lang/gcc46/files/tls_configure_fix.diff
===================================================================
--- trunk/dports/lang/gcc46/files/tls_configure_fix.diff	(revision 68778)
+++ trunk/dports/lang/gcc46/files/tls_configure_fix.diff	(revision 68778)
@@ -0,0 +1,121 @@
+--- libgomp/configure.orig	2010-06-03 13:05:23.000000000 -0400
++++ libgomp/configure	2010-06-03 13:41:14.000000000 -0400
+@@ -15379,7 +15379,8 @@
+ /* end confdefs.h.  */
+ #include <pthread.h>
+ 		__thread int a;
+-		static int *a_in_other_thread;
++		int *a_in_other_thread;
++		int *a_in_main_thread;
+ 		static void *
+ 		thread_func (void *arg)
+ 		{
+@@ -15391,11 +15392,10 @@
+ {
+ pthread_t thread;
+ 		void *thread_retval;
+-		int *a_in_main_thread;
++		a_in_main_thread = &a;
+ 		if (pthread_create (&thread, (pthread_attr_t *)0,
+ 				    thread_func, (void *)0))
+ 		  return 0;
+-		a_in_main_thread = &a;
+ 		if (pthread_join (thread, &thread_retval))
+ 		  return 0;
+ 		return (a_in_other_thread == a_in_main_thread);
+--- libjava/configure.orig	2010-06-03 13:50:53.000000000 -0400
++++ libjava/configure	2010-06-03 13:51:44.000000000 -0400
+@@ -24341,7 +24341,8 @@
+ /* end confdefs.h.  */
+ #include <pthread.h>
+ 		__thread int a;
+-		static int *a_in_other_thread;
++		int *a_in_other_thread;
++		int *a_in_main_thread;
+ 		static void *
+ 		thread_func (void *arg)
+ 		{
+@@ -24353,11 +24354,10 @@
+ {
+ pthread_t thread;
+ 		void *thread_retval;
+-		int *a_in_main_thread;
++		a_in_main_thread = &a;
+ 		if (pthread_create (&thread, (pthread_attr_t *)0,
+ 				    thread_func, (void *)0))
+ 		  return 0;
+-		a_in_main_thread = &a;
+ 		if (pthread_join (thread, &thread_retval))
+ 		  return 0;
+ 		return (a_in_other_thread == a_in_main_thread);
+--- libstdc++-v3/configure.orig	2010-06-03 13:48:33.000000000 -0400
++++ libstdc++-v3/configure	2010-06-03 13:55:44.000000000 -0400
+@@ -25572,7 +25572,8 @@
+ /* end confdefs.h.  */
+ #include <pthread.h>
+ 		__thread int a;
+-		static int *a_in_other_thread;
++		int *a_in_other_thread;
++		int *a_in_main_thread;
+ 		static void *
+ 		thread_func (void *arg)
+ 		{
+@@ -25584,11 +25585,10 @@
+ {
+ pthread_t thread;
+ 		void *thread_retval;
+-		int *a_in_main_thread;
++		a_in_main_thread = &a;
+ 		if (pthread_create (&thread, (pthread_attr_t *)0,
+ 				    thread_func, (void *)0))
+ 		  return 0;
+-		a_in_main_thread = &a;
+ 		if (pthread_join (thread, &thread_retval))
+ 		  return 0;
+ 		return (a_in_other_thread == a_in_main_thread);
+@@ -44510,7 +44510,8 @@
+ /* end confdefs.h.  */
+ #include <pthread.h>
+ 		__thread int a;
+-		static int *a_in_other_thread;
++		int *a_in_other_thread;
++		int *a_in_main_thread;
+ 		static void *
+ 		thread_func (void *arg)
+ 		{
+@@ -44522,11 +44523,10 @@
+ {
+ pthread_t thread;
+ 		void *thread_retval;
+-		int *a_in_main_thread;
++		a_in_main_thread = &a;
+ 		if (pthread_create (&thread, (pthread_attr_t *)0,
+ 				    thread_func, (void *)0))
+ 		  return 0;
+-		a_in_main_thread = &a;
+ 		if (pthread_join (thread, &thread_retval))
+ 		  return 0;
+ 		return (a_in_other_thread == a_in_main_thread);
+@@ -50595,7 +50595,8 @@
+ /* end confdefs.h.  */
+ #include <pthread.h>
+ 		__thread int a;
+-		static int *a_in_other_thread;
++		int *a_in_other_thread;
++		int *a_in_main_thread;
+ 		static void *
+ 		thread_func (void *arg)
+ 		{
+@@ -50607,11 +50608,10 @@
+ {
+ pthread_t thread;
+ 		void *thread_retval;
+-		int *a_in_main_thread;
++		a_in_main_thread = &a;
+ 		if (pthread_create (&thread, (pthread_attr_t *)0,
+ 				    thread_func, (void *)0))
+ 		  return 0;
+-		a_in_main_thread = &a;
+ 		if (pthread_join (thread, &thread_retval))
+ 		  return 0;
+ 		return (a_in_other_thread == a_in_main_thread);
