[28474] trunk/base/src/port1.0/portconfigure.tcl

source_changes at macosforge.org source_changes at macosforge.org
Sat Sep 1 05:25:06 PDT 2007


Revision: 28474
          http://trac.macosforge.org/projects/macports/changeset/28474
Author:   mww at macports.org
Date:     2007-09-01 05:25:06 -0700 (Sat, 01 Sep 2007)

Log Message:
-----------
rewrite compiler selection process: now allows to override any configure-related variable in the Portfile even if a compiler collection was chosen

Modified Paths:
--------------
    trunk/base/src/port1.0/portconfigure.tcl

Modified: trunk/base/src/port1.0/portconfigure.tcl
===================================================================
--- trunk/base/src/port1.0/portconfigure.tcl	2007-09-01 09:08:37 UTC (rev 28473)
+++ trunk/base/src/port1.0/portconfigure.tcl	2007-09-01 12:25:06 UTC (rev 28474)
@@ -86,6 +86,30 @@
     ui_msg "$UI_PREFIX [format [msgcat::mc "Configuring %s"] [option portname]]"
 }
 
+# internal function for setting compiler variables; use like "_set_compiler string var val var val .."
+# this function will NOT override explicitely set variables from the portfile
+proc select_compiler {info args} {
+    global configure.cc configure.cxx configure.cpp configure.f77 configure.f90 configure.fc
+    ui_debug "Using compiler '$info'"
+    set i 0
+    foreach value $args {
+        if {0==$i} {
+            set comp $value
+            set i 1
+        } else {
+            switch -exact $comp {
+                cc  { if {""==${configure.cc}}  { set configure.cc $value } }
+                cxx { if {""==${configure.cxx}} { set configure.cxx $value } }
+                cpp { if {""==${configure.cpp}} { set configure.cpp $value } }
+                fc  { if {""==${configure.fc}}  { set configure.fc $value } }
+                f77 { if {""==${configure.f77}} { set configure.f77 $value } }
+                f90 { if {""==${configure.f90}} { set configure.f90 $value } }
+            }
+            set i 0
+        }
+    }
+}
+
 proc configure_main {args} {
     global [info globals]
     global worksrcpath use_configure use_autoconf use_automake use_xmkmf
@@ -109,65 +133,55 @@
     # select a compiler collection
     switch -exact ${configure.compiler} {
         gcc-3.3 {
-            ui_debug "Using Mac OS X gcc 3.3"
-            set configure.cc "/usr/bin/gcc-3.3"
-            set configure.cxx "/usr/bin/g++-3.3"
-            set configure.cpp "/usr/bin/cpp-3.3" }
+            select_compiler "Mac OS X gcc 3.3" \
+                cc  /usr/bin/gcc-3.3 \
+                cxx /usr/bin/g++-3.3 \
+                cpp /usr/bin/cpp-3.3 }
         gcc-4.0 {
-            ui_debug "Using Mac OS X gcc 4.0"
-            set configure.cc "/usr/bin/gcc-4.0"
-            set configure.cxx "/usr/bin/g++-4.0"
-            set configure.cpp "/usr/bin/cpp-4.0" }
+            select_compiler "Mac OS X gcc 4.0" \
+                cc  /usr/bin/gcc-4.0 \
+                cxx /usr/bin/g++-4.0 \
+                cpp /usr/bin/cpp-4.0 }
         apple-gcc-3.3 {
-            ui_debug "Using MacPorts Apple gcc 3.3"
-            set configure.cc "${prefix}/bin/gcc-apple-3.3"
-            set configure.cpp "${prefix}/bin/cpp-apple-3.3" }
+            select_compiler "MacPorts Apple gcc 3.3" \
+                cc  ${prefix}/bin/gcc-apple-3.3 \
+                cpp ${prefix}/bin/cpp-apple-3.3 }
         apple-gcc-4.0 {
-            ui_debug "Using MacPorts Apple gcc 4.0"
-            set configure.cc "${prefix}/bin/gcc-apple-4.0"
-            set configure.cpp "${prefix}/bin/cpp-apple-4.0" }
-        macports-gcc-3.3 {
-            ui_debug "Using MacPorts gcc 3.3"
-            set configure.cc "${prefix}/bin/gcc-mp-3.3"
-            set configure.cxx "${prefix}/bin/g++-mp-3.3"
-            set configure.cpp "${prefix}/bin/cpp-mp-3.3" }
-        macports-gcc-3.4 {
-            ui_debug "Using MacPorts gcc 3.4"
-            set configure.cc "${prefix}/bin/gcc-mp-3.4"
-            set configure.cxx "${prefix}/bin/g++-mp-3.4"
-            set configure.cpp "${prefix}/bin/cpp-mp-3.4" }
+            select_compiler "MacPorts Apple gcc 4.0" \
+                cc  ${prefix}/bin/gcc-apple-4.0 \
+                cpp ${prefix}/bin/cpp-apple-4.0 }
         macports-gcc-4.0 {
-            ui_debug "Using MacPorts gcc 4.0"
-            set configure.cc "${prefix}/bin/gcc-mp-4.0"
-            set configure.cxx "${prefix}/bin/g++-mp-4.0"
-            set configure.cpp "${prefix}/bin/cpp-mp-4.0"
-            set configure.fc "${prefix}/bin/gfortran-mp-4.0"
-            set configure.f77 "${prefix}/bin/gfortran-mp-4.0"
-            set configure.f90 "${prefix}/bin/gfortran-mp-4.0" }
+            select_compiler "MacPorts gcc 4.0" \
+                cc  ${prefix}/bin/gcc-mp-4.0 \
+                cxx ${prefix}/bin/g++-mp-4.0 \
+                cpp ${prefix}/bin/cpp-mp-4.0 \
+                fc  ${prefix}/bin/gfortran-mp-4.0 \
+                f77 ${prefix}/bin/gfortran-mp-4.0 \
+                f90 ${prefix}/bin/gfortran-mp-4.0 }
         macports-gcc-4.1 {
-            ui_debug "Using MacPorts gcc 4.1"
-            set configure.cc "${prefix}/bin/gcc-mp-4.1"
-            set configure.cxx "${prefix}/bin/g++-mp-4.1"
-            set configure.cpp "${prefix}/bin/cpp-mp-4.1"
-            set configure.fc "${prefix}/bin/gfortran-mp-4.1"
-            set configure.f77 "${prefix}/bin/gfortran-mp-4.1"
-            set configure.f90 "${prefix}/bin/gfortran-mp-4.1" }
+            select_compiler "MacPorts gcc 4.1" \
+                cc  ${prefix}/bin/gcc-mp-4.1 \
+                cxx ${prefix}/bin/g++-mp-4.1 \
+                cpp ${prefix}/bin/cpp-mp-4.1 \
+                fc  ${prefix}/bin/gfortran-mp-4.1 \
+                f77 ${prefix}/bin/gfortran-mp-4.1 \
+                f90 ${prefix}/bin/gfortran-mp-4.1 }
         macports-gcc-4.2 {
-            ui_debug "Using MacPorts gcc 4.2"
-            set configure.cc "${prefix}/bin/gcc-mp-4.2"
-            set configure.cxx "${prefix}/bin/g++-mp-4.2"
-            set configure.cpp "${prefix}/bin/cpp-mp-4.2"
-            set configure.fc "${prefix}/bin/gfortran-mp-4.2"
-            set configure.f77 "${prefix}/bin/gfortran-mp-4.2"
-            set configure.f90 "${prefix}/bin/gfortran-mp-4.2" }
+            select_compiler "MacPorts gcc 4.2" \
+                cc  ${prefix}/bin/gcc-mp-4.2 \
+                cxx ${prefix}/bin/g++-mp-4.2 \
+                cpp ${prefix}/bin/cpp-mp-4.2 \
+                fc  ${prefix}/bin/gfortran-mp-4.2 \
+                f77 ${prefix}/bin/gfortran-mp-4.2 \
+                f90 ${prefix}/bin/gfortran-mp-4.2 }
         macports-gcc-4.3 {
-            ui_debug "Using MacPorts gcc 4.3"
-            set configure.cc "${prefix}/bin/gcc-mp-4.3"
-            set configure.cxx "${prefix}/bin/g++-mp-4.3"
-            set configure.cpp "${prefix}/bin/cpp-mp-4.3"
-            set configure.fc "${prefix}/bin/gfortran-mp-4.3"
-            set configure.f77 "${prefix}/bin/gfortran-mp-4.3"
-            set configure.f90 "${prefix}/bin/gfortran-mp-4.3" }
+            select_compiler "MacPorts gcc 4.3" \
+                cc  ${prefix}/bin/gcc-mp-4.3 \
+                cxx ${prefix}/bin/g++-mp-4.3 \
+                cpp ${prefix}/bin/cpp-mp-4.3 \
+                fc  ${prefix}/bin/gfortran-mp-4.3 \
+                f77 ${prefix}/bin/gfortran-mp-4.3 \
+                f90 ${prefix}/bin/gfortran-mp-4.3 }
         default {
             ui_debug "No compiler collection selected explicitly" }
     }

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20070901/850d0d25/attachment.html


More information about the macports-changes mailing list