# $Id: Portfile 58157 2009-09-23 05:06:36Z bfulgham@macports.org $

PortSystem 1.0

name             smlnj
version          110.71
revision         1
categories       lang ml
maintainers      bfulgham
description      Standard ML of New Jersey
long_description \
	Standard ML of New Jersey (abbreviated SML/NJ) is a \
	compiler for the Standard ML '97 programming language \
	with associated libraries, tools, and documentation. \
	SML/NJ is free, open source software.
homepage         http://www.smlnj.org/
platforms        darwin

master_sites     http://smlnj.cs.uchicago.edu/dist/working/${version}/
dist_subdir      ${name}/${version}_${revision}

distfiles
checksums

# Files needed for basic distribution.
set srcs [list \
	config.tgz 98c84eaf9ffe56c7ab30e770de8b23e3340deed7 \
	cm.tgz f0f1f8895f73387f795bcd41d66a345908a87e03 \
	compiler.tgz 11247fdf658297e9868b49746419d22ecd115cb6 \
	runtime.tgz b1c8943d4298d96ef0764454ba79d4eebd1f5907 \
	system.tgz f0b761816489317ad64354cd0fe98e30b4bff83f \
	MLRISC.tgz 068b8404f33863ce8bbff5787cd2d1372b4481f8 \
	smlnj-lib.tgz 0ffcf5df4ea451ffba7e72cbcc210f3b60c989e5 \
	ckit.tgz bf169fde23c56a8df117a17ccb82b7ac2b5df7c4 \
	nlffi.tgz 71b67a3160997c88c3cc8fd8bb72f0e79262a378 \
	cml.tgz 2e97ea0802a533c26f5b5becc1fd0e459520e764 \
	eXene.tgz e67a80c395a2ecdb6b69bf488370e085b9b9f80e \
	ml-lex.tgz ca61052f052124e198bd9c779c8dd28086413d9a \
	ml-yacc.tgz 296a2b90c15a50058aa081097b4d487dbd86c62c \
	ml-burg.tgz 647c9c76acaf5c6a3406207004d8a35244bb2277 \
	ml-lpt.tgz 90b5573a79efdaf09bbd7d525acbe1caa3757c69 \
	pgraph.tgz 45bcc992fcad13534828f2ca2ef06843d0524534 \
	trace-debug-profile.tgz 8c9f1a08a65910c81d981b0c58bc3f2df871b914 \
	heap2asm.tgz 5cf95d99eb79f319e88b0e22ccf80d4712bbea6a \
	smlnj-c.tgz 33207b607a7fb05196df3254054d9d6fdd5d6f94 \
]

foreach {tarball checksum} $srcs {
	distfiles-append $tarball
	checksums-append $tarball sha1 $checksum
}


# Platform-specific boot code (omitted: sparc-unix, x86-win32)
platform powerpc {
	distfiles-append boot.ppc-unix.tgz
	checksums-append boot.ppc-unix.tgz sha1 eaaa67d0d881b54b6231349cd720908c21a0de07
}
platform i386 {
	distfiles-append boot.x86-unix.tgz
	checksums-append boot.x86-unix.tgz sha1 e07769b6d475fb052929ed5ed62aad3f069360c0
}

post-patch {
	reinplace "s|__MACPORTS_CC__|${configure.cc}|" ${worksrcpath}/config/install.sh
}

### extract ###
pre-extract {
	file mkdir ${worksrcpath}
}
extract.dir          ${worksrcpath}
extract.only         config.tgz

### patch ###
patchfiles           patch-install.sh.diff

### configure ###
configure {
	reinplace "s|SRCARCHIVEURL=.*|SRCARCHIVEURL=file://${distpath}|" \
		${worksrcpath}/config/srcarchiveurl

	reinplace "s|#request|request|" ${worksrcpath}/config/targets
	reinplace "s|request ml-antlr|#request ml-antlr|" ${worksrcpath}/config/targets
	reinplace "s|request ml-lex-|#request ml-lex-|" ${worksrcpath}/config/targets
}

### build ###
build.env            URLGETTER=curl
build.cmd            ${worksrcpath}/config/install.sh
build.target

### destroot ###
destroot {
	set smlnj_home ${prefix}/share/smlnj

	file mkdir ${destroot}${smlnj_home}
	file copy ${worksrcpath}/bin ${destroot}${smlnj_home}
	file copy ${worksrcpath}/lib ${destroot}${smlnj_home}

	xinstall -m 555 ${filespath}/sml.sh ${destroot}${prefix}/bin/sml
	reinplace "s|__SMLNJ_HOME__|${smlnj_home}|g" \
		${destroot}${prefix}/bin/sml

	foreach prog [glob -directory ${worksrcpath}/bin *] {
		set progname [file tail $prog]
		if {![string equal $progname sml]} {
			system "ln -s sml ${destroot}${prefix}/bin/${progname}"
		}
	}
}
