# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim: fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 117108 2014-02-16 20:09:38Z jeremyhu@macports.org $

PortSystem 1.0
PortGroup  muniversal 1.0
PortGroup  compiler_blacklist_versions 1.0

name                mozjs24
version             24.2.0
categories          lang
platforms           darwin
license             MPL-2.0
maintainers         gmail.com:juanrgar \
                    openmaintainer
description         JavaScript-C Engine
long_description    SpiderMonkey is Mozilla's JavaScript engine written in C/C++. \
                    It is used in various Mozilla products, including Firefox, \
                    and is available under the MPL2.

homepage            http://www.mozilla.org/js/spidermonkey/
master_sites        http://ftp.mozilla.org/pub/mozilla.org/js/ \
                    ftp://ftp.mozilla.org/pub/mozilla.org/js/

checksums           rmd160  c560f0ed343caa15f816a2cdea307a7015e0e8b1 \
                    sha256  e62f3f331ddd90df1e238c09d61a505c516fe9fd8c5c95336611d191d18437d8

depends_build       port:autoconf213 \
                    port:xorg-libX11 \
                    port:xorg-libXt \
                    port:pkgconfig

depends_lib         port:nspr \
                    port:libffi

use_bzip2           yes
distname            mozjs-${version}
worksrcdir          ${distname}/js/src

use_autoconf        yes
autoconf.cmd        autoconf213
compiler.blacklist  *gcc* {clang < 300}
configure.args      --with-system-nspr \
                    --enable-system-ffi \
                    --disable-readline \
                    --enable-threadsafe

patchfiles          patch-configure-no-deployment-target.diff \
                    patch-process.py.diff

variant readline description {Link js shell to system readline library} {
    depends_lib-append port:readline
    configure.args-delete --disable-readline
    configure.args-append --enable-readline
}

variant llvm_hacks description {Enable workarounds required for several LLVM instrumentations} {
    configure.args-append --enable-llvm-hacks
}

variant profiling description {Set compile flags necessary for using sampling profilers (e.g. shark, perf)} {
    configure.args-append --enable-profiling
}

# Use absolute path for install_name
post-patch {
    reinplace "s|@executable_path|${prefix}/lib|g" ${worksrcpath}/config/rules.mk
}

if {[variant_isset universal]} {
    set merger_host(x86_64) x86_64-apple-${os.platform}${os.major}
    set merger_host(i386) i686-apple-${os.platform}${os.major}
    set merger_configure_args(x86_64) "--build=x86_64-apple-${os.platform}${os.major} --target=x86_64-apple-${os.platform}${os.major}"
    set merger_configure_args(i386) "--build=i686-apple-${os.platform}${os.major} --target=i686-apple-${os.platform}${os.major}"
} else {
    if {${build_arch} eq "i386"} {
        configure.args-append \
            --host=i686-apple-${os.platform}${os.major} \
            --build=i686-apple-${os.platform}${os.major} \
            --target=i686-apple-${os.platform}${os.major}
    } elseif {${build_arch} eq "x86_64"} {
        configure.args-append \
            --host=${build_arch}-apple-${os.platform}${os.major} \
            --build=${build_arch}-apple-${os.platform}${os.major} \
            --target=${build_arch}-apple-${os.platform}${os.major}
    }
}

livecheck.type      regex
livecheck.url       [lindex ${master_sites} 0]
livecheck.regex     "mozjs-*(\\d+(?:\\.\\d+)*)"
