1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
#!/bin/sh
### Script to create the .app structure for osx
### 20080227 Stelios Bounanos M0GLD
### Updated 20080727: enable the .icns support
### Updated 20090525: add flarq
### Updated 20180201: deleted dmg sans dylibs
upcase1()
{
sed 'h; s/\(^.\).*/\1/; y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/; G; s/\n.//'
}
function copy_libs()
{
list="$1"
while test "x$list" != "x"; do
change="$list"
list=""
for obj in $change; do
for lib in `otool -L $obj | \
sed -n 's!^.*[[:space:]]\([^[:space:]]*\.dylib\).*$!\1!p' | \
grep -Ev '^/(usr/lib|System)'`; do
libfn="`basename $lib`"
if ! test -f "Frameworks/$libfn"; then
cp "$lib" "Frameworks/$libfn"
install_name_tool -id "@executable_path/../Frameworks/$libfn" "Frameworks/$libfn"
list="$list Frameworks/$libfn"
fi
install_name_tool -change "$lib" "@executable_path/../Frameworks/$libfn" "$obj"
done
done
done
}
function bundle()
{
appname="${binary}-${appversion}.app"
cd "$build"
# bundle the binary
echo "creating ${build}/$bundle_dir/$appname"
$mkinstalldirs "$bundle_dir/$appname/Contents/MacOS" "$bundle_dir/$appname/Contents/Resources"
cd "$bundle_dir"
$INSTALL_PROGRAM "${build}/$binary" "$appname/Contents/MacOS"
test "x$NOSTRIP" = "x" && ${STRIP:-strip} -S "$appname/Contents/MacOS/$binary"
$INSTALL_DATA "$icon" "$appname/Contents/Resources"
echo "APPL${signature}" > "$appname/Contents/PkgInfo"
sed -e "s!%%IDENTIFIER%%!${identifier}!g; s!%%NAME%%!${name}!g;\
s!%%SIGNATURE%%!${signature}!g; s!%%BINARY%%!${binary}!g;\
s!%%VERSION%%!${version}!g;\
s!%%ICON%%!${icon##*/}!g;" < "$plist" > "$appname/Contents/Info.plist"
if grep '%%[A-Z]*%%' "$appname/Contents/Info.plist"; then
echo "E: unsubstituted variables in $appname/Contents/Info.plist" >&2
exit 1
fi
$mkinstalldirs "$appname/Contents/Frameworks"
cd "$appname/Contents"
copy_libs "MacOS/$binary"
}
if [ $# -ne 2 ]; then
echo "Syntax: $0 data-dir build-dir" >&2
exit 1
fi
if [ -z "$PACKAGE_TARNAME" ]; then
echo "E: \$PACKAGE_TARNAME undefined"
exit 1
fi
PWD=`pwd`
data="${PWD}/$1"
build="${PWD}/$2"
bundle_dir="$APPBUNDLE"
for d in "$data" "$build"; do
test -d "$d" && continue
echo "E: ${d}: not a directory" >&2
exit 1
done
if ! test -w "$build"; then
echo "E: ${build} is not writeable" >&2
exit 1
fi
plist="${data}/mac/Info.plist.in"
fldigi_icon="${data}/mac/fldigi.icns"
flarq_icon="${data}/mac/flarq.icns"
for f in "$plist" "$fldigi_icon" "$flarq_icon"; do
test -r "$f" && continue
echo "E: ${f}: not readable" >&2
exit 1
done
set -e
if test "x$WANT_FLDIGI" = "xyes"; then
identifier="com.w1hkj.$PACKAGE_TARNAME"
name=$(echo "$PACKAGE_TARNAME" | upcase1)
# we'll use the first four consonants as the signature
signature="$(echo $PACKAGE_TARNAME | sed 's/[aeiouAEIOU]//g; s/\(^....\).*/\1/')"
binary="$PACKAGE_TARNAME"
icon="$fldigi_icon"
version="${FLDIGI_VERSION_MAJOR}.${FLDIGI_VERSION_MINOR}${FLDIGI_VERSION_PATCH}"
appversion="$FLDIGI_VERSION"
bundle
fi
if test "x$WANT_FLARQ" = "xyes"; then
identifier="com.w1hkj.flarq"
name="Flarq"
signature="flrq"
binary="flarq"
icon="$flarq_icon"
version="${FLARQ_VERSION_MAJOR}.${FLARQ_VERSION_MINOR}${FLARQ_VERSION_PATCH}"
appversion="$FLARQ_VERSION"
bundle
fi
cd "$build"
echo "creating disk image"
hdiutil create -ov -srcfolder "$bundle_dir" -format UDZO -tgtimagekey zlib-level=9 "${APPBUNDLE}.dmg"
|