#!/bin/bash
# Encoding is UTF-8. (There is no BOM.)
# Useful OpenOffice.org 3.2.x or higher.

# ==================================================
# デフォルトのビルド環境設定
# ==================================================
SRC_ROOT=${SRC_ROOT:-${PWD}}
VERSION=${VERSION:-`sed -e '/SOURCEVERSION=/!d' -e 's/SOURCEVERSION=//'< ${SRC_ROOT}/solenv/inc/minor.mk`-`sed -e '/LAST_MINOR=/!d' -e 's/LAST_MINOR=//'< ${SRC_ROOT}/solenv/inc/minor.mk`}
BUILD_NUMBER=${BUILD_NUMBER:-`sed -e '/RSCVERSION=/!d' -e 's/RSCVERSION=//'< ${SRC_ROOT}/solenv/inc/minor.mk`}
JOB_NUM=`cat /proc/cpuinfo | grep -i "^processor" | wc -l`

PREFIX=${PREFIX:-/opt}
LANGUAGES=${LANGUAGES:-"en-US ja"}
PACKAGE_FORMAT=${PACKAGE_FORMAT:-"rpm deb"}
OOO_VENDOR=${OOO_VENDOR:-curvirgo}
BUILD_OPTION=${BUILD_OPTION:-"--all --html --dontgraboutput"}
FORCE_REBUILD=${FORCE_REBUILD:-expat jfreereport sysui xmlhelp}

TEMP_DIR=${TEMP_DIR:-${SRC_ROOT}/temp}
PATCH_DIR=${PATCH_DIR:-${SRC_ROOT}/temp/patch/${BUILD_NUMBER}}
PKGOUTDIR=${PKGOUTDIR:-${SRC_ROOT}/OOo_Package}
JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-1.6.0}
ANT_HOME=${ANT_HOME:-/usr/local/apache-ant-1.7.1}

MOZILLA_VERSION=${MOZILLA_VERSION:-1.1.14}
MOZILLA_SOURCE_LOCATE=${MOZILLA_SOURCE_LOCATE:-http://ftp.mozilla.org/pub/mozilla.org/mozilla.org/seamonkey/releases/${MOZILLA_VERSION}}
MOZILLA_SOURCE_ARCHIVE=${MOZILLA_SOURCE_ARCHIVE:-seamonkey-${MOZILLA_VERSION}.source.tar.bz2}
MOZILLA_PREBUILD_LOCATE=${MOZILLA_PREBUILD_LOCATE:-http://tools.openoffice.org/moz_prebuild/OOo3.2}

CREATE_SDK=${CREATE_SDK:-Yes}
CREATE_SOLVER=${CREATE_SOLVER:-Yes}
CREATE_LANGUAGEPACK=${CREATE_LANGUAGEPACK:-Yes}
CREATE_URE_PACKAGE=${CREATE_URE_PACKAGE:-Yes}
ENABLE_BUILD_MOZILLA=${ENABLE_BUILD_MOZILLA:-Yes}

CONFIG_FLAGS="--with-lang=\"${LANGUAGES}\" --with-dict=ALL --enable-minimizer --enable-presenter-console"
CONFIG_FLAGS="${CONFIG_FLAGS} --enable-pdfimport --enable-wiki-publisher --enable-report-builder"
CONFIG_FLAGS="${CONFIG_FLAGS} --enable-vba --with-vba-package-format='builtin' --enable-verbose"
CONFIG_FLAGS="${CONFIG_FLAGS} --enable-mathmldtd --enable-randr --enable-randr-link --enable-binfilter --enable-rpath"
CONFIG_FLAGS="${CONFIG_FLAGS} --enable-Xaw --enable-crypt-link --enable-pam --enable-pam-link --enable-ldap --enable-cups"
CONFIG_FLAGS="${CONFIG_FLAGS} --enable-fontconfig --enable-lockdown --enable-cairo --with-fonts --enable-graphite"
CONFIG_FLAGS="${CONFIG_FLAGS} --enable-crashdump --enable-symbols=SMALL"
if [ -n "${OOO_VENDOR}" ]; then
	CONFIG_FLAGS="${CONFIG_FLAGS} --with-vendor='${OOO_VENDOR}' --with-build-version='Built by ${OOO_VENDOR}'"
fi

# ==================================================
# jabuild.functionおよびカスタマイズ設定値のロード
# ==================================================
if [ -f `dirname $0`/jabuild.function ]; then
	source `dirname $0`/jabuild.function
	if [ -f ./ooobuild.conf ]; then
		source ./ooobuild.conf
	fi
else
	echo "jabuild.function not found !!"
	exit
fi

# ==================================================
# コマンドパラメータの処理
# ==================================================
for opt in $@; do
	case ${opt} in
	--debug)
		DEBUGMODE=Yes
		;;
	--devel)
		DEVELMODE=Yes
		;;
	--from=*)
		RESTART_PROJECT=`echo ${opt} | sed 's/--from=//'`
		if [ x${RESTART_PROJECT} = x ]; then
			PrintMessage "Project is not specified !!"
			exit
		fi
		;;
	--pack)
		PACKMODE=Yes
		;;
	--help|*)
		cat << EOF
