#!/bin/sh
#
# Helper script for using libstartup on binaries in Scratchbox,
# includes stuff from run-standalone.sh. Based on run-with-libleaks.
# This file is part of sp-startup-time.
#
# Copyright (C) 2007 by Nokia Corporation
#
# Contact: Eero Tamminen <eero.tamminen@nokia.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License 
# version 2 as published by the Free Software Foundation. 
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
# 02110-1301 USA
#
# 
# There are several ways to use this script
# - Rename the original binary to <name>.real and
#   put/link this script in place of the original binary
# - If the binary is using "maemo-launcher", this can
#   be linked instead of the "maemo-invoker" and it will
#   automatically call "launcher-wrapper"
# - Call the binary with this script, e.g. like this
#   export DISPLAY=:1 run-standalone.sh run-with-startup-time <binary> <arguments>
# 
# This sets all the required environment variables etc.
# before calling libstartup.

wrapper=/usr/bin/maemo-summoner

if [ -x "$0.real" ]; then
	app="$0.real"
elif [ -x "$1.launch" ] || [ -x "$0.launch" ] || [ "${1##*.}" = "launch" ]; then
	# use launcher wrapper automatically if given binary that needs it
	if [ \! -x "$wrapper" ]; then
		echo "ERROR: '$wrapper' for running .launch binaries is missing!"
		exit 1
	fi
	
	echo
	echo "Application started with launcher wrapper."
	echo "Please note that this makes the startup time results very inaccurate,"
	echo "as the use of maemo-launcher will optimize away many things that"
	echo "would normally occur during the application startup.\n"
	echo 

	echo "$0: $*"
	if [ -x "$1.launch" ]; then
		app="$wrapper $1.launch"
		shift
        elif [ -x "$0.launch" ]; then
		app="$wrapper $0.launch"
	else
		app="$wrapper $1"
		shift
	fi
	echo "$0: $*"
elif [ -x "$1" ]; then
	app="$1"
	shift
else
	echo "ERROR: no application given!"
	exit 1
fi
app_opts="$*"

# funny things happen if library set to /etc/ld.so.preload is missing...
libstartup=/usr/lib/sp-startup-time/libstartup.so
if [ \! -f $libstartup ]; then
	echo "ERROR: $libstartup missing!"
	exit 1
fi

# LD_PRELOAD doesn't work in Scratchbox
if [ -f /targets/links/scratchbox.config ]; then
	echo "Using /etc/ld.so/preload for overriding some GTK functions in $app with libstartup"
	echo $libstartup > /etc/ld.so.preload
	$app $app_opts &
	rm /etc/ld.so.preload
else
	echo "Using LD_PRELOAD for overriding some GTK functions in $app with libstartup"
	export LD_PRELOAD=$LD_PRELOAD:$libstartup
	$app $app_opts &
fi

