source: trunk/dports/gnome/gtk3/Portfile

Last change on this file was 154273, checked in by devans@…, 11 months ago

gtk3: update to version 3.22.2.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 9.2 KB
Line 
1# -*- 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
2# $Id: Portfile 154273 2016-10-25 20:01:46Z ryandesign@macports.org $
3
4PortSystem          1.0
5PortGroup           muniversal 1.0
6PortGroup           xcodeversion 1.0
7PortGroup           active_variants 1.1
8PortGroup           compiler_blacklist_versions 1.0
9
10name                gtk3
11set real_name       gtk+
12epoch               1
13version             3.22.2
14set branch          [join [lrange [split ${version} .] 0 1] .]
15categories          gnome x11
16license             LGPL-2.1+
17maintainers         devans openmaintainer
18platforms           darwin
19
20description         GTK+ widget toolkit
21
22long_description    GTK+ is a highly usable, feature-rich toolkit for creating graphical user \
23                    interfaces, which boasts cross-platform compatibility and an easy-to-use \
24                    API. GTK+ is written in C, but has bindings to many other popular \
25                    programming languages, such as C++, Python and C#, among others.
26
27homepage            http://www.gtk.org/
28distname            ${real_name}-${version}
29use_xz              yes
30
31master_sites        gnome:sources/gtk+/${branch}/
32
33checksums           rmd160  6af531fce1653ceb22310e69d11e31b2d6cd9715 \
34                    sha256  2343dcaed2fc237ef718136ff4110fef7eb1ebfe178a9b064aa21cd74ecb6946
35
36minimum_xcodeversions {9 3.1}
37
38depends_build       port:pkgconfig
39
40depends_lib         port:atk \
41                    path:lib/pkgconfig/pango.pc:pango \
42                    port:gdk-pixbuf2 \
43                    path:lib/pkgconfig/glib-2.0.pc:glib2 \
44                    port:gobject-introspection \
45                    port:libepoxy
46                   
47depends_run         port:shared-mime-info \
48                    port:hicolor-icon-theme
49
50patchfiles          nawk.patch \
51                    O_CLOEXEC-10.6-and-earlier.patch
52
53# gtk3 +quartz uses instancetype which is not available
54# before approximately Xcode 4.6 (#49391)
55# if building +x11 blacklist comilers that do not support C11
56# (redefinition of typedef ‘GdkX11Monitor’ at gdkscreen-x11.h:33)
57
58if {[variant_isset quartz]} {
59    compiler.blacklist  *gcc* {clang < 425}
60} else {
61    compiler.blacklist  *gcc* {clang < 300}
62}
63
64# gobject-introspection uses g-ir-scanner, which uses $CC from env
65
66if {[variant_isset universal]} {
67    foreach arch ${configure.universal_archs} {
68        lappend merger_build_args(${arch})  CC='${configure.cc} -arch ${arch}'
69        lappend merger_build_args(${arch})  CC_FOR_BUILD='${configure.cc} -arch ${arch}'
70        lappend merger_destroot_args(${arch})  CC='${configure.cc} -arch ${arch}'
71        lappend merger_destroot_args(${arch})  CC_FOR_BUILD='${configure.cc} -arch ${arch}'
72    }
73} else {
74    build.args-append       CC="${configure.cc} ${configure.cc_archflags}" \
75                            CC_FOR_BUILD="${configure.cc} ${configure.cc_archflags}"
76    destroot.args-append    CC="${configure.cc} ${configure.cc_archflags}" \
77                            CC_FOR_BUILD="${configure.cc} ${configure.cc_archflags}"
78}
79
80pre-configure {
81    if {![variant_isset quartz] && ![variant_isset x11]} {
82        error "Either +x11 or +quartz is required"
83    }
84}
85
86configure.ccache    no
87
88configure.cppflags-append \
89                    -DX_LOCALE
90
91configure.cflags-append \
92                    -fstrict-aliasing
93
94# cloudprint backend requires rest, json-glib
95# but this causes a circular dependency on libsoup
96# explicitly disable cloudprint for now
97
98configure.args      --enable-static \
99                    --disable-glibtest \
100                    --enable-introspection \
101                    --disable-cloudprint \
102                    --disable-mir-backend \
103                    --disable-wayland-backend \
104                    --disable-schemas-compile \
105                    gio_can_sniff=yes
106
107build.args-append   V=1 \
108                    CPP_FOR_BUILD="${configure.cpp}"
109
110test.run            yes
111test.target         check
112
113post-destroot {
114    set docdir ${prefix}/share/doc/${name}
115    xinstall -d ${destroot}${docdir}
116    xinstall -m 644 -W ${worksrcpath} AUTHORS COPYING HACKING NEWS README \
117        ${destroot}${docdir}
118
119    # avoid conflict with the gtk-update-icon-cache installed by gtk2
120    move ${destroot}${prefix}/bin/gtk-update-icon-cache \
121         ${destroot}${prefix}/bin/gtk-update-icon-cache-3.0
122   
123    ui_debug "Creating gtk.immodules..."
124    system "DYLD_LIBRARY_PATH=${destroot}${prefix}/lib \
125        ${destroot}${prefix}/bin/gtk-query-immodules-3.0 \
126        ${destroot}${prefix}/lib/gtk-3.0/3.0.0/immodules/*.so \
127        >${destroot}${prefix}/etc/gtk-3.0/gtk.immodules"
128    reinplace "s|${destroot}||" ${destroot}${prefix}/etc/gtk-3.0/gtk.immodules
129}
130
131platform darwin {
132    if {${os.major} <= 8} {
133        # The rules enabled by gobject-introspection require GNU make 3.81+
134        depends_build-append    port:gmake
135        build.cmd               ${prefix}/bin/gmake
136
137        if {[variant_isset quartz] || ![variant_isset x11]} {
138            configure.ldflags-append  -framework Cocoa -framework Carbon
139        }
140   
141        configure.args-append --disable-cups
142    }
143
144    if {${os.major} <= 10} {
145        # OS X 10.6 and earlier do not supply all cursors specified by gtk3 +quartz (#49391)
146        if {[variant_isset quartz]} {
147            patchfiles-append   patch-gdk_quartz_gdkcursor-quartz-10_6_compat.diff
148        }
149    }
150}
151
152if {[variant_isset universal]} {
153    set cups /usr/bin/cups-config
154    if {[info exists universal_sysroot]} {
155        set cups ${universal_sysroot}${cups}
156    }
157    configure.env-append CUPS_CONFIG=${cups}
158
159    # Find architectures which will not run on build platform.
160    set cpu64bit_capable [sysctl hw.cpu64bit_capable]
161    if {${os.arch} eq "i386"} {
162        set cross_archs ppc64
163        if {${os.major} >= 10} {
164            lappend cross_archs ppc
165        }
166        set host_archs "ppc ppc64"
167        set run_archs i386
168        if {${cpu64bit_capable}} {
169            set run_archs "x86_64 ${run_archs}"
170        }
171    } else {
172        set cross_archs "i386 x86_64"
173        set host_archs "i386 x86_64"
174        set run_archs ppc
175        if {${cpu64bit_capable}} {
176            set run_archs "ppc64 ${run_archs}"
177        }
178    }
179
180    pre-configure {
181        set run_arch ""
182        foreach arch ${run_archs} {
183            if {[lsearch ${universal_archs_to_use} ${arch}] != -1} {
184                set run_arch ${arch}
185                break
186            }
187        }
188
189        if {${run_arch} eq ""} {
190            ui_error ""
191            ui_error "${name} requires at least one architecture runnable on this"
192            ui_error "machine to be able to build universally. Please add at least"
193            ui_error "one of the following architectures to `universal_archs` in"
194            ui_error "\"${prefix}/etc/macports/macports.conf\":"
195            ui_error ""
196            ui_error "\t${run_archs}"
197            ui_error ""
198        }
199
200        foreach arch ${host_archs} {
201            lappend merger_configure_env(${arch}) \
202                NM='/usr/bin/nm -p'
203        }
204
205        foreach arch ${cross_archs} {
206            lappend merger_configure_env(${arch}) \
207                GTK_UPDATE_ICON_CACHE=${worksrcpath}-${run_arch}/gtk/gtk-update-icon-cache \
208                GDK_PIXBUF_CSOURCE=${worksrcpath}-${run_arch}/gdk-pixbuf/gdk-pixbuf-csource
209            lappend merger_build_env(${arch}) \
210                GDK_PIXBUF_MODULE_FILE=${worksrcpath}-${run_arch}/gdk-pixbuf/gdk-pixbuf.loaders
211        }
212
213        # Let gtk_host in .pc files be the same on all architectures
214        set host powerpc
215        if {${os.arch} eq "i386"} {
216            set host i686
217        }
218        reinplace s/@host@/${host}-apple-darwin${os.version}/ \
219            {*}[glob -directory ${worksrcpath} *.pc.in]
220    }
221   
222    merger_arch_compiler yes
223} else {
224    configure.cc "${configure.cc} ${configure.cc_archflags}"
225}
226
227variant quartz conflicts x11 {
228    require_active_variants path:lib/pkgconfig/cairo.pc:cairo quartz
229    require_active_variants path:lib/pkgconfig/pango.pc:pango quartz
230    require_active_variants port:gdk-pixbuf2 "" x11
231
232    configure.args-append   --enable-quartz-backend
233}
234
235variant x11 conflicts quartz {
236    require_active_variants path:lib/pkgconfig/cairo.pc:cairo x11
237    require_active_variants path:lib/pkgconfig/pango.pc:pango x11
238    require_active_variants port:gdk-pixbuf2 x11
239
240    depends_lib-append      port:xorg-libXi \
241                            port:xorg-libXrandr \
242                            port:xorg-libXcursor \
243                            port:xorg-libXinerama \
244                            port:xorg-libXdamage \
245                            port:xorg-libXcomposite \
246                            port:xorg-libXfixes \
247                            port:at-spi2-atk \
248                            port:mesa
249
250    configure.args-append   --enable-xinerama \
251                            --x-include=${prefix}/include \
252                            --x-lib=${prefix}/lib \
253                            --enable-x11-backend
254}
255
256if {![variant_isset quartz]} {
257    default_variants +x11
258}
259
260post-activate {
261    ui_debug "Updating gdk-pixbuf.loaders..."
262    system "${prefix}/bin/gdk-pixbuf-query-loaders >${prefix}/etc/gtk-3.0/gdk-pixbuf.loaders"
263    ui_debug "Updating GLib schemas..."
264    system "${prefix}/bin/glib-compile-schemas ${prefix}/share/glib-2.0/schemas"
265}
266
267livecheck.type      gnome
268livecheck.name      gtk+
Note: See TracBrowser for help on using the repository browser.