# -*- 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 92105 2012-04-18 19:53:05Z pixilla@macports.org $

# MacPorts specification for the TAO CORBA package.
# Includes ACE even though the libACE package is available
# since TAO can not be built against an installed version of ACE.
# Thanks to the boost port maintainers for a great example to follow.
# Thomas Lockhart
# 2012-02-06

PortSystem          1.0
PortGroup           muniversal 1.0

name                tao
set name_package    ACE+TAO
version             6.1.1
distname            ${name_package}-${version}
categories          devel
platforms           darwin
license             BSD
maintainers         fourpalms.org:lockhart openmaintainer
description         The ACE ORB CORBA real-time middleware
long_description    The ACE Orb (TAO) is a real-time implementation of CORBA built using the \
                    framework components and patterns provided by ACE. TAO contains the \
                    network interface, OS, communication protocol, and CORBA middleware \
                    components and features. TAO is based on the standard OMG CORBA \
                    reference model, with the enhancements designed to overcome the \
                    shortcomings of conventional ORBs for high-performance and real-time \
                    applications.

conflicts           ace libACE

homepage            http://www.cs.wustl.edu/~schmidt/TAO.html
master_sites        http://download.dre.vanderbilt.edu/previous_versions \
                    ftp://download.dre.vanderbilt.edu/previous_versions

use_bzip2           yes

worksrcdir          ACE_wrappers

patch.pre_args      -p1
patchfiles          patch-ace-config.h.diff \
                    patch-include-makeinclude-platform_macros.GNU.diff

checksums           rmd160  a5ea828a92806cc407e1aeb3e3d48a530aa2948d \
                    sha256  db1b81941fcf665b7b7054db8bfca15c49d57dcb4c144016d5391b2fe6ca8cad

set os.name         "lion"
array set os.names {
     7  panther
     8  tiger
     9  leopard
    10  snowleopard
    11  lion
    12  mountainlion
}
foreach {key value} [array get os.names]  {
    if {${key} == ${os.major}} {
        set os.name ${value}
    }
}
set libenv          DYLD_LIBRARY_PATH=${worksrcpath}/lib
set aceenv          ACE_ROOT=${worksrcpath}
set taoenv          TAO_ROOT=${worksrcpath}/TAO
set makearg         INSTALL_PREFIX=${prefix}
set logdir          ${prefix}/var/log/tao
set taodaemon       tao_cosnaming
set taouser         _tao
set subdirs         { . TAO }
# set subdirs         { ace ACEXML ASNMP Kokyu MPC apps docs netsvcs TAO/tao TAO/orbsvcs }
# set subdirs         { ace ACEXML ASNMP Kokyu apps TAO/TAO_IDL TAO/tao TAO/orbsvcs }

add_users ${taouser} group=${taouser} realname=TAO\ Server

post-extract {
    copy ${filespath}/org.macports.${taodaemon}.plist \
        ${worksrcpath}/
}

post-patch {
    reinplace "s|@MACOSX@|${os.name}|g" \
        ${worksrcpath}/ace/config.h \
        ${worksrcpath}/include/makeinclude/platform_macros.GNU
    reinplace "s|@PREFIX@|${prefix}|g" \
        ${worksrcpath}/org.macports.${taodaemon}.plist
    reinplace "s|@USER@|${taouser}|g" \
        ${worksrcpath}/org.macports.${taodaemon}.plist
    reinplace "s|@DAEMON@|${taodaemon}|g" \
        ${worksrcpath}/org.macports.${taodaemon}.plist
}

depends_lib         path:bin/perl:perl5 \
                    port:tcl \
                    port:zlib

use_configure       no

use_parallel_build  no

build.env           "${libenv} ${aceenv} ${taoenv}"
build.args-append   CC=${configure.cc} \
                    CXX=${configure.cxx} \
                    CPP=${configure.cpp}
build.pre_args      ${makearg} all
build {
    foreach {subdir} $subdirs {
        build.dir           ${worksrcpath}/${subdir}
        command_exec build
    }
}

destroot.env        "${libenv} ${aceenv} ${taoenv}"
destroot.pre_args   ${makearg} install
destroot.keepdirs   ${logdir}
destroot {
    xinstall -d -o ${taouser} -m 0755 ${logdir}
    foreach {subdir} $subdirs {
        destroot.dir        ${worksrcpath}/${subdir}
        command_exec destroot
    }
    # Files required to build CosEvent classes but not installed
    copy ${worksrcpath}/TAO/orbsvcs/orbsvcs/ESF ${destroot}/${prefix}/include/orbsvcs/ESF
}
pre-install {
    delete ${destroot}${prefix}/etc/LaunchDaemons/org.macports.${taodaemon}/org.macports.${taodaemon}.plist
    delete ${destroot}${prefix}/etc/LaunchDaemons/org.macports.${taodaemon}/${taodaemon}.wrapper
    copy ${worksrcpath}/org.macports.${taodaemon}.plist \
        ${destroot}${prefix}/etc/LaunchDaemons/org.macports.${taodaemon}/org.macports.${taodaemon}.plist
}
startupitem.create  yes
startupitem.name    ${taodaemon}

livecheck.type      regex
livecheck.url       ${master_sites}
livecheck.regex     "ACE\\+TAO-(\[0-9.\]+\[0-9\]+)${extract.suffix}"
