forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			356 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			356 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # This Source Code Form is subject to the terms of the Mozilla Public
 | |
| # License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| cmdname=`basename "$0"`
 | |
| MOZ_DIST_BIN=`dirname "$0"`
 | |
| MOZ_DEFAULT_NAME="./${cmdname}-bin"
 | |
| MOZ_APPRUNNER_NAME="./mozilla-bin"
 | |
| MOZ_PROGRAM=""
 | |
| 
 | |
| exitcode=1
 | |
| #
 | |
| ##
 | |
| ## Functions
 | |
| ##
 | |
| ##########################################################################
 | |
| moz_usage()
 | |
| {
 | |
| echo "Usage:  ${cmdname} [options] [program]"
 | |
| echo ""
 | |
| echo "  options:"
 | |
| echo ""
 | |
| echo "    -g                   Run in debugger."
 | |
| echo "    --debug"
 | |
| echo ""
 | |
| echo "    -d debugger          Debugger to use."
 | |
| echo "    --debugger debugger"
 | |
| echo ""
 | |
| echo "    -a debugger_args     Arguments passed to [debugger]."
 | |
| echo "    --debugger-args debugger_args"
 | |
| echo ""
 | |
| echo "  Examples:"
 | |
| echo ""
 | |
| echo "  Run the mozilla-bin binary"
 | |
| echo ""
 | |
| echo "    ${cmdname} mozilla-bin"
 | |
| echo ""
 | |
| echo "  Debug the mozilla-bin binary in gdb"
 | |
| echo ""
 | |
| echo "    ${cmdname} -g mozilla-bin -d gdb"
 | |
| echo ""
 | |
| echo "  Run mozilla-bin under valgrind with arguments"
 | |
| echo ""
 | |
| echo "    ${cmdname} -g -d valgrind -a '--tool=memcheck --leak-check=full' mozilla-bin"
 | |
| echo ""
 | |
| 	return 0
 | |
| }
 | |
| ##########################################################################
 | |
| moz_bail()
 | |
| {
 | |
| 	message=$1
 | |
| 	echo
 | |
| 	echo "$cmdname: $message"
 | |
| 	echo
 | |
| 	exit 1
 | |
| }
 | |
| ##########################################################################
 | |
| moz_test_binary()
 | |
| {
 | |
| 	binary=$1
 | |
| 	if [ -f "$binary" ]
 | |
| 	then
 | |
| 		if [ -x "$binary" ]
 | |
| 		then
 | |
| 			return 1
 | |
| 		fi
 | |
| 	fi
 | |
| 	return 0
 | |
| }
 | |
| ##########################################################################
 | |
| moz_get_debugger()
 | |
| {
 | |
| 	debuggers="ddd gdb dbx bdb native-gdb"
 | |
| 	debugger="notfound"
 | |
| 	done="no"
 | |
| 	for d in $debuggers
 | |
| 	do
 | |
| 		moz_test_binary /bin/which
 | |
| 		if [ $? -eq 1 ]
 | |
| 		then
 | |
| 			dpath=`which ${d}`	
 | |
| 		else 	
 | |
| 			dpath=`LC_MESSAGES=C type ${d} | awk '{print $3;}' | sed -e 's/\.$//'`	
 | |
| 		fi
 | |
| 		if [ -x "$dpath" ]
 | |
| 		then
 | |
| 			debugger=$dpath
 | |
| 			break
 | |
| 		fi
 | |
| 	done
 | |
| 	echo $debugger
 | |
| 	return 0
 | |
| }
 | |
| ##########################################################################
 | |
| moz_run_program()
 | |
| {
 | |
| 	prog=$MOZ_PROGRAM
 | |
| 	##
 | |
| 	## Make sure the program is executable
 | |
| 	##
 | |
| 	if [ ! -x "$prog" ]
 | |
| 	then
 | |
| 		moz_bail "Cannot execute $prog."
 | |
| 	fi
 | |
| 	##
 | |
| 	## Run the program
 | |
| 	##
 | |
| 	exec "$prog" ${1+"$@"}
 | |
| 	exitcode=$?
 | |
| }
 | |
