X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=development%2FLyX-Mac-binary-release.sh;h=58ef92148948840a0c0e796789263488b2d33b29;hb=eec88b7e5e051c00924355d5d58107996bdf1708;hp=562995136a62eda565527a9546adc7aca6cb63c6;hpb=ade492b49cda89f202bfdf287ec9f7e4df3b5fc9;p=lyx.git diff --git a/development/LyX-Mac-binary-release.sh b/development/LyX-Mac-binary-release.sh index 562995136a..58ef921489 100644 --- a/development/LyX-Mac-binary-release.sh +++ b/development/LyX-Mac-binary-release.sh @@ -4,11 +4,13 @@ # This script automates creating universal binaries of LyX on Mac. # Author: Bennett Helm (and extended by Konrad Hofbauer) -# modified by Stephan Witt -# Last modified: 9 July 2010 +# latest changes by Stephan Witt +# Last modified: January 2011 -#Qt4SourceVersion="qt-everywhere-opensource-src-4.7.0-beta1" -#Qt4Build="qt4.7-beta" +CARBON=-carbon +Qt4Version="4.6.3" +Qt4SourceVersion="qt-everywhere-opensource-src-${Qt4Version}" +Qt4BuildSubDir="qt-${Qt4Version}-build${CARBON}" # Prerequisite: # * a decent checkout of LyX sources (probably you have it already) @@ -20,15 +22,16 @@ # the hunspell sources placed in a sibling directory (variable HunSpellSourceVersion) # * for dictionary deployment (per default thesauri only): # - aspell: the dictionary files of macports (in /opt/local/share/aspell and /opt/local/lib/aspell-0.60) -# - hunspell: the dictionary files in the sibling directory Dictionaries/dict -# - mythes: the data and idx files in the sibling directory Dictionaries/thes +# - hunspell: the dictionary files in the sibling directory dictionaries/dicts +# - mythes: the data and idx files in the sibling directory dictionaries/thes -LyXConfigureOptions="--enable-warnings --enable-optimization=-Os --with-included-gettext --with-libiconv-prefix=/usr" +LyXConfigureOptions="--enable-warnings --enable-optimization=-Os --with-included-gettext --with-x=no" AspellConfigureOptions="--enable-warnings --enable-optimization=-O0 --enable-debug --disable-nls --enable-compile-in-filters --disable-pspell-compatibility" HunspellConfigureOptions="--with-warnings --disable-nls --with-included-gettext --disable-static" Qt4ConfigureOptions="-opensource -silent -shared -release -fast -no-exceptions" Qt4ConfigureOptions="${Qt4ConfigureOptions} -no-webkit -no-qt3support -no-javascript-jit -no-dbus" Qt4ConfigureOptions="${Qt4ConfigureOptions} -nomake examples -nomake demos -nomake docs -nomake tools" +#Qt4ConfigureOptions="${Qt4ConfigureOptions} ${CARBON}" aspell_dictionaries="no" hunspell_dictionaries="no" @@ -47,6 +50,7 @@ usage() { echo echo Optional arguments: echo " --aspell-deployment=yes|no ." default yes + echo " --with-qt4-frameworks=yes|no" default no echo " --qt4-deployment=yes|no ...." default yes echo " --with-macosx-target=TARGET " default 10.4 "(Tiger)" echo " --with-sdkroot=SDKROOT ....." default 10.5 "(Leopard)" @@ -62,6 +66,14 @@ usage() { while [ $# -gt 0 ]; do case "${1}" in + --with-qt4-frameworks=*) + configure_qt4_frameworks=`echo ${1}|cut -d= -f2` + if [ "$configure_qt4_frameworks" = "yes" ]; then + unset QTDIR + qt4_deployment="no" + fi + shift + ;; --with-qt4-dir=*) QTDIR=`echo ${1}|cut -d= -f2` shift @@ -75,6 +87,9 @@ while [ $# -gt 0 ]; do case "${SDKROOT}" in 10.4) SDKROOT="/Developer/SDKs/MacOSX10.4u.sdk" + export CC=gcc-4.0 + export OBJC=gcc-4.0 + export CXX=g++-4.0 ;; 10.5|10.6) SDKROOT="/Developer/SDKs/MacOSX${SDKROOT}.sdk" @@ -139,18 +154,12 @@ while [ $# -gt 0 ]; do esac done -# Set these variables -- to -# (1) the location of your Qt4 installation -# (2) the location of resulting DMG -# (3) the version of private aspell installation -# (to define the location assign ASpellSourceDir instead) -# (4) the list of architectures to build for - -QtInstallDir=${QTDIR:-"/opt/qt4"} +if [ "${configure_qt4_frameworks}" != "yes" ]; then + QtInstallDir=${QTDIR:-"/opt/qt4"} +fi QtFrameworkVersion="4" ASpellSourceVersion="aspell-0.60.6" -HunSpellSourceVersion="hunspell-1.2.9" -Qt4SourceVersion=${Qt4SourceVersion:-"qt-everywhere-opensource-src-4.6.3"} +HunSpellSourceVersion="hunspell-1.2.12" ARCH_LIST=${ARCH_LIST:-"ppc i386"} @@ -186,17 +195,16 @@ ASpellInstallDir=${ASpellInstallDir:-"${LyxBuildDir}"/SpellChecker.lib} HunSpellSourceDir=${HUNSPELLDIR:-`dirname "${LyxSourceDir}"`/${HunSpellSourceVersion}} HunSpellInstallDir=${HunSpellInstallDir:-"${LyxBuildDir}"/SpellChecker.lib} Qt4SourceDir=${QT4SOURCEDIR:-`dirname "${LyxSourceDir}"`/${Qt4SourceVersion}} -Qt4BuildDir=${Qt4BuildDir:-"${LyxBuildDir}"/${Qt4Build:-"qt4-build"}} -DictionarySourceDir=${DICTIONARYDIR:-`dirname "${LyxSourceDir}"`/Dictionaries} +Qt4BuildDir=${Qt4BuildDir:-"${LyxBuildDir}"/${Qt4BuildSubDir:-"qt4-build"}} +DictionarySourceDir=${DICTIONARYDIR:-`dirname "${LyxSourceDir}"`/dictionaries} ASpellInstallHdr="${ASpellInstallDir}/include/aspell.h" HunSpellInstallHdr="${HunSpellInstallDir}/include/hunspell/hunspell.h" if [ -z "${LyXVersion}" ]; then LyXVersion=`grep AC_INIT "${LyxSourceDir}"/configure.ac | cut -d, -f2 | tr -d " ()"` - LyXVersionSuffix=`echo "${LyXVersion}" | cut -d. -f1-2` - LyXVersionSuffix="${LyXVersionSuffix:-${LyXVersion}}" fi +LyXVersionSuffix=${LyXVersionSuffix:-`echo "${LyXVersion}" | cut -d. -f1-2`} LyxName="LyX" LyxBase="${LyxName}-${LyXVersion}" @@ -255,83 +263,13 @@ MYCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" HostSystem_i386="i686-apple-darwin8" HostSystem_ppc="powerpc-apple-darwin8" -updateDictionaries() { - TMP_DIR="/tmp/lyx-build-$$" - mkdir -p "$1"/dict "$1"/thes - mkdir -p "$TMP_DIR" && ( - for pack in "$1"/*.zip ; do - case "${pack}" in - *de_DE-pack.zip) - cd "$TMP_DIR" && unzip "${pack}" de_DE_comb.zip thes_de_DE_v2.zip - cd "$1"/dict && unzip -o "$TMP_DIR"/de_DE_comb.zip &&\ - for suffix in .aff .dic ; do mv de_DE_comb$suffix de_DE$suffix; done - cd "$1"/thes && unzip -o "$TMP_DIR"/thes_de_DE_v2.zip - ;; - *pl_PL-pack.zip) - cd "$TMP_DIR" && unzip "${pack}" pl_PL.zip thes_pl_PL_v2.zip - cd "$1"/dict && unzip -o "$TMP_DIR"/pl_PL.zip - cd "$1"/thes && unzip -o "$TMP_DIR"/thes_pl_PL_v2.zip - ;; - *fr_FR-pack.zip) - cd "$TMP_DIR" && unzip "${pack}" fr_FR.zip thes_fr_FR_v2.zip - cd "$1"/dict && unzip -o "$TMP_DIR"/fr_FR.zip - cd "$1"/thes && unzip -o "$TMP_DIR"/thes_fr_FR_v2.zip - ;; - *es_ES-pack.zip) - cd "$TMP_DIR" && unzip "${pack}" es_ES.zip es_MX.zip thes_es_ES_v2.zip - cd "$1"/dict && unzip -o "$TMP_DIR"/es_ES.zip - cd "$1"/dict && unzip -o "$TMP_DIR"/es_MX.zip - cd "$1"/thes && unzip -o "$TMP_DIR"/thes_es_ES_v2.zip - ;; - *pt_PT-pack.zip) - cd "$TMP_DIR" && unzip "${pack}" pt_PT.zip - cd "$1"/dict && unzip -o "$TMP_DIR"/pt_PT.zip - cd "$1"/dict && unzip -o "$1"/pt_BR.zip - cd "$1"/thes && unzip -o "$1"/thes_pt_PT_v2.zip - ;; - *it_IT-pack.zip) - cd "$TMP_DIR" && unzip "${pack}" it_IT.zip - cd "$1"/dict && unzip -o "$TMP_DIR"/it_IT.zip - cd "$1"/thes && unzip -o "$1"/thes_it_IT_v2.zip - ;; - *ru_RU-pack.zip) - cd "$TMP_DIR" && unzip "${pack}" ru_RU.zip - cd "$1"/dict && unzip -o "$TMP_DIR"/ru_RU.zip - cd "$1"/thes && tar xvf "$1"/thes_ru_RU_v2.tar.bz2 - ;; - *en_EN-pack.zip) - cd "$TMP_DIR" && unzip "${pack}" en_AU.zip en_CA.zip en_GB.zip en_NZ.zip en_US.zip - for zipfile in en_AU.zip en_CA.zip en_GB.zip en_NZ.zip en_US.zip ; do - ( cd "$1"/dict && unzip -o "$TMP_DIR/$zipfile" ) - done - cd "$1"/thes && unzip -o "$1"/thes_en_US_v2.zip - ;; - XXXX*-pack*) - cd "$TMP_DIR" && unzip -l "${pack}" | while read len date time zipfile ; do - case "$zipfile" in - thes*_v2.zip) - echo "$zipfile" - cd "$TMP_DIR" && unzip -o "${pack}" "$zipfile" - cd "$1"/thes && unzip -o "$TMP_DIR"/"$zipfile" - ;; - [a-z][a-z]_[A-Z][A-Z].zip) - echo "$zipfile" - cd "$TMP_DIR" && unzip -o "${pack}" "$zipfile" - cd "$1"/dict && unzip -o "$TMP_DIR"/"$zipfile" - ;; - esac - done - # echo Ignore dictionary package `basename "${pack}"` - ;; - esac - done - ) - rm -rf "$TMP_DIR" -} - -if [ -d "${Qt4SourceDir}" -a ! -d "${Qt4BuildDir}" ]; then +if [ "${configure_qt4_frameworks}" != "yes" -a -d "${Qt4SourceDir}" -a ! \( -d "${Qt4BuildDir}" -a -d "${QtInstallDir}" \) ]; then echo Build Qt4 library ${Qt4SourceDir} - + if [ "${QtInstallDir}" = "${Qt4BuildDir}" ]; then + echo Bad install directory for Qt. + echo Must be different from build directory "${Qt4BuildDir}". + exit 1 + fi ( mkdir -p "${Qt4BuildDir}" && cd "${Qt4BuildDir}" for arch in ${ARCH_LIST} ; do @@ -339,7 +277,6 @@ if [ -d "${Qt4SourceDir}" -a ! -d "${Qt4BuildDir}" ]; then done echo configure options: echo ${Qt4ConfigureOptions} ${ARCHS} -prefix "${QtInstallDir}" - echo yes | "${Qt4SourceDir}"/configure ${Qt4ConfigureOptions} ${ARCHS} -prefix "${QtInstallDir}" make && make install ) @@ -352,9 +289,6 @@ if [ -d "${Qt4SourceDir}" -a ! -d "${Qt4BuildDir}" ]; then ) fi -# updateDictionaries "${DictionarySourceDir}" -# exit - if [ -d "${HunSpellSourceDir}" -a ! -f "${HunSpellInstallHdr}" ]; then # we have a private HunSpell source tree at hand... # so let's build and install it @@ -491,6 +425,14 @@ framework_name() { if [ ! -f "${LyxSourceDir}"/configure -o "${LyxSourceDir}"/configure -ot "${LyxSourceDir}"/configure.ac ]; then ( cd "${LyxSourceDir}" && sh autogen.sh ) +else + find "${LyxSourceDir}" -name Makefile.am -print | while read file ; do + dname=`dirname "$file"` + if [ -f "$dname/Makefile.in" -a "$dname/Makefile.in" -ot "$file" ]; then + ( cd "${LyxSourceDir}" && sh autogen.sh ) + break + fi + done fi FILE_LIST="lyx lyxclient tex2lyx" @@ -506,11 +448,8 @@ build_lyx() { # ------------------------------------- if [ -d "${ASpellInstallDir}" -a "yes" = "${aspell_deployment}" ]; then - ASpellFramework=`framework_name Aspell` - ASpellFramework=`basename "${ASpellFramework}"` ConfigureExtraInc="--with-extra-inc=${ASpellInstallDir}/include" ConfigureExtraLib="--with-extra-lib=${ASpellInstallDir}/lib" - LyXConfigureOptions="${LyXConfigureOptions} --with-aspell-framework=${ASpellFramework}" fi if [ -d "${HunSpellInstallDir}" -a "yes" = "${hunspell_deployment}" ]; then @@ -526,15 +465,29 @@ build_lyx() { for arch in ${ARCH_LIST} ; do if [ -d "${LyxBuildDir}" ]; then rm -r "${LyxBuildDir}"; fi - mkdir "${LyxBuildDir}" && cd "${LyxBuildDir}" + mkdir -p "${LyxBuildDir}" && cd "${LyxBuildDir}" - CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"; export CPPFLAGS - LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"; export LDFLAGS + CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}" + LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}" HOSTSYSTEM=`eval "echo \\$HostSystem_$arch"` + if [ "$configure_qt4_frameworks" = "yes" ]; then + export QT4_CORE_CFLAGS="-FQtCore" + export QT4_CORE_LIBS="-framework QtCore" + export QT4_FRONTEND_CFLAGS="-FQtGui" + export QT4_FRONTEND_LIBS="-framework QtGui" + export PKG_CONFIG="" + CPPFLAGS="${CPPFLAGS} -I${SDKROOT}/Library/Frameworks/QtCore.framework/Headers" + CPPFLAGS="${CPPFLAGS} -I${SDKROOT}/Library/Frameworks/QtGui.framework/Headers" + fi + LDFLAGS="${LDFLAGS}"${CARBON:+" -framework Carbon"} + LDFLAGS="${LDFLAGS} -framework AppKit" + echo LDFLAGS="${LDFLAGS}" + export LDFLAGS echo CPPFLAGS="${CPPFLAGS}" - echo CONFIGURE_OPTIONS="${LyXConfigureOptions}" + export CPPFLAGS + echo CONFIGURE_OPTIONS="${LyXConfigureOptions}" ${QtInstallDir:+"--with-qt4-dir=${QtInstallDir}"} "${LyxSourceDir}/configure"\ --prefix="${LyxAppPrefix}" --with-version-suffix="-${LyXVersionSuffix}"\ ${QtInstallDir:+"--with-qt4-dir=${QtInstallDir}"} \ @@ -674,20 +627,19 @@ copy_dictionaries() { if [ -d /opt/local/lib/aspell-0.60 ]; then ASpellInstallDir=/opt/local ; fi mkdir -p "${ASpellResources}" echo Copy Aspell dictionaries from "${ASpellInstallDir}" - mkdir -p "${ASpellResources}"/data "${ASpellResources}"/dict + mkdir -p "${ASpellResources}"/data "${ASpellResources}"/dicts cp -p -r "${ASpellInstallDir}/lib/aspell-0.60"/* "${ASpellResources}"/data - cp -p -r "${ASpellInstallDir}/share/aspell"/* "${ASpellResources}"/dict + cp -p -r "${ASpellInstallDir}/share/aspell"/* "${ASpellResources}"/dicts fi if [ -d "${HunSpellInstallDir}" -a "yes" = "${hunspell_dictionaries}" ]; then HunSpellResources="${LyxAppPrefix}/Contents/Resources" if [ -d "${DictionarySourceDir}" ]; then - updateDictionaries "${DictionarySourceDir}" - cp -p -r "${DictionarySourceDir}/dict" "${HunSpellResources}" + ( cd "${DictionarySourceDir}" && find dicts -name .svn -prune -o -type f -print | cpio -pmdv "${HunSpellResources}" ) fi fi if [ -d "${DictionarySourceDir}" -a "yes" = "${thesaurus_deployment}" ]; then MyThesResources="${LyxAppPrefix}/Contents/Resources" - cp -p -r "${DictionarySourceDir}/thes" "${MyThesResources}" + ( cd "${DictionarySourceDir}" && find thes -name .svn -prune -o -type f -print | cpio -pmdv "${MyThesResources}" ) fi }