# -*- 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 PortSystem 1.0 PortGroup active_variants 1.1 PortGroup muniversal 1.0 PortGroup xcodeversion 1.0 PortGroup debug 1.0 name gtk2-devel conflicts gtk2 set my_name gtk2 version 2.24.33 revision 4 epoch 0 categories gnome x11 license LGPL-2+ maintainers {mascguy @mascguy} openmaintainer 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+ it is written in C, but has bindings to many other \ popular programming languages such as C++, Python and C# among others. homepage https://www.gtk.org/ set proj_name gtk+ set branch [join [lrange [split ${version} .] 0 1] .] distname ${proj_name}-${version} dist_subdir ${my_name} use_xz yes master_sites gnome:sources/${proj_name}/${branch}/ minimum_xcodeversions {9 3.1} checksums rmd160 85333860bdeda25f28c45177fe08d5f0914d4e52 \ sha256 ac2ac757f5942d318a311a54b0c80b5ef295f299c2a73c632f6bfb1ff49cc6da \ size 12661828 set port_ver_major [lindex [split ${version} .] 0] depends_build-append \ port:gtk-doc \ port:pkgconfig \ port:perl5 depends_lib-append \ port:atk \ path:lib/pkgconfig/pango.pc:pango \ path:lib/pkgconfig/gdk-pixbuf-2.0.pc:gdk-pixbuf2 \ path:lib/pkgconfig/gobject-introspection-1.0.pc:gobject-introspection # gtk2 applications would need librsvg to display SVG icons, however librsvg # indirectly depends on gtk2, so we can not list it as a dependency here. # path:lib/pkgconfig/librsvg-2.0.pc:librsvg depends_run-append \ port:hicolor-icon-theme \ port:shared-mime-info patchfiles-append patch-aliases.diff patchfiles-append patch-gtk-builder-convert.diff # Minor source fixes, only applicable to gtk2; fixed/removed for gtk3 and later. # See: https://trac.macports.org/ticket/69471 patchfiles-append patch-gtkscale-bad-cast.diff patchfiles-append patch-tests-menubars.diff # autoreconf to deal with stupid issues during install (install: .libs/libferret.lai: No such file or directory) use_autoreconf yes autoreconf.args -fvi configure.args-append \ --disable-glibtest \ --disable-silent-rules \ --enable-introspection \ --enable-static \ gio_can_sniff=yes configure.ccache no configure.cppflags-append \ -DX_LOCALE \ -D_IPP_PRIVATE_STRUCTURES=1 configure.cflags-append \ -fstrict-aliasing if {[string match *clang* ${configure.compiler}]} { configure.cflags-append \ -Wno-deprecated-declarations \ -Wno-enum-conversion \ -Wno-unknown-warning-option \ -Wno-error=unknown-warning-option } # gobject-introspection uses g-ir-scanner, which uses $CC from env if {${universal_possible} && [variant_isset universal]} { foreach arch ${configure.universal_archs} { lappend merger_build_args(${arch}) CC='${configure.cc} -arch ${arch}' lappend merger_destroot_args(${arch}) CC='${configure.cc} -arch ${arch}' } } else { build.args-append CC="${configure.cc} ${configure.cc_archflags}" destroot.args-append CC="${configure.cc} ${configure.cc_archflags}" } post-extract { # gtk2's Makefiles don't have proper dependencies, # so we must delete these to get them remade file delete ${worksrcpath}/gdk/gdkalias.h file delete ${worksrcpath}/gdk/gdkaliasdef.c file delete ${worksrcpath}/gtk/gtkalias.h file delete ${worksrcpath}/gtk/gtkaliasdef.c } pre-configure { if {![variant_isset quartz] && ![variant_isset x11]} { error "Either +x11 or +quartz is required" } } 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} ui_debug "Creating gtk.immodules..." system "DYLD_LIBRARY_PATH=${destroot}${prefix}/lib \ ${destroot}${prefix}/bin/gtk-query-immodules-2.0 \ ${destroot}${prefix}/lib/gtk-2.0/2.10.0/immodules/*.so \ >${destroot}${prefix}/etc/gtk-2.0/gtk.immodules" reinplace "s|${destroot}||" \ ${destroot}${prefix}/etc/gtk-2.0/gtk.immodules } post-activate { ui_debug "Updating gdk-pixbuf.loaders..." system "${prefix}/bin/gdk-pixbuf-query-loaders \ >${prefix}/etc/gtk-2.0/gdk-pixbuf.loaders" ui_debug "Updating immodules.cache..." system "${prefix}/bin/gtk-query-immodules-2.0 --update-cache" } platform darwin 8 { if {[variant_isset quartz] || ![variant_isset x11]} { configure.ldflags-append -framework Cocoa -framework Carbon } # latest versions are incompatible with the CUPS in Tiger (#33262) configure.args-append --disable-cups # https://trac.macports.org/ticket/63149 configure.args-append --disable-dependency-tracking # The rules enabled by gobject-introspection require GNU make 3.81+ (#38927) depends_build-append port:gmake build.cmd ${prefix}/bin/gmake } if {![variant_isset quartz] && ![variant_isset bundle]} { default_variants +x11 } if {${universal_possible} && [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. if {${os.major} >= 9} { set cpu64bit_capable [sysctl hw.cpu64bit_capable] } elseif {(![catch {sysctl hw.optional.x86_64} is_x86_64] && $is_x86_64) || (![catch {sysctl hw.optional.64bitops} is_ppc64] && $is_ppc64)} { set cpu64bit_capable 1 } else { set cpu64bit_capable 0 } 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 "gtk2 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] } } variant quartz conflicts x11 { require_active_variants path:lib/pkgconfig/cairo.pc:cairo quartz require_active_variants path:lib/pkgconfig/pango.pc:pango quartz configure.args-append --with-gdktarget=quartz # This upstream patch is necessary for all versions patchfiles-append patch-gdkquartz-osx-versions.diff # These upstream patches require macOS 10.12 and later. if {${os.major} >= 16} { # https://gitlab.gnome.org/GNOME/gimp/-/issues/5989 and https://trac.macports.org/ticket/59481 patchfiles-append patch-gimp-issue-5989-bigsur-perf-gtk-p1.diff \ patch-gimp-issue-5989-bigsur-perf-gtk-p2.diff } } variant x11 conflicts quartz { require_active_variants path:lib/pkgconfig/cairo.pc:cairo x11 require_active_variants path:lib/pkgconfig/pango.pc:pango 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 configure.args-append --with-xinput --enable-xinerama \ --x-include=${prefix}/include --x-lib=${prefix}/lib } variant bundle requires quartz description {Support including into a bundle} { configure.args-append --enable-quartz-relocation notes "You have enabled 'bundle' variant which breaks GTK2 when used outside of application bundle!" } livecheck.type regex livecheck.url https://download.gnome.org/sources/${proj_name}/${branch}/ livecheck.regex "LATEST-IS-(${port_ver_major}\\.\\d*\[02468\](?:\\.\\d+)*)"