[51640] users/dweber/graphics/InsightToolkit/Portfile

dweber at macports.org dweber at macports.org
Fri May 29 16:17:41 PDT 2009


Revision: 51640
          http://trac.macports.org/changeset/51640
Author:   dweber at macports.org
Date:     2009-05-29 16:17:41 -0700 (Fri, 29 May 2009)
Log Message:
-----------
copy trunk to myports

Added Paths:
-----------
    users/dweber/graphics/InsightToolkit/Portfile

Copied: users/dweber/graphics/InsightToolkit/Portfile (from rev 51639, trunk/dports/graphics/InsightToolkit/Portfile)
===================================================================
--- users/dweber/graphics/InsightToolkit/Portfile	                        (rev 0)
+++ users/dweber/graphics/InsightToolkit/Portfile	2009-05-29 23:17:41 UTC (rev 51640)
@@ -0,0 +1,708 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+# $Id$
+
+PortSystem      1.0
+
+name            InsightToolkit
+version         3.12.0
+revision        3
+set branch      [join [lrange [split ${version} .] 0 1] .]
+
+categories      graphics math science devel
+
+maintainers     dweber openmaintainer
+
+description     Insight Segmentation and Registration Toolkit (ITK)
+
+long_description \
+ITK is an open-source software toolkit for performing registration and segmentation. Segmentation is the process of identifying and classifying data found in a digitally sampled representation. Typically the sampled representation is an image acquired from such medical instrumentation as CT or MRI scanners. Registration is the task of aligning or developing correspondences between data. For example, in the medical environment, a CT scan may be aligned with a MRI scan in order to combine the information contained in both.
+
+homepage        http://www.itk.org/
+master_sites    sourceforge:itk
+
+distname        InsightToolkit-${branch}
+distfiles       InsightToolkit-${version}.tar.gz \
+                CableSwig-ITK-${version}.tar.gz
+
+checksums       InsightToolkit-${version}.tar.gz \
+                    md5  0bdf73a88f0d6936496addf036b07215 \
+                    sha1 7db0e20c8cbfe1c12a3ad86428cb6eefd8169f58 \
+                    rmd160 0adcab3705b96db08dbf5110d9a09cc265821a9d \
+                CableSwig-ITK-${version}.tar.gz \
+                    md5  04a8610e3724e7fef9207a90fd4bfde3 \
+                    sha1 04ab4f03a8e08267b9e78aafea055ef2a5058798 \
+                    rmd160 5758c7ee205a53a205a8a72a721aafeff7c8b194
+
+extract.only    InsightToolkit-${version}.tar.gz \
+                CableSwig-ITK-${version}.tar.gz
+
+platforms       darwin
+
+depends_build   port:cmake \
+                port:gmake \
+                port:gawk \
+                port:bison
+
+depends_lib     port:xorg-libs \
+                port:ossp-uuid
+
+# Use gmake and build in a separate directory from the source
+build.type      gnu
+build.dir       ${workpath}/${distname}-build
+
+# The parallel build would be nice, but it's not reliable.
+#use_parallel_build  yes
+
+# Global variables, used in variants, where a destroot prefix is appended,
+# when necessary.  There are numerous default build assumptions in both cmake
+# and ITK that use the 'InsightToolkit' name, and many post-destroot hacks in
+# this port that assume this name also.  If the port is renamed, say
+# InsightToolkit312, the post-destroot hacks must use ${itkName}.
+set itkName         InsightToolkit
+set itkBuildBin     ${build.dir}/bin
+set itkIncPath      ${prefix}/include/${distname}
+set itkLibPath      ${prefix}/lib/${distname}
+set itkSharePath    ${prefix}/share/${distname}
+set itkDocFile      DoxygenInsightToolkit-${version}.tar.gz
+set itkDocPath      ${itkSharePath}/doc
+set itkDataPath     ${itkSharePath}/data
+set itkExamplePath  ${itkSharePath}/examples
+set itkTestingPath  ${itkSharePath}/testing
+set itkExampleBin   ${itkExamplePath}/bin
+set itkTestingBin   ${itkTestingPath}/bin
+set itkExampleSrc   ${worksrcpath}/Examples
+set itkTestingSrc   ${worksrcpath}/Testing
+set itkWrapLibPath  ${itkLibPath}/WrapITK/lib
+
+# Using this dummy stage to inspect MacPorts variables
+# (using 'port -d fetch InsightToolkit')
+#fetch { system "echo ${itkLibPath}" }
+
+post-extract {
+    move ${workpath}/InsightToolkit-${version} ${worksrcpath}
+    move ${workpath}/CableSwig-ITK-${version}  ${worksrcpath}/Utilities/CableSwig
+}
+
+configure {
+    xinstall -d -m 0755 ${build.dir}
+    system "cd ${build.dir} && cmake ${configure.args} ${worksrcpath}"
+}
+
+# To double-check all the cmake variable settings after the configure
+#cd ${build.dir}
+#sudo cmake -LAH ../itk-${branch} > ~/cmake_vars.txt
+# Similarly, for an interactive configuration with ccmake, try:
+#cd ${build.dir}
+#sudo ccmake ../itk-${branch}
+
+# Get the size of RAM in Gigabits
+set gigabits [expr [exec sysctl -n hw.memsize] / pow(1024,3)]
+
+configure.args-append \
+    -DBUILD_DOXYGEN:BOOL=OFF \
+    -DBUILD_EXAMPLES:BOOL=OFF \
+    -DBUILD_TESTING:BOOL=OFF \
+    -DBUILD_SHARED_LIBS:BOOL=OFF \
+    -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
+    -DCMAKE_INCLUDE_PATH:PATH=${prefix}/include \
+    -DCMAKE_LIBRARY_PATH:PATH=${prefix}/lib \
+    -DCMAKE_INSTALL_NAME_DIR:STRING=${prefix}/lib/${distname} \
+    -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
+    -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
+    -DITK_COMPUTER_MEMORY_SIZE:STRING=${gigabits} \
+    -DUUID_INCLUDE_DIR:PATH=${prefix}/include/uuid \
+    -DUUID_LIBRARY:FILEPATH=${prefix}/lib/libuuid.dylib
+
+
+post-destroot {
+    # For some reason, cmake does not install into the CMAKE_INSTALL_NAME_DIR
+    move ${destroot}${prefix}/lib/${itkName}       ${destroot}${itkLibPath}
+    move ${destroot}${prefix}/include/${itkName}   ${destroot}${itkIncPath}
+    # Create a symlink from the generic lib and include for InsightToolkit to this version
+    ln -sf ${distname} ${destroot}${prefix}/lib/${itkName}
+    ln -sf ${distname} ${destroot}${prefix}/include/${itkName}
+    # copy FindITK.cmake to a version specific file, which might persist even
+    # when cmake is updated, deactivated, etc.
+    set findITK [glob ${prefix}/share/cmake-*/Modules/FindITK.cmake]
+    set findITKbranch [strsed ${findITK} #FindITK#FindITK-${branch}#]
+    copy ${findITK} ${destroot}${findITKbranch}
+    # Change the content of $findITKbranch, to find  this port installation,
+    # then a generic ITK installation within MacPorts ${prefix}/lib, and
+    # then other generic installation locations
+    set stdlib /usr/local/lib/InsightToolkit
+    set maclib ${prefix}/lib/InsightToolkit
+    # First replace any generic MacPorts lib paths
+    reinplace "\$!N;s|^.*${maclib}.*\\n||g" ${destroot}${findITKbranch}
+    # Now insert all the additional library paths, with the right precedence
+    reinplace "s|${stdlib}|${maclib}-${branch}\\\n    ${maclib}\\\n    ${stdlib}|g" ${destroot}${findITKbranch}
+    # Change the content of ITKConfig.cmake
+    reinplace "s|${itkName}|${distname}|g" ${destroot}${itkLibPath}/ITKConfig.cmake
+    copy ${destroot}${itkLibPath}/ITKConfig.cmake ${destroot}${itkLibPath}/itk-${branch}-config.cmake
+}
+
+
+# -----------------------------------------------------------------------------
+# VARIANTS
+# variant name [requires variant] [conflicts variant] [description description]
+
+default_variants \
+    +doc \
+    +py25
+
+variant doc description "provide doxygen documentation in ${itkDocPath}" {
+    distfiles-append    ${itkDocFile}
+    checksums-append    ${itkDocFile} \
+                        md5  99dcad9f8e7a3d0acb9da62efdf5fd13 \
+                        sha1 e6800094f493e6ef2b1484ce2da578a19a978c40 \
+                        rmd160 a20167892a6e91e6f530313c3c057e4d08999d62
+    post-destroot {
+        set itkDocPathLink ${prefix}/share/doc/${distname}
+        xinstall -d -o root -g admin -m 0755 ${destroot}/${itkDocPath}
+        xinstall -d -o root -g admin -m 0755 ${destroot}/${itkDocPathLink}
+        # Add the doxygen documentation 
+        system "tar --strip-components 1 -C ${destroot}/${itkDocPath} -zxf ${distpath}/${itkDocFile}"
+        # Add basic documentation
+        file copy ${worksrcpath}/Copyright     ${destroot}/${itkDocPath}/
+        file copy ${worksrcpath}/Copyright.txt ${destroot}/${itkDocPath}/
+        file copy ${worksrcpath}/README.html   ${destroot}/${itkDocPath}/
+        # Create a symlink to the $prefix path (not the destroot path); use the
+        # system to do this because the $prefix path doesn't exist yet and the
+        # tcl ln command fails, whereas this system command will allow it.
+        system "ln -Fns ${itkDocPath} ${destroot}/${itkDocPathLink}"
+    }
+}
+
+# --- Data variants
+
+# Change this to the itkDataPath and use post-destroot to relocate all this data
+#-DITK_DATA_ROOT:PATH=${worksrcpath}/Testing/Data
+
+##// Directory with data taken from http://public.kitware.com/pub/itk/Data/BrainWeb/
+##ITK_BRAINWEB_DATA_ROOT:PATH=ITK_BRAINWEB_DATA_ROOT-NOTFOUND
+variant brainweb description "provide ITK BrainWeb data in ${itkDataPath}" {
+    master_sites-append \
+        http://public.kitware.com/pub/itk/Data/BrainWeb:brainweb
+    distfiles-append \
+        BrainPart1.tgz:brainweb \
+        BrainPart1Rotated10Translated15.tgz:brainweb \
+        BrainPart1Rotated20Translated20.tgz:brainweb \
+        BrainPart2.tgz:brainweb \
+        BrainPart2Rotated10Translated15.tgz:brainweb \
+        BrainPart2Rotated20Translated20.tgz:brainweb \
+        BrainPart3.tgz:brainweb \
+        BrainPart3Rotated10Translated15.tgz:brainweb \
+        BrainPart3Rotated20Translated20.tgz:brainweb
+    checksums-append \
+        BrainPart1.tgz \
+            md5  e722d697f9d0b51023652b3fe7348658 \
+            sha1 e91f5c4928c880b944e1559eee015170c1badc4b \
+            rmd160 b5cbb557df0b019afe3f411deea72ef464626ace \
+        BrainPart1Rotated10Translated15.tgz \
+            md5  9d052710929477b1ddb5095575a5d7f9 \
+            sha1 effc10374f1e70ded967fb55237cd600b6ef51ca \
+            rmd160 3e1f19dbe48b7912f46f255459330fde50f96b62 \
+        BrainPart1Rotated20Translated20.tgz \
+            md5  36af81caf9ea7ce9b72987ff6d08ddf3 \
+            sha1 4c10b5ab612282361f344d1432664067bc94c736 \
+            rmd160 d6d23117fbf8803b0488b4fd5bddb739576d983f \
+        BrainPart2.tgz \
+            md5  458b0903a2fb52a1cae616eddf817142 \
+            sha1 21659b5ee37a9ed0958c79a1943dd5ebafbe27ec \
+            rmd160 dc85b393c8dfbf04ba2aa0690237acfb185ada4e \
+        BrainPart2Rotated10Translated15.tgz \
+            md5  8c978a660e442e4ed06e77bc4f769af2 \
+            sha1 58c1b5a6d9e8a965f3e73febca012747b0246702 \
+            rmd160 3867b0d006fa8b5af084a78fa812aff69c2ad0c1 \
+        BrainPart2Rotated20Translated20.tgz \
+            md5  5f53d805ab4346b933ce52c7b34e67b2 \
+            sha1 f29740e4760ffc602e9a6b2aa2b96efabcff1aa6 \
+            rmd160 2441747f0c98e9f2fa24a1c7ca9294bed729dcc0 \
+        BrainPart3.tgz \
+            md5  c6f5edccbb2c0ba418e4666fe989eb15 \
+            sha1 20cdee786c710aed0df6943bcbaa9c62bb82e773 \
+            rmd160 3f730bf426a6509c73c58902220b64cb3324b136 \
+        BrainPart3Rotated10Translated15.tgz \
+            md5  61893ca3df13d24530275758de702fef \
+            sha1 4f6ba74d68a7e477fd43237213d4d4e4ce839503 \
+            rmd160 ba408d2ff6297af7f76af82ae24e9afe519bb80c \
+        BrainPart3Rotated20Translated20.tgz \
+            md5  db63c7567d1c021860d59812eb41dfa9 \
+            sha1 2e14b66beef00acc8cd17942d9bf0c155841a934 \
+            rmd160 42d403505116e8b9885d00964376cee909711bd0
+    configure.args-append \
+        -DITK_BRAINWEB_DATA_ROOT:PATH=${itkDataPath}
+    post-destroot {
+        xinstall -d -o root -g admin -m 0755 ${destroot}/${itkDataPath}
+        foreach tgz [exec find ${distpath} -name "BrainPart*.tgz"] {
+            system "tar -C ${destroot}/${itkDataPath} -zxf ${tgz}"
+        }
+    }
+}
+
+
+##// Directory with data taken from http://public.kitware.com/pub/itk/Data/HealthyVolunteersMRIDatabase/
+##ITK_MRI_UNC_DATABASE_DATA_ROOT:PATH=ITK_MRI_UNC_DATABASE_DATA_ROOT-NOTFOUND
+#http://public.kitware.com/pub/itk/Data/HealthyVolunteersMRIDatabase/Brain_MRA_From_UNC_Collection.zip
+#http://public.kitware.com/pub/itk/Data/HealthyVolunteersMRIDatabase/LICENSE.txt
+# During install, use a message to echo the LICENSE.txt file
+
+
+##// Directory with data taken from http://www.osirix-viewer.com/Downloads.html
+##ITK_OSIRIX_DATA_ROOT:PATH=ITK_OSIRIX_DATA_ROOT-NOTFOUND
+# sourceforge downloads:
+#http://prdownloads.sourceforge.net/osirix/CardiacCT.zip?download
+#http://prdownloads.sourceforge.net/osirix/PET-CT.zip?download
+# More datasets available from:
+#http://pubimage.hcuge.ch:8080/
+
+
+# Notes on RPATH settings for the shared dylib build and install:
+#
+# CMake book, Appendix A, p 234: "CMAKE_SKIP_BUILD_RPATH: Do not include RPATHs
+# in the build tree.  Normally CMake uses the build tree for the RPATH when
+# building executables etc. on systems that use RPATH.  When the software is
+# installed the executables etc.  are relinked by CMake to have the install
+# RPATH.  If this variable is set to true then the software is always built with
+# no RPATH."
+#
+# CMake book, Appendix B, p. 301: "... SKIP_BUILD_RPATH is a boolean specifying
+# whether to skip automatic generation of an rpath allowing the target to run
+# from the build tree.  BUILD_WITH_INSTALL_RPATH is a boolean specifying whether
+# to link the target in the build tree with the INSTALL_RPATH.  This takes
+# precedence over SKIP_BUILD_RPATH and avoids the need for relinking before
+# installation."
+#
+# Using CMAKE_SKIP_BUILD_RPATH:BOOL=OFF, we get all the executables and dylibs
+# built with the $build.dir in the rpath.  For this to work, we must also have
+# CMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF.  After the build, at the destroot
+# phase, all the installation candidates (which excludes the examples and
+# testing binaries) have their rpath settings reset to the INSTALL_RPATH (which
+# should point to $prefix..., not the $destroot location).
+
+variant shared description "build shared libraries (default)" {
+    configure.args-delete \
+        -DBUILD_SHARED_LIBS:BOOL=OFF
+    configure.args-append \
+        -DBUILD_SHARED_LIBS:BOOL=ON \
+        -DCMAKE_SKIP_RPATH:BOOL=OFF \
+        -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF \
+        -DCMAKE_INSTALL_RPATH:STRING=${itkLibPath}
+}
+
+
+proc resetLibLinks { inputPath } {
+    # The example and testing binaries are built, but they are not "installed".
+    # All their rpath settings point to the build.dir, so they must be
+    # reset using install_name_tool for the destroot install.
+    global itkBuildBin itkLibPath
+    foreach f [glob ${inputPath}/*] {
+        if [string equal [file extension ${f}] ".app"] {
+            set exeName [file rootname [lindex [file split ${f}] end]]
+            set f [format "%s/Contents/MacOS/%s" ${f} ${exeName}]
+        }
+        if [expr [file isfile ${f}] && [file executable ${f}]] {
+            foreach dep [exec otool -L ${f}] {
+                if [string match -nocase "*/libitk*.dylib" ${dep}] {
+                    set newdep [strsed ${dep} #${itkBuildBin}#${itkLibPath}#]
+                    system "install_name_tool -change ${dep} ${newdep} ${f}"
+                }
+            }
+        }
+    }
+}
+
+
+variant examples description "provide ITK examples in ${itkExamplePath}" {
+    configure.args-delete \
+        -DBUILD_EXAMPLES:BOOL=OFF
+    configure.args-append \
+        -DBUILD_EXAMPLES:BOOL=ON
+    post-destroot {
+        xinstall -d -o root -g admin -m 0755 ${destroot}/${itkExampleBin}
+        foreach f [glob ${itkExampleSrc}/*] {
+            file copy ${f} ${destroot}/${itkExamplePath}/
+        }
+        # Find all the example executables by parsing all the
+        # CMakeLists.txt files within the src Examples path
+        set exe {}
+        foreach f [exec find ${itkExampleSrc} -name "CMakeLists.txt"] {
+            catch {exec grep -e "ADD_EXECUTABLE" ${f}} results
+            if [expr ![string match "*child process*" ${results}]] {
+                # Remove the string "ADD_EXECUTABLE(", with or without whitespace
+                regsub -all "\[ \t\]*ADD_EXECUTABLE\[(\]\[ \t\]*" ${results} "" results
+                # Remove the string ".cxx)", with or without whitespace
+                regsub -all ".cxx\[ \t\]*\[)\]" ${results} "" results
+                set exe [concat ${exe} ${results}]
+            }
+        }
+        set exe [lsort -unique ${exe}]
+        # Installations for the example binaries are in ${itkBuildBin}.
+        # Copy them into the destroot example bin.
+        foreach f $exe {
+            set f ${itkBuildBin}/${f}
+            if [expr [file isfile ${f}] && [file executable ${f}]] {
+                file copy ${f} ${destroot}/${itkExampleBin}
+            }
+        }
+        # Only do this if the shared variant is selected?
+        resetLibLinks ${destroot}/${itkExampleBin}
+    }
+}
+
+
+variant testing description "provide ITK testing in ${itkTestingPath}" {
+    configure.args-delete \
+        -DBUILD_TESTING:BOOL=OFF
+    configure.args-append \
+        -DBUILD_TESTING:BOOL=ON
+    post-destroot {
+        xinstall -d -o root -g admin -m 0755 ${destroot}/${itkTestingBin}
+        foreach f [glob ${itkTestingSrc}/*] {
+            file copy ${f} ${destroot}/${itkTestingPath}/
+        }
+        # Find all the testing executables by parsing all the
+        # CMakeLists.txt files within the itkTestingSrc path
+        set exe {}
+        foreach f [exec find ${itkTestingSrc} -name "CMakeLists.txt"] {
+            catch {exec grep -e "ADD_EXECUTABLE" ${f}} results
+            if [expr ![string match "*child process*" ${results}]] {
+                # Remove the string "ADD_EXECUTABLE(", with or without whitespace
+                regsub -all "\[ \t\]*ADD_EXECUTABLE\[(\]\[ \t\]*" ${results} "" results
+                # Remove the string ".cxx)", with or without whitespace
+                regsub -all ".cxx\[ \t\]*\[)\]" ${results} "" results
+                set exe [concat ${exe} ${results}]
+            }
+        }
+        set exe [lsort -unique ${exe}]
+        # Installations for the testing binaries are in ${itkBuildBin}.
+        # Copy them into the destroot testing bin.
+        foreach f $exe {
+            set f ${itkBuildBin}/${f}
+            if [expr [file isfile ${f}] && [file executable ${f}]] {
+                file copy ${f} ${destroot}/${itkTestingBin}
+            }
+        }
+        # Only do this if the shared variant is selected?
+        resetLibLinks ${destroot}/${itkTestingBin}
+    }
+}
+
+
+# --- external languages support
+
+
+# Some of the wrapper libs are built, but they are not "installed".
+# All their rpath settings point to the build.dir, so they must be
+# reset using install_name_tool after the destroot phase.
+proc resetWrapLibs { filepattern } {
+    global itkBuildBin itkLibPath itkWrapLibPath 
+    foreach f [glob ${filepattern}] {
+        foreach dep [exec otool -L ${f}] {
+            if [string match -nocase "*libSwigRuntime*" ${dep}] {
+                set newdep [strsed ${dep} #${itkBuildBin}#${itkWrapLibPath}#]
+                system "install_name_tool -change ${dep} ${newdep} ${f}"
+            } elseif [string match -nocase "${itkBuildBin}*" ${dep}] {
+                set newdep [strsed ${dep} #${itkBuildBin}#${itkLibPath}#]
+                system "install_name_tool -change ${dep} ${newdep} ${f}"
+            }
+        }
+    }
+}
+
+
+variant wrap requires shared description "USE_WRAP_ITK for external language support (includes shared)" {
+    depends_lib-append \
+        port:guile \
+        port:tcl
+    # The WrapITK install path assumes a prefix of ${prefix}, but without this
+    # variable setting, it will default to "lib/${itkName}/WrapITK" without the
+    # version specific ${distname}
+    set itkWrapInstallPath /lib/${distname}/WrapITK
+    configure.args-append \
+        -DUSE_WRAP_ITK:BOOL=ON \
+        -DITK_USE_REVIEW:BOOL=ON \
+        -DWRAP_ITK_JAVA:BOOL=ON \
+        -DWRAP_ITK_TCL:BOOL=ON \
+        -DCMAKE_CXX_FLAGS:STRING=-fpermissive \
+        -DGUILE_EXECUTABLE:FILEPATH=${prefix}/bin/guile \
+        -DGUILE_LIBRARY:FILEPATH=${prefix}/lib/libguile.dylib \
+        -DGUILE_INCLUDE_PATH:PATH=${prefix}/include/guile \
+        -DTCL_TCLSH:FILEPATH=${prefix}/bin/tclsh \
+        -DTCL_INCLUDE_PATH:PATH=${prefix}/include \
+        -DTCL_LIBRARY:FILEPATH=${prefix}/lib/libtcl.dylib \
+        -DTK_INCLUDE_PATH:PATH=${prefix}/include \
+        -DTK_LIBRARY:FILEPATH=${prefix}/lib/libtk.dylib
+        # The following config option seems more trouble than useful:
+        #-DWRAP_ITK_INSTALL_PREFIX:PATH=${itkWrapInstallPath} \
+        # Could enable this if the example variant is selected:
+        #-DSWIG_BUILD_EXAMPLES:BOOL=ON
+    post-destroot {
+        # Fix executable permissions and move tclwish to version specific file
+        set itkwishSh ${destroot}/${prefix}/bin/itkwish-${branch}
+        move ${destroot}/${prefix}/bin/itkwish ${itkwishSh}
+        file attributes ${itkwishSh} -permissions 0755
+        ln -s itkwish-${branch} ${destroot}/${prefix}/bin/itkwish
+        # Change the content of itkwish
+        reinplace "s|${itkName}|${distname}|g" ${itkwishSh}
+        reinplace "s|//|/|g" ${itkwishSh}
+        # Reset dynamic library dependency paths for itkwish binary
+        set itkwishBin ${destroot}/${itkLibPath}/WrapITK/bin/itkwish
+        foreach dep [exec otool -L ${itkwishBin}] {
+            if [string match "*Tcl.dylib" ${dep}] {
+                set newdep [strsed ${dep} #${itkLibPath}#${itkWrapLibPath}#]
+                system "install_name_tool -change ${dep} ${newdep} ${itkwishBin}"
+            }
+        }
+        # Reset dynamic library dependency paths (see proc above)
+        resetWrapLibs ${destroot}/${itkLibPath}/WrapITK/lib/*.dylib
+        resetWrapLibs ${destroot}/${itkLibPath}/WrapITK/lib/*.jnilib
+    }
+}
+
+# The following were possiblilities identified by ccmake
+
+#-DPERL_EXECUTABLE                 /opt/local/bin/perl
+#-DPERL_INCLUDE_PATH               PERL_INCLUDE_PATH-NOTFOUND
+#-DPERL_LIBRARY                    PERL_LIBRARY-NOTFOUND
+
+#-DPHP4_EXECUTABLE                 /opt/local/bin/php
+#-DPHP4_FOUND_INCLUDE_PATH         PHP4_FOUND_INCLUDE_PATH-NOTFOUND
+
+#-DPIKE_EXECUTABLE                 PIKE_EXECUTABLE-NOTFOUND
+#-DPIKE_INCLUDE_PATH               PIKE_INCLUDE_PATH-NOTFOUND
+
+#-DRUBY_EXECUTABLE                 RUBY_EXECUTABLE-NOTFOUND
+#-DRUBY_INCLUDE_PATH               /System/Library/Frameworks/Ruby.framework/Headers
+#-DRUBY_LIBRARY                    RUBY_LIBRARY-NOTFOUND
+
+# Note for Ruby include path:
+# exec ruby -r rbconfig -e {puts Config::CONFIG["archdir"]}
+
+# Some default WrapITK settings:
+
+ #WRAP_BinaryMorphology            ON
+ #WRAP_Calculators                 ON
+ #WRAP_Compose                     ON
+ #WRAP_DeformableTransforms        ON
+ #WRAP_Denoising                   ON
+ #WRAP_DistanceMap                 ON
+ #WRAP_EdgesAndContours            ON
+ #WRAP_FFT                         ON
+ #WRAP_FFTW                        OFF
+ #WRAP_Filtering                   ON
+ #WRAP_IO                          ON
+ #WRAP_ITK_DIMS                    2;3
+ #WRAP_ITK_INSTALL_PREFIX          /lib/InsightToolkit/WrapITK
+ #WRAP_ITK_JAVA                    ON
+ #WRAP_ITK_PYTHON                  ON
+ #WRAP_ITK_TCL                     ON
+ #WRAP_IntensityFilters            ON
+ #WRAP_Interpolators               ON
+ #WRAP_Iterators                   OFF
+ #WRAP_LevelSet                    ON
+ #WRAP_Morphology                  ON
+ #WRAP_PixelMath                   ON
+ #WRAP_Registration                ON
+ #WRAP_Resize                      ON
+ #WRAP_Review                      ON
+ #WRAP_SegmentationAndThreshold    ON
+ #WRAP_SegmentationValidation      ON
+ #WRAP_SimpleFilters               ON
+ #WRAP_UnaryPixelMath              ON
+ #WRAP_complex_double              OFF
+ #WRAP_complex_float               ON
+ #WRAP_covariant_vector_double     OFF
+ #WRAP_covariant_vector_float      ON
+ #WRAP_double                      OFF
+ #WRAP_float                       ON
+ #WRAP_rgb_unsigned_char           OFF
+ #WRAP_rgb_unsigned_short          ON
+ #WRAP_rgba_unsigned_char          OFF
+ #WRAP_rgba_unsigned_short         ON
+ #WRAP_signed_char                 OFF
+ #WRAP_signed_long                 OFF
+ #WRAP_signed_short                OFF
+ #WRAP_unsigned_char               OFF
+ #WRAP_unsigned_long               OFF
+ #WRAP_unsigned_short              ON
+ #WRAP_vector_double               OFF
+ #WRAP_vector_float                ON
+
+
+
+
+
+
+# -----------------------------------------------------------------------------
+# The USE_WRAP_ITK will configure a default tcl and java wrapping.  Only enable
+# and modify the variants below to provide version specific language
+# wrappers.  Each of these variants should require the wrap variant.
+
+
+proc setPython { {major 2} {minor 6} } {
+    global pyVer python pyPort pyBin pyLib pyInc pyFrame pySite
+    set pyVer       ${major}.${minor}
+    set python      python${pyVer}
+    set pyPort      python${major}${minor}
+    set pyFrame     Library/Frameworks/Python.framework/Versions/${pyVer}
+    set pyLib       ${pyFrame}/Python
+    #set pyLib       lib/${python}
+    set pyBin       bin/${python}
+    set pyInc       include/${python}
+    set pySite      lib/${python}/site-packages
+    if [string match "2.6" ${pyVer}] {
+        # python2.6 is a true framework installation; whereas installs for 2.4
+        # and 2.5 contain symlinks in the framework path to the prefix path; and
+        # those symlinks can break the file_map stage of port activation.
+        set pyBin   ${pyFrame}/bin/${python}
+        set pyInc   ${pyFrame}/include/${python}
+        set pySite  ${pyFrame}/lib/${python}/site-packages
+    }
+}
+setPython
+
+
+variant py24 requires wrap conflicts py25 description "python 2.4 wrapper (includes wrap)" {
+    setPython 2 4
+    # Hereafter py24 and py25 are the same, but how to abstract this?  Maybe
+    # a general pyXY variant that is required by py24 and py25, but not clear on
+    # how the require precedence works with regard to the setPython proc.
+    depends_lib-append \
+        port:${pyPort}
+    configure.args-append \
+        -DWRAP_ITK_PYTHON:BOOL=ON \
+        -DPYTHON_EXECUTABLE:FILEPATH=${prefix}/${pyBin} \
+        -DPYTHON_INCLUDE_PATH:FILEPATH=${prefix}/${pyInc} \
+        -DPYTHON_LIBRARY:FILEPATH=${prefix}/${pyLib} \
+        -DPYTHON_DEBUG_LIBRARY:FILEPATH=${prefix}/${pyLib} \
+        -DPY_SITE_PACKAGES_PATH:PATH=${prefix}/${pySite}
+    post-destroot {
+        # Change the content of WrapITK.pth (for any python version)
+        reinplace "s|${itkName}|${distname}|g" ${destroot}/${prefix}/${pySite}/WrapITK.pth
+        reinplace "s|//|/|g" ${destroot}/${prefix}/${pySite}/WrapITK.pth
+        # Change the content of FindWrapITK.cmake (for any python version)
+        set findWrapITK [glob ${destroot}/${prefix}/share/cmake-*/Modules/FindWrapITK.cmake]
+        reinplace "s|${itkName}|${distname}|g" ${findWrapITK}
+        reinplace "s|//|/|g" ${findWrapITK}
+        # Reset dynamic library dependency paths (see proc above)
+        resetWrapLibs ${destroot}/${itkLibPath}/WrapITK/lib/*.so
+    }
+}
+
+variant py25 requires wrap conflicts py24 description "python 2.5 wrapper (includes wrap)" {
+    setPython 2 5
+    depends_lib-append \
+        port:${pyPort}
+    configure.args-append \
+        -DWRAP_ITK_PYTHON:BOOL=ON \
+        -DPYTHON_EXECUTABLE:FILEPATH=${prefix}/${pyBin} \
+        -DPYTHON_INCLUDE_PATH:FILEPATH=${prefix}/${pyInc} \
+        -DPYTHON_LIBRARY:FILEPATH=${prefix}/${pyLib} \
+        -DPYTHON_DEBUG_LIBRARY:FILEPATH=${prefix}/${pyLib} \
+        -DPY_SITE_PACKAGES_PATH:PATH=${prefix}/${pySite}
+    post-destroot {
+        # Change the content of WrapITK.pth (for any python version)
+        reinplace "s|${itkName}|${distname}|g" ${destroot}/${prefix}/${pySite}/WrapITK.pth
+        reinplace "s|//|/|g" ${destroot}/${prefix}/${pySite}/WrapITK.pth
+        # Change the content of FindWrapITK.cmake (for any python version)
+        set findWrapITK [glob ${destroot}/${prefix}/share/cmake-*/Modules/FindWrapITK.cmake]
+        reinplace "s|${itkName}|${distname}|g" ${findWrapITK}
+        reinplace "s|//|/|g" ${findWrapITK}
+        # Reset dynamic library dependency paths (see proc above)
+        resetWrapLibs ${destroot}/${itkLibPath}/WrapITK/lib/*.so
+    }
+}
+
+
+# Regardless of the pyLib setting for py26, cmake or the wrap config sets
+# the string "-framework Python", but this "-framework Python" setting actually
+# gets resolved by the link process into the Apple system /Framework path rather
+# than macports!  I'm not clear about how to control this, so the py26 variant
+# must be disabled for now.  If it's enabled, add the py26 variant to the
+# conflicts of py24 and py25.
+#variant py26 requires wrap conflicts py24 py25 description "python 2.6 wrapper (includes wrap)" {
+#    setPython 2 6
+#    depends_lib-append \
+#        port:${pyPort}
+#    configure.args-append \
+#        -DWRAP_ITK_PYTHON:BOOL=ON \
+#        -DPYTHON_EXECUTABLE:FILEPATH=${prefix}/${pyBin} \
+#        -DPYTHON_INCLUDE_PATH:FILEPATH=${prefix}/${pyInc} \
+#        -DPYTHON_LIBRARY:FILEPATH=${prefix}/${pyLib} \
+#        -DPYTHON_DEBUG_LIBRARY:FILEPATH=${prefix}/${pyLib} \
+#        -DPY_SITE_PACKAGES_PATH:PATH=${prefix}/${pySite}
+#    post-destroot {
+#        # Change the content of WrapITK.pth (for any python version)
+#        reinplace "s|${itkName}|${distname}|g" ${destroot}/${prefix}/${pySite}/WrapITK.pth
+#        # Reset dynamic library dependency paths (see proc above)
+#        resetWrapLibs ${destroot}/${itkLibPath}/WrapITK/lib/*.so
+#    }
+#}
+
+
+#variant java requires wrap description "provide java wrapper" {
+#    configure.args-append \
+#        # The following variables are defined automatically by cmake:
+#        #-DJAVACOMMAND                     /usr/bin/java
+#        #-DJAVA_ARCHIVE                    /usr/bin/jar
+#        #-DJAVA_AWT_INCLUDE_PATH           /System/Library/Frameworks/JavaVM.framework/Headers
+#        #-DJAVA_AWT_LIBRARY                -framework
+#        #-DJAVA_COMPILE                    /usr/bin/javac
+#        #-DJAVA_INCLUDE_PATH               /System/Library/Frameworks/JavaVM.framework/Headers
+#        #-DJAVA_INCLUDE_PATH2              /System/Library/Frameworks/JavaVM.framework/Headers
+#        #-DJAVA_JVM_LIBRARY                -framework
+#        #-DJAVA_RUNTIME                    /usr/bin/java
+#}
+
+
+#variant tcl requires wrap description "tcl wrapper (MacPorts tcl/tk)" {
+#    depends_lib-append \
+#        port:tcl \
+#        port:tk
+#    configure.args-append \
+#        -DTCL_TCLSH:FILEPATH=${prefix}/bin/tclsh \
+#        -DTCL_INCLUDE_PATH:PATH=${prefix}/include \
+#        -DTCL_LIBRARY:FILEPATH=${prefix}/lib/libtcl.dylib \
+#        -DTK_INCLUDE_PATH:PATH=${prefix}/include \
+#        -DTK_LIBRARY:FILEPATH=${prefix}/lib/libtk.dylib
+#}
+
+
+
+
+# -----------------------------------------------------------------------------
+# Additional possibilities for variants, not yet evaluated.
+
+#ITK_USE_LIBXML2
+#ITK_USE_MINC2
+
+#VNL_CONFIG_*
+
+#VXL_UPDATE_CONFIGURATION
+
+#variant kwstyle description {provide Kitware Style checking} {
+#    depends_lib-append \
+#        port:kwstyle
+#    configure.args-append \
+#        -DITK_USE_KWSTYLE:BOOL=ON
+#}
+
+#// Use an outside build of GDCM.
+#ITK_USE_SYSTEM_GDCM:BOOL=OFF
+#// Use the system's libxml2 library.
+#ITK_USE_SYSTEM_LIBXML2:BOOL=OFF
+#// Use the system's png library.
+#ITK_USE_SYSTEM_PNG:BOOL=OFF
+#// Use the system's tiff library.
+#ITK_USE_SYSTEM_TIFF:BOOL=OFF
+#// Use an outside build of VXL.
+#ITK_USE_SYSTEM_VXL:BOOL=OFF
+#// Use the system's zlib library.
+#ITK_USE_SYSTEM_ZLIB:BOOL=OFF
+
+
+
+# -----------------------------------------------------------------------------
+#livecheck.check     sourceforge
+#livecheck.regex     <title>itk InsightToolkit-(.*) released.*</title>
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090529/42dc270b/attachment-0001.html>


More information about the macports-changes mailing list