Admin/lib/Tools/makedist_bundle
changeset 52677 2b446d507296
parent 52674 563b7c8279f9
child 52678 9bc073ea478a
--- 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"