diff --git a/doc/mac-deploy-howto.txt b/doc/mac-deploy-howto.txt
new file mode 100644
--- /dev/null
+++ b/doc/mac-deploy-howto.txt
@@ -0,0 +1,17 @@
+RM - 01 dec 2010
+
+Deploying VirtualLeaf for Mac
+1. Build the package: cd src; export QMAKESPEC=macx-g++; make;
+2. Run "deploymodel.pl" as follows:
+> cd ../bin; perl ../src/perl/deploymodel.pl VirtualLeaf
+3. Run "macdeployqt" as follows
+> macdeployqt VirtualLeaf.app
+4. Build the installer using PackageMaker:
+- cd ../src; open VirtualLeaf-install-macosx.pmdoc
+- Under "Contents->VirtualLeaf, click on VirtualLeaf
+- Choose tab "Components"
+- Deselect "Allow relocation"
+- Click "Build"
+
+... I know it's quite a hassle, but if you follow these steps carefully the package and model plugins should work on a Mac without Qt installed... Good luck!
+
diff --git a/src/VirtualLeaf.pro b/src/VirtualLeaf.pro
--- a/src/VirtualLeaf.pro
+++ b/src/VirtualLeaf.pro
@@ -198,26 +198,9 @@ contains( GRAPHICS, x11 ) {
# MACOSX packaging
macx {
ICON = leaficon.icns
-QMAKE_POST_LINK = "\
- #install_name_tool -change libqwt.5.dylib $$QWTDIR/lib/libqwt.dylib $${TARGET}.app/Contents/MacOS/$${TARGET}; \
- cp leaficon.icns $${DESTDIR}/$${TARGET}.app; \
- cp ../doc/gpl3.txt $${DESTDIR}/$${TARGET}.app/Contents/MacOS/. ; \
- mkdir $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
- cp -R /Library/Frameworks/QtCore.framework $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
- cp -R /Library/Frameworks/QtGui.framework $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
- cp -R /Library/Frameworks/Qt3Support.framework $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
- #cp /usr/local/qwt/lib/libqwt.dylib $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
- #install_name_tool -id @executable_path/../Frameworks/libqwt.dylib $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/libqwt.dylib; \
- install_name_tool -change /usr/local/qwt/lib/libqwt.dylib @executable_path/../Frameworks/libqwt.dylib $${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET};\
- install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/Current/QtCore $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore; \
- install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/Current/QtGui $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui; \
- install_name_tool -id @executable_path/../Frameworks/Qt3Support.framework/Versions/Current/Qt3Support $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support; \
- install_name_tool -change Frameworks/QtCore.framework/Versions/Current/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore $${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}; \
- install_name_tool -change Frameworks/QtGui.framework/Versions/Current/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui $${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}; \
- install_name_tool -change Frameworks/Qt3Support.framework/Versions/Current/Qt3Support @executable_path/../Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support $${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}; \
- install_name_tool -change Frameworks/QtCore.framework/Versions/Current/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support; \
- install_name_tool -change Frameworks/QtGui.framework/Versions/Current/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support; \
- install_name_tool -change Frameworks/QtCore.framework/Versions/Current/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support; "
+QMAKE_POST_LINK = "cp leaficon.icns $${DESTDIR}/$${TARGET}.app; \
+ cp ../doc/gpl3.txt $${DESTDIR}/$${TARGET}.app/Contents/MacOS/.;"
}
+# cd $${BINDIR}; perl ../src/perl/deployapp.pl $${TARGET};"
# finis
diff --git a/src/perl/deploymodel.pl b/src/perl/deploymodel.pl
new file mode 100644
--- /dev/null
+++ b/src/perl/deploymodel.pl
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+
+#
+# $Id$
+#
+# This file is part of the Virtual Leaf.
+#
+# The Virtual Leaf is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# The Virtual Leaf 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 the Virtual Leaf. If not, see .
+#
+# Copyright 2010 Roeland Merks.
+#
+#
+
+# get dependencies for executable
+sub get_frameworks {
+ my $exec = shift;
+ my @frameworks = ();
+ my $fw;
+# print "get_frameworks says: exec = $exec\n";
+ open deps, "otool -L $exec |";
+ # omit first line
+ ;
+
+ while () {
+ # look for lines with ".framework", that do not start with / or @.
+ if (/\.framework/ && !/^[ \t]*\// && !/^[ \t]*\@/) {
+ chomp;
+ @line = split;
+ $f = $line[0];
+ # get framework directory name
+ @line = split(/\//,$f);
+ for $d (@line) {
+ if ($d =~ /\.framework/) {
+ $fw = $d;
+# print "get_framework finds framework $d\n";
+ last;
+ }
+ }
+ if (defined($fw)) {
+# print "get_frameworks pushes $fw on stack\n";
+ push @frameworks, $fw;
+ }
+ }
+ }
+ @frameworks;
+}
+
+$app = $ARGV[0];
+$appdir = $app.".app";
+if ($appdir =~ /\.app\.app/) {
+ $appdir = $ARGV[0];
+}
+$exec = $appdir."/Contents/MacOS/$app";
+
+@frameworks = get_frameworks( $exec );
+
+# do the same for additional libs not in a framework depending on frameworks (e.g. libqwt...)
+#@additionallibs = ( "libqwt.dylib" );
+$modeldir = "models";
+@models = ();
+opendir (MODELS, "$modeldir") or die "Could not open directory, $!";
+while ($file = readdir MODELS) {
+
+
+ if ($file =~ /^.*\.dylib/) {
+ print "$file\n";
+ push @models, $file;
+ }
+}
+closedir MODELS;
+
+for $model (@models) {
+ print "Doing model: $model\n";
+ my @frameworks_of_model = get_frameworks ( "$modeldir/$model" );
+ for $fwfw (@frameworks_of_model) {
+ # print "$fwfw\n";
+ $liblib = $fwfw; $liblib =~ s/\.framework//g;
+ system "install_name_tool -change $fwfw/Versions/4/$liblib \@executable_path/../Frameworks/$fwfw/Versions/4/$liblib $modeldir/$model";
+ }
+}
+
+# finis