3 # This Source Code Form is subject to the terms of the Mozilla Public
4 # License, v. 2.0. If a copy of the MPL was not distributed with this
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 cmdname
=`basename "$0"`
7 MOZ_DIST_BIN
=`dirname "$0"`
8 MOZ_DEFAULT_NAME
="./${cmdname}-bin"
9 MOZ_APPRUNNER_NAME
="./mozilla-bin"
17 ##########################################################################
20 echo "Usage: ${cmdname} [options] [program]"
24 echo " -g Run in debugger."
27 echo " -d debugger Debugger to use."
28 echo " --debugger debugger"
30 echo " -a debugger_args Arguments passed to [debugger]."
31 echo " --debugger-args debugger_args"
35 echo " Run the mozilla-bin binary"
37 echo " ${cmdname} mozilla-bin"
39 echo " Debug the mozilla-bin binary in gdb"
41 echo " ${cmdname} -g mozilla-bin -d gdb"
43 echo " Run mozilla-bin under valgrind with arguments"
45 echo " ${cmdname} -g -d valgrind -a '--tool=memcheck --leak-check=full' mozilla-bin"
49 ##########################################################################
54 echo "$cmdname: $message"
58 ##########################################################################
71 ##########################################################################
74 debuggers
="ddd gdb dbx bdb native-gdb"
79 moz_test_binary
/bin
/which
84 dpath
=`LC_MESSAGES=C type ${d} | awk '{print $3;}' | sed -e 's/\.$//'`
95 ##########################################################################
100 ## Make sure the program is executable
104 moz_bail
"Cannot execute $prog."
109 exec "$prog" ${1+"$@"}
112 ##########################################################################
117 ## Make sure the program is executable
121 moz_bail
"Cannot execute $prog."
123 if [ -n "$moz_debugger" ]
125 moz_test_binary
/bin
/which
128 debugger
=`which $moz_debugger`
130 debugger
=`LC_MESSAGES=C type $moz_debugger | awk '{print $3;}' | sed -e 's/\.$//'`
133 debugger
=`moz_get_debugger`
135 if [ -x "$debugger" ]
137 # If you are not using ddd, gdb and know of a way to convey the arguments
138 # over to the prog then add that here- Gagan Saksena 03/15/00
139 case `basename $debugger` in
140 native-gdb
) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"}
141 exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"}
144 gdb
) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"}
145 exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"}
148 ddd
) echo "$debugger $moz_debugger_args --gdb -- --args $prog" ${1+"$@"}
149 exec "$debugger" $moz_debugger_args --gdb -- --args "$prog" ${1+"$@"}
152 *) echo "$debugger $moz_debugger_args $prog ${1+"$@"}"
153 exec $debugger $moz_debugger_args "$prog" ${1+"$@"}
158 moz_bail
"Could not find a debugger on your system."
161 ##########################################################################
163 ## Command line arg defaults
170 ## Parse the command line
181 if [ "${moz_debugger}" != "" ]; then
184 echo "-d requires an argument"
188 -a |
--debugger-args)
189 moz_debugger_args
=$2;
190 if [ "${moz_debugger_args}" != "" ]; then
193 echo "-a requires an argument"
204 ## Program name given in $1
212 ## Program not given, try to guess a default
214 if [ -z "$MOZ_PROGRAM" ]
217 ## Try this script's name with '-bin' appended
219 if [ -x "$MOZ_DEFAULT_NAME" ]
221 MOZ_PROGRAM
=$MOZ_DEFAULT_NAME
225 elif [ -x "$MOZ_APPRUNNER_NAME" ]
227 MOZ_PROGRAM
=$MOZ_APPRUNNER_NAME
233 ## Make sure the program is executable
235 if [ ! -x "$MOZ_PROGRAM" ]
237 moz_bail
"Cannot execute $MOZ_PROGRAM."
240 if [ -z "$MRE_HOME" ]; then
241 MRE_HOME
=$MOZ_DIST_BIN
244 ## Set LD_LIBRARY_PATH
246 ## On Solaris we use $ORIGIN (set in RUNPATH) instead of LD_LIBRARY_PATH
247 ## to locate shared libraries.
249 ## When a shared library is a symbolic link, $ORIGIN will be replaced with
250 ## the real path (i.e., what the symbolic link points to) by the runtime
251 ## linker. For example, if dist/bin/libxul.so is a symbolic link to
252 ## toolkit/library/libxul.so, $ORIGIN will be "toolkit/library" instead of "dist/bin".
253 ## So the runtime linker will use "toolkit/library" NOT "dist/bin" to locate the
254 ## other shared libraries that libxul.so depends on. This only happens
255 ## when a user (developer) tries to start firefox, thunderbird, or seamonkey
256 ## under dist/bin. To solve the problem, we should rely on LD_LIBRARY_PATH
257 ## to locate shared libraries.
260 ## We test $MOZ_DIST_BIN/*.so. If any of them is a symbolic link,
261 ## we need to set LD_LIBRARY_PATH.
262 ##########################################################################
263 moz_should_set_ld_library_path
()
265 [ `uname -s` != "SunOS" ] && return 0
266 for sharedlib
in $MOZ_DIST_BIN/*.so
268 [ -h $sharedlib ] && return 0
272 if moz_should_set_ld_library_path
274 LD_LIBRARY_PATH
=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH:+":$LD_LIBRARY_PATH"}
277 if [ -n "$LD_LIBRARYN32_PATH" ]
279 LD_LIBRARYN32_PATH
=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH:+":$LD_LIBRARYN32_PATH"}
281 if [ -n "$LD_LIBRARYN64_PATH" ]
283 LD_LIBRARYN64_PATH
=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN64_PATH:+":$LD_LIBRARYN64_PATH"}
285 if [ -n "$LD_LIBRARY_PATH_64" ]; then
286 LD_LIBRARY_PATH_64
=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH_64:+":$LD_LIBRARY_PATH_64"}
290 ## Set SHLIB_PATH for HPUX
291 SHLIB_PATH
=${MOZ_DIST_BIN}:${MRE_HOME}${SHLIB_PATH:+":$SHLIB_PATH"}
293 ## Set LIBPATH for AIX
294 LIBPATH
=${MOZ_DIST_BIN}:${MRE_HOME}${LIBPATH:+":$LIBPATH"}
296 ## Set DYLD_LIBRARY_PATH for Mac OS X (Darwin)
297 DYLD_LIBRARY_PATH
=${MOZ_DIST_BIN}:${MRE_HOME}${DYLD_LIBRARY_PATH:+":$DYLD_LIBRARY_PATH"}
299 ## Solaris Xserver(Xsun) tuning - use shared memory transport if available
300 if [ "$XSUNTRANSPORT" = "" ]
302 XSUNTRANSPORT
="shmem"
304 export XSUNTRANSPORT XSUNSMESIZE
307 # Disable Gnome crash dialog
308 GNOME_DISABLE_CRASH_DIALOG
=1
309 export GNOME_DISABLE_CRASH_DIALOG
311 if [ "$moz_debug" -eq 1 ]
313 echo " LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
314 if [ -n "$LD_LIBRARYN32_PATH" ]
316 echo "LD_LIBRARYN32_PATH=$LD_LIBRARYN32_PATH"
318 if [ -n "$LD_LIBRARYN64_PATH" ]
320 echo "LD_LIBRARYN64_PATH=$LD_LIBRARYN64_PATH"
322 if [ -n "$LD_LIBRARY_PATH_64" ]; then
323 echo "LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64"
325 if [ -n "$DISPLAY" ]; then
326 echo "DISPLAY=$DISPLAY"
328 if [ -n "$FONTCONFIG_PATH" ]; then
329 echo "FONTCONFIG_PATH=$FONTCONFIG_PATH"
331 if [ -n "$MOZILLA_POSTSCRIPT_PRINTER_LIST" ]; then
332 echo "MOZILLA_POSTSCRIPT_PRINTER_LIST=$MOZILLA_POSTSCRIPT_PRINTER_LIST"
334 echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH"
335 echo " LIBRARY_PATH=$LIBRARY_PATH"
336 echo " SHLIB_PATH=$SHLIB_PATH"
337 echo " LIBPATH=$LIBPATH"
338 echo " ADDON_PATH=$ADDON_PATH"
339 echo " MOZ_PROGRAM=$MOZ_PROGRAM"
340 echo " MOZ_TOOLKIT=$MOZ_TOOLKIT"
341 echo " moz_debug=$moz_debug"
342 echo " moz_debugger=$moz_debugger"
343 echo "moz_debugger_args=$moz_debugger_args"
346 export LD_LIBRARY_PATH
347 export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
349 if [ $moz_debug -eq 1 ]
351 moz_debug_program
${1+"$@"}
353 moz_run_program
${1+"$@"}