# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4 # $Id: Portfile 149002 2016-05-24 20:20:38Z devans@macports.org $ PortSystem 1.0 PortGroup archcheck 1.0 PortGroup muniversal 1.0 PortGroup xcodeversion 1.0 PortGroup active_variants 1.1 PortGroup compiler_blacklist_versions 1.0 name gtk3 set real_name gtk+ epoch 1 version 3.20.6 set branch [join [lrange [split ${version} .] 0 1] .] categories gnome x11 license LGPL-2.1+ maintainers devans openmaintainer platforms darwin description GTK+ widget toolkit long_description GTK+ is a highly usable, feature-rich toolkit for creating graphical user \ interfaces, which boasts cross-platform compatibility and an easy-to-use \ API. GTK+ is written in C, but has bindings to many other popular \ programming languages, such as C++, Python and C#, among others. homepage http://www.gtk.org/ distname ${real_name}-${version} use_xz yes master_sites gnome:sources/gtk+/${branch}/ checksums rmd160 5ae385f38ec164ffa72b0f9dec4dc30d50c04feb \ sha256 3f8016563a96b1cfef4ac9e795647f6316deb2978ff939b19e4e4f8f936fa4b2 minimum_xcodeversions {9 3.1} depends_build port:pkgconfig depends_lib port:atk \ path:lib/pkgconfig/pango.pc:pango \ port:gdk-pixbuf2 \ path:lib/pkgconfig/glib-2.0.pc:glib2 \ port:gobject-introspection \ port:libepoxy depends_run port:shared-mime-info \ port:hicolor-icon-theme archcheck.files lib/libatk-1.0.dylib \ lib/libintl.dylib \ lib/libjasper.dylib \ lib/libpango-1.0.dylib \ lib/libtiff.dylib patchfiles nawk.patch cups.patch # gtk3 +quartz uses instancetype which is not available # before approximately Xcode 4.6 (#49391) if {[variant_isset quartz]} { compiler.blacklist *gcc* {clang < 425} } # gobject-introspection uses g-ir-scanner, which uses $CC from env if {[variant_isset universal]} { foreach arch ${configure.universal_archs} { lappend merger_build_args(${arch}) CC='${configure.cc} -arch ${arch}' lappend merger_build_args(${arch}) CC_FOR_BUILD='${configure.cc} -arch ${arch}' lappend merger_destroot_args(${arch}) CC='${configure.cc} -arch ${arch}' lappend merger_destroot_args(${arch}) CC_FOR_BUILD='${configure.cc} -arch ${arch}' } } else { build.args-append CC="${configure.cc} ${configure.cc_archflags}" \ CC_FOR_BUILD="${configure.cc} ${configure.cc_archflags}" destroot.args-append CC="${configure.cc} ${configure.cc_archflags}" \ CC_FOR_BUILD="${configure.cc} ${configure.cc_archflags}" } pre-configure { if {![variant_isset quartz] && ![variant_isset x11]} { error "Either +x11 or +quartz is required" } } configure.ccache no configure.cppflags-append \ -DX_LOCALE configure.cflags-append \ -fstrict-aliasing # cloudprint backend requires rest, json-glib # but this causes a circular dependency on libsoup # explicitly disable cloudprint for now configure.args --enable-static \ --disable-glibtest \ --enable-introspection \ --disable-cloudprint \ --disable-mir-backend \ --disable-wayland-backend \ --disable-schemas-compile \ gio_can_sniff=yes build.args-append V=1 \ CPP_FOR_BUILD="${configure.cpp}" test.run yes test.target check post-destroot { set docdir ${prefix}/share/doc/${name} xinstall -d ${destroot}${docdir} xinstall -m 644 -W ${worksrcpath} AUTHORS COPYING HACKING NEWS README \ ${destroot}${docdir} # avoid conflict with the gtk-update-icon-cache installed by gtk2 move ${destroot}${prefix}/bin/gtk-update-icon-cache \ ${destroot}${prefix}/bin/gtk-update-icon-cache-3.0 ui_debug "Creating gtk.immodules..." system "DYLD_LIBRARY_PATH=${destroot}${prefix}/lib \ ${destroot}${prefix}/bin/gtk-query-immodules-3.0 \ ${destroot}${prefix}/lib/gtk-3.0/3.0.0/immodules/*.so \ >${destroot}${prefix}/etc/gtk-3.0/gtk.immodules" reinplace "s|${destroot}||" ${destroot}${prefix}/etc/gtk-3.0/gtk.immodules } platform darwin { if {${os.major} <= 8} { # The rules enabled by gobject-introspection require GNU make 3.81+ depends_build-append port:gmake build.cmd ${prefix}/bin/gmake if {[variant_isset quartz] || ![variant_isset x11]} { configure.ldflags-append -framework Cocoa -framework Carbon } configure.args-append --disable-cups } if {${os.major} <= 10} { # OS X 10.6 and earlier do not supply all cursors specified by gtk3 +quartz (#49391) if {[variant_isset quartz]} { patchfiles-append patch-gdk_quartz_gdkcursor-quartz-10_6_compat.diff } } } if {[variant_isset universal]} { set cups /usr/bin/cups-config if {[info exists universal_sysroot]} { set cups ${universal_sysroot}${cups} } configure.env-append CUPS_CONFIG=${cups} # Find architectures which will not run on build platform. set cpu64bit_capable [sysctl hw.cpu64bit_capable] if {${os.arch} eq "i386"} { set cross_archs ppc64 if {${os.major} >= 10} { lappend cross_archs ppc } set host_archs "ppc ppc64" set run_archs i386 if {${cpu64bit_capable}} { set run_archs "x86_64 ${run_archs}" } } else { set cross_archs "i386 x86_64" set host_archs "i386 x86_64" set run_archs ppc if {${cpu64bit_capable}} { set run_archs "ppc64 ${run_archs}" } } pre-configure { set run_arch "" foreach arch ${run_archs} { if {[lsearch ${universal_archs_to_use} ${arch}] != -1} { set run_arch ${arch} break } } if {${run_arch} eq ""} { ui_error "" ui_error "${name} requires at least one architecture runnable on this" ui_error "machine to be able to build universally. Please add at least" ui_error "one of the following architectures to `universal_archs` in" ui_error "\"${prefix}/etc/macports/macports.conf\":" ui_error "" ui_error "\t${run_archs}" ui_error "" } foreach arch ${host_archs} { lappend merger_configure_env(${arch}) \ NM='/usr/bin/nm -p' } foreach arch ${cross_archs} { lappend merger_configure_env(${arch}) \ GTK_UPDATE_ICON_CACHE=${worksrcpath}-${run_arch}/gtk/gtk-update-icon-cache \ GDK_PIXBUF_CSOURCE=${worksrcpath}-${run_arch}/gdk-pixbuf/gdk-pixbuf-csource lappend merger_build_env(${arch}) \ GDK_PIXBUF_MODULE_FILE=${worksrcpath}-${run_arch}/gdk-pixbuf/gdk-pixbuf.loaders } # Let gtk_host in .pc files be the same on all architectures set host powerpc if {${os.arch} eq "i386"} { set host i686 } reinplace s/@host@/${host}-apple-darwin${os.version}/ \ {*}[glob -directory ${worksrcpath} *.pc.in] } merger_arch_compiler yes } else { configure.cc "${configure.cc} ${configure.cc_archflags}" } variant quartz conflicts x11 { require_active_variants path:lib/pkgconfig/cairo.pc:cairo quartz require_active_variants path:lib/pkgconfig/pango.pc:pango quartz require_active_variants port:gdk-pixbuf2 "" x11 configure.args-append --enable-quartz-backend } variant x11 conflicts quartz { require_active_variants path:lib/pkgconfig/cairo.pc:cairo x11 require_active_variants path:lib/pkgconfig/pango.pc:pango x11 require_active_variants port:gdk-pixbuf2 x11 depends_lib-append port:xorg-libXi \ port:xorg-libXrandr \ port:xorg-libXcursor \ port:xorg-libXinerama \ port:xorg-libXdamage \ port:xorg-libXcomposite \ port:xorg-libXfixes \ port:at-spi2-atk \ port:mesa configure.args-append --enable-xinerama \ --x-include=${prefix}/include \ --x-lib=${prefix}/lib \ --enable-x11-backend } if {![variant_isset quartz]} { default_variants +x11 } post-activate { ui_debug "Updating gdk-pixbuf.loaders..." system "${prefix}/bin/gdk-pixbuf-query-loaders >${prefix}/etc/gtk-3.0/gdk-pixbuf.loaders" ui_debug "Updating GLib schemas..." system "${prefix}/bin/glib-compile-schemas ${prefix}/share/glib-2.0/schemas" } livecheck.type gnome livecheck.name gtk+