| ##########################################################################
 | |
| moz_debug_program()
 | |
| {
 | |
| 	prog=$MOZ_PROGRAM
 | |
| 	##
 | |
| 	## Make sure the program is executable
 | |
| 	##
 | |
| 	if [ ! -x "$prog" ]
 | |
| 	then
 | |
| 		moz_bail "Cannot execute $prog."
 | |
| 	fi
 | |
| 	if [ -n "$moz_debugger" ]
 | |
| 	then
 | |
| 		moz_test_binary /bin/which
 | |
| 		if [ $? -eq 1 ]
 | |
| 		then	
 | |
| 			debugger=`which $moz_debugger` 
 | |
| 		else
 | |
| 			debugger=`LC_MESSAGES=C type $moz_debugger | awk '{print $3;}' | sed -e 's/\.$//'` 
 | |
| 		fi	
 | |
| 	else
 | |
| 		debugger=`moz_get_debugger`
 | |
| 	fi
 | |
|     if [ -x "$debugger" ] 
 | |
|     then
 | |
| # If you are not using ddd, gdb and know of a way to convey the arguments 
 | |
| # over to the prog then add that here- Gagan Saksena 03/15/00
 | |
|         case `basename $debugger` in
 | |
|             native-gdb) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"}
 | |
|                 exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"}
 | |
|                 exitcode=$?
 | |
|                 ;;
 | |
|             gdb) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"}
 | |
|                 exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"}
 | |
| 		exitcode=$?
 | |
|                 ;;
 | |
|             ddd) echo "$debugger $moz_debugger_args --gdb -- --args $prog" ${1+"$@"}
 | |
| 		exec "$debugger" $moz_debugger_args --gdb -- --args "$prog" ${1+"$@"}
 | |
| 		exitcode=$?
 | |
|                 ;;
 | |
|             *) echo "$debugger $moz_debugger_args $prog ${1+"$@"}"
 | |
|                 exec $debugger $moz_debugger_args "$prog" ${1+"$@"}
 | |
| 		exitcode=$?
 | |
|                 ;;
 | |
|         esac
 | |
|     else
 | |
|         moz_bail "Could not find a debugger on your system."
 | |
|     fi
 | |
| }
 | |
| ##########################################################################
 | |
| ##
 | |
| ## Command line arg defaults
 | |
| ##
 | |
| moz_debug=0
 | |
| moz_debugger=""
 | |
| moz_debugger_args=""
 | |
| #
 | |
| ##
 | |
| ## Parse the command line
 | |
| ##
 | |
| while [ $# -gt 0 ]
 | |
| do
 | |
|   case $1 in
 | |
|     -g | --debug)
 | |
|       moz_debug=1
 | |
|       shift
 | |
|       ;;
 | |
|     -d | --debugger)
 | |
|       moz_debugger=$2;
 | |
|       if [ "${moz_debugger}" != "" ]; then
 | |
| 	shift 2
 | |
|       else
 | |
|         echo "-d requires an argument"
 | |
|         exit 1
 | |
|       fi
 | |
|       ;;
 | |
|     -a | --debugger-args)
 | |
|       moz_debugger_args=$2;
 | |
|       if [ "${moz_debugger_args}" != "" ]; then
 | |
| 	shift 2
 | |
|       else
 | |
|         echo "-a requires an argument"
 | |
|         exit 1
 | |
|       fi
 | |
|       ;;
 | |
|     *)
 | |
|       break;
 | |
|       ;;
 | |
|   esac
 | |
| done
 | |
| #
 | |
| ##
 | |
| ## Program name given in $1
 | |
| ##
 | |
