# -*- 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 55846 2009-08-20 10:53:04Z nox@macports.org $

PortSystem      1.0
PortGroup       muniversal 1.0

name            gtk2
version         2.16.5
set branch      [join [lrange [split ${version} .] 0 1] .]
categories      x11
maintainers     nox openmaintainer
platforms       darwin
description     Gimp ToolKit version 2

long_description \
    This is GTK+ version 2.x. GTK+, which stands for Gimp \
    ToolKit, is a library for creating GUIs for the X Windows \
    System.

homepage        http://www.gtk.org/
distname        gtk+-${version}
use_bzip2       yes

master_sites    gnome:sources/gtk+/${branch}/ \
                ftp://ftp.gtk.org/pub/gtk/${branch}/ \
                http://ftp.gtk.org/pub/gtk/${branch}/

if {[variant_isset no_x11]} {
    default_variants    +quartz
}

if {![variant_isset quartz]} {
    default_variants    +x11
}

pre-fetch {
    if {![variant_isset quartz] && ![variant_isset x11]} {
        error "Either +x11 or +quartz is required"
    }

    if {[rpm-vercomp ${os.version} 8.0] >= 0 && [file exists ${prefix}/bin/cups-config]} {
        ui_error "You are running Darwin 8.0, cups-headers should not be installed on your system. Please uninstall or deactivate it."
        error "Please uninstall or deactivate cups-headers."
    }

    if {[rpm-vercomp ${os.version} 9.0] >= 0} {
        set minimum_xcodeversion 3.1
        set current_xcodeversion [exec defaults read /Developer/Applications/Xcode.app/Contents/Info CFBundleShortVersionString]
        if {[rpm-vercomp ${current_xcodeversion} ${minimum_xcodeversion}] < 0} {
            ui_error "You have Xcode ${current_xcodeversion}. Please update to at least Xcode ${minimum_xcodeversion}."
            error "Please update Xcode."
        }
    }

    if {[variant_isset quartz]} {
        if {![file exists ${prefix}/include/cairo/cairo-quartz.h]} {
            error "cairo must be built with the +quartz variant enabled."
        }
    } elseif {![file exists ${prefix}/include/cairo/cairo-xlib.h]} {
        error "cairo must be built without the +no_x11 variant."
    }
}

checksums       md5     8d1ea0b9b0400224d25b0cc2750b438d \
                sha1    4482e698730c8ea88239512a49306dc27a661145 \
                rmd160  2e938a81a95b99275fd7738b1fc99f8f224d1e02

patchfiles      patch-gtk-builder-convert.diff \
                patch-modules-gail.diff \
                patch-modules-printbackends.diff \
                patch-which-gtkdoc-rebase.diff

depends_build   port:pkgconfig

depends_lib     path:lib/pkgconfig/cairo.pc:cairo \
                port:fontconfig \
                port:freetype \
                path:lib/pkgconfig/glib-2.0.pc:glib2 \
                port:jpeg \
                port:tiff \
                port:libiconv \
                port:libpng \
                port:jasper \
                port:atk \
                path:lib/pkgconfig/pango.pc:pango \
                port:gettext \
                port:zlib

depends_run     port:shared-mime-info

configure.args  --enable-static \
                --disable-glibtest

if { [variant_isset universal] } {
    if {[info exists universal_sysroot]} {
        configure.env-append    CUPS_CONFIG="${universal_sysroot}/usr/bin/cups-config"
    } else {
        configure.env-append    CUPS_CONFIG="/usr/bin/cups-config"
    }

    # cups is not 32/64-bit universal on Tiger. 
    if {${os.major} == "8"} {
        set merger_configure_args(ppc64)   --disable-cups
        set merger_configure_args(x86_64)  --disable-cups
    }
    
    # Find architectures which will not run on build platform.
    if { ${os.arch}=="i386" } {
        if { ${os.major} >= 10 } {
            set cross_archs "ppc ppc64"
        } else {
            set cross_archs "ppc64"
        }
        set host_archs "ppc ppc64"
    } else {
        set cross_archs "i386 x86_64"
        set host_archs "i386 x86_64"
    }
    
    set run_arch [lindex ${universal_archs} 0]
    if { [lsearch ${cross_archs} ${run_arch}] >= 0 } {
        ui_msg "When building a universal binary of ${name}, make sure none of {${cross_archs}} is first in universal_archs in ${prefix}/etc/macports/macports.conf"
        error "incompatible universal_archs value"
    }

    foreach arch ${host_archs} {
        lappend merger_configure_env(${arch}) \
            NM='/usr/bin/nm -p'
    }

    foreach arch ${cross_archs} {
        lappend merger_configure_env(${arch}) \
            gio_can_sniff=yes \
            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
    }

    post-configure {
        # Let gtk_host in .pc files be the same on all architectures
        foreach arch ${host_archs} {
            if { [lsearch ${universal_archs_to_use} ${arch}] >= 0 } {
                foreach pc [glob -directory ${worksrcpath}-${arch} *.pc.in] {
                    if { ${os.arch}=="i386" } {
                        reinplace "s|gtk_host=@host@|gtk_host=i686-apple-darwin${os.version}|" ${pc}
                    } else {
                        reinplace "s|gtk_host=@host@|gtk_host=powerpc-apple-darwin${os.version}|" ${pc}
                    }
                }
            }
        }
    }
}
    
configure.ccache            no
configure.cppflags-append   -DX_LOCALE
configure.cflags-append     -fstrict-aliasing

use_parallel_build  yes

test.run        yes
test.target     check

post-destroot {
    set docdir ${prefix}/share/doc/gtk+-${version}
    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"
}

platform darwin 7 {
    configure.args-append   --disable-cups
}

platform darwin 8 {
    if {[variant_isset quartz] || [variant_isset no_x11]} {
        configure.ldflags-append  -framework Cocoa -framework Carbon
    }
}

variant no_x11 {
    pre-fetch {
        if {[file exists ${prefix}/lib/libpangox-1.0.dylib]} {
            ui_error "Please uninstall or deactivate the pango port and reinstall it by running `port install pango +no_x11`."
            error "pango must be installed with the no_x11 variant enabled."
        }
    }
}

variant quartz requires no_x11 conflicts x11 description {Enable Quartz rendering} {
    patchfiles-append       patch-gnome-bug-531599.diff
    configure.args-append   --with-gdktarget=quartz
}

variant x11 conflicts quartz description {Enable rendering in X11 (default)} {
    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
}

livecheck.check regex
livecheck.url   ftp://ftp.gnome.org/pub/gnome/sources/gtk+/${branch}/
livecheck.regex {LATEST-IS-(\d+(?:\.\d+)*)}
