Aegisub/aegisub/tools/osx-bundle.sh
Thomas Goyne 1e030289ad Revamp how version tagging works
Rather than having it be a configurable option, simply build in final
release mode if Aegisub is being built from a signed tag, and get the
version information from that tag.

Drop the version number from the OS X app bundle when not building from
a tag as it done everywhere else. Drop the arch suffix since ppc hasn't
been tested in years and isn't worth testing as it's only going to get
less relevant as time goes on.

Remove some redundant definitions in the build system.
2012-08-19 14:33:50 -07:00

128 lines
3.4 KiB
Bash
Executable file

#!/bin/sh
set -e
PKG_DIR=Aegisub.app
SKEL_DIR="packages/osx_bundle"
AEGISUB_BIN="${1}"
SRCDIR=`pwd`
HOME_DIR=`echo ~`
WX_PREFIX=`${2} --prefix`
if test -z "${CC}"; then
CC="cc"
fi
if ! test -d packages/osx_bundle; then
echo
echo "Make sure you're in the toplevel source directory"
exit 1
fi
if test -d "${PKG_DIR}"; then
rm -rf "${PKG_DIR}"
fi
echo
echo "---- Directory Structure ----"
mkdir -v "${PKG_DIR}"
mkdir -v "${PKG_DIR}/Contents"
mkdir -v "${PKG_DIR}/Contents/MacOS"
mkdir -v "${PKG_DIR}/Contents/Resources"
mkdir -v "${PKG_DIR}/Contents/Resources/etc"
mkdir -v "${PKG_DIR}/Contents/Resources/etc/fonts"
mkdir -v "${PKG_DIR}/Contents/Resources/etc/fonts/conf.d"
mkdir -v "${PKG_DIR}/Contents/SharedSupport"
mkdir -v "${PKG_DIR}/Contents/SharedSupport/dictionaries"
echo
echo "---- Copying Skel Files ----"
if ! test -f "tools/osx-bundle.sed"; then
echo
echo "NOT FOUND: tools/osx-bundle.sed"
exit 1
fi
find po -name *.po | sed 's/.*\/\(.*\)\.po/ <string>\1<\/string>/' > languages
find ${SKEL_DIR} -type f -not -regex ".*.svn.*"
cp ${SKEL_DIR}/Contents/Resources/*.icns "${PKG_DIR}/Contents/Resources"
cp ${SKEL_DIR}/Contents/Resources/etc/fonts/fonts.dtd "${PKG_DIR}/Contents/Resources/etc/fonts"
cat ${SKEL_DIR}/Contents/Resources/etc/fonts/fonts.conf | sed -f tools/osx-bundle.sed > "${PKG_DIR}/Contents/Resources/etc/fonts/fonts.conf"
cp ${SKEL_DIR}/Contents/Resources/etc/fonts/conf.d/*.conf "${PKG_DIR}/Contents/Resources/etc/fonts/conf.d"
cat ${SKEL_DIR}/Contents/Info.plist | sed -f tools/osx-bundle.sed > "${PKG_DIR}/Contents/Info.plist"
rm languages
echo
echo "---- Copying dictionaries ----"
if test -z "${DICT_DIR}"; then
DICT_DIR="${HOME_DIR}/dict"
fi
if test -d "${DICT_DIR}"; then
cp -v ${DICT_DIR}/* "${PKG_DIR}/Contents/SharedSupport/dictionaries"
else
echo "WARNING: Dictionaries not found, please set $$DICT_DIR to a directiory"
echo " where the *.aff and *.dic files can be found"
fi
echo
echo "---- Copying automation/ files ----"
pushd automation
make install DESTDIR="../${PKG_DIR}/Contents/SharedSupport" P_DATA="" P_DOC="/doc"
popd
echo
echo "---- Copying Aegisub locale files ----"
# Let Aqua know that aegisub supports english. English strings are
# internal so we don't need an aegisub.mo file.
mkdir -vp "${PKG_DIR}/Contents/Resources/en.lproj"
for i in `ls -1 po/*.mo|sed "s|po/\(.*\).mo|\1|"`; do
if test -f "po/${i}.mo"; then
mkdir -p "${PKG_DIR}/Contents/Resources/${i}.lproj"
cp -v po/${i}.mo "${PKG_DIR}/Contents/Resources/${i}.lproj/aegisub.mo"
else
echo "${i}.mo not found!"
exit 1
fi
done
echo
echo "---- Copying WX locale files ----"
for i in `ls -1 po/*.mo|sed "s|po/\(.*\).mo|\1|"`; do
WX_MO="${WX_PREFIX}/share/locale/${i}/LC_MESSAGES/wxstd.mo"
if ! test -f "${WX_MO}"; then
WX_MO="${HOME_DIR}/wxstd/${i}.mo"
fi
if test -f "${WX_MO}"; then
cp -v "${WX_MO}" "${PKG_DIR}/Contents/Resources/${i}.lproj/"
else
echo "WARNING: \"$i\" locale in aegisub but no WX catalog found!"
fi
done
echo
echo " ---- Copying binary ----"
cp -v src/${AEGISUB_BIN} "${PKG_DIR}/Contents/MacOS/aegisub"
echo
echo " ---- Build / install restart-helper ----"
echo cc -o "${PKG_DIR}/Contents/MacOS/restart-helper tools/osx-bundle-restart-helper.c"
${CC} -o "${PKG_DIR}/Contents/MacOS/restart-helper" tools/osx-bundle-restart-helper.c || exit $?
echo
echo "---- Libraries ----"
python tools/osx-fix-libs.py "${PKG_DIR}/Contents/MacOS/aegisub" || exit $?
echo
echo "Done Creating \"${PKG_DIR}\""