# $Id: Portfile 55754 2009-08-18 12:08:45Z ryandesign@macports.org $

PortSystem              1.0
PortGroup               muniversal 1.0

name                    glib2-devel
set my_name             glib
version                 2.21.4
set branch              [join [lrange [split ${version} .] 0 1] .]
categories              devel
maintainers             ryandesign
homepage                http://www.gtk.org/
platforms               darwin
dist_subdir             glib2
distname                ${my_name}-${version}
use_bzip2               yes
use_parallel_build      yes

description \
    Library with data structure functions and other constructs

long_description \
    Glib is a library which includes support routines for \
    C, such as lists, trees, hashes, memory allocation, and \
    many other things.

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

checksums \
    md5     5092c5b479ba80065dc164d27e63000f \
    sha1    849e2e1d96b4e779891c2ddba06e9939b03a9032 \
    rmd160  1f462517f43966beef7f57743db75c18b136d731

# ${prefix}/include/glib-2.0/glib/gi18n.h requires -I${prefix}/include to find libintl.h
# See http://trac.macports.org/changeset/27148
patchfiles \
    patch-autoconf-2.64.diff \
    patch-configure.in.diff \
    patch-glib-2.0.pc.in.diff \
    patch-gi18n.h.diff \
    patch-gio_xdgmime_xdgmime.c.diff \
    patch-which.diff

depends_build \
    port:pkgconfig \
    port:autoconf

depends_lib \
    port:gettext \
    port:libiconv \
    path:bin/perl:perl5 \
    bin:python:python_select

use_autoconf            yes

configure.ldflags-append \
    -bind_at_load

configure.cflags-append \
    -fstrict-aliasing

configure.args \
    --enable-static

configure.perl          ${prefix}/bin/perl
configure.env-append    PERL_PATH=${configure.perl}

post-patch {
    reinplace "s|data_dirs = \"/usr|data_dirs = \"${prefix}/share:/usr|g" ${worksrcpath}/glib/gutils.c
    reinplace "s|path = \"/bin|path = \"${prefix}/bin:/bin|g" ${worksrcpath}/glib/gutils.c ${worksrcpath}/glib/gspawn.c
    reinplace "s|@@PREFIX@@|${prefix}|g" ${worksrcpath}/gio/xdgmime/xdgmime.c
}

platform darwin {
    patchfiles-append \
        patch-child-test.c.diff
}

test.run                yes
test.target             check

post-destroot {
    file delete ${destroot}${prefix}/lib/charset.alias
}

if {[variant_isset universal]} {
    pre-configure {
        global merger_configure_args merger_configure_env merger_configure_cppflags merger_configure_ldflags

        # See http://trac.macports.org/ticket/19196.
        if { ${os.major}=="8" } {
            set merger_configure_cppflags(ppc64)    "-D __LP64__"
            set merger_configure_ldflags(ppc64)     "-framework Carbon"
            set merger_configure_cppflags(x86_64)   "-D __LP64__"
            set merger_configure_ldflags(x86_64)    "-framework Carbon"
        }

        # Find architectures which will not run on build platform.
        if { ${os.arch}=="i386" || ${os.arch}=="x86_64"} {
            set cross_archs "ppc ppc64"
            set host_archs  "ppc ppc64"
            set big_endian  "yes"
        } else {
            set cross_archs "i386 x86_64"
            set host_archs  "i386 x86_64"
            set big_endian  "no"
        }

        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 ${cross_archs} {
            lappend merger_configure_env(${arch}) \
                GLIB_GENMARSHAL=${worksrcpath}-${run_arch}/gobject/glib-genmarshal \
                glib_cv_stack_grows=no \
                glib_cv_uscore=no \
                ac_cv_func_posix_getpwuid_r=yes \
                ac_cv_func_posix_getgrgid_r=yes
        }

        # Correct NM values is not found.
        # With -arch, ac_cv_c_bigendian is set to universal, which defaults to little endian.
        foreach arch ${host_archs} {
             lappend merger_configure_env(${arch}) \
                NM='/usr/bin/nm -p' \
                ac_cv_c_bigendian=${big_endian}
        }
    }

    set merger_dont_diff ${prefix}/lib/glib-2.0/include/glibconfig.h
}

livecheck.check         regex
livecheck.url           http://ftp.gnome.org/pub/GNOME/sources/${my_name}/${branch}/?C=M&O=D
livecheck.regex         ${my_name}-(\[0-9.\]+)\\.tar
