--- a/Admin/lib/Tools/makedist_bundle Tue Jul 16 14:46:03 2013 +0200
+++ b/Admin/lib/Tools/makedist_bundle Tue Jul 16 18:28:45 2013 +0200
@@ -97,8 +97,6 @@
fi
done
-mv "$ISABELLE_TARGET/contrib/windows_app" "$TMP/."
-
# purge other platforms
@@ -123,6 +121,7 @@
;;
macos)
purge_contrib '-name "x86*-linux" -o -name "x86*-cygwin" -o -name "x86*-windows"'
+ mv "$ISABELLE_TARGET/contrib/macos_app" "$TMP/."
perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \
-e "s,delete-line.shortcut=.*,delete-line.shortcut=C+d,g;" \
@@ -131,6 +130,7 @@
;;
windows)
purge_contrib '-name "x86*-linux" -o -name "x86*-darwin"'
+ mv "$ISABELLE_TARGET/contrib/windows_app" "$TMP/."
perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \
"$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
@@ -175,26 +175,68 @@
# application
-if [ "$PLATFORM_FAMILY" = windows ]
+if [ "$ISABELLE_PLATFORM_FAMILY" = linux -a "$PLATFORM_FAMILY" != macos -o "$ISABELLE_PLATFORM_FAMILY" = macos ]
then
- if type -p 7z >/dev/null
- then
- (
- cd "$TMP"
- rm -f "${ARCHIVE_DIR}/${ISABELLE_NAME}.7z"
- 7z -y -bd a "$TMP/${ISABELLE_NAME}.7z" "$ISABELLE_NAME" || exit 2
-
+ case "$PLATFORM_FAMILY" in
+ macos)
echo "application for $PLATFORM_FAMILY"
(
- cat "windows_app/7zsd_All.sfx"
- cat "$ISABELLE_HOME/Admin/Windows/Installer/sfx.txt" | \
- perl -p -e "s,{ISABELLE_NAME},${ISABELLE_NAME},g;"
- cat "$TMP/${ISABELLE_NAME}.7z"
- ) > "${ARCHIVE_DIR}/${ISABELLE_NAME}.exe"
- chmod +x "${ARCHIVE_DIR}/${ISABELLE_NAME}.exe"
- )
- fi
+ cd "$TMP"
+
+ APP_TEMPLATE="$ISABELLE_HOME/Admin/MacOS/App3"
+ APP="${ISABELLE_NAME}.app"
+
+ for NAME in Java MacOS PlugIns Resources
+ do
+ mkdir -p "$APP/Contents/$NAME"
+ done
+
+ cat "$APP_TEMPLATE/Info.plist" | \
+ perl -p -e "s,{ISABELLE_NAME},${ISABELLE_NAME},g;" > "$APP/Contents/Info.plist"
+
+ for NAME in Pure.jar scala-library.jar scala-swing.jar
+ do
+ ln -sf "../Resources/${ISABELLE_NAME}/lib/classes/ext/$NAME" "$APP/Contents/Java"
+ done
+
+ cp -R "$APP_TEMPLATE/Resources/." "$APP/Contents/Resources/."
+ cp "$APP_TEMPLATE/../isabelle.icns" "$APP/Contents/Resources/."
+
+ ln -sf "../Resources/${ISABELLE_NAME}/contrib/jdk-7u21/x86_64-darwin/jdk1.7.0_21.jdk" \
+ "$APP/Contents/PlugIns/jdk"
+
+ cp macos_app/JavaAppLauncher "$APP/Contents/MacOS/." && \
+ chmod +x "$APP/Contents/MacOS/JavaAppLauncher"
+
+ mv "$ISABELLE_NAME" "$APP/Contents/Resources/."
+ ln -sf "Contents/Resources/$ISABELLE_NAME" "$APP/Isabelle"
+
+ hdiutil create -srcfolder "$APP" "${ARCHIVE_DIR}/${ISABELLE_NAME}.dmg"
+ )
+ ;;
+ windows)
+ (
+ cd "$TMP"
+ rm -f "${ARCHIVE_DIR}/${ISABELLE_NAME}.7z"
+ 7z -y -bd a "$TMP/${ISABELLE_NAME}.7z" "$ISABELLE_NAME" || exit 2
+
+ echo "application for $PLATFORM_FAMILY"
+ (
+ cat "windows_app/7zsd_All.sfx"
+ cat "$ISABELLE_HOME/Admin/Windows/Installer/sfx.txt" | \
+ perl -p -e "s,{ISABELLE_NAME},${ISABELLE_NAME},g;"
+ cat "$TMP/${ISABELLE_NAME}.7z"
+ ) > "${ARCHIVE_DIR}/${ISABELLE_NAME}.exe"
+ chmod +x "${ARCHIVE_DIR}/${ISABELLE_NAME}.exe"
+ )
+ ;;
+ *)
+ ;;
+ esac
+else
+ echo "### Cannot build application for $PLATFORM_FAMILY on $ISABELLE_PLATFORM_FAMILY"
fi
+
# clean up
rm -rf "$TMP"