Usage: jabuild [OPTION]

OPTION:
        --debug                            Debug mode
        --devel                            Development build
        --from=[Project]                   Restart from specified project (Serial-Build only)
        --help                             Print this help
        --pack                             Packaging only
EOF
		exit
		;;
	esac
	shift
done

# ==================================================
# DEBUGMODEの設定
# ==================================================
if [ x${DEBUGMODE} = xYes ]; then
	set -x
fi

# ==================================================
# ビルドプラットホームの検出及びプラットホーム別の設定
# ==================================================
KERNEL=`uname -s`
case ${KERNEL} in
Linux)
	if [ `uname -m` = "x86_64" ]; then
		OOO_BUILD_SYSTEM=LinuxX86-64
		CPUTYPE=x
	else
		OOO_BUILD_SYSTEM=LinuxX86
		CPUTYPE=i
	fi
	GCC_VER=`gcc -v 2>&1 | tail -n 1 | awk '{print $3}' | sed 's/\.//g'`
	MOZNAME="LINUXGCCI"
	if [ ${GCC_VER} -ge 340 ] ; then
		OOOUTPATH=unxlng${CPUTYPE}6
		CONFIG_FLAGS="${CONFIG_FLAGS} --prefix=${PREFIX} --enable-gtk --enable-gconf --disable-gnome-vfs --enable-kde"
		CONFIG_FLAGS="${CONFIG_FLAGS} --enable-systray --enable-dbus --enable-xrender-link --enable-evolution2"
		CONFIG_FLAGS="${CONFIG_FLAGS} --enable-gcjaot --with-mingwin=i586-mingw32msvc-g++ --enable-kdeab --with-openldap"
		CONFIG_FLAGS="${CONFIG_FLAGS} --enable-opengl --enable-gio --with-package-format='${PACKAGE_FORMAT}'"
	else
		PrintMessage "This GCC version is not supported !!"
		exit
	fi

	# ==================================================
	# CCACHEを使用してビルドするように環境変数へ設定
	# ==================================================
	which ccache &> /dev/null
	if [ $? -eq 0 ]; then
		PrintMessage "Enable gcc over CCACHE"
		export CC="ccache gcc"
		export CXX="ccache g++"
	fi
	;;
