# -*- 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 PortGroup cmake 1.0 PortGroup github 1.0 PortGroup muniversal 1.0 name volk categories science comms maintainers michaelld description Vector-Optimized Library of Kernels long_description VOLK is the Vector-Optimized Library of Kernels, a library that contains kernels of hand-written single-instruction multiple data (SIMD) code for different mathematical operations, providing portable SIMD code that is optimized for a variety of platforms. license GPL-3 platforms darwin # common directory for storing downloaded tarballs dist_subdir volk if {${name} eq ${subport}} { github.setup gnuradio volk 1.3 v checksums \ rmd160 5f1baa8dfc8ac948e4223e4f14f0ff328afffc9f \ sha256 fc112c38e898b1ad1bba79debf0769fecc555143bd60e33ea571c1e9908c320e # bump the epoch because I moved the version from 20150707 to 1.0.1 epoch 1 long_description ${long_description} ${subport} \ provides the release version, which is typically updated every month or so. conflicts volk-devel } subport volk-devel { github.setup gnuradio volk d57d5cfdff8a46d1251021a1ccf713cbe72aec58 version 20160804 checksums \ rmd160 c32acbaa59b7f3d797a68543d068a8ed1fe33fa9 \ sha256 7518da278dc97c2fcf4ad74d733d4f0e1bdb6e30b958a158fa18c7665f688364 conflicts volk long_description ${long_description} ${subport} \ provides the Volk GIT maint or master branch, depending on which is more advanced, and is typically updated every few days to week. } # override githib PortGroup homepage setting homepage http://libvolk.org/ depends_build-append port:pkgconfig depends_lib-append port:boost # patch to add back using if found, and otherwise providing # a local copy of it, to make older GCC compilers happy. Does not hurt # when using Clang or GCC >= 4.3. # patchfiles-append patch-add-back-cpuid.diff # do VPATH (out of source tree) build cmake.out_of_source yes # remove top-level library path, such that internal libraries are used # instead of any already-installed ones. configure.ldflags-delete -L${prefix}/lib # specify the Python dependencies; these are checked for at configure, # then used for building, but not at runtime. depends_build-append \ port:python27 \ port:py27-cheetah # override default version string to be MacPorts-specific # git / "devel" only for now set VOLK_VERSION_INFO "git-[string range ${github.version} 0 7](${version})" configure.args-append \ -DVOLK_GIT_COUNT="MacPorts" \ -DVOLK_GIT_HASH="${VOLK_VERSION_INFO}" # install CMake files into this directory configure.args-append \ -DCMAKE_MODULES_DIR=${prefix}/share/cmake # specify the Python version to use configure.args-append \ -DPYTHON_EXECUTABLE=${prefix}/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 \ -DVOLK_PYTHON_DIR=${frameworks_dir}/Python.framework/Versions/2.7/lib/python2.7/site-packages default_variants +docs +orc variant docs description "Install Volk documentation" { depends_build-append \ port:doxygen configure.args-append \ -DDOXYGEN_EXECUTABLE=${prefix}/bin/doxygen } if {![variant_isset docs]} { configure.args-append \ -DDOXYGEN_EXECUTABLE= } variant orc description "Install Volk with support for ORC" { depends_lib-append \ port:orc configure.args-append \ -DORCC_EXECUTABLE=${prefix}/bin/orcc \ -DORC_INCLUDE_DIR=${prefix}/include/orc-0.4 \ -DORC_LIBRARY_DIR=${prefix}/lib } if {![variant_isset orc]} { configure.args-append \ -DORCC_EXECUTABLE= \ -DORC_INCLUDE_DIR= \ -DORC_LIBRARY_DIR= } variant cxx11 description "Compile Volk using C++11 compliance" { # require C++11 configure.cxxflags-append -std=c++11 if {${configure.cxx_stdlib} eq "libstdc++"} { # *clang* when using libstdc++ do not seem to support C++11; # C++11 support seems to need GCC 4.7+ when using libstdc++; # could use C++0x support on GCC4.[56], but just ignore it since # there are newer compilers already in place as defaults. # Blacklist GCC compilers not supporting C++11 and all CLANG. # This is probably not necessary, but it's good practice. compiler.blacklist-append *clang* *gcc-3.* {*gcc-4.[0-6]} # and whitelist those we do want to use. wish there were a better way. # these will be used in the order provided. compiler.whitelist macports-gcc-4.9 macports-gcc-4.8 macports-gcc-4.7 } else { # using libc++; # Blacklist Clang not supporting C++11 in some form and all GCC. # Just use the cxx11 PortGroup for this specific case. PortGroup cxx11 1.0 } } pre-extract { # tell the user to force deactivate gnuradio-(devel,next) if one # is active and version is before Volk was split off (20150329 for # devel and next). gnuradio 3.7.6.2+ provides this split, too (as # of 2015-04-12). set not_found [catch {set installed [lindex [registry_active gnuradio-devel] 0]}] if {${not_found}} { set not_found [catch {set installed [lindex [registry_active gnuradio-next] 0]}] } if {${not_found}} { set not_found [catch {set installed [lindex [registry_active gnuradio] 0]}] } if (!${not_found}) { set _portname [lindex ${installed} 0] set _version [lindex ${installed} 1] if {${_portname} eq "gnuradio"} { set _vcmp [vercmp ${_version} 3.7.6.2] } else { set _vcmp [vercmp ${_version} 20150329] } if {${_vcmp} < 0} { ui_msg "\nVolk is currently installed by the port '${_portname}'." ui_msg "Use the command" ui_msg " sudo port -f deactivate ${_portname}" ui_msg "to deactivate the port owning volk, then proceed with" ui_msg " sudo port upgrade ${_portname}\n" return -code error "Port Needs Deactivation" } } }