[118088] trunk/dports/math/eigen3

eborisch at macports.org eborisch at macports.org
Fri Mar 21 12:46:39 PDT 2014


Revision: 118088
          https://trac.macports.org/changeset/118088
Author:   eborisch at macports.org
Date:     2014-03-21 12:46:39 -0700 (Fri, 21 Mar 2014)
Log Message:
-----------
eigen3: Move to cmake-based installs by default. Add missing unsupported directories to cmake install. Use compilers portgroup to support compiler variants (for +blas)

Modified Paths:
--------------
    trunk/dports/math/eigen3/Portfile

Added Paths:
-----------
    trunk/dports/math/eigen3/files/
    trunk/dports/math/eigen3/files/CMakeLists-eigenvalues.txt
    trunk/dports/math/eigen3/files/unsupported.patch

Modified: trunk/dports/math/eigen3/Portfile
===================================================================
--- 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)
@@ -2,11 +2,12 @@
 # $Id$
 
 PortSystem          1.0
+PortGroup           compilers 1.0
 
 name                eigen3
 version             3.2.1
-revision            0
-license             {{MPL-2} {LGPL-3+}}
+revision            1
+license             MPL-2 LGPL-3+
 categories          math science
 maintainers         eborisch \
                     openmaintainer
@@ -34,11 +35,13 @@
 livecheck.url       ${homepage}index.php?title=Main_Page
 livecheck.regex     {stable release.*Eigen (\d+(?:\.\d+)*).}
 
+patchfiles          unsupported.patch
+
 subport eigen3-devel {
     conflicts           eigen3
     # No current development version (other than rolling snapshot)
     version             3.2.1
-    revision            0
+    revision            1
     # rc version seen as older than beta
     epoch               1 
     distname            ${version}
@@ -49,140 +52,77 @@
         {development release.*Eigen (([\d]|\.|beta|rc|-)+)\.}
 }
 
-# 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 <prefix>/share/doc/eigen3/html}\
-    requires cmake {
+variant doc description \
+    {Place local documentation into <prefix>/share/doc/eigen3/html} {
         depends_build-append    port:doxygen \
                                 port:texlive-latex \
                                 path:bin/dot:graphviz
         build.target-append     doc
-
 }
 
 variant blas description \
-    {Build eigen-based blas (libeigen_blas*) : needs +gcc4N} \
-    requires cmake {
-    if {![variant_isset gcc44] &&
-        ![variant_isset gcc45] &&
-        ![variant_isset gcc46] &&
-        ![variant_isset gcc47] &&
-        ![variant_isset gcc48] &&
-        ![variant_isset gcc49]} {
-        ui_error "eigen3: To use +blas please select +gcc4\[456789\]!!!"
-        return -code error
-    } else {
+    {Build eigen's blas (libeigen_blas*) : needs +gccNN, +g95, or +gfortan} {
         PortGroup               muniversal 1.0
         build.target-append     blas
         universal_variant       yes
         configure.universal_args ""
-    }
 }
 
-if {([variant_isset gcc44] ||
-     [variant_isset gcc45] ||
-     [variant_isset gcc46] || 
-     [variant_isset gcc47] || 
-     [variant_isset gcc48] || 
-     [variant_isset gcc49]) && ![variant_isset blas]} {
-    ui_warn "eigen3: gcc4* only impacts +blas"
-}
+### CMAKE SUPPORT
 
-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
+# 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.
 
-    depends_build-append port:cmake
+# 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
 
-    configure.cmd       cmake
+depends_build-append port:cmake
 
-    configure.pre_args  -DCMAKE_INSTALL_PREFIX=${prefix}
+configure.cmd       cmake
 
-    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=\"${prefix}\;/usr\" \
-                        -DCMAKE_MODULE_PATH=${cmake_share_module_dir} \
-                        -Wno-dev
+configure.pre_args  -DCMAKE_INSTALL_PREFIX=${prefix}
 
-    # Out of source build
-    configure.args-append   ../eigen_src
+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=\"${prefix}\;/usr\" \
+                    -DCMAKE_MODULE_PATH=${cmake_share_module_dir} \
+                    -Wno-dev
 
-    # 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}
+# Out of source build
+configure.args-append   ../eigen_src
 
-    # Enable parallel builds
-    build.env-append    EIGEN_MAKE_ARGS=-j{build.jobs}
-}
+test.run            yes
+test.target         check
+test.env-append     EIGEN_MAKE_ARGS=-j{build.jobs} \
+                    EIGEN_CTEST_ARGS=-j{build.jobs}
 
-# Conditional phase modifications
-if {![variant_isset blas]} {
+# 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 { 
     # No architecture-dependent files installed; set noarch
     supported_archs     noarch
+    compilers.setup
 }
 
-# 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}
-    }
+### Extra phases
 
-    # Fail with message if user tries to test
-    test.run            yes
-    test {
-        ui_error "!!! TESTING IS UNSUPPORTED WITHOUT +cmake VARIANT !!!"
-    }
-}
-
-# Phase modifications
 pre-extract {
     file mkdir ${worksrcpath}
 }
@@ -193,10 +133,12 @@
 post-patch {
     # Move directory for out-of-source build
     move ${worksrcpath} ${workpath}/eigen_src
+    copy ${filespath}/CMakeLists-eigenvalues.txt \
+        ${workpath}/eigen_src/unsupported/Eigen/src/Eigenvalues/CMakeLists.txt
     file mkdir ${worksrcpath}
 }
 
-# Install licenses and documentation (if +doc)
+# Install licenses and (if +doc) documentation
 pre-destroot {
     set build_suffix {}
     if {![info exists universal_archs_to_use]} {
@@ -233,4 +175,16 @@
     }
 }
 
+# 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
+    }
+}
 
+notes {
+    This product includes software developed by the University of Chicago, as
+    Operator of Argonne National Laboratory.
+}   
+

Added: trunk/dports/math/eigen3/files/CMakeLists-eigenvalues.txt
===================================================================
--- 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)
@@ -0,0 +1,6 @@
+FILE(GLOB Eigen_Eigenvalues_SRCS "*.h")
+
+INSTALL(FILES
+  ${Eigen_Eigenvalues_SRCS}
+  DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/src/Eigenvalues COMPONENT Devel
+  )

Added: trunk/dports/math/eigen3/files/unsupported.patch
===================================================================
--- 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)
@@ -0,0 +1,50 @@
+--- 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 "*.h")
++FILE(GLOB Eigen_LevenbergMarquardt_SRCS "*.h" "Copyright*.txt")
+ 
+ INSTALL(FILES
+   ${Eigen_LevenbergMarquardt_SRCS}
+-  DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/LevenbergMarquardt COMPONENT Devel
++  DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/src/LevenbergMarquardt COMPONENT Devel
+   )
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20140321/ad56bcf6/attachment.html>


More information about the macports-changes mailing list