CYGWIN*)
	OOO_BUILD_SYSTEM=Win32Intel
	CL_VER=`cl 2>&1 | tr -d '\r\n' | sed 's/.* Version \([0-9.]*\) for.*/\1/' | awk -F '.' '{print $1}'`

	CONFIG_FLAGS="${CONFIG_FLAGS} --with-use-shell=bash --enable-wrapcmd"

	VC_DIR=${VC_DIR:-`ConvertShortUnixName "/cygdrive/c/Program Files/Microsoft Visual Studio 9.0"`}
	CSC_DIR=${CSC_DIR:-`ConvertShortUnixName "/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v3.5"`}
	FRAME_HOME=${FRAME_HOME:-`ConvertShortUnixName "/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1"`}
	MIDL_DIR=${MIDL_DIR:-`ConvertShortUnixName "/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1/Bin"`}
	DIRECTX_HOME=${DIRECTX_HOME:-`ConvertShortUnixName "/cygdrive/c/Program Files/Microsoft DirectX 9.0 SDK (December 2004)"`}
	PSDK_DIR=${PSDK_DIR:-`ConvertShortUnixName "/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1"`}

	JAVA_HOME=`ConvertShortUnixName "${JAVA_HOME}"`
	ANT_HOME=`ConvertShortUnixName "${ANT_HOME}"`

	MOZNAME="WNTMSCI"
	MOZ_LIBS_LOCATE=${MOZ_LIBS_LOCATE:-ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/historic/vc71}
	MOZ_GLIB_ARCHIVE=${MOZ_GLIB_ARCHIVE:-vc71-glib-1.2.10-bin.zip}
	MOZ_LIBIDL_ARCHIVE=${MOZ_LIBIDL_ARCHIVE:-vc71-libIDL-0.6.8-bin.zip}
	MOZ_WINTOOLS_LOCATE=${MOZ_WINTOOLS_LOCATE:-http://ftp.mozilla.org/pub/mozilla.org/mozilla/source}
	MOZ_WINTOOLS_ARCHIVE=${MOZ_WINTOOLS_ARCHIVE:-wintools.zip}

	ADDBOM_LIST="svx/inc/globlmn_tmpl.hrc dbaccess/source/ui/dlg/AutoControls_tmpl.hrc"

	DISABLE_ACTIVEX=${DISABLE_ACTIVEX:-Yes}
	DISABLE_ATL=${DISABLE_ATL:-Yes}

	if [ ! -d ${VC_DIR} ]; then
		PrintMessage "Visual C++ not found !!"
		exit
	else
		CONFIG_FLAGS="${CONFIG_FLAGS} --with-cl-home=${VC_DIR}"
		case ${CL_VER} in
		15)
			OOOUTPATH=wntmsci12			# VC 2008
			export WINDOWS_VISTA_PSDK=TRUE
			CONFIG_FLAGS="${CONFIG_FLAGS} --with-mspdb-path=${VC_DIR}/Vc/bin --with-cl-home=${VC_DIR}/Vc/bin --disable-nss-module --with-win32 --with-psdk-home=${PSDK_DIR}"
			ENABLE_BUILD_MOZILLA=No
			;;
		*)
			PrintMessage "This Visual C++ version is not supported !!"
			exit
			;;
		esac
		if [ x${DISABLE_ATL} = xYes ]; then
			CONFIG_FLAGS="${CONFIG_FLAGS} --disable-atl"
			export DISABLE_ATL=TRUE
		fi
		[ x${DISABLE_ACTIVEX} = xYes ] && CONFIG_FLAGS="${CONFIG_FLAGS} --disable-activex"
		[ x${FRAME_HOME} != x -a -d ${FRAME_HOME} ] && CONFIG_FLAGS="${CONFIG_FLAGS} --with-frame-home=${FRAME_HOME}"
		[ x${CSC_DIR} != x -a -d ${CSC_DIR} ] && CONFIG_FLAGS="${CONFIG_FLAGS} --with-csc-path=${CSC_DIR}"
		[ x${MIDL_DIR} != x -a -d ${MIDL_DIR} ] && CONFIG_FLAGS="${CONFIG_FLAGS} --with-midl-path=${MIDL_DIR}"
		if [ x${DIRECTX_HOME} != x -a -d ${DIRECTX_HOME} ]; then
			CONFIG_FLAGS="${CONFIG_FLAGS} --with-directx-home=${DIRECTX_HOME}"
		else
			CONFIG_FLAGS="${CONFIG_FLAGS} --disable-directx"
		fi
		# ==================================================
		# Issue #i51139# & #i59187#: workaround
		# Windows Platformでのpath長の制限によるエラーを回避するための措置
		# (Lines in ddf files must not contain more than 256 characters!)
		# ==================================================
		export TMP=/tmp
		export TEMP=/tmp

		# ==================================================
		# i51560 cygwin-1.5.18以上でのperlのhungup状態回避手段の実行
		# cygwin-1.5.25では実施しなくてもhungupしなかった
		# ==================================================
		CYGVER=`uname -r | sed '' | awk -F. '{print $1*10000+$2*100+$3}'`
		if [ ${CYGVER} -ge 10518 -a ${CYGVER} -lt 10525 ]; then
			ps | grep sleep &> /dev/null
			if [ $? -eq 1 ]; then
				PrintMessage "Perl hangup evasion command started."
				( while true ; do ls /proc/*/fd ; sleep 2 ; done ) &> /dev/null &
			else
				PrintMessage "Perl hangup evasion command already started."
			fi
		fi

		# =================================================
		# 日本語版Windows上でのビルド時に、コードページ(932)で表示出来ない文字列が含まれる為に
		# コンパイルエラーとなるファイルにUTF-8のBOMを付加してコンパイルエラーを回避する
		# 併せて、transex3内のBOM除去コードの修正も必要
		# =================================================
		PrintMessage "Adding UTF-8 BOM to specified source files"
		for ADDBOM in ${ADDBOM_LIST}; do
			perl -0 -ne 'if(/^\xEF\xBB\xBF/){exit 0}else{exit 1}' ${SRC_ROOT}/${ADDBOM}
			if [ $? -eq 1 ]; then
				perl -0 -i.BOM -pne 's/^/\xEF\xBB\xBF/;' ${SRC_ROOT}/${ADDBOM} &> /dev/null
			fi
		done
	fi
	;;
*)
	PrintMessage "Building platform is not supported !!"
	exit
	;;
esac
if [ -d ${JAVA_HOME} ]; then
	CONFIG_FLAGS="${CONFIG_FLAGS} --with-jdk-home=${JAVA_HOME}"
fi
if [ -d ${ANT_HOME} ]; then
	CONFIG_FLAGS="${CONFIG_FLAGS} --with-ant-home=${ANT_HOME}"
fi

PrintMessage "Building platform : ${OOO_BUILD_SYSTEM}"

# =================================================
# 一時ディレクトリ及びパッケージ保存先ディレクトリの作成
# =================================================
CreateDirectory ${TEMP_DIR} "Creating temporary directory"
CreateDirectory ${PKGOUTDIR} "Creating Package Out directory"

#-----------------------------------------------------------------------------------------------------------------------------
# Preparing configuration
#-----------------------------------------------------------------------------------------------------------------------------
if [ x${PACKMODE} != xYes ]; then
	# =================================================
	# Mozillaソースなどのダウンロードと所定位置へのコピー、およびCONFIG_FLAGSの設定
	# =================================================
	if [ x${ENABLE_BUILD_MOZILLA} = xYes ]; then
		PrintMessage "Download mozilla source file"
		DownloadFile ${MOZILLA_SOURCE_LOCATE} ${MOZILLA_SOURCE_ARCHIVE}
		cp -v ${TEMP_DIR}/${MOZILLA_SOURCE_ARCHIVE} ${SRC_ROOT}/moz/download
		if [ x${OOO_BUILD_SYSTEM} = xWin32Intel ]; then
			DownloadFile ${MOZ_LIBS_LOCATE} ${MOZ_GLIB_ARCHIVE}
			DownloadFile ${MOZ_LIBS_LOCATE} ${MOZ_LIBIDL_ARCHIVE}
			DownloadFile ${MOZ_WINTOOLS_LOCATE} ${MOZ_WINTOOLS_ARCHIVE}
			DownloadFile ${MOZ_VC8TOOLS_LOCATE} ${MOZ_VC8TOOLS_ARCHIVE}
			cp -v ${TEMP_DIR}/${MOZ_GLIB_ARCHIVE} ${SRC_ROOT}/moz/download
			cp -v ${TEMP_DIR}/${MOZ_LIBIDL_ARCHIVE} ${SRC_ROOT}/moz/download
			cp -v ${TEMP_DIR}/${MOZ_WINTOOLS_ARCHIVE} ${SRC_ROOT}/moz/download
			cp -v ${TEMP_DIR}/${MOZ_VC8TOOLS_ARCHIVE} ${SRC_ROOT}/moz/download
		fi
		CONFIG_FLAGS="${CONFIG_FLAGS} --with-mozilla-version=${MOZILLA_VERSION}"
	else
		if [ x${MOZNAME} != x ]; then
			PrintMessage "Copying compiled mozilla runtime"
			if [ ! -e ${SRC_ROOT}/moz/zipped/${MOZNAME}inc.zip ]; then
				if [ ! -e ${TEMP_DIR}/${MOZNAME}inc.zip ]; then
					DownloadFile "${MOZILLA_PREBUILD_LOCATE}" "${MOZNAME}inc.zip"
				fi
				cp -v ${TEMP_DIR}/${MOZNAME}inc.zip ${SRC_ROOT}/moz/zipped
			fi
			if [ ! -e ${SRC_ROOT}/moz/zipped/${MOZNAME}lib.zip ]; then
				if [ ! -e ${TEMP_DIR}/${MOZNAME}lib.zip ]; then
					DownloadFile "${MOZILLA_PREBUILD_LOCATE}" "${MOZNAME}lib.zip"
				fi
				cp -v ${TEMP_DIR}/${MOZNAME}lib.zip ${SRC_ROOT}/moz/zipped
			fi
			if [ ! -e ${SRC_ROOT}/moz/zipped/${MOZNAME}runtime.zip ]; then
				if [ ! -e ${TEMP_DIR}/${MOZNAME}runtime.zip ]; then
					DownloadFile "${MOZILLA_PREBUILD_LOCATE}" "${MOZNAME}runtime.zip"
				fi
				cp -v ${TEMP_DIR}/${MOZNAME}runtime.zip ${SRC_ROOT}/moz/zipped
			fi
			CONFIG_FLAGS="${CONFIG_FLAGS} --disable-build-mozilla"
		else
			CONFIG_FLAGS="${CONFIG_FLAGS} --disable-mozilla"
		fi
	fi

	# =================================================
	# Windows上での実行時に必要となるDLLの所定位置へのコピー(Visual C++インストール先がコマンドサーチパスに登録されている必要有り)
	# =================================================
	if [ x${OOO_BUILD_SYSTEM} = xWin32Intel ]; then
		PrintMessage "Copying required Dynamic link libralies"
		install -v -m755 ${SRC_ROOT}/temp/unicows/unicows.dll ${SRC_ROOT}/external/unicows
		install -v -m755 ${SRC_ROOT}/temp/dbghelp/dbghelp.dll ${SRC_ROOT}/external/dbghelp
		install -v -m755 ${SRC_ROOT}/temp/msvcp71/msvcp71.dll ${SRC_ROOT}/external/msvcp71
		install -v -m755 ${SRC_ROOT}/temp/msvcp71/msvcr71.dll ${SRC_ROOT}/external/msvcp71
		install -v -m755 ${SRC_ROOT}/temp/gdiplus/gdiplus.dll ${SRC_ROOT}/external/gdiplus

		# ==================================================
		# Microsoft Visual C++ 2005/2008 Redistributable Package (x86)のインストール先確認
		# 複数Revision存在する場合に最終Revisionを選択し必要なファイルをコピーする
		# OpenOffice.org Windows版をビルドする際には、以下の2つのパッケージがインストールされていることを確認する。
		#
		# Mozilla Runtime(Seamonkey 1.1.14)に必須
		# Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
		# http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&displaylang=ja
		#
		# Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
		# http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=ja
		# ==================================================
		BASEDIR=`ConvertShortUnixName ${WINDIR}/WinSxS`
		pushd ${BASEDIR} &> /dev/null
		for VER in 80 90; do
			let CLV=VER/10+6
			MAX_REV=0
			MAX_DIR=""
			for DIR in x86_Microsoft.VC${VER}.CRT_*; do
				TEMP_REV=`echo ${DIR} | awk -F "_" '{print $4}' | awk -F "." '{print ($3 * 10000 + $4)}'`
				if [ ${TEMP_REV} -gt ${MAX_REV} ]; then
					MAX_REV=${TEMP_REV}
					MAX_DIR=${DIR}
				fi
			done
			if [ ${MAX_REV} -gt 0 ]; then
				install -v -m755 ${BASEDIR}/${MAX_DIR}/msvc[pr]${VER}.dll ${SRC_ROOT}/external/msvcp${VER}
			else
				if [ ${CL_VER} -eq ${CLV} ]; then
					PrintMessage "msvcp${VER}.dll/msvcr${VER}.dll not found."
					exit
				fi
			fi
		done
		popd &> /dev/null

		if [ ${CL_VER} -eq 15 ]; then
			SEARCHDIR=`ConvertShortUnixName "/cygdrive/c/Program Files/Common Files/Merge Modules/"`
			if [ -f "${SEARCHDIR}/Microsoft_VC90_CRT_x86.msm" ]; then
				install -v -m755 ${SEARCHDIR}Microsoft_VC90_CRT_x86.msm ${SRC_ROOT}/external/msm90
				install -v -m755 ${SEARCHDIR}policy_*_Microsoft_VC90_CRT_x86.msm ${SRC_ROOT}/external/msm90
			else
				PrintMessage "Microsoft_VC90_CRT_x86.msm not found."
				exit
			fi
		fi

		if [ ! -e ${SRC_ROOT}/external/msi/InstMsiW.exe ]; then
			if [ ! -e ${TEMP_DIR}/InstMsiW.exe ]; then
				DownloadFile "http://download.microsoft.com/download/WindowsInstaller/Install/2.0/NT45/EN-US" "InstMsiW.exe"
			fi
			install -v -m755 ${TEMP_DIR}/InstMsiW.exe ${SRC_ROOT}/external/msi
		fi
		if [ ! -e ${SRC_ROOT}/external/msi/InstMsiA.exe ]; then
			if [ ! -e ${TEMP_DIR}/InstMsiA.exe ]; then
				DownloadFile "http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US" "InstMsiA.exe"
			fi
			install -v -m755 ${TEMP_DIR}/InstMsiA.exe ${SRC_ROOT}/external/msi
		fi
	fi

	# ==================================================
	# patchを適用
	# ==================================================
	if [ ! -e ${SRC_ROOT}/patch.log ]; then
		PrintMessage "Applying original patches"
		if [ -e ${PATCH_DIR} ]; then
			ApplyPatch ${PATCH_DIR}
		fi
		if [ -e ${PATCH_DIR}/${OOO_BUILD_SYSTEM} ]; then
			ApplyPatch ${PATCH_DIR}/${OOO_BUILD_SYSTEM}
		fi
	fi

	# ==================================================
	# confiugreスクリプトを実行する
	# ==================================================
	if [ "${OOO_BUILD_SYSTEM}" != "Win32Intel" ]; then
		PrintMessage "Running autoconf."
		if [ -e ${SRC_ROOT}/configure ]; then
			rm -f ${SRC_ROOT}/configure
		fi
		autoconf
	fi

	PrintMessage "Running configure script."
	echo ./configure ${CONFIG_FLAGS} > ${SRC_ROOT}/build.param
	eval ./configure ${CONFIG_FLAGS}
	if [ $? != 0 ]; then
		PrintMessage "Configure failed. Fix it!"
		exit
	fi

	# ==================================================
	# 分散ビルドツールdmakeのビルド
	# ==================================================
	if [ -z "${RESTART_PROJECT}" ]; then
		PrintMessage "Bootstrapping."
		./bootstrap
		if [ $? != 0 ]; then
			PrintMessage "Bootstrap failed. Fix it!"
			exit
		fi
	fi
fi
#-----------------------------------------------------------------------------------------------------------------------------

# ==================================================
# ビルド環境設定スクリプトのロード
# ==================================================
if [ "${OOO_BUILD_SYSTEM}" = "Win32Intel" ]; then
	source ./winenv.set.sh
else
	source ./${OOO_BUILD_SYSTEM}Env.Set.sh
fi

./bootstrap

BUILD_CMD=`alias | grep -i "alias build=" | awk -F "=" '{print $2}' | sed "s/'//g"`
DELIVER_CMD=`alias | grep -i "alias deliver=" | awk -F "=" '{print $2}' | sed "s/'//g"`

# ==================================================
# ${SOLARVER}/${OOOUTPATH}.pro/binのコマンド実行パスへの追加
# ==================================================
if [ "${OOO_BUILD_SYSTEM}" = "Win32Intel" ]; then
	SOLVERBIN=`cygpath "${SOLARVER}/${OOOUTPATH}.pro/bin"`
else
	SOLVERBIN="${SOLARVER}/${OOOUTPATH}.pro/bin"
fi

echo ${PATH} | grep "${SOLVERBIN}" &> /dev/null
if [ $? -eq 1 ]; then
	export PATH=${PATH}:${SOLVERBIN}
fi

#-----------------------------------------------------------------------------------------------------------------------------
if [ x${PACKMODE} != xYes ]; then
	# ==================================================
	# 毎回Rebuildする必要があるmoduleの作業ディレクトリを削除
	# ==================================================
	for project in ${FORCE_REBUILD}; do
		rm -fr ${SRC_ROOT}/${project}/${OOOUTPATH}.pro
	done

	if [ -n "${RESTART_PROJECT}" ]; then
		BUILD_OPTION="${BUILD_OPTION} --from ${RESTART_PROJECT}"
	else
		# ==================================================
		# delver時に必ずstripしてからdeliverする様に変更
		# ==================================================
		pushd ${SRC_ROOT}/solenv/bin &> /dev/null
		LINE=`grep -in ENABLE_SYMBOLS deliver.pl | awk -F : '{print $1}'`
		if [ x${LINE} != x ]; then
			let LINE=LINE+2
			sed '/ENABLE_SYMBOLS/d' < deliver.pl > deliver.pl.strip
			eval sed '${LINE}d' < deliver.pl.strip > deliver.pl
			rm -f deliver.pl.strip &> /dev/null
		fi
		popd &> /dev/null

		# ==================================================
		# ローカライズデータ用ツールのビルドとオリジナルローカライズデータの登録
		# ==================================================
		PrintMessage "Prepare localize tools."
		BuildProject transex3 "--all"
		PrintMessage "Merging localize data."
		if [ ! -e ${SRC_ROOT}/l10n_so ]; then
			ln -s ${SRC_ROOT}/l10n ${SRC_ROOT}/l10n_so
		fi
		pushd ${TEMP_DIR}/sdf &> /dev/null
		for GSI in *.sdf; do
			localize -m -x -l all -f ${GSI}
		done
		popd &> /dev/null

#		export MAXPROCESS=${JOB_NUM}
		BUILD_OPTION="${BUILD_OPTION} -P${JOB_NUM}"
	fi

	# ==================================================
	# ビルドプロセスの開始
	# ==================================================
	PrintMessage "Start build process."
	BuildProject instsetoo_native/util "${BUILD_OPTION}"
fi
#-----------------------------------------------------------------------------------------------------------------------------

# ==================================================
# SDK パッケージの作成
# ==================================================
if [ x${CREATE_SDK} = xYes ]; then
	PACKAGE_NAME="OOo_${VERSION}_${OOO_BUILD_SYSTEM}_sdk_${OOO_VENDOR}"
	PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/OpenOffice_SDK"
	PrintMessage "Packaging SDK"
	case ${OOO_BUILD_SYSTEM} in
	LinuxX86*)
		PACKAGE_DIR="${PACKAGE_DIR}/rpm/install/en-US"
		;;
	Win32Intel)
		PACKAGE_DIR="${PACKAGE_DIR}/msi/install/en-US"
		pushd ${PACKAGE_DIR}_download &> /dev/null
		cp -vp *.exe ${PKGOUTDIR}/${PACKAGE_NAME}.exe
		popd &> /dev/null
		;;
	esac
	Package SDK ${PACKAGE_DIR} ${PKGOUTDIR}/${PACKAGE_NAME}
fi

# ==================================================
# SOLVER パッケージの作成
# ==================================================
if [ x${CREATE_SOLVER} = xYes ]; then
	PACKAGE_NAME="OOo_${VERSION}_${OOO_BUILD_SYSTEM}_solver_${OOO_VENDOR}"
	PrintMessage "Packaging SOLVER"
	case ${OOO_BUILD_SYSTEM} in
	LinuxX86*)
		tar cvf - solver | bzip2 -9 - > ${PKGOUTDIR}/${PACKAGE_NAME}.tar.bz2
		;;
	Win32Intel)
		zip -r -9 ${PKGOUTDIR}/${PACKAGE_NAME}.zip solver
		;;
	esac
fi

# ==================================================
# Uno Runtime Environment パッケージの作成
# ==================================================
if [ x${CREATE_URE_PACKAGE} = xYes ]; then
	URE_VERSION=`sed -e '/^URE$/,/^}/!d' -e '/PACKAGEVERSION/!d' -e 's/^.*PACKAGEVERSION.//' < ${SRC_ROOT}/instsetoo_native/util/openoffice.lst`
	PrintMessage "Copy to PKGOUTDIR Pack UnoRuntime Environment"
	case ${OOO_BUILD_SYSTEM} in
	LinuxX86*)
		for PKG in ${PACKAGE_FORMAT}; do
			PACKAGE_NAME="URE_${URE_VERSION}_${OOO_BUILD_SYSTEM}_install_${OOO_VENDOR}_${PKG}"
			PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/URE/${PKG}/install/en-US"
			Package URE ${PACKAGE_DIR} ${PKGOUTDIR}/${PACKAGE_NAME} ${PKG}
		done
		;;
	Win32Intel)
		PACKAGE_NAME="URE_${URE_VERSION}_${OOO_BUILD_SYSTEM}_install_${OOO_VENDOR}"
		PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/URE/msi/install/en-US"
		cp -vp ${PACKAGE_DIR}_download/*_en-US.exe ${PKGOUTDIR}/${PACKAGE_NAME}.exe
		Package URE ${PACKAGE_DIR} ${PKGOUTDIR}/${PACKAGE_NAME}
		;;
	esac
fi

# ==================================================
# インストールセットの作成
# ==================================================
case ${OOO_BUILD_SYSTEM} in
LinuxX86*)
	for PKG in ${PACKAGE_FORMAT}; do
		CreatePackage InstallSet ${PKG}
		[ x${CREATE_LANGUAGEPACK} = xYes ] && CreatePackage LanguagePack ${PKG}
	done
	;;
Win32Intel)
	CreatePackage InstallSet native
	[ x${CREATE_LANGUAGEPACK} = xYes ] && CreatePackage LanguagePack
	;;
esac

