Index: /trunk/dports/lang/gcc42/Portfile
===================================================================
--- /trunk/dports/lang/gcc42/Portfile	(revision 97686)
+++ /trunk/dports/lang/gcc42/Portfile	(revision 97687)
@@ -6,5 +6,5 @@
 name			gcc42
 version			4.2.4
-revision		5
+revision		6
 platforms		darwin
 categories		lang
@@ -42,5 +42,5 @@
 
 depends_lib		port:gmp port:mpfr port:libiconv
-depends_run		port:gcc_select port:ld64 port:cctools
+depends_run		port:gcc_select port:ld64 port:cctools path:lib/libstdc++.dylib:libstdcxx
 
 depends_skip_archcheck-append gcc_select ld64 cctools
@@ -120,7 +120,9 @@
     eval delete [glob ${destroot}${prefix}/lib/${name}/libstdc++*]
 
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.dylib
+
     # This symlink is provided as a transition aide and will be removed
     # with a future revision of this port.
-    ln -s /usr/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
 }
 
Index: /trunk/dports/lang/gcc43/Portfile
===================================================================
--- /trunk/dports/lang/gcc43/Portfile	(revision 97686)
+++ /trunk/dports/lang/gcc43/Portfile	(revision 97687)
@@ -6,5 +6,5 @@
 name                gcc43
 version             4.3.6
-revision            5
+revision            6
 platforms           darwin
 categories          lang
@@ -55,5 +55,5 @@
 
 depends_lib         port:gmp port:mpfr port:libiconv
-depends_run         port:gcc_select port:ld64 port:cctools
+depends_run         port:gcc_select port:ld64 port:cctools path:lib/libstdc++.dylib:libstdcxx
 
 depends_skip_archcheck-append gcc_select ld64 cctools
@@ -140,7 +140,9 @@
     eval delete [glob ${destroot}${prefix}/lib/${name}/libstdc++*]
 
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.dylib
+
     # This symlink is provided as a transition aide and will be removed
     # with a future revision of this port.
-    ln -s /usr/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
 }
 
Index: /trunk/dports/lang/gcc44/Portfile
===================================================================
--- /trunk/dports/lang/gcc44/Portfile	(revision 97686)
+++ /trunk/dports/lang/gcc44/Portfile	(revision 97687)
@@ -7,5 +7,5 @@
 epoch               1
 version             4.4.7
-revision            3
+revision            4
 platforms           darwin
 categories          lang
@@ -56,5 +56,5 @@
 
 depends_lib         port:gmp port:mpfr port:libiconv
-depends_run         port:gcc_select port:ld64 port:cctools
+depends_run         port:gcc_select port:ld64 port:cctools path:lib/libstdc++.dylib:libstdcxx
 
 depends_skip_archcheck-append gcc_select ld64 cctools
@@ -145,7 +145,9 @@
     eval delete [glob ${destroot}${prefix}/lib/${name}/libstdc++*]
 
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.dylib
+
     # This symlink is provided as a transition aide and will be removed
     # with a future revision of this port.
-    ln -s /usr/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
 }
 
Index: /trunk/dports/lang/gcc45/Portfile
===================================================================
--- /trunk/dports/lang/gcc45/Portfile	(revision 97686)
+++ /trunk/dports/lang/gcc45/Portfile	(revision 97687)
@@ -7,5 +7,5 @@
 epoch               1
 version             4.5.4
-revision            3
+revision            4
 platforms           darwin
 categories          lang
@@ -61,5 +61,5 @@
 
 depends_lib         port:gmp port:mpfr port:libiconv port:libmpc port:ppl
-depends_run         port:gcc_select port:ld64 port:cctools
+depends_run         port:gcc_select port:ld64 port:cctools path:lib/libstdc++.dylib:libstdcxx
 
 depends_skip_archcheck-append gcc_select ld64 cctools
@@ -150,7 +150,9 @@
     eval delete [glob ${destroot}${prefix}/lib/${name}/libstdc++*]
 
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.dylib
+
     # This symlink is provided as a transition aide and will be removed
     # with a future revision of this port.
-    ln -s /usr/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
 }
 
Index: /trunk/dports/lang/gcc46/Portfile
===================================================================
--- /trunk/dports/lang/gcc46/Portfile	(revision 97686)
+++ /trunk/dports/lang/gcc46/Portfile	(revision 97687)
@@ -7,5 +7,5 @@
 epoch               1
 version             4.6.3
-revision            6
+revision            7
 platforms           darwin
 categories          lang
@@ -47,5 +47,5 @@
 
 depends_lib         port:gmp port:mpfr port:libiconv port:libmpc port:ppl port:cloog
