diff options
author | Michael Hutchinson <mhutchinson@novell.com> | 2010-11-10 02:05:30 +0300 |
---|---|---|
committer | Michael Hutchinson <mhutchinson@novell.com> | 2010-11-10 02:05:30 +0300 |
commit | 0e3f4793d77082a23384fd195e62b6cf0876e3f0 (patch) | |
tree | 0b2cbc18c3a7e266251a8b3d10ebd219e5ec4e77 | |
parent | 38566786661d5157ea3d9bda22cb0213cc091558 (diff) |
[Mac] Fix bundle and executable name
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | main/build/MacOSX/Makefile.am | 10 | ||||
-rwxr-xr-x | main/build/MacOSX/mdtool | 10 | ||||
-rwxr-xr-x | main/build/MacOSX/monodevelop | 12 | ||||
-rw-r--r-- | main/build/MacOSX/monostub.c | 25 |
5 files changed, 38 insertions, 20 deletions
diff --git a/.gitignore b/.gitignore index 34f60acfc9..dc3b5488d9 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ obj/ /main/tests/tmp /main/tests/config /main/tests/UnitTests/test-results +/main/build/MacOSX/monostub # globs Makefile.in diff --git a/main/build/MacOSX/Makefile.am b/main/build/MacOSX/Makefile.am index 8e0cb31d9c..f49ccc4d69 100644 --- a/main/build/MacOSX/Makefile.am +++ b/main/build/MacOSX/Makefile.am @@ -20,7 +20,7 @@ clean-local: rm -f MonoDevelop.dmg rm -f MonoDevelop.app.zip -MonoDevelop.app: +MonoDevelop.app: monostub mkdir -p $(MAC_APP_DIR)/Contents/{MacOS,Resources} mkdir -p $(MAC_APP_DIR)/Contents/MacOS/{lib,share} mkdir -p $(MAC_APP_LIB_DIR) @@ -76,6 +76,11 @@ MonoDevelop.app: test ! -d $(ARTIFACTS)/MoonSDK || cp -pR $(ARTIFACTS)/MoonSDK/* $(MACOS)/lib/moonlight/ test ! -d $(ARTIFACTS)/MonoDoc.app || cp -pR $(ARTIFACTS)/MonoDoc.app/* $(MACOS)/MonoDoc.app/ +# Mono stubs to make the process name and bundle location correct + mkdir -p "$(MACOS)/bin" + cp monostub "$(MACOS)/bin/monodevelop" + cp monostub "$(MACOS)/bin/mdtool" + # update revision in updateinfo echo "a3140c14-ef90-4019-ae6c-9d93804d6611 $$(cat release-info)" > "$(MACOS)/updateinfo" @@ -92,4 +97,7 @@ MonoDevelop.app: MonoDevelop.app.zip: MonoDevelop.app zip -r9uq MonoDevelop.app.zip MonoDevelop.app +monostub: monostub.c + gcc -m32 monostub.c -o monostub -framework CoreFoundation + .PHONY: MonoDevelop.app diff --git a/main/build/MacOSX/mdtool b/main/build/MacOSX/mdtool index afa157034e..7f6fe40a62 100755 --- a/main/build/MacOSX/mdtool +++ b/main/build/MacOSX/mdtool @@ -19,14 +19,6 @@ EXE_PATH="$DIR/lib/monodevelop/bin/mdrun.exe" PKG_CONFIG_PATH="$DIR/lib/pkgconfig:$PKG_CONFIG_PATH" export PKG_CONFIG_PATH -# Work around a bug in 'exec' in older versions of macosx -OSX_VERSION=$(uname -r | cut -f1 -d.) -if [ $OSX_VERSION -lt 9 ]; then # If OSX version is 10.4 - MONO_EXEC="mono" -else - MONO_EXEC="exec -a monodevelop mono" -fi - # The Mono "External" folder allows users (such as MonoDroid) to install # things without worrying that they'll be removed next time mono is upgraded # Mono doesn't support it get so we hack it via env vars for now. @@ -56,5 +48,5 @@ else _MONO_OPTIONS=$MONO_OPTIONS fi -$MONO_EXEC $_MONO_OPTIONS "$EXE_PATH" $* +exec "$DIR/bin/mdtool" $_MONO_OPTIONS "$EXE_PATH" $* diff --git a/main/build/MacOSX/monodevelop b/main/build/MacOSX/monodevelop index 05f04f8cb3..62f68e176f 100755 --- a/main/build/MacOSX/monodevelop +++ b/main/build/MacOSX/monodevelop @@ -19,14 +19,6 @@ EXE_PATH="$DIR/lib/monodevelop/bin/MonoDevelop.exe" export PKG_CONFIG_PATH="$DIR/lib/pkgconfig:$PKG_CONFIG_PATH" -# Work around a bug in 'exec' in older versions of macosx -OSX_VERSION=$(uname -r | cut -f1 -d.) -if [ $OSX_VERSION -lt 9 ]; then # If OSX version is 10.4 - MONO_EXEC="exec mono" -else - MONO_EXEC="exec -a monodevelop mono" -fi - #mono version check if ! "$DIR/mono-version-check" MonoDevelop 2 6 7 ; then exit 1; fi @@ -60,8 +52,8 @@ fi if [ -z "$MD_DONT_REDIRECT_OUTPUT" ]; then mkdir -p "`dirname \"$_MD_LOG_FILE\"`" - $MONO_EXEC $_MONO_OPTIONS "$EXE_PATH" $* 2>&1 1> "$_MD_LOG_FILE" + exec "$DIR/bin/monodevelop" $_MONO_OPTIONS "$EXE_PATH" $* 2>&1 1> "$_MD_LOG_FILE" else - $MONO_EXEC $_MONO_OPTIONS "$EXE_PATH" $* + exec "$DIR/bin/monodevelop" $_MONO_OPTIONS "$EXE_PATH" $* fi diff --git a/main/build/MacOSX/monostub.c b/main/build/MacOSX/monostub.c new file mode 100644 index 0000000000..38d4f73dc3 --- /dev/null +++ b/main/build/MacOSX/monostub.c @@ -0,0 +1,25 @@ +#include <stdlib.h> +#include <stdio.h> +#include <dlfcn.h> + +typedef int (*MonoMain) (int argc, char* argv[]); + +int main (int argc, char *argv[]) +{ + void *libmono = dlopen ("libmono-2.0.dylib", RTLD_LAZY); + if (libmono == NULL) { + libmono = dlopen ("libmono-0.dylib", RTLD_LAZY); + if(libmono == NULL) { + printf ("Could not load libmono\n"); + exit (1); + } + } + + MonoMain mono_main = (MonoMain) dlsym (libmono, "mono_main"); + if (mono_main == NULL) { + printf ("Could not load mono_main\n"); + exit (2); + } + + return mono_main (argc, argv); +} |