# $Id: Portfile 119601 2014-05-02 08:04:45Z ryandesign@macports.org $

PortSystem 1.0
PortGroup  muniversal 1.0

name                openssl
version             1.0.1g
epoch               1

# At least the following ports statically link OpenSSL and need to be revbumped
# for every update of OpenSSL:
#  - dovecot2
# Although they dynamically link OpenSSL, at least the following ports need to
# be revbumped for every update of OpenSSL:
#  - freeradius
# These lists aren't exhaustive. Feel free to add more entries as you find them.

platforms           darwin
categories          devel security
maintainers         mww
homepage            http://www.openssl.org/
license             OpenSSL SSLeay
description         OpenSSL SSL/TLS cryptography library

long_description \
    The OpenSSL Project is a collaborative effort to develop a robust, \
    commercial-grade, full-featured, and Open Source toolkit implementing \
    the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security \
    (TLS v1) protocols as well as a full-strength general purpose \
    cryptography library.

master_sites        http://www.openssl.org/source/
checksums           md5     de62b43dfcd858e66a74bee1c834e959 \
                    sha1    b28b3bcb1dc3ee7b55024c9f795be60eb3183e3c \
                    rmd160  cd2eb879646a2b91b2f67dfaf99eb9668ba5d7ea \
                    sha256  53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028

depends_lib         port:zlib

patchfiles          patch-Makefile.org.diff patch-crypto-Makefile.diff \
                    patch-bn_internal.pod.diff patch-Configure.diff

post-patch {
    # Ensure that the correct compiler is used
    reinplace "s|cc:|${configure.cc}:|" ${worksrcpath}/Configure
    # use SDK if necessary
    if {${configure.sdkroot} != ""} {
        reinplace "s|\\(-arch \[_a-zA-Z0-9\]*\\)|\\1 -isysroot ${configure.sdkroot}|" ${worksrcpath}/Configure
    }
}

configure.cmd       ./Configure
configure.args      -L${prefix}/lib --openssldir=${prefix}/etc/openssl zlib no-krb5 shared
configure.ccache    no

use_parallel_build  no

destroot.destdir    INSTALL_PREFIX=${destroot}
destroot.args       MANDIR=${prefix}/share/man MANSUFFIX=ssl

test.run            yes
test.dir            ${worksrcpath}/test
test.target         alltests

livecheck.type      regex
livecheck.url       ${master_sites}
livecheck.regex     ${name}-(\[0-9.\]+\[a-z\]?)\\.tar\\.gz

variant rfc3779 description {enable RFC 3779: X.509 Extensions for IP Addresses and AS Identifiers} {
    configure.args-append    enable-rfc3779
}

# code for universal build
array set merger_configure_args {
    ppc    darwin-ppc-cc
    i386   darwin-i386-cc
    ppc64  darwin64-ppc-cc
    x86_64 darwin64-x86_64-cc
}

if { [variant_isset universal] } {
    set merger_arch_compiler "no"

    configure.universal_args-delete --disable-dependency-tracking

    pre-destroot {
        global merger_dont_diff
        if { [llength ${universal_archs_to_use}] > 2 } {
            lappend merger_dont_diff ${prefix}/include/openssl/opensslconf.h
        }
    }

    # Do not set --host.
    array set merger_host {
        ppc    ""
        i386   ""
        ppc64  ""
        x86_64 ""
    }
} elseif {[info exists merger_configure_args($build_arch)]} {
    configure.args-append   $merger_configure_args($build_arch)
}

