<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[118088] trunk/dports/math/eigen3</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/118088">118088</a></dd>
<dt>Author</dt> <dd>eborisch@macports.org</dd>
<dt>Date</dt> <dd>2014-03-21 12:46:39 -0700 (Fri, 21 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>eigen3: Move to cmake-based installs by default. Add missing unsupported directories to cmake install. Use compilers portgroup to support compiler variants (for +blas)</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkdportsmatheigen3Portfile">trunk/dports/math/eigen3/Portfile</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/dports/math/eigen3/files/</li>
<li><a href="#trunkdportsmatheigen3filesCMakeListseigenvaluestxt">trunk/dports/math/eigen3/files/CMakeLists-eigenvalues.txt</a></li>
<li><a href="#trunkdportsmatheigen3filesunsupportedpatch">trunk/dports/math/eigen3/files/unsupported.patch</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkdportsmatheigen3Portfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/math/eigen3/Portfile (118087 => 118088)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/math/eigen3/Portfile        2014-03-21 19:27:20 UTC (rev 118087)
+++ trunk/dports/math/eigen3/Portfile        2014-03-21 19:46:39 UTC (rev 118088)
</span><span class="lines">@@ -2,11 +2,12 @@
</span><span class="cx"> # $Id$
</span><span class="cx"> 
</span><span class="cx"> PortSystem          1.0
</span><ins>+PortGroup           compilers 1.0
</ins><span class="cx"> 
</span><span class="cx"> name                eigen3
</span><span class="cx"> version             3.2.1
</span><del>-revision            0
-license             {{MPL-2} {LGPL-3+}}
</del><ins>+revision            1
+license             MPL-2 LGPL-3+
</ins><span class="cx"> categories          math science
</span><span class="cx"> maintainers         eborisch \
</span><span class="cx">                     openmaintainer
</span><span class="lines">@@ -34,11 +35,13 @@
</span><span class="cx"> livecheck.url       ${homepage}index.php?title=Main_Page
</span><span class="cx"> livecheck.regex     {stable release.*Eigen (\d+(?:\.\d+)*).}
</span><span class="cx"> 
</span><ins>+patchfiles          unsupported.patch
+
</ins><span class="cx"> subport eigen3-devel {
</span><span class="cx">     conflicts           eigen3
</span><span class="cx">     # No current development version (other than rolling snapshot)
</span><span class="cx">     version             3.2.1
</span><del>-    revision            0
</del><ins>+    revision            1
</ins><span class="cx">     # rc version seen as older than beta
</span><span class="cx">     epoch               1 
</span><span class="cx">     distname            ${version}
</span><span class="lines">@@ -49,140 +52,77 @@
</span><span class="cx">         {development release.*Eigen (([\d]|\.|beta|rc|-)+)\.}
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# Install via CMake by default. Slower than a header-only install, but makes
-# other CMake-based builds happy
-default_variants    +cmake
-
-# Variants
-variant gcc44 description {Use MacPorts' gcc44 compilers for +blas} \
-    conflicts gcc45 gcc46 gcc47 gcc48 gcc49 {
-    configure.compiler    macports-gcc-4.4
-}
-
-variant gcc45 description {Use MacPorts' gcc45 compilers for +blas} \
-    conflicts gcc44 gcc46 gcc47 gcc48 gcc49 {
-    configure.compiler    macports-gcc-4.5
-}
-
-variant gcc46 description {Use MacPorts' gcc46 compilers for +blas} \
-    conflicts gcc44 gcc45 gcc47 gcc48 gcc49 {
-    configure.compiler    macports-gcc-4.6
-}
-
-variant gcc47 description {Use MacPorts' gcc47 compilers for +blas} \
-    conflicts gcc44 gcc45 gcc46 gcc48 gcc49 {
-    configure.compiler    macports-gcc-4.7
-}
-
-variant gcc48 description {Use MacPorts' gcc48 compilers for +blas} \
-    conflicts gcc44 gcc45 gcc46 gcc47 gcc49 {
-    configure.compiler    macports-gcc-4.8
-}
-
-variant gcc49 description {Use MacPorts' gcc49 compilers for +blas} \
-    conflicts gcc44 gcc45 gcc46 gcc47 gcc48 {
-    configure.compiler    macports-gcc-4.9
-}
-
-variant doc \
-    description \
-    {Place local documentation into &lt;prefix&gt;/share/doc/eigen3/html}\
-    requires cmake {
</del><ins>+variant doc description \
+    {Place local documentation into &lt;prefix&gt;/share/doc/eigen3/html} {
</ins><span class="cx">         depends_build-append    port:doxygen \
</span><span class="cx">                                 port:texlive-latex \
</span><span class="cx">                                 path:bin/dot:graphviz
</span><span class="cx">         build.target-append     doc
</span><del>-
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> variant blas description \
</span><del>-    {Build eigen-based blas (libeigen_blas*) : needs +gcc4N} \
-    requires cmake {
-    if {![variant_isset gcc44] &amp;&amp;
-        ![variant_isset gcc45] &amp;&amp;
-        ![variant_isset gcc46] &amp;&amp;
-        ![variant_isset gcc47] &amp;&amp;
-        ![variant_isset gcc48] &amp;&amp;
-        ![variant_isset gcc49]} {
-        ui_error &quot;eigen3: To use +blas please select +gcc4\[456789\]!!!&quot;
-        return -code error
-    } else {
</del><ins>+    {Build eigen's blas (libeigen_blas*) : needs +gccNN, +g95, or +gfortan} {
</ins><span class="cx">         PortGroup               muniversal 1.0
</span><span class="cx">         build.target-append     blas
</span><span class="cx">         universal_variant       yes
</span><span class="cx">         configure.universal_args &quot;&quot;
</span><del>-    }
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-if {([variant_isset gcc44] ||
-     [variant_isset gcc45] ||
-     [variant_isset gcc46] || 
-     [variant_isset gcc47] || 
-     [variant_isset gcc48] || 
-     [variant_isset gcc49]) &amp;&amp; ![variant_isset blas]} {
-    ui_warn &quot;eigen3: gcc4* only impacts +blas&quot;
-}
</del><ins>+### CMAKE SUPPORT
</ins><span class="cx"> 
</span><del>-variant cmake description \
-{CMake-based install: Disabling removes CMake support} {
-    # Not using cmake portgroup as it sets -DCMAKE_OSX_ARCHITECTURES
-    # in a way we don't seem to be able disable.
-    set cmake_share_module_dir ${prefix}/share/cmake/modules
</del><ins>+# Install is only done via cmake (depends_build) now. Since packages are
+# available for the default install -- which is essentially just headers --
+# users who just install the default won't need. Users who wanted more than
+# default (+doc, +blas) would have needed cmake in the past, anyway.
</ins><span class="cx"> 
</span><del>-    depends_build-append port:cmake
</del><ins>+# Not using cmake portgroup as it sets -DCMAKE_OSX_ARCHITECTURES in a way we
+# don't seem to be able disable.
+set cmake_share_module_dir ${prefix}/share/cmake/modules
</ins><span class="cx"> 
</span><del>-    configure.cmd       cmake
</del><ins>+depends_build-append port:cmake
</ins><span class="cx"> 
</span><del>-    configure.pre_args  -DCMAKE_INSTALL_PREFIX=${prefix}
</del><ins>+configure.cmd       cmake
</ins><span class="cx"> 
</span><del>-    configure.args      -DCMAKE_VERBOSE_MAKEFILE=ON \
-                        -DCMAKE_COLOR_MAKEFILE=ON \
-                        -DCMAKE_BUILD_TYPE=Release \
-                        -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-                        -DCMAKE_INSTALL_NAME_DIR=${prefix}/lib \
-                        -DCMAKE_SYSTEM_PREFIX_PATH=\&quot;${prefix}\;/usr\&quot; \
-                        -DCMAKE_MODULE_PATH=${cmake_share_module_dir} \
-                        -Wno-dev
</del><ins>+configure.pre_args  -DCMAKE_INSTALL_PREFIX=${prefix}
</ins><span class="cx"> 
</span><del>-    # Out of source build
-    configure.args-append   ../eigen_src
</del><ins>+configure.args      -DCMAKE_VERBOSE_MAKEFILE=ON \
+                    -DCMAKE_COLOR_MAKEFILE=ON \
+                    -DCMAKE_BUILD_TYPE=Release \
+                    -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
+                    -DCMAKE_INSTALL_NAME_DIR=${prefix}/lib \
+                    -DCMAKE_SYSTEM_PREFIX_PATH=\&quot;${prefix}\;/usr\&quot; \
+                    -DCMAKE_MODULE_PATH=${cmake_share_module_dir} \
+                    -Wno-dev
</ins><span class="cx"> 
</span><del>-    # Enable test cases if we've actually configured
-    test.run            yes
-    test.target         check
-    test.env-append     EIGEN_MAKE_ARGS=-j{build.jobs} \
-                        EIGEN_CTEST_ARGS=-j{build.jobs}
</del><ins>+# Out of source build
+configure.args-append   ../eigen_src
</ins><span class="cx"> 
</span><del>-    # Enable parallel builds
-    build.env-append    EIGEN_MAKE_ARGS=-j{build.jobs}
-}
</del><ins>+test.run            yes
+test.target         check
+test.env-append     EIGEN_MAKE_ARGS=-j{build.jobs} \
+                    EIGEN_CTEST_ARGS=-j{build.jobs}
</ins><span class="cx"> 
</span><del>-# Conditional phase modifications
-if {![variant_isset blas]} {
</del><ins>+# Enable parallel builds
+build.env-append    EIGEN_MAKE_ARGS=-j{build.jobs}
+
+### END CMAKE SUPPORT
+
+# Setup compilers support / requirements
+
+if {[variant_isset blas]} {
+    compilers.choose    cc cxx cpp fc f77 f90
+    compilers.setup     require_fortran
+} elseif {[variant_isset doc]} {
+    compilers.choose    cc cxx cpp
+    compilers.setup     
+} else { 
</ins><span class="cx">     # No architecture-dependent files installed; set noarch
</span><span class="cx">     supported_archs     noarch
</span><ins>+    compilers.setup
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-# Are we doing a header-only or cmake (for 'port test' or +doc/+blas) build?
-if {![variant_isset cmake]} {
-    # We can skip everything and just copy the headers -- fast!
-    use_configure       no
-    build {}
-    destroot {
-        set incldir ${destroot}${prefix}/include/${name}
-        xinstall -d ${incldir}
-        file copy ${workpath}/eigen_src/Eigen ${incldir}
-        file copy ${workpath}/eigen_src/unsupported ${incldir}
-    }
</del><ins>+### Extra phases
</ins><span class="cx"> 
</span><del>-    # Fail with message if user tries to test
-    test.run            yes
-    test {
-        ui_error &quot;!!! TESTING IS UNSUPPORTED WITHOUT +cmake VARIANT !!!&quot;
-    }
-}
-
-# Phase modifications
</del><span class="cx"> pre-extract {
</span><span class="cx">     file mkdir ${worksrcpath}
</span><span class="cx"> }
</span><span class="lines">@@ -193,10 +133,12 @@
</span><span class="cx"> post-patch {
</span><span class="cx">     # Move directory for out-of-source build
</span><span class="cx">     move ${worksrcpath} ${workpath}/eigen_src
</span><ins>+    copy ${filespath}/CMakeLists-eigenvalues.txt \
+        ${workpath}/eigen_src/unsupported/Eigen/src/Eigenvalues/CMakeLists.txt
</ins><span class="cx">     file mkdir ${worksrcpath}
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# Install licenses and documentation (if +doc)
</del><ins>+# Install licenses and (if +doc) documentation
</ins><span class="cx"> pre-destroot {
</span><span class="cx">     set build_suffix {}
</span><span class="cx">     if {![info exists universal_archs_to_use]} {
</span><span class="lines">@@ -233,4 +175,16 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+# Grab extra items install doesn't out of unsupported
+post-destroot {
+    foreach n {README.txt bench doc test} {
+        file copy ${workpath}/eigen_src/unsupported/${n} \
+            ${destroot}${prefix}/include/${name}/unsupported
+    }
+}
</ins><span class="cx"> 
</span><ins>+notes {
+    This product includes software developed by the University of Chicago, as
+    Operator of Argonne National Laboratory.
+}   
+
</ins></span></pre></div>
<a id="trunkdportsmatheigen3filesCMakeListseigenvaluestxt"></a>
<div class="addfile"><h4>Added: trunk/dports/math/eigen3/files/CMakeLists-eigenvalues.txt (0 => 118088)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/math/eigen3/files/CMakeLists-eigenvalues.txt                                (rev 0)
+++ trunk/dports/math/eigen3/files/CMakeLists-eigenvalues.txt        2014-03-21 19:46:39 UTC (rev 118088)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+FILE(GLOB Eigen_Eigenvalues_SRCS &quot;*.h&quot;)
+
+INSTALL(FILES
+  ${Eigen_Eigenvalues_SRCS}
+  DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/src/Eigenvalues COMPONENT Devel
+  )
</ins></span></pre></div>
<a id="trunkdportsmatheigen3filesunsupportedpatch"></a>
<div class="addfile"><h4>Added: trunk/dports/math/eigen3/files/unsupported.patch (0 => 118088)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/math/eigen3/files/unsupported.patch                                (rev 0)
+++ trunk/dports/math/eigen3/files/unsupported.patch        2014-03-21 19:46:39 UTC (rev 118088)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+--- unsupported/Eigen/CMakeLists.txt.orig        2014-03-14 10:36:53.000000000 -0500
++++ unsupported/Eigen/CMakeLists.txt        2014-03-14 10:38:30.000000000 -0500
+@@ -1,6 +1,6 @@
+-set(Eigen_HEADERS AdolcForward BVH IterativeSolvers MatrixFunctions MoreVectorization AutoDiff AlignedVector3 Polynomials
++set(Eigen_HEADERS AdolcForward ArpackSupport BVH IterativeSolvers MatrixFunctions MoreVectorization AutoDiff AlignedVector3 Polynomials
+                   FFT NonLinearOptimization SparseExtra IterativeSolvers
+-                  NumericalDiff Skyline MPRealSupport OpenGLSupport KroneckerProduct Splines LevenbergMarquardt
++                  NumericalDiff Skyline SVD MPRealSupport OpenGLSupport KroneckerProduct Splines LevenbergMarquardt
+    )

+ install(FILES
+--- unsupported/Eigen/src/CMakeLists.txt.orig        2014-03-14 10:39:42.000000000 -0500
++++ unsupported/Eigen/src/CMakeLists.txt        2014-03-14 10:44:53.000000000 -0500
+@@ -1,7 +1,9 @@
+ ADD_SUBDIRECTORY(AutoDiff)
+ ADD_SUBDIRECTORY(BVH)
++ADD_SUBDIRECTORY(Eigenvalues)
+ ADD_SUBDIRECTORY(FFT)
+ ADD_SUBDIRECTORY(IterativeSolvers)
++ADD_SUBDIRECTORY(LevenbergMarquardt)
+ ADD_SUBDIRECTORY(MatrixFunctions)
+ ADD_SUBDIRECTORY(MoreVectorization)
+ ADD_SUBDIRECTORY(NonLinearOptimization)
+@@ -9,5 +11,6 @@
+ ADD_SUBDIRECTORY(Polynomials)
+ ADD_SUBDIRECTORY(Skyline)
+ ADD_SUBDIRECTORY(SparseExtra)
++ADD_SUBDIRECTORY(SVD)
+ ADD_SUBDIRECTORY(KroneckerProduct)
+ ADD_SUBDIRECTORY(Splines)
+--- unsupported/Eigen/src/SVD/CMakeLists.txt.orig        2014-03-14 10:56:38.000000000 -0500
++++ unsupported/Eigen/src/SVD/CMakeLists.txt        2014-03-14 10:56:51.000000000 -0500
+@@ -2,5 +2,5 @@

+ INSTALL(FILES
+   ${Eigen_SVD_SRCS}
+-  DESTINATION ${INCLUDE_INSTALL_DIR}unsupported/Eigen/src/SVD COMPONENT Devel
++  DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/src/SVD COMPONENT Devel
+   )
+--- unsupported/Eigen/src/LevenbergMarquardt/CMakeLists.txt.orig        2014-03-14 10:57:24.000000000 -0500
++++ unsupported/Eigen/src/LevenbergMarquardt/CMakeLists.txt        2014-03-14 10:57:06.000000000 -0500
+@@ -1,6 +1,6 @@
+-FILE(GLOB Eigen_LevenbergMarquardt_SRCS &quot;*.h&quot;)
++FILE(GLOB Eigen_LevenbergMarquardt_SRCS &quot;*.h&quot; &quot;Copyright*.txt&quot;)

+ INSTALL(FILES
+   ${Eigen_LevenbergMarquardt_SRCS}
+-  DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/LevenbergMarquardt COMPONENT Devel
++  DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/src/LevenbergMarquardt COMPONENT Devel
+   )
</ins></span></pre>
</div>
</div>

</body>
</html>