Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hutchinson <mhutchinson@novell.com>2010-11-10 02:05:30 +0300
committerMichael Hutchinson <mhutchinson@novell.com>2010-11-10 02:05:30 +0300
commit0e3f4793d77082a23384fd195e62b6cf0876e3f0 (patch)
tree0b2cbc18c3a7e266251a8b3d10ebd219e5ec4e77
parent38566786661d5157ea3d9bda22cb0213cc091558 (diff)
[Mac] Fix bundle and executable name
-rw-r--r--.gitignore1
-rw-r--r--main/build/MacOSX/Makefile.am10
-rwxr-xr-xmain/build/MacOSX/mdtool10
-rwxr-xr-xmain/build/MacOSX/monodevelop12
-rw-r--r--main/build/MacOSX/monostub.c25
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);
+}