-depends_run         port:gcc_select port:ld64 port:cctools
+depends_run         port:gcc_select port:ld64 port:cctools path:lib/libstdc++.dylib:libstdcxx
 
 depends_skip_archcheck-append gcc_select ld64 cctools
@@ -129,7 +129,9 @@
     eval delete [glob ${destroot}${prefix}/lib/${name}/libstdc++*]
 
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.dylib
+
     # This symlink is provided as a transition aide and will be removed
     # with a future revision of this port.
-    ln -s /usr/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
 }
 
Index: /trunk/dports/lang/gcc47/Portfile
===================================================================
--- /trunk/dports/lang/gcc47/Portfile	(revision 97686)
+++ /trunk/dports/lang/gcc47/Portfile	(revision 97687)
@@ -5,7 +5,8 @@
 
 name                gcc47
+subport             libstdcxx {}
 epoch               1
 version             4.7.1
-revision            4
+revision            5
 platforms           darwin
 categories          lang
@@ -45,5 +46,5 @@
 
 depends_lib         port:gmp port:mpfr port:libiconv port:libmpc port:ppl port:cloog
-depends_run         port:gcc_select port:ld64 port:cctools
+depends_run         port:gcc_select port:ld64 port:cctools path:lib/libstdc++.dylib:libstdcxx
 
 depends_skip_archcheck-append gcc_select ld64 cctools
@@ -118,4 +119,21 @@
 destroot.target     install install-info-host
 
+# TODO: Optimize this.  We don't need to actually bootstrap gcc to build libstdc++
+if {${subport} == "libstdcxx"} {
+    depends_run-delete port:${subport}
+
+    configure.args-delete --libdir=${prefix}/lib/${name}
+
+    configure.args-delete --enable-languages=c,c++,objc,obj-c++,lto,fortran,java
+    configure.args-append --enable-languages=c++
+
+    destroot.target     install-target-libstdc++-v3
+
+    post-destroot {
+        eval delete [glob ${destroot}${prefix}/lib/*{a,py}]
+        file delete -force ${destroot}${prefix}/share/gcc-${major}
+        file delete -force ${destroot}${prefix}/include/${name}
+    }
+} else {
 post-destroot {
     file delete -force ${destroot}${prefix}/share/man/man7 \
@@ -129,11 +147,15 @@
     eval delete [glob ${destroot}${prefix}/lib/${name}/libstdc++*]
 
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.dylib
+
     # This symlink is provided as a transition aide and will be removed
     # with a future revision of this port.
-    ln -s /usr/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
 }
 
 select.group        gcc
 select.file         ${filespath}/mp-${name}
+
+}
 
 platform powerpc {
Index: /trunk/dports/lang/gcc48/Portfile
===================================================================
--- /trunk/dports/lang/gcc48/Portfile	(revision 97686)
+++ /trunk/dports/lang/gcc48/Portfile	(revision 97687)
@@ -5,6 +5,7 @@
 
 name                gcc48
+subport             libstdcxx-devel {}
 version             4.8-20120909
-revision            2
+revision            3
 platforms           darwin
 categories          lang
@@ -33,5 +34,5 @@
 
 depends_lib         port:gmp port:mpfr port:libiconv port:libmpc port:ppl port:cloog
-depends_run         port:gcc_select port:ld64 port:cctools
+depends_run         port:gcc_select port:ld64 port:cctools port:libstdcxx-devel
 
 depends_skip_archcheck-append gcc_select ld64 cctools
@@ -99,4 +100,21 @@
 destroot.target     install install-info-host
 
+# TODO: Optimize this.  We don't need to actually bootstrap gcc to build libstdc++
+if {${subport} == "libstdcxx-devel"} {
+    depends_run-delete port:${subport}
+
+    configure.args-delete --libdir=${prefix}/lib/${name}
+
+    configure.args-delete --enable-languages=c,c++,objc,obj-c++,lto,fortran,java
+    configure.args-append --enable-languages=c++
+
+    destroot.target     install-target-libstdc++-v3
+
+    post-destroot {
+        eval delete [glob ${destroot}${prefix}/lib/*{a,py}]
+        file delete -force ${destroot}${prefix}/share/gcc-${major}
+        file delete -force ${destroot}${prefix}/include/${name}
+    }
+} else {
 post-destroot {
     file delete -force ${destroot}${prefix}/share/man/man7 \
@@ -110,11 +128,15 @@
     eval delete [glob ${destroot}${prefix}/lib/${name}/libstdc++*]
 
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.dylib
+
     # This symlink is provided as a transition aide and will be removed
     # with a future revision of this port.
-    ln -s /usr/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
+    ln -s ${prefix}/lib/libstdc++.6.dylib ${destroot}${prefix}/lib/${name}/libstdc++.6.dylib
 }
 
 select.group        gcc
 select.file         ${filespath}/mp-${name}
+
+}
 
 platform powerpc {
