# $Id: Portfile,v 1.11 2004/08/16 17:04:17 ssen Exp $
PortSystem 1.0
name			cm3
version			5.2.6
revision		1
categories		lang
platforms		darwin
maintainers		landonf@opendarwin.org
homepage		http://www.elegosoft.com/cm3/
description		Critical Mass Modula-3 Compiler
long_description	CM3 5.2 is an open source release of Critical Mass Modula-3. \
			It is a complete easy-to-use and easy-to-install Modula-3 system \
			that contains considerable enhancements over its ancestor DEC SRC Modula-3.

master_sites		${homepage}
distfiles		cm3-src-all-${version}.tgz

checksums		cm3-src-all-${version}.tgz md5 \
			     44fd8c9c905707e4f9835eaf6b747127

worksrcdir		cm3
extract.dir		${worksrcpath}
pre-extract		"file mkdir ${workpath}/${worksrcdir}"

# Add a path entry for the bootstrap cm3 compiler
build.env		PATH=$env(PATH):${workpath}/bootstrap/bin

# M3 requires a bootstrap compiler to build
# This port currently supports only Darwin/PPC
variant darwin powerpc {
    distfiles-append	cm3-min-POSIX-PPC_DARWIN-${version}.tgz
    checksums-append	cm3-min-POSIX-PPC_DARWIN-${version}.tgz md5 \
			    6b1421b926731c36c0fc98e86f08c24c

    # Apple's cpp-precomp in Jaguar (10.2) incorrectly handles
    # gcc 'poisoned' tokens, so we turn it off.
    # It only makes the build take longer anyway.
    patchfiles		patch-fix-cpp-precomp.diff
}

variant freebsd i386 {
    distfiles-append	cm3-min-POSIX-FreeBSD4-${version}.tgz
    checksums-append	cm3-min-POSIX-FreeBSD4-${version}.tgz md5 \
    			    162156b414ffebd24c8f0ab9b71ee5e8
}

post-extract {
    # Create bootstrap directory and extract the cm3 bootstrap to it
    file mkdir ${workpath}/bootstrap
    system "tar -C ${workpath}/bootstrap -zxf ${worksrcpath}/system.tgz"
}

configure {
    # Configure the bootstrap
    file copy -force \
	${filespath}/${os.platform}-cm3.cfg ${workpath}/bootstrap/bin/cm3.cfg
    reinplace \
	s|@USE_ROOT@|\"${workpath}/bootstrap\"|g \
	${workpath}/bootstrap/bin/cm3.cfg
    reinplace \
	s|@INSTALL_ROOT@|\"${destroot}${prefix}/cm3\"|g \
	${workpath}/bootstrap/bin/cm3.cfg
    reinplace \
	s|@PREFIX@|\"${prefix}/cm3\"|g \
	${workpath}/bootstrap/bin/cm3.cfg
}

build {
    set cm3-buildscript "cd ${worksrcpath}/scripts && env ${build.env}"
    # build core distribution
    system "${cm3-buildscript} ./do-cm3-core.sh buildship"

    # build tcp package
    system "${cm3-buildscript} ./do-pkg.sh buildship tcp"
}

destroot {
    # create a link to cm3 (m3 compiler) in ${prefix}/cm3/bin
    system "cd ${destroot}/${prefix}/cm3/bin/ && ln -s ../pkg/cm3/PPC_DARWIN/cm3"

    # copy bootstrap configuration file to destroot
    file copy -force \
	${filespath}/${os.platform}-cm3.cfg ${destroot}/${prefix}/cm3/bin/cm3.cfg

    # update file paths to reflect final installation paths
    reinplace \
	s|@INSTALL_ROOT@|\"${prefix}/cm3\"|g \
	${destroot}/${prefix}/cm3/bin/cm3.cfg
    reinplace \
	s|@USE_ROOT@|\"${prefix}/cm3\"|g \
	${destroot}/${prefix}/cm3/bin/cm3.cfg
    reinplace \
	s|@PREFIX@|\"${prefix}/cm3\"|g \
	${destroot}/${prefix}/cm3/bin/cm3.cfg
}
