# $Id: Portfile 63299 2010-02-01 12:25:17Z ryandesign@macports.org $

PortSystem              1.0
PortGroup               muniversal 1.0

name                    libiconv
version                 1.13.1
set cp932fix_version    1.13
set cp932fix_patchfile  ${name}-${cp932fix_version}-cp932-devel.patch.gz
categories              textproc
maintainers             ryandesign
platforms               darwin freebsd linux
homepage                http://www.gnu.org/software/libiconv/
master_sites            gnu
patch_sites             http://www2d.biglobe.ne.jp/~msyk/software/libiconv/
use_parallel_build      yes

description \
    Character set conversion library

long_description \
    A character-set conversion library which implements the \
    iconv() API for dealing with unicode and other types of \
    conversion.

checksums \
    ${distname}${extract.suffix} \
        md5     7ab33ebd26687c744a37264a330bbe9a \
        sha1    5b0524131cf0d7abd50734077f13aaa5508f6bbe \
        rmd160  a3e4b4d419006447045fde50fef0fe39bed9d501 \
    ${cp932fix_patchfile} \
        md5     07610e708d664627b83f905832f671d4 \
        sha1    8384da4114d62018b6bed2d8973237a423c1cbf1 \
        rmd160  62852bd1cd22f0be0280c4f64bd6d256b4b00917

depends_build \
    port:gperf

# Use -p1 to accommodate the cp932fix patch
patch.pre_args -p1
patchfiles \
    patch-utf8mac.diff \
    patch-src-Makefile.in-darwin.diff

configure.cppflags
configure.ldflags
configure.args \
    --enable-static \
    --docdir=${prefix}/share/doc/${name} \
    --without-libiconv-prefix \
    --without-libintl-prefix \
    --disable-nls \
    --enable-extra-encodings

build.cmd               ${build.cmd} CC=${configure.cc} -f Makefile.devel && ${build.cmd}

test.run                yes
test.target             check

platform freebsd {
    patchfiles-append patch-Makefile.devel
}

post-destroot {
    if {[file exists ${destroot}${prefix}/lib/charset.alias]} {
        delete ${destroot}${prefix}/lib/charset.alias
    }
}

variant enable_cp932fix description {Apply a patch to fix the conversion problem between Shift-JIS and Unicode (See Microsoft KB Q170559)} {
    patchfiles-append ${cp932fix_patchfile}
}

if { [variant_isset universal] } {
    # When cross-compiling, can guess wrong endian value.
    if { ${os.arch}=="i386" } {
        if { ${os.major} >= 10 } {
            lappend merger_configure_env(ppc) cl_cv_sys_endian='big endian'
            set cross_archs "ppc ppc64"
        }
        lappend merger_configure_env(ppc64)   cl_cv_sys_endian='big endian'
        set cross_archs "ppc64"
    } else {
        lappend merger_configure_env(i386)    cl_cv_sys_endian='little endian'
        lappend merger_configure_env(x86_64)  cl_cv_sys_endian='little endian'
        set cross_archs "i386 x86_64"
    }

    foreach arch ${cross_archs} {
        lappend merger_configure_env(${arch}) \
            ac_cv_func_malloc_0_nonnull='yes' \
            gl_cv_func_malloc_0_nonnull='1'
    }

    # See http://trac.macports.org/ticket/18440.
    if { ${os.major}=="8" } {
            foreach arch "ppc64 x86_64" {
                lappend merger_configure_env(${arch}) \
                    am_cv_func_iconv='yes' \
                    am_cv_proto_iconv_arg1='const'
        }
    }
}

livecheck.type          freshmeat
