OS X version can at least build a working .app.
authorCarl Hetherington <cth@carlh.net>
Thu, 30 May 2013 20:41:32 +0000 (21:41 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 30 May 2013 20:41:32 +0000 (21:41 +0100)
platform/osx/Info.plist.in [new file with mode: 0644]
platform/osx/make_dmg.sh
platform/osx/wscript [new file with mode: 0644]
wscript

diff --git a/platform/osx/Info.plist.in b/platform/osx/Info.plist.in
new file mode 100644 (file)
index 0000000..3f4ab60
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>CFBundleDevelopmentRegion</key>
+       <string>English</string>
+       <key>CFBundleExecutable</key>
+       <string>dvdomatic</string>
+       <key>CFBundleGetInfoString</key>
+       <string>DCP generator</string>
+       <key>CFBundleIconFile</key>
+       <string>appIcon.icns</string>
+       <key>CFBundleIdentifier</key>
+       <string>net.carlh.dvdomatic</string>
+       <key>CFBundleInfoDictionaryVersion</key>
+       <string>6.0</string>
+       <key>CFBundleName</key>
+       <string>DVD-o-matic</string>
+       <key>CFBundlePackageType</key>
+       <string>APPL</string>
+       <key>CFBundleShortVersions</key>
+       <string>@VERSION@</string>
+       <key>CFBundleSignature</key>
+       <string>DOMC</string>
+       <key>CFBundleVersion</key>
+       <string>@VERSION@</string>
+       <key>LSUIElement</key>
+       <string>0</string>
+       <key>NSMainNibFile</key>
+       <string>MainMenu</string>
+       <key>NSPrincipalClass</key>
+       <string>NSApplication</string>
+       @ENV@
+</dict>
+</plist>
index 90e5f9e4a1a91b20de5b4453ae082341571c3b4b..52db90575bbf5b77f174ea0b871eed2a75b22411 100644 (file)
@@ -1,15 +1,86 @@
 #!/bin/bash
 
-VERSION=@version@
+VERSION=$1
+if [ "$VERSION" == "" ]; then
+  echo "Syntax: $0 <version>"
+  exit 1
+fi
 
 # DMG size in megabytes
 DMG_SIZE=64
+WORK=build/platform/osx
+ENV=/Users/carl/Environments/osx/10.8
+DEPS=/Users/carl/cdist
 
-dmg_name="dvdomatic-$VERSION"
+dmg_name="DVD-o-matic-$VERSION"
+appdir="DVD-o-matic.app"
+approot=$appdir/Contents
+libs=$approot/lib
+macos=$approot/MacOS
 
-mkdir -p build/platform/osx/mnt
+rm -rf $WORK/$appdir
+mkdir -p $WORK/$macos
+mkdir -p $WORK/$libs
+
+cp build/src/tools/dvdomatic $WORK/$macos/
+cp build/src/lib/libdvdomatic.dylib $WORK/$libs/
+cp build/src/wx/libdvdomatic-wx.dylib $WORK/$libs/
+cp $DEPS/lib/libdcp.dylib $WORK/$libs/
+cp $DEPS/lib/libasdcp-libdcp.dylib $WORK/$libs/
+cp $DEPS/lib/libkumu-libdcp.dylib $WORK/$libs/
+cp $DEPS/lib/libopenjpeg*.dylib $WORK/$libs/
+cp $DEPS/lib/libavformat*.dylib $WORK/$libs/
+cp $DEPS/lib/libavfilter*.dylib $WORK/$libs/
+cp $DEPS/lib/libavutil*.dylib $WORK/$libs/
+cp $DEPS/lib/libavcodec*.dylib $WORK/$libs/
+cp $DEPS/lib/libswscale*.dylib $WORK/$libs/
+cp $DEPS/lib/libpostproc*.dylib $WORK/$libs/
+cp $DEPS/lib/libswresample*.dylib $WORK/$libs/
+cp $ENV/lib/libboost_system.dylib $WORK/$libs/
+cp $ENV/lib/libboost_filesystem.dylib $WORK/$libs/
+cp $ENV/lib/libboost_thread.dylib $WORK/$libs/
+cp $ENV/lib/libboost_date_time.dylib $WORK/$libs/
+cp $ENV/lib/libssl*.dylib $WORK/$libs/
+cp $ENV/lib/libcrypto*.dylib $WORK/$libs/
+cp $ENV/lib/libxml++-2.6*.dylib $WORK/$libs/
+cp $ENV/lib/libxml2*.dylib $WORK/$libs/
+cp $ENV/lib/libglibmm-2.4*.dylib $WORK/$libs/
+cp $ENV/lib/libgobject*.dylib $WORK/$libs/
+cp $ENV/lib/libgthread*.dylib $WORK/$libs/
+cp $ENV/lib/libgmodule*.dylib $WORK/$libs/
+cp $ENV/lib/libsigc*.dylib $WORK/$libs/
+cp $ENV/lib/libglib-2*.dylib $WORK/$libs/
+cp $ENV/lib/libintl*.dylib $WORK/$libs/
+cp $ENV/lib/libsndfile*.dylib $WORK/$libs/
+cp $ENV/lib/libMagick++*.dylib $WORK/$libs/
+cp $ENV/lib/libMagickCore*.dylib $WORK/$libs/
+cp $ENV/lib/libMagickWand*.dylib $WORK/$libs/
+cp $ENV/lib/libssh*.dylib $WORK/$libs/
+cp $ENV/lib/libwx*.dylib $WORK/$libs/
+cp $ENV/lib/libfontconfig*.dylib $WORK/$libs/
+cp $ENV/lib/libfreetype*.dylib $WORK/$libs/
+cp $ENV/lib/libexpat*.dylib $WORK/$libs/
+
+for obj in $WORK/$macos/dvdomatic $WORK/$libs/*.dylib; do
+  deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh)"`
+  changes=""
+  for dep in $deps; do
+    base=`basename $dep`
+    changes="$changes -change $dep @executable_path/../lib/$base"
+  done
+  if test "x$changes" != "x"; then
+    install_name_tool $changes $obj
+  fi  
+done
+
+
+cp build/platform/osx/Info.plist $WORK/$approot
+
+exit 0
+
+mkdir -p $WORK/mnt
 
 hdiutil create -megabytes $DMG_SIZE build/platform/osx/dvdomatic.dmg
 device=$(hdid -nomount build/platform/osx/dvdomatic.dmg | grep Apple_HFS | cut -f 1 -d ' ')
 newfs_hfs -v "$dmg_name" "$device"
-mount -t hfs "${device}" build/platform/osx/mnt
+mount -t hfs "$device" build/platform/osx/mnt
diff --git a/platform/osx/wscript b/platform/osx/wscript
new file mode 100644 (file)
index 0000000..d79c95b
--- /dev/null
@@ -0,0 +1,2 @@
+def build(bld):
+    bld.new_task_gen(features='subst', source='Info.plist.in', target='Info.plist', version=bld.env.VERSION)
diff --git a/wscript b/wscript
index fb2a838dfe401021c8e7e8e5b119d0f5357de1ee..6114796e1287503478a6f9a0c2251292968aac97 100644 (file)
--- a/wscript
+++ b/wscript
@@ -198,6 +198,8 @@ def build(bld):
         bld.recurse('platform/windows')
     if bld.env.TARGET_LINUX:
         bld.recurse('platform/linux')
+    if bld.env.TARGET_OSX:
+        bld.recurse('platform/osx')
 
     for r in ['22x22', '32x32', '48x48', '64x64', '128x128']:
         bld.install_files('${PREFIX}/share/icons/hicolor/%s/apps' % r, 'icons/%s/dvdomatic.png' % r)