| if [ $# -gt 0 ]
 | |
| then
 | |
| 	MOZ_PROGRAM=$1
 | |
| 	shift
 | |
| fi
 | |
| ##
 | |
| ## Program not given, try to guess a default
 | |
| ##
 | |
| if [ -z "$MOZ_PROGRAM" ]
 | |
| then
 | |
| 	##
 | |
| 	## Try this script's name with '-bin' appended
 | |
| 	##
 | |
| 	if [ -x "$MOZ_DEFAULT_NAME" ]
 | |
| 	then
 | |
| 		MOZ_PROGRAM=$MOZ_DEFAULT_NAME
 | |
| 	##
 | |
| 	## Try mozilla-bin
 | |
| 	## 
 | |
| 	elif [ -x "$MOZ_APPRUNNER_NAME" ]
 | |
| 	then
 | |
| 		MOZ_PROGRAM=$MOZ_APPRUNNER_NAME
 | |
| 	fi
 | |
| fi
 | |
| #
 | |
| #
 | |
| ##
 | |
| ## Make sure the program is executable
 | |
| ##
 | |
| if [ ! -x "$MOZ_PROGRAM" ]
 | |
| then
 | |
| 	moz_bail "Cannot execute $MOZ_PROGRAM."
 | |
| fi
 | |
| #
 | |
| if [ -z "$MRE_HOME" ]; then
 | |
|     MRE_HOME=$MOZ_DIST_BIN
 | |
| fi
 | |
| ##
 | |
| ## Set LD_LIBRARY_PATH
 | |
| ##
 | |
| ## On Solaris we use $ORIGIN (set in RUNPATH) instead of LD_LIBRARY_PATH 
 | |
| ## to locate shared libraries. 
 | |
| ##
 | |
| ## When a shared library is a symbolic link, $ORIGIN will be replaced with
 | |
| ## the real path (i.e., what the symbolic link points to) by the runtime
 | |
| ## linker.  For example, if dist/bin/libxul.so is a symbolic link to
 | |
| ## toolkit/library/libxul.so, $ORIGIN will be "toolkit/library" instead of "dist/bin".
 | |
| ## So the runtime linker will use "toolkit/library" NOT "dist/bin" to locate the
 | |
| ## other shared libraries that libxul.so depends on.  This only happens
 | |
| ## when a user (developer) tries to start firefox, thunderbird, or seamonkey
 | |
| ## under dist/bin. To solve the problem, we should rely on LD_LIBRARY_PATH
 | |
| ## to locate shared libraries.
 | |
| ##
 | |
| ## Note: 
 | |
| ##  We test $MOZ_DIST_BIN/*.so. If any of them is a symbolic link,
 | |
| ##  we need to set LD_LIBRARY_PATH.
 | |
| ##########################################################################
 | |
| moz_should_set_ld_library_path()
 | |
| {
 | |
| 	[ `uname -s` != "SunOS" ] && return 0
 | |
| 	for sharedlib in $MOZ_DIST_BIN/*.so
 | |
| 	do
 | |
| 		[ -h $sharedlib ] && return 0
 | |
| 	done
 | |
| 	return 1
 | |
| }
 | |
| if moz_should_set_ld_library_path
 | |
| then
 | |
| 	LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH:+":$LD_LIBRARY_PATH"}
 | |
| fi 
 | |
| 
 | |
| if [ -n "$LD_LIBRARYN32_PATH" ]
 | |
| then
 | |
| 	LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH:+":$LD_LIBRARYN32_PATH"}
 | |
| fi
 | |
| if [ -n "$LD_LIBRARYN64_PATH" ]
 | |
| then
 | |
| 	LD_LIBRARYN64_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN64_PATH:+":$LD_LIBRARYN64_PATH"}
 | |
| fi
 | |
| if [ -n "$LD_LIBRARY_PATH_64" ]; then
 | |
| 	LD_LIBRARY_PATH_64=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH_64:+":$LD_LIBRARY_PATH_64"}
 | |
| fi
 | |
| #
 | |
| #
 | |
| ## Set SHLIB_PATH for HPUX
 | |
| SHLIB_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${SHLIB_PATH:+":$SHLIB_PATH"}
 | |
| #
 | |
| ## Set LIBPATH for AIX
 | |
| LIBPATH=${MOZ_DIST_BIN}:${MRE_HOME}${LIBPATH:+":$LIBPATH"}
 | |
| #
 | |
| ## Set DYLD_LIBRARY_PATH for Mac OS X (Darwin)
 | |
| DYLD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${DYLD_LIBRARY_PATH:+":$DYLD_LIBRARY_PATH"}
 | |
| #
 | |
| ## Solaris Xserver(Xsun) tuning - use shared memory transport if available
 | |
| if [ "$XSUNTRANSPORT" = "" ]
 | |
| then 
 | |
|         XSUNTRANSPORT="shmem" 
 | |
|         XSUNSMESIZE="512"
 | |
|         export XSUNTRANSPORT XSUNSMESIZE
 | |
| fi
 | |
| 
 | |
| # Disable Gnome crash dialog
 | |
| GNOME_DISABLE_CRASH_DIALOG=1
 | |
| export GNOME_DISABLE_CRASH_DIALOG
 | |
| 
 | |
| if [ "$moz_debug" -eq 1 ]
 | |
| then
 | |
|   echo "  LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
 | |
|   if [ -n "$LD_LIBRARYN32_PATH" ]
 | |
|   then
 | |
|   	echo "LD_LIBRARYN32_PATH=$LD_LIBRARYN32_PATH"
 | |
|   fi
 | |
|   if [ -n "$LD_LIBRARYN64_PATH" ]
 | |
|   then
 | |
|   	echo "LD_LIBRARYN64_PATH=$LD_LIBRARYN64_PATH"
 | |
|   fi
 | |
|   if [ -n "$LD_LIBRARY_PATH_64" ]; then
 | |
|   	echo "LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64"
 | |
|   fi
 | |
|   if [ -n "$DISPLAY" ]; then
 | |
|        echo "DISPLAY=$DISPLAY"
 | |
|   fi
 | |
|   if [ -n "$FONTCONFIG_PATH" ]; then
 | |
| 	echo "FONTCONFIG_PATH=$FONTCONFIG_PATH"
 | |
|   fi
 | |
|   if [ -n "$MOZILLA_POSTSCRIPT_PRINTER_LIST" ]; then
 | |
|        echo "MOZILLA_POSTSCRIPT_PRINTER_LIST=$MOZILLA_POSTSCRIPT_PRINTER_LIST"
 | |
|   fi
 | |
|   echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH"
 | |
|   echo "     LIBRARY_PATH=$LIBRARY_PATH"
 | |
|   echo "       SHLIB_PATH=$SHLIB_PATH"
 | |
|   echo "          LIBPATH=$LIBPATH"
 | |
|   echo "       ADDON_PATH=$ADDON_PATH"
 | |
|   echo "      MOZ_PROGRAM=$MOZ_PROGRAM"
 | |
|   echo "      MOZ_TOOLKIT=$MOZ_TOOLKIT"
 | |
|   echo "        moz_debug=$moz_debug"
 | |
|   echo "     moz_debugger=$moz_debugger"
 | |
|   echo "moz_debugger_args=$moz_debugger_args"
 | |
| fi
 | |
| #
 | |
| export LD_LIBRARY_PATH
 | |
| export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
 | |
| 
 | |
| if [ $moz_debug -eq 1 ]
 | |
| then
 | |
| 	moz_debug_program ${1+"$@"}
 | |
| else
 | |
| 	moz_run_program ${1+"$@"}
 | |
| fi
 | |
| 
 | |
| exit $exitcode
 | 
