# -*- 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 PortSystem 1.0 PortGroup github 1.0 PortGroup compiler_blacklist_versions 1.0 # The vim port should always follow the patch level used in the MacVim port. This # is because they both share the same set of configuration files and ensures # that the user's configuration files will always work with both. set vim_version 9.1 set release 180 github.setup macvim-dev macvim ${release} release- revision 0 name MacVim version ${vim_version}.release${release} categories editors platforms darwin license Vim GPL-2+ maintainers {raimue @raimue} description MacVim is a GUI version of vim for macOS long_description \ MacVim is a port of the text editor Vim to macOS that is meant to \ integrate seamlessly with the native user interface. homepage https://macvim.org checksums rmd160 fb34366d9059f09ef73a56dd215ff504951cad42 \ sha256 bcc84a691ab2344942b18d2dbedd20aab4ecd4d6ac928ac8842f6d1b0c7d70f7 \ size 25822029 depends_lib-append port:gettext \ port:libiconv \ port:ncurses # MacVim does not build for arch i386 # https://trac.macports.org/ticket/54666 supported_archs arm64 x86_64 patchfiles patch-remove-updater.diff \ patch-remove-Homebrew-python.diff pre-fetch { if {${os.platform} eq "darwin" && ${os.major} < 12} { ui_error "${name} only runs on OS X 10.8 or greater." return -code error "incompatible Mac OS X version" } } # does not run correctly when build with older clang releases, see #30985 compiler.blacklist {clang < 400} post-extract { # create cache directory file mkdir ${workpath}/caches } post-patch { # Disable Sparkle auto update system -W ${worksrcpath}/src/MacVim/ "/usr/libexec/PlistBuddy -c \"Delete :SUFeedURL\" Info.plist" system -W ${worksrcpath}/src/MacVim/ "/usr/libexec/PlistBuddy -c \"Delete :SUPublicEDKey\" Info.plist" system -W ${worksrcpath}/src/MacVim/ "/usr/libexec/PlistBuddy -c \"Add :SUEnableAutomaticChecks bool false\" Info.plist" } use_xcode yes autoconf.cmd make autoconf autoconf.pre_args autoconf.args autoconf.dir ${worksrcpath}/src configure.args --enable-gui=macvim \ --without-x \ --without-local-dir \ --disable-sparkle \ --disable-gpm \ --disable-canberra \ --disable-libsodium \ --with-tlib=ncurses \ --enable-multibyte \ --enable-fail-if-missing \ --with-compiledby="MacPorts" # Old pre-compiled headers could influence build, #26723 build.args XCODEFLAGS="CACHE_ROOT=${workpath}/caches" if {[vercmp ${xcodeversion} 12.0] >= 0} { build.args XCODEFLAGS="-scheme MacVim -configuration Release -derivedDataPath ${workpath}/.home/DerivedData CACHE_ROOT=${workpath}/caches -UseNewBuildSystem=NO MACOSX_DEPLOYMENT_TARGET=${macosx_deployment_target} ARCHS=${configure.build_arch}" } elseif {[vercmp ${xcodeversion} 10.0] >= 0} { build.args XCODEFLAGS="CACHE_ROOT=${workpath}/caches -UseNewBuildSystem=NO MACOSX_DEPLOYMENT_TARGET=${macosx_deployment_target}" } destroot { copy ${worksrcpath}/src/MacVim/build/Release/MacVim.app ${destroot}${applications_dir} ln -s ${applications_dir}/MacVim.app/Contents/bin/mvim ${destroot}${prefix}/bin/mvim # Create MacVim vimdiff, view, ex equivalents ln -s ${applications_dir}/MacVim.app/Contents/bin/mvim ${destroot}${prefix}/bin/mvimdiff ln -s ${applications_dir}/MacVim.app/Contents/bin/mvim ${destroot}${prefix}/bin/mview # Link as mvimex as bin/mex conflicts with texlive ln -s ${applications_dir}/MacVim.app/Contents/bin/mvim ${destroot}${prefix}/bin/mvimex # Create a separate dir that can be added to PATH to access non-gui MacVim tools xinstall -d ${destroot}${prefix}/libexec/macvim foreach bin {vim vimdiff view vi ex rvim rview} { ln -s ${applications_dir}/MacVim.app/Contents/bin/mvim ${destroot}${prefix}/libexec/macvim/${bin} } } test.run yes if {![variant_isset big] && ![variant_isset huge]} { default_variants +huge } configure.args-append --with-features=normal set levels {big huge} foreach level ${levels} { variant ${level} description "Build ${level} feature set" conflicts {*}[lsearch -inline -all -not -exact $levels $level] " configure.args-replace --with-features=normal --with-features=$level " } variant xim description {Build with support for X Input Method} { configure.args-append --enable-xim } variant perl description {Enable Perl scripting} { configure.args-append --enable-perlinterp depends_lib-append path:bin/perl:perl5 } set pythons_suffixes {27 39 310 311 312 313} set pythons_ports {} foreach s ${pythons_suffixes} { lappend pythons_ports python${s} } foreach s ${pythons_suffixes} { set p python${s} set major [string index ${s} 0] set v ${major}.[string range ${s} 1 end] set i [lsearch -exact ${pythons_ports} ${p}] set c [lreplace ${pythons_ports} ${i} ${i}] variant ${p} description "Enable Python scripting" conflicts {*}${c} " if {${major} == 2} { configure.args-append --enable-pythoninterp --with-python-command=${prefix}/bin/python${v} patchfiles-append patch-python.diff } else { configure.args-append --enable-python3interp --with-python3-command=${prefix}/bin/python${v} } depends_lib-append port:${p} use_autoconf yes # overwriting autoconf.cmd above removes dependency, add it again depends_build-append port:autoconf " } variant ruby requires ruby18 description {Compatibility variant, requires +ruby18} {} variant ruby18 conflicts ruby19 ruby20 ruby21 ruby22 ruby23 ruby24 ruby25 ruby30 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby1.8 depends_lib-append port:ruby } variant ruby19 conflicts ruby18 ruby20 ruby21 ruby22 ruby23 ruby24 ruby25 ruby30 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby1.9 depends_lib-append port:ruby19 } variant ruby20 conflicts ruby18 ruby19 ruby21 ruby22 ruby23 ruby24 ruby25 ruby30 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby2.0 depends_lib-append port:ruby20 } variant ruby21 conflicts ruby18 ruby19 ruby20 ruby22 ruby23 ruby24 ruby25 ruby30 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby2.1 depends_lib-append port:ruby21 } variant ruby22 conflicts ruby18 ruby19 ruby20 ruby21 ruby23 ruby24 ruby25 ruby30 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby2.2 depends_lib-append port:ruby22 } variant ruby23 conflicts ruby18 ruby19 ruby20 ruby21 ruby22 ruby24 ruby25 ruby30 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby2.3 depends_lib-append port:ruby23 } variant ruby24 conflicts ruby18 ruby19 ruby20 ruby21 ruby22 ruby23 ruby25 ruby30 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby2.4 depends_lib-append port:ruby24 } variant ruby25 conflicts ruby18 ruby19 ruby20 ruby21 ruby22 ruby23 ruby24 ruby30 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby2.5 depends_lib-append port:ruby25 } variant ruby30 conflicts ruby18 ruby19 ruby20 ruby21 ruby22 ruby23 ruby24 ruby25 ruby31 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby3.0 depends_lib-append port:ruby30 } variant ruby31 conflicts ruby18 ruby19 ruby20 ruby21 ruby22 ruby23 ruby24 ruby25 ruby30 ruby32 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby3.1 depends_lib-append port:ruby31 # Ruby itself uses a modern gcc or clang, so building this with old Xcode gcc fails: # /opt/local/include/ruby-3.1.4/ruby/defines.h:55:23: error: stdalign.h: No such file or directory compiler.blacklist-append \ *gcc-4.0 *gcc-4.2 } variant ruby32 conflicts ruby18 ruby19 ruby20 ruby21 ruby22 ruby23 ruby24 ruby25 ruby30 ruby31 ruby33 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby3.2 depends_lib-append port:ruby32 compiler.blacklist-append \ *gcc-4.0 *gcc-4.2 } variant ruby33 conflicts ruby18 ruby19 ruby20 ruby21 ruby22 ruby23 ruby24 ruby25 ruby30 ruby31 ruby32 description {Enable Ruby scripting} { configure.args-append --enable-rubyinterp configure.args-append --with-ruby-command=${prefix}/bin/ruby3.3 depends_lib-append port:ruby33 compiler.blacklist-append \ *gcc-4.0 *gcc-4.2 } variant tcl description {Enable Tcl scripting} { configure.args-append --enable-tclinterp \ --with-tclsh=${prefix}/bin/tclsh patchfiles-append patch-tcl.diff depends_lib-append port:tcl use_autoconf yes # Overwriting autoconf.cmd above removes dependency, add it again depends_build-append port:autoconf } variant lua description {Enable Lua scripting} { PortGroup lua 1.0 configure.args-append --enable-luainterp \ --with-lua-prefix=${lua.dir} } variant cscope description {Enable source code browsing with cscope} { configure.args-append --enable-cscope }