5 # This script automates creating universal binaries of LyX on Mac.
6 # Author: Bennett Helm (and extended by Konrad Hofbauer)
7 # latest changes by Stephan Witt
8 # Last modified: January 2011
12 Qt4SourceVersion="qt-everywhere-opensource-src-${Qt4Version}"
13 Qt4BuildSubDir="qt-${Qt4Version}-build${MAC_API}"
16 # * a decent checkout of LyX sources (probably you have it already)
17 # * Qt4 - build with shared or static libraries for the used platforms (default: i386 and ppc)
18 # or - an unpacked source tree of Qt4 in $QT4SOURCEDIR or in the sibling directory (variable Qt4SourceVersion)
19 # * for aspell support:
20 # the aspell sources placed in a sibling directory (variable ASpellSourceVersion)
21 # * for hunspell support:
22 # the hunspell sources placed in a sibling directory (variable HunSpellSourceVersion)
23 # * for dictionary deployment (per default thesauri only):
24 # - aspell: the dictionary files of macports (in /opt/local/share/aspell and /opt/local/lib/aspell-0.60)
25 # - hunspell: the dictionary files in the sibling directory dictionaries/dicts
26 # - mythes: the data and idx files in the sibling directory dictionaries/thes
28 LyXConfigureOptions="--enable-warnings --enable-optimization=-Os --with-included-gettext --with-x=no"
29 AspellConfigureOptions="--enable-warnings --enable-optimization=-O0 --enable-debug --disable-nls --enable-compile-in-filters --disable-pspell-compatibility"
30 HunspellConfigureOptions="--with-warnings --disable-nls --with-included-gettext --disable-static"
31 Qt4ConfigureOptions="-opensource -silent -shared -release -fast -no-exceptions"
32 Qt4ConfigureOptions="${Qt4ConfigureOptions} -no-webkit -no-qt3support -no-javascript-jit -no-dbus"
33 Qt4ConfigureOptions="${Qt4ConfigureOptions} -nomake examples -nomake demos -nomake docs -nomake tools"
34 Qt4ConfigureOptions="${Qt4ConfigureOptions} ${MAC_API}"
36 aspell_dictionaries="no"
37 hunspell_dictionaries="no"
39 aspell_deployment="yes"
40 hunspell_deployment="yes"
41 thesaurus_deployment="yes"
45 MACOSX_DEPLOYMENT_TARGET="10.4" # Tiger support is default
46 SDKROOT="/Developer/SDKs/MacOSX10.5.sdk" # Leopard build is default
48 # detection of script home
49 LyxSourceDir=`dirname "$0"`
50 if [ ! -d "${LyxSourceDir}" ]; then
51 echo Missing LyX source directory.
54 case "${LyxSourceDir}" in
56 LyxSourceDir=`dirname "${LyxSourceDir}"`
60 */development|development)
61 LyxSourceDir=`dirname "${LyxSourceDir}"`
62 LyxSourceDir=`cd "${LyxSourceDir}";pwd`
65 LyxSourceDir=`cd "${LyxSourceDir}";pwd`
70 echo "*" Build script for LyX on Mac OS X
72 echo Optional arguments:
73 echo " --aspell-deployment=yes|no ." default yes
74 echo " --with-qt4-frameworks=yes|no" default no
75 echo " --qt4-deployment=yes|no ...." default yes
76 echo " --with-macosx-target=TARGET " default 10.4 "(Tiger)"
77 echo " --with-sdkroot=SDKROOT ....." default 10.5 "(Leopard)"
78 echo " --with-arch=ARCH ..........." default ppc,i386
79 echo " --with-build-path=PATH ....." default \${lyx-src-dir}/../lyx-build
80 echo " --with-dmg-location=PATH ..." default \${build-path}
82 echo "All other arguments with -- are passed to configure"
83 echo "including the defaults: ${LyXConfigureOptions}"
84 if [ -x "${LyxSourceDir}/configure" ]; then
86 echo "*" Configure options of LyX
88 "${LyxSourceDir}/configure" --help
93 while [ $# -gt 0 ]; do
95 --with-qt4-frameworks=*)
96 configure_qt4_frameworks=`echo ${1}|cut -d= -f2`
97 if [ "$configure_qt4_frameworks" = "yes" ]; then
104 QTDIR=`echo ${1}|cut -d= -f2`
107 --with-macosx-target=*)
108 MACOSX_DEPLOYMENT_TARGET=`echo ${1}|cut -d= -f2`
112 SDKROOT=`echo ${1}|cut -d= -f2`
115 SDKROOT="/Developer/SDKs/MacOSX10.4u.sdk"
121 SDKROOT="/Developer/SDKs/MacOSX${SDKROOT}.sdk"
129 --aspell-deployment=*)
130 aspell_deployment=`echo ${1}|cut -d= -f2`
131 aspell_dictionaries=$aspell_deployment
134 --hunspell-deployment=*)
135 hunspell_deployment=`echo ${1}|cut -d= -f2`
136 hunspell_dictionaries=$hunspell_deployment
139 --thesaurus-deployment=*)
140 thesaurus_deployment=`echo ${1}|cut -d= -f2`
144 qt4_deployment=`echo ${1}|cut -d= -f2`
148 ARCH=`echo ${1}|cut -d= -f2|tr ',' ' '`
149 ARCH_LIST="${ARCH_LIST} ${ARCH}"
152 --with-dmg-location=*)
153 DMGLocation=`echo ${1}|cut -d= -f2`
157 LyxBuildDir=`echo ${1}|cut -d= -f2`
164 LyXConfigureOptions="${LyXConfigureOptions} ${1}"
165 aspell_deployment="no"
169 LyXConfigureOptions="${LyXConfigureOptions} ${1}"
170 hunspell_deployment="no"
174 LyxOnlyPackage=`echo ${1}|cut -d= -f2`
178 LyXConfigureOptions="${LyXConfigureOptions} ${1}"
187 if [ "${configure_qt4_frameworks}" != "yes" ]; then
188 QtInstallDir=${QTDIR:-"/opt/qt4"}
190 QtFrameworkVersion="4"
191 ASpellSourceVersion="aspell-0.60.6"
192 HunSpellSourceVersion="hunspell-1.2.12"
194 ARCH_LIST=${ARCH_LIST:-"ppc i386"}
199 LyxBuildDir=${LyxBuildDir:-`dirname "${LyxSourceDir}"`/lyx-build}
200 DMGLocation=${DMGLocation:-"${LyxBuildDir}"}
202 ASpellSourceDir=${ASPELLDIR:-`dirname "${LyxSourceDir}"`/${ASpellSourceVersion}}
203 ASpellInstallDir=${ASpellInstallDir:-"${LyxBuildDir}"/SpellChecker.lib}
204 HunSpellSourceDir=${HUNSPELLDIR:-`dirname "${LyxSourceDir}"`/${HunSpellSourceVersion}}
205 HunSpellInstallDir=${HunSpellInstallDir:-"${LyxBuildDir}"/SpellChecker.lib}
206 Qt4SourceDir=${QT4SOURCEDIR:-`dirname "${LyxSourceDir}"`/${Qt4SourceVersion}}
207 Qt4BuildDir=${Qt4BuildDir:-"${LyxBuildDir}"/${Qt4BuildSubDir:-"qt4-build"}}
208 DictionarySourceDir=${DICTIONARYDIR:-`dirname "${LyxSourceDir}"`/dictionaries}
209 DocumentationDir=`dirname "${LyxSourceDir}"`/Documents
210 DmgBackground="${LyxSourceDir}"/development/MacOSX/dmg-background.png
212 ASpellInstallHdr="${ASpellInstallDir}/include/aspell.h"
213 HunSpellInstallHdr="${HunSpellInstallDir}/include/hunspell/hunspell.h"
215 if [ -z "${LyXVersion}" ]; then
216 LyXVersion=`grep AC_INIT "${LyxSourceDir}"/configure.ac | cut -d, -f2 | tr -d " ()"`
218 LyXVersionSuffix=${LyXVersionSuffix:-`echo "${LyXVersion}" | cut -d. -f1-2`}
221 LyxBase="${LyxName}-${LyXVersion}"
222 LyxApp="${LyxBase}.app"
223 LyxAppDir="${LyxBuildDir}"/"${LyxBase}"
224 LyxBuildDir="${LyxAppDir}.build"
225 LyxAppPrefix="${LyxAppDir}.app"
226 # if zip file is needed... remove the comment sign
227 #LyxAppZip="${LyxAppPrefix}.zip"
229 # ---------------------------------
230 # DON'T MODIFY ANYTHING BELOW HERE!
231 # ---------------------------------
233 # don't change order here...
234 QtLibraries="QtSvg QtXml QtGui QtNetwork QtCore"
239 # Check for existing SDKs
240 SDKs=`echo /Developer/SDKs/MacOSX10*sdk`
245 MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-"10.5"}; export MACOSX_DEPLOYMENT_TARGET
246 case "${MACOSX_DEPLOYMENT_TARGET}" in
248 SDKROOT="/Developer/SDKs/MacOSX10.6.sdk"; export SDKROOT
251 SDKROOT=${SDKROOT:-"/Developer/SDKs/MacOSX10.5.sdk"}; export SDKROOT
256 MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-"10.4"}; export MACOSX_DEPLOYMENT_TARGET
257 SDKROOT=${SDKROOT:-"/Developer/SDKs/MacOSX10.5.sdk"}; export SDKROOT
260 echo Unknown or missing SDK for Mac OS X.
264 MYCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}"
266 # These variables define the identifiers of the
267 # system (both Intel and PowerPC) to compile for.
268 # (Note: darwin8 is 10.4; darwin9 is 10.5.)
269 # Only change these if necessary
271 HostSystem_i386="i686-apple-darwin8"
272 HostSystem_ppc="powerpc-apple-darwin8"
274 if [ "${configure_qt4_frameworks}" != "yes" -a -d "${Qt4SourceDir}" -a ! \( -d "${Qt4BuildDir}" -a -d "${QtInstallDir}" \) ]; then
275 echo Build Qt4 library ${Qt4SourceDir}
276 if [ "${QtInstallDir}" = "${Qt4BuildDir}" ]; then
277 echo Bad install directory for Qt.
278 echo Must be different from build directory "${Qt4BuildDir}".
282 mkdir -p "${Qt4BuildDir}" && cd "${Qt4BuildDir}"
283 for arch in ${ARCH_LIST} ; do
284 ARCHS="${ARCHS} -arch ${arch}"
286 echo configure options:
287 echo ${Qt4ConfigureOptions} ${ARCHS} -prefix "${QtInstallDir}"
288 echo yes | "${Qt4SourceDir}"/configure ${Qt4ConfigureOptions} ${ARCHS} -prefix "${QtInstallDir}"
291 cd "${QtInstallDir}" && (
294 for libnm in ${QtLibraries} ; do
295 test -d ${libnm} -o -L ${libnm} || ln -s ../lib/${libnm}.framework/Headers ${libnm}
300 if [ -d "${HunSpellSourceDir}" -a ! -f "${HunSpellInstallHdr}" ]; then
301 # we have a private HunSpell source tree at hand...
302 # so let's build and install it
303 if [ -z "${HunSpellVersion}" ]; then
304 HunSpellVersion=`grep AC_INIT "${HunSpellSourceDir}"/configure.ac | cut -d, -f2|tr -d " ()"`
307 HunSpellName="Hunspell"
308 HunSpellBase="${HunSpellName}-${HunSpellVersion}"
310 echo Build hunspell library ${HunSpellBase}
311 echo configure options:
312 echo --prefix="${HunSpellInstallDir}" ${HunspellConfigureOptions}
314 cd "${HunSpellSourceDir}"
316 # ----------------------------------------
317 # Build HunSpell for different architectures
318 # ----------------------------------------
319 FILE_LIST="libhunspell-1.2.0.dylib"
321 for arch in ${ARCH_LIST} ; do
323 CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"; export CPPFLAGS
324 LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"; export LDFLAGS
325 HOSTSYSTEM=`eval "echo \\$HostSystem_$arch"`
326 "${HunSpellSourceDir}/configure"\
327 --prefix="${HunSpellInstallDir}"\
328 ${HunspellConfigureOptions}
329 make && make install${strip}
330 for file in ${FILE_LIST} ; do
331 if [ -f "${HunSpellInstallDir}"/lib/${file} ]; then
332 mv "${HunSpellInstallDir}"/lib/${file}\
333 "${HunSpellInstallDir}"/lib/${file}-${arch}
335 echo Cannot build and install HunSpell for ${arch}.
340 # -------------------------
341 # Create universal binaries
342 # -------------------------
343 for file in ${FILE_LIST} ; do
345 for arch in ${ARCH_LIST} ; do
346 OBJ_LIST="${OBJ_LIST} lib/${file}-${arch}"
349 cd "${HunSpellInstallDir}"
350 lipo -create ${OBJ_LIST} -o lib/${file}
351 # check for the "missing link"...
352 test -f lib/libhunspell.dylib || (cd lib ; ln -s libhunspell-1.2.dylib libhunspell.dylib)
358 for arch in ${ARCH_LIST} ; do
359 rm -f "${HunSpellInstallDir}"/lib/*-${arch}
363 if [ -d "${ASpellSourceDir}" -a ! -f "${ASpellInstallHdr}" -a "yes" = "${aspell_deployment}" ]; then
364 # we have a private ASpell source tree at hand...
365 # so let's build and install it
366 if [ -z "${ASpellVersion}" ]; then
367 ASpellVersion=`grep AC_INIT "${ASpellSourceDir}"/configure.ac | cut -d, -f2|tr -d " ()"`
371 ASpellBase="${ASpellName}-${ASpellVersion}"
373 echo Build aspell library ${ASpellBase}
374 echo configure options:
375 echo --prefix="${ASpellInstallDir}" ${AspellConfigureOptions}
377 # ASpell builds inplace only :(
378 cd "${ASpellSourceDir}"
380 # ----------------------------------------
381 # Build ASpell for different architectures
382 # ----------------------------------------
383 FILE_LIST="libaspell.15.dylib"
385 for arch in ${ARCH_LIST} ; do
387 CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"; export CPPFLAGS
388 LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"; export LDFLAGS
389 HOSTSYSTEM=`eval "echo \\$HostSystem_$arch"`
390 CXXFLAGS=-g "${ASpellSourceDir}/configure"\
391 --prefix="${ASpellInstallDir}"\
392 ${AspellConfigureOptions}
393 make && make install${aspellstrip}
394 for file in ${FILE_LIST} ; do
395 if [ -f "${ASpellInstallDir}"/lib/${file} ]; then
396 mv "${ASpellInstallDir}"/lib/${file}\
397 "${ASpellInstallDir}"/lib/${file}-${arch}
399 echo Cannot build and install ASpell for ${arch}.
404 # -------------------------
405 # Create universal binaries
406 # -------------------------
407 for file in ${FILE_LIST} ; do
409 for arch in ${ARCH_LIST} ; do
410 OBJ_LIST="${OBJ_LIST} lib/${file}-${arch}"
413 cd "${ASpellInstallDir}"
414 lipo -create ${OBJ_LIST} -o lib/${file}
420 for arch in ${ARCH_LIST} ; do
421 rm -f "${ASpellInstallDir}"/lib/*-${arch}
427 echo "Frameworks/${1}.framework"
430 LYX_FILE_LIST="lyx lyxclient tex2lyx"
431 BUNDLE_PATH="Contents/MacOS"
432 LYX_BUNDLE_PATH="${LyxAppPrefix}/${BUNDLE_PATH}"
435 if [ -n "${LyxAppZip}" -a -f "${LyxAppZip}" ]; then rm "${LyxAppZip}"; fi
436 if [ -d "${LyxAppPrefix}" ]; then rm -rf "${LyxAppPrefix}"; fi
438 # -------------------------------------
439 # Automate configure check
440 # -------------------------------------
441 if [ ! -f "${LyxSourceDir}"/configure -o "${LyxSourceDir}"/configure -ot "${LyxSourceDir}"/configure.ac ]; then
442 ( cd "${LyxSourceDir}" && sh autogen.sh )
444 find "${LyxSourceDir}" -name Makefile.am -print | while read file ; do
445 dname=`dirname "$file"`
446 if [ -f "$dname/Makefile.in" -a "$dname/Makefile.in" -ot "$file" ]; then
447 ( cd "${LyxSourceDir}" && sh autogen.sh )
452 # -------------------------------------
453 # Build LyX for different architectures
454 # -------------------------------------
456 if [ -d "${ASpellInstallDir}" -a "yes" = "${aspell_deployment}" ]; then
457 ConfigureExtraInc="--with-extra-inc=${ASpellInstallDir}/include"
458 ConfigureExtraLib="--with-extra-lib=${ASpellInstallDir}/lib"
461 if [ -d "${HunSpellInstallDir}" -a "yes" = "${hunspell_deployment}" ]; then
462 HunSpellFramework=`framework_name Hunspell`
463 HunSpellFramework=`basename "${HunSpellFramework}"`
464 ConfigureExtraInc="--with-extra-inc=${HunSpellInstallDir}/include"
465 ConfigureExtraLib="--with-extra-lib=${HunSpellInstallDir}/lib"
466 # LyXConfigureOptions="${LyXConfigureOptions} --with-hunspell-framework=${HunSpellFramework}"
468 LyXConfigureOptions="${LyXConfigureOptions} ${ConfigureExtraInc}"
469 LyXConfigureOptions="${LyXConfigureOptions} ${ConfigureExtraLib}"
471 for arch in ${ARCH_LIST} ; do
473 if [ -d "${LyxBuildDir}" ]; then rm -r "${LyxBuildDir}"; fi
474 mkdir -p "${LyxBuildDir}" && cd "${LyxBuildDir}"
476 CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"
477 LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"
478 HOSTSYSTEM=`eval "echo \\$HostSystem_$arch"`
480 if [ "$configure_qt4_frameworks" = "yes" ]; then
481 export QT4_CORE_CFLAGS="-FQtCore"
482 export QT4_CORE_LIBS="-framework QtCore"
483 export QT4_FRONTEND_CFLAGS="-FQtGui"
484 export QT4_FRONTEND_LIBS="-framework QtGui"
486 CPPFLAGS="${CPPFLAGS} -I${SDKROOT}/Library/Frameworks/QtCore.framework/Headers"
487 CPPFLAGS="${CPPFLAGS} -I${SDKROOT}/Library/Frameworks/QtGui.framework/Headers"
490 echo LDFLAGS="${LDFLAGS}"
492 echo CPPFLAGS="${CPPFLAGS}"
494 echo CONFIGURE_OPTIONS="${LyXConfigureOptions}" ${QtInstallDir:+"--with-qt4-dir=${QtInstallDir}"}
495 "${LyxSourceDir}/configure"\
496 --prefix="${LyxAppPrefix}" --with-version-suffix="-${LyXVersionSuffix}"\
497 ${QtInstallDir:+"--with-qt4-dir=${QtInstallDir}"} \
498 ${LyXConfigureOptions}\
499 --enable-build-type=rel && \
500 make -j2 && make install${strip}
501 for file in ${LYX_FILE_LIST} ; do
502 if [ -f "${LYX_BUNDLE_PATH}/${file}" ]; then
503 mv "${LYX_BUNDLE_PATH}/${file}"\
504 "${LYX_BUNDLE_PATH}/${file}-${arch}"
506 echo ERROR: Cannot build and install LyX for ${arch}.
513 content_directory() {
515 content=`dirname "${target}"`
516 content=`dirname "${content}"`
520 private_framework() {
521 fwdir=`framework_name "$1"`
524 condir=`content_directory "${target}"`
525 libnm=`basename "${source}"`
526 mkdir -p "${condir}/${fwdir}"
527 if [ ! -f "${condir}/${fwdir}/${libnm}" ]; then
528 cp -p "${source}" "${condir}/${fwdir}"
529 echo Set library id in "${condir}/${fwdir}/${libnm}"
530 install_name_tool -id "@executable_path/../${fwdir}/${libnm}" "${condir}/${fwdir}/${libnm}"
532 echo Correct library id reference to "${libnm}" in "${target}"
533 install_name_tool -change "${source}" "@executable_path/../${fwdir}/${libnm}" "${target}"
537 source="${QtInstallDir}"
539 version="Versions/${QtFrameworkVersion}/"
540 condir=`content_directory "${target}"`
541 mkdir -p "${condir}/Resources"
542 test -f "${condir}/Resources/qt.conf" || cat - > "${condir}/Resources/qt.conf" <<-EOF
545 Translations = translations
547 if [ ! -d "${condir}/PlugIns" ]; then
548 mkdir -p "${condir}/PlugIns"
549 find "${source}/plugins" -name \*.dylib -print | while read libname ; do
550 echo Copy plugin "${libname}"
551 dylib=`basename "${libname}"`
552 dirname=`dirname "${libname}"`
553 dirname=`basename "${dirname}"`
554 mkdir -p "${condir}/PlugIns/${dirname}"
555 cp -p "${libname}" "${condir}/PlugIns/${dirname}"
558 for libnm in ${QtLibraries} ; do
559 fwdir=`framework_name "$libnm"`
560 dirname=`dirname "${fwdir}"`
561 mkdir -p "${condir}/${dirname}"
562 dirname=`basename "${fwdir}"`
563 test -d "${condir}/${fwdir}" || (
564 echo Copy framework "${source}/lib/"`basename "${fwdir}"`
565 cp -pR "${source}/lib/"`basename "${fwdir}"` "${condir}/${fwdir}"
566 echo Set library id in "${condir}/${fwdir}/${version}${libnm}"
567 install_name_tool -id "@executable_path/../${fwdir}/${version}${libnm}" "${condir}/${fwdir}/${version}${libnm}"
568 find "${condir}/PlugIns" "${condir}/"`dirname "${fwdir}"` -name Headers -prune -o -type f -print | while read filename ; do
569 if [ "${filename}" != "${target}" ]; then
570 otool -L "${filename}" 2>/dev/null | sort -u | while read library ; do
571 # pattern match for: /path/to/qt4/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.6.0, current version 4.6.2)
573 *"${libnm}"*"("*version*")"*)
574 echo Correct library id reference to "${libnm}" in "${filename}"
575 install_name_tool -change\
576 "${source}/lib/${dirname}/${version}${libnm}"\
577 "@executable_path/../${fwdir}/${version}${libnm}"\
585 echo Correct library id reference to "${libnm}" in "${target}"
586 install_name_tool -change\
587 "${source}/lib/${dirname}/${version}${libnm}"\
588 "@executable_path/../${fwdir}/${version}${libnm}"\
591 if [ ! -d "${condir}/translations" ]; then
592 mkdir -p "${condir}/translations"
594 echo Copy Qt translations to "${condir}/translations"
595 cp -p "${source}"/translations/qt_*.qm "${condir}/translations"
598 # -------------------------
599 # Create universal binaries
600 # -------------------------
601 convert_universal() {
603 for file in ${LYX_FILE_LIST} ; do
605 for arch in ${ARCH_LIST} ; do
606 if [ -f "${BUNDLE_PATH}/${file}-${arch}" ]; then
607 OBJ_LIST="${OBJ_LIST} ${BUNDLE_PATH}/${file}-${arch}"
610 if [ -n "${OBJ_LIST}" ]; then
611 lipo -create ${OBJ_LIST} -o "${BUNDLE_PATH}/${file}"
613 if [ -d "${ASpellInstallDir}" -a "yes" = "${aspell_deployment}" ]; then
614 private_framework Aspell "${ASpellInstallDir}/lib/libaspell.15.dylib" "${LYX_BUNDLE_PATH}/${file}"
616 if [ -d "${HunSpellInstallDir}" -a "yes" = "${hunspell_deployment}" ]; then
617 private_framework Hunspell "${HunSpellInstallDir}/lib/libhunspell-1.2.0.dylib" "${LYX_BUNDLE_PATH}/${file}"
619 if [ -d "${QtInstallDir}/lib/QtCore.framework/Versions/${QtFrameworkVersion}" -a "yes" = "${qt4_deployment}" ]; then
620 deploy_qtlibs "${LYX_BUNDLE_PATH}/${file}"
622 otool -L "${BUNDLE_PATH}/${file}" | while read reference ; do
623 case "${reference}" in
624 *"${LyxBuildDir}"*"("*")")
625 echo ERROR: Bad reference to "${reference}" found!!
630 for arch in ${ARCH_LIST} ; do
631 rm -f ${BUNDLE_PATH}/*-${arch}
635 copy_dictionaries() {
636 if [ -d "${ASpellInstallDir}" -a "yes" = "${aspell_dictionaries}" ]; then
637 ASpellResources="${LyxAppPrefix}/Contents/Resources"
638 # try to reuse macports dictionaries for now
639 if [ -d /opt/local/lib/aspell-0.60 ]; then ASpellInstallDir=/opt/local ; fi
640 mkdir -p "${ASpellResources}"
641 echo Copy Aspell dictionaries from "${ASpellInstallDir}"
642 mkdir -p "${ASpellResources}"/data "${ASpellResources}"/dicts
643 cp -p -r "${ASpellInstallDir}/lib/aspell-0.60"/* "${ASpellResources}"/data
644 cp -p -r "${ASpellInstallDir}/share/aspell"/* "${ASpellResources}"/dicts
646 if [ -d "${HunSpellInstallDir}" -a "yes" = "${hunspell_dictionaries}" ]; then
647 HunSpellResources="${LyxAppPrefix}/Contents/Resources"
648 if [ -d "${DictionarySourceDir}" ]; then
649 ( cd "${DictionarySourceDir}" && find dicts -name .svn -prune -o -type f -print | cpio -pmdv "${HunSpellResources}" )
652 if [ -d "${DictionarySourceDir}" -a "yes" = "${thesaurus_deployment}" ]; then
653 MyThesResources="${LyxAppPrefix}/Contents/Resources"
654 ( cd "${DictionarySourceDir}" && find thes -name .svn -prune -o -type f -print | cpio -pmdv "${MyThesResources}" )
658 set_bundle_display_options() {
661 Y_POSITION=$((Y_BOUNDS - 65))
662 Y_BOUNDS=$((Y_BOUNDS + 20))
663 LYX_X_POSITION=$((X_BOUNDS / 4))
664 LYX_Y_POSITION=$Y_POSITION
665 APP_X_POSITION=$((3 * X_BOUNDS / 4))
666 APP_Y_POSITION=$Y_POSITION
668 tell application "Finder"
669 set f to POSIX file ("${1}" as string) as alias
672 tell container window
673 set toolbar visible to false
674 set statusbar visible to false
675 set current view to icon view
677 set the bounds to {20, 50, $X_BOUNDS, $Y_BOUNDS}
680 set icon size of the icon view options of container window to 64
681 set arrangement of the icon view options of container window to not arranged
682 set position of item "Documents" to {$LYX_X_POSITION,0}
683 set position of item "${LyxName}.app" to {$LYX_X_POSITION,$LYX_Y_POSITION}
684 set position of item "Applications" to {$APP_X_POSITION,$APP_Y_POSITION}
685 set background picture of the icon view options\
686 of container window to file "background.png" of folder "Pictures"
687 set the bounds of the container window to {0, 0, $X_BOUNDS, $Y_BOUNDS}
688 update without registering applications
700 BGSIZE=`file "$DmgBackground" | awk -F , '/PNG/{print $2 }' | tr x ' '`
701 BG_W=`echo ${BGSIZE} | awk '{print $1 }'`
702 BG_H=`echo ${BGSIZE} | awk '{print $2 }'`
704 rm -f "${DMGNAME}.sparseimage" "${DMGNAME}.dmg"
706 hdiutil create -type SPARSE -size ${DMGSIZE:-"250m"} -fs HFS+ -volname "${LyxBase}" "${DMGNAME}"
707 # Unmount currently mounted disk image
708 test -d /Volumes/"${LyxBase}" && umount /Volumes/"${LyxBase}"
710 # Mount the disk image
711 hdiutil attach "${DMGNAME}.sparseimage"
713 # Obtain device information
714 DEVS=$(hdiutil attach "${DMGNAME}.sparseimage" | cut -f 1)
715 DEV=$(echo $DEVS | cut -f 1 -d ' ')
716 VOLUME=$(mount |grep ${DEV} | cut -f 3 -d ' ')
718 # copy in the application bundle
719 cp -Rp "${LyxAppDir}.app" "${VOLUME}/${LyxName}.app"
721 # copy in background image
722 mkdir -p "${VOLUME}/Pictures"
723 cp "${DmgBackground}" "${VOLUME}/Pictures/background.png"
724 # symlink applications
725 ln -s /Applications/ "${VOLUME}"/Applications
726 test -d "${DocumentationDir}" && cp -r "${DocumentationDir}" "${VOLUME}"
727 set_bundle_display_options "${VOLUME}" ${BG_W} ${BG_H}
728 /Developer/Tools/SetFile -a C "${VOLUME}"
729 mv "${VOLUME}/Pictures" "${VOLUME}/.Pictures"
731 # Unmount the disk image
732 hdiutil detach ${DEV}
734 # Convert the disk image to read-only
735 hdiutil convert "${DMGNAME}.sparseimage" -format UDBZ -o "${DMGNAME}.dmg"
736 rm -f "${DMGNAME}.sparseimage"
739 # ------------------------------
740 # Building distribution packages
741 # ------------------------------
744 test -n "${LyxAppZip}" && (
745 cd "${LyxAppPrefix}" && zip -r "${LyxAppZip}" .
748 test -n "${DMGLocation}" && (
749 make_dmg "${DMGLocation}"
750 if [ -d "${QtInstallDir}/lib/QtCore.framework/Versions/${QtFrameworkVersion}" -a "yes" = "${qt4_deployment}" ]; then
751 rm -f "${DMGLocation}/${DMGNAME}+qt4.dmg"
752 echo move to "${DMGLocation}/${DMGNAME}+qt4${MAC_API}.dmg"
753 mv "${DMGLocation}/${DMGNAME}.dmg" "${DMGLocation}/${DMGNAME}+qt4${MAC_API}.dmg"
758 # ------------------------------
760 # ------------------------------
762 if [ ${LyxOnlyPackage:-"no"} = "no" ]; then