#!/bin/bash
BuildPackage=1
BuildIntel=0
BuildODBC=0
CvsSuite=0
PackageName="cvsnt"

if [ "$1" = "--ODBC" ]; then
	BuildODBC=1
	echo "Cannot build ODBC on native Mac OS 10.4 - ignoring."
	shift
fi
if [ "$1" = "--nopackage" ]; then
	BuildPackage=0
	shift
fi
if [ "$1" = "--intel" ]; then
	BuildIntel=1
	shift
fi
if [ "$1" = "--suite" ]; then
	CvsSuite=1
	PackageName="cvs-suite"
	shift
fi

SourceRoot="${1-`pwd`}"
Distribution_Dir=$SourceRoot/Distribution_folder
InstallerResources=$Distribution_Dir/Resources
InstallerRoot=$Distribution_Dir/Package_Root
InstallerFilesInfo=$Distribution_Dir/Info.plist
InstallerFilesDescription=$Distribution_Dir/Description.plist
InstallerFiles=$SourceRoot/cvsnt/osx/InstallerFiles
PackageMakerPath=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker

if [ $CvsSuite -eq 1 ]; then
	InstallerFiles2=$SourceRoot/cvsnt/osx/InstallerFiles/mh
else
	InstallerFiles2=$SourceRoot/cvsnt/osx/InstallerFiles
fi
export DYLD_LIBRARY_PATH=$InstallerRoot/usr/lib

rm -rf $Distribution_Dir

SAVEDIR=`pwd`
cd $SourceRoot/cvsnt
make distclean
# Need to jump through a few hoops to get a binary compiled on 10.4 to run on 10.3.. so much for backward compatibility.
if [ $BuildIntel -eq 1 ]; then
./configure --prefix=/usr --with-config-dir=/private/etc/cvsnt CC=gcc CPP="gcc -E" CXX=g++ --with-internal-zlib CXXFLAGS="-D__DARWIN_OS__=`uname -r | sed s/'\.[0-9,\.]*$'//`" CFLAGS="-D__DARWIN_OS__=`uname -r | sed s/'\.[0-9,\.]*$'//`" --disable-odbc
else
./configure --prefix=/usr --with-config-dir=/private/etc/cvsnt CC=gcc-3.3 CPP="gcc-3.3 -E" CXX=g++-3.3 --with-internal-zlib CXXFLAGS="-D__DARWIN_OS__=`uname -r | sed s/'\.[0-9,\.]*$'//`" CFLAGS="-D__DARWIN_OS__=`uname -r | sed s/'\.[0-9,\.]*$'//`" --disable-odbc
fi
rm -rf $InstallerRoot/* 
make DESTDIR=$InstallerRoot
make install DESTDIR=$InstallerRoot
cd $SAVEDIR

if [ $CvsSuite -eq 1 ]; then
	SAVEDIR=`pwd`
	cd $SourceRoot/march-hare/triggers
	make distclean
	if [ $BuildIntel -eq 1 ]; then
		./configure --with-cvsnt=$SourceRoot/cvsnt --prefix=/usr --with-config-dir=/private/etc/cvsnt CC=gcc CPP="gcc -E" CXX=g++ CXXFLAGS="-D__DARWIN_OS__=`uname -r | sed s/'\.[0-9,\.]*$'//`" CFLAGS="-D__DARWIN_OS__=`uname -r | sed s/'\.[0-9,\.]*$'//`"
	else
		./configure --with-cvsnt=$SourceRoot/cvsnt --prefix=/usr --with-config-dir=/private/etc/cvsnt CC=gcc-3.3 CPP="gcc-3.3 -E" CXX=g++-3.3 CXXFLAGS="-D__DARWIN_OS__=`uname -r | sed s/'\.[0-9,\.]*$'//`" CFLAGS="-D__DARWIN_OS__=`uname -r | sed s/'\.[0-9,\.]*$'//`"
	fi
	make DESTDIR=$InstallerRoot
	make install DESTDIR=$InstallerRoot
	cd $SAVEDIR
fi

if [ $BuildPackage -eq 1 ]; then
	BUILD=`$InstallerRoot/usr/bin/cvsnt ver -q`
	ShortVer=`echo $BUILD | sed s/'\.[0-9]*$'//`

	BaseName=$PackageName-$BUILD
	InstallerPackageName=$SourceRoot/$BaseName.pkg
	if [ $BuildIntel -eq 1 ]; then
		DmgFileName=$SourceRoot/$BaseName-intel.dmg
	else
		DmgFileName=$SourceRoot/$BaseName.dmg
	fi
	
	rm -rf $InstallerPackageName
	rm -rf $DmgFileName
	rm -rf $InstallerResources
	
	cp -r $InstallerFiles/private $InstallerRoot
	cp -r $InstallerFiles/Library $InstallerRoot
	cp -r $InstallerFiles2/InstallerResources $InstallerResources
	
	sed "s/%CVSNT_VERSION%/$BUILD/g" <$InstallerFiles2/Info.plist |
	sed "s/%CVSNT_SHORTVERSION%/$ShortVer/g" >$InstallerFilesInfo
	sed "s/%CVSNT_VERSION%/$BUILD/g" <$InstallerFiles2/Description.plist |
	sed "s/%CVSNT_SHORTVERSION%/$ShortVer/g" >$InstallerFilesDescription
	
	find $InstallerRoot -name .DS_Store -exec rm -f {} \; 2>/dev/null
	find $InstallerRoot -type d -name CVS -exec rm -rf {} \; 2>/dev/null
	
	$PackageMakerPath -build -p $InstallerPackageName -f $InstallerRoot -r $InstallerResources -i $InstallerFilesInfo -d $InstallerFilesDescription
	
	hdiutil create -fs HFS+ -format UDZO -volname $BaseName -imagekey zlib-level=9 -ov -srcfolder $InstallerPackageName $DmgFileName
	rm -rf $InstallerPackageName
fi


syntax highlighted by Code2HTML, v. 0.9.1