# -*- 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 115367 2014-01-01 02:00:56Z jeremyhu@macports.org $

PortSystem              1.0

name                    unrar
set my_name             ${name}src
version                 4.2.4
revision                1
categories              archivers
platforms               darwin freebsd
maintainers             krischik openmaintainer
license                 Restrictive/Distributable

description             Extract, view & test RAR archives

long_description        The unRAR utility is a minor part of the RAR archiver \
                        and contains RAR uncompression algorithm. unRAR \
                        requires very small volume of memory to operate.

homepage                http://www.rarlab.com/
master_sites            ${homepage}rar/
distname                ${my_name}-${version}

checksums               rmd160  53a590ed2a71be86a0a7abfe9c37ddc8dc869800 \
                        sha256  9432bf798e5f7123f3060f37b75b7c07f36f0091305f46473dcae9154f8cd686

patchfiles              patch-dll.hpp.diff \
                        patch-makefile.unix.diff

worksrcdir              ${name}

use_configure           no

variant universal {}

if {[tbool configure.ccache]} {
    configure.cxx "ccache ${configure.cxx}"
}

# TODO: Simplify once MacPorts 2.3 is released
set cxx_stdlibflags {}
if {[info exists configure.cxx_stdlib] && ${configure.cxx_stdlib} ne {} && [string match *clang* ${configure.cxx}]} {
    set cxx_stdlibflags -stdlib=${configure.cxx_stdlib}
}

build.args              -f makefile.unix \
                        CXX="[join ${configure.cxx}]"

# The makefile misuses the DESTDIR variable as if it were PREFIX. We need it at
# build time so the library gets the correct install_name.
build.args-append       DESTDIR=${prefix}

pre-build {
    build.args-append   CXXFLAGS="${configure.cxxflags} [get_canonical_archflags cxx] ${cxx_stdlibflags}" \
                        LDFLAGS="${configure.ldflags} [get_canonical_archflags ld] ${cxx_stdlibflags}"
}

post-destroot {
    set docdir ${prefix}/share/doc/${subport}
    xinstall -d ${destroot}${docdir}
    xinstall -m 644 -W ${worksrcpath} license.txt readme.txt ${destroot}${docdir}
}

platform darwin {
    patchfiles-append   patch-dylib.diff
}

if {${name} == ${subport}} {
    installs_libs       no
    
    destroot {
        xinstall ${worksrcpath}/${name} ${destroot}${prefix}/bin
    }
    
    livecheck.type      regex
    livecheck.url       ${homepage}rar_add.htm
    livecheck.regex     ${my_name}-(\\d+(?:\\.\\d+)*)
} else {
    livecheck.type      none
}

subport libunrar {
    description         unrar library
    long_description    ${description}
    
    # Copied from standalone libunrar port. Why do we need these?
    configure.cxxflags-append -DSILENT -DGUI
    
    # The makefile adds -fPIC to the CXXFLAGS when building the library, but we
    # override the CXXFLAGS with our own, so we have to manually add this again.
    configure.cxxflags-append -fPIC
    
    build.target        lib
    
    destroot {
        xinstall -d ${destroot}${prefix}/include/unrar
        xinstall -m 644 ${worksrcpath}/dll.hpp ${destroot}${prefix}/include/unrar
        if {${os.platform} eq "darwin"} {
            xinstall ${worksrcpath}/libunrar.dylib ${destroot}${prefix}/lib
        } else {
            xinstall ${worksrcpath}/libunrar.so ${destroot}${prefix}/lib
        }
    }
}
