X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=INSTALL.MacOSX;h=3acceb66a088e82a09dd16893db165e1fbcc8bb4;hb=4fbfa5908c2c26b1ad1e3f20201650a08ffe8c99;hp=4c02c4a716cdfaac0f773146238e490b868ac777;hpb=fb43bbbf6c7529cb0165b5c7f3e0be5cfaf00626;p=lyx.git diff --git a/INSTALL.MacOSX b/INSTALL.MacOSX index 4c02c4a716..3acceb66a0 100644 --- a/INSTALL.MacOSX +++ b/INSTALL.MacOSX @@ -1,18 +1,20 @@ -Building LyX/Mac-1.5 +Building LyX/Mac-2.0 Ronald Florence -Modified by Bennett Helm , Anders -Ekberg and Jean-Marc Lasgouttes . +Modified by Bennett Helm , +Anders Ekberg , +Jean-Marc Lasgouttes and +Stephan Witt . LyX/Mac is built from the LyX source, the GPL-licensed Trolltech Qt/Mac library, and a custom application bundle. You will need the MacOSX development tools. The procedure described -here builds LyX linked with a static Qt library. Also note that -building LyX/Mac requires gcc version 4.0 or higher. (You can check -your version by entering "gcc -v" in the Terminal; you can change -your gcc version to version 4.0, for example, by entering -"sudo gcc_select 4.0".) +here builds LyX linked with a shared Qt library. Also note that +building LyX/Mac requires gcc version 4.0 or higher. +You may build LyX with different SDK versions resulting in different +minimum required MacOSX versions. The first supported version is +10.4 (Tiger) for which the build has to use gcc4.0. PREREQUISITES @@ -22,38 +24,57 @@ build developmental versions must have automake and gettext as well. 1. Qt/Mac Opensource Edition, version 4. + This library is GPL-licensed and can be downloaded from -. To compile it, -create a directory where you want to install QT4. In the following, -the full path to this directory is called /path/to/QT4 +. +An alternative location is . +To compile it, create a directory where you want to install Qt4. +In the following, the full path to this directory is called /path/to/Qt4 Decompress Qt/Mac in a convenient directory, cd to the top of the Qt source hierarcy, and enter: - ./configure -static -no-exceptions -nomake examples -nomake tools -nomake demos -prefix /path/to/QT4 + ./configure -opensource -silent -shared -release -universal -fast \ + -no-exceptions -no-webkit -no-qt3support -no-javascript-jit -no-dbus \ + -nomake examples -nomake demos -nomake docs \ + -nomake tools -no-framework \ + -prefix /path/to/Qt4 make make install - rm /path/to/QT4/lib/*.la - with Qt4.6.2 and snow leopard it becomes: +This will result in an Qt library set for i386 and ppc applications. + +To build Qt with Tiger support run configure with: + + CC=gcc-4.0 OBJC=gcc-4.0 CXX=g++-4.0 \ + ./configure -opensource -silent -shared -release -universal -fast \ + -sdk /Developer/SDKs/MacOSX10.4u.sdk \ + -no-exceptions -no-webkit -no-qt3support -no-javascript-jit -no-dbus \ + -nomake examples -nomake demos -nomake docs \ + -nomake tools -no-framework \ + -prefix /path/to/Qt4 + +To build the libraries with 64bit architecture you have to replace the +"-universal" option with "-arch x86_64". Note: you cannot build Qt with +32bit and 64bit mixed architecture mode. (At least not with Qt4.6) +And the build with 64bit has known problems - so it's not recommended. + +Furthermore Apples developer documentation states: +"Although 64-bit executables make it easier for you to manage large +data sets ..., the use of 64-bit executables may raise other issues. +Therefore you should transition your software to a 64-bit executable +format only when the 64-bit environment offers a compelling advantage +for your specific purposes." - CC=gcc-4.0 OBJC=gcc-4.0 CXX=g++-4.0\ - ./configure -opensource -silent -static -release -universal -fast\ - -sdk /Developer/SDKs/MacOSX10.4u.sdk\ - -no-framework -no-exceptions -no-webkit -no-qt3support -no-javascript-jit -no-dbus\ - -nomake examples -nomake demos -nomake docs\ - -nomake tools\ - -prefix /path/to/QT4 - make - make install -2. [Needed only for developmental builds:] automake, version 1.10 +2. [Needed only for developmental builds:] automake, version 1.10.1 or higher (check with automake --version). Probably the easiest way to get this is to use MacPorts (from http://www.macports.org/) and install automake using sudo port install automake -3. [Needed only for developmental builds:] gettext version >= 0.12 + +3. [Needed only for developmental builds:] gettext version >= 0.18 (check with gettext --version). If the installed version is insufficient the easiest way to obtain a later version is to use MacPorts (from http://www.macports.org/) and install gettext @@ -61,8 +82,8 @@ using: sudo port install gettext -4. [Useful to simplify detection of Qt:] pkg-config >= 0.9.0. Again, -the simplest way is through MacPorts: + +4. pkg-config >= 0.9.0. Again, the simplest way is through MacPorts: sudo port install pkgconfig @@ -72,24 +93,116 @@ The aspell library is GPL-licensed and can be downloaded from ftp://ftp.gnu.org/gnu/aspell or one of the mirrors. At the time of writing aspell-0.60.tar.gz is the current version. Unpack the tarball in the same directory where you placed the -svn checkout or LyX tarball. +git checkout or LyX tarball. BUILD INSTRUCTIONS In what follows, /path/to/LyX.app is the location where you want LyX to create the LyX binary. You should substitute something appropriate, like: ~/Desktop/LyX.app. Also, substitute the appropriate path to -where you installed Qt for /path/to/QT4 (as above). +where you installed Qt for /path/to/Qt4 (as above). + +Dependent on the Qt-libraries you have and the build system you're using +you have to tell configure the compiler and compiler options to use. +If your Qt-libraries don't match your compiler defaults you may +adjust some environment variables to do so. + + +1. Environment + +(a) Qt-4.6 self compiled universal libs + + Since MacOSX 10.6 the default is to compile 64bit applications. + We have to change the default if using that build system. + + export CPPFLAGS="-arch i386" + export LDFLAGS="-arch i386" + +(b) Qt-4.6 libraries 64bit + + You're at least on MacOSX 10.6 and don't have to change anything. + Note: Your LyX binary will run only on 10.6 64bit Intel machines. + Additionally you'll have to provide your Qt libraries somehow... + FIXME: actually this is a dream, 64bit LyX crashes on startup! + +(c) Qt-4.6 self compiled libraries with Tiger support + + You have to choose the gcc4.0 compiler suite and the correct SDK: + + export CC=gcc-4.0 + export OBJC=gcc-4.0 + export CXX=g++-4.0 + export CPPFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" + export LDFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" + +(d) When working without pkgconfig or pkgconfig fails to detect Carbon and Appkit frameworks + + Current pkgconfig from macports is able to detect the frameworks Qt4 is using. + The build of LyX succeeds because the frameworks are added automatically to the linker options. + If you need to add them yourself because of link errors, e. g. + lyx Undefined symbols: "_FSPathMakeRef"... + you have to verify the required frameworks with otool and add them to the LDFLAGS. + + Check the output of + otool -L /path/to/QT4/lib/libQtGui.dylib + and look for lines with Frameworks. + + Currently there are two different Qt4 builds available for download: + * with Tiger support it's with Carbon. You have to add + export LDFLAGS="$LDFLAGS -framework ApplicationServices -framework Carbon -framework AppKit" + * with Cocoa framework without Tiger support you have to add + export LDFLAGS="$LDFLAGS -framework ApplicationServices -framework Cocoa -framework AppKit" + + Note: The latter is untested. + +(e) When working with the Qt4 frameworks provided by Nokia -(a) Official Releases + We have to help again with some environment variables to make configure work. -If you did not install pkg-config, first set the LDFLAGS variable: + In case pkgconfig is installed... disable it. + The Qt4 frameworks come without the required .pc files. - export LDFLAGS="-framework Carbon -framework OpenGL -framework AGL -framework QuickTime -framework Cocoa" + export PKG_CONFIG="" -Then, cd to the top of the LyX source hierarchy, and enter: + The required compiler flags to compile a Qt4 application has to be provided. - ./configure --prefix=/path/to/LyX.app --with-version-suffix=-2.0 --with-qt4-dir=/path/to/QT4 --with-included-gettext --enable-optimization=-O2 + export QT_CORE_CFLAGS="-FQtCore" + export QT_CORE_LIBS="-framework QtCore" + export QT_FRONTEND_CFLAGS="-FQtGui" + export QT_FRONTEND_LIBS="-framework QtGui" + + Depending on the architecture and target os add the compiler flags: + + - for default SDK + export CPPFLAGS="-arch i386" + export CPPFLAGS="$CPPFLAGS -I/Library/Frameworks/QtCore.framework/Headers" + export CPPFLAGS="$CPPFLAGS -I/Library/Frameworks/QtGui.framework/Headers" + export LDFLAGS="-arch i386 -framework ApplicationServices -framework Carbon -framework AppKit" + + - or to force 10.5 SDK + + export CPPFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4" + export CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.5.sdk/Library/Frameworks/QtCore.framework/Headers" + export CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.5.sdk/Library/Frameworks/QtGui.framework/Headers" + export LDFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4" + export LDFLAGS="$LDFLAGS -framework ApplicationServices -framework Carbon -framework AppKit" + + Note: it may depend on Qt4 frameworks what actually works. + The 4.6.2 frameworks has to be used with 10.5 SDK. + + +2. Configure and build + +(a) Official Releases (compile from tar-ball) + + cd to the top of the LyX source hierarchy, and enter: + + ./configure \ + --with-version-suffix=-2.0 \ + --with-libiconv-prefix=/usr \ + --with-x=no \ + --prefix=/path/to/LyX.app \ + --with-qt-dir=/path/to/Qt4 make make install-strip @@ -97,25 +210,68 @@ Then, cd to the top of the LyX source hierarchy, and enter: user's directory being located at ~/Library/Application Support/LyX-2.0) -(b) Developmental Versions (svn checkouts) +(b) Developmental Versions (git checkouts) Building LyX from developmental sources requires a few more steps. Instead of the instructions above, do the following: -If you did not install pkg-config, first set the LDFLAGS variable: + cd to the top of the LyX source hierarchy, and enter: - export LDFLAGS="-framework Carbon -framework OpenGL -framework AGL -framework QuickTime -framework Cocoa" + ./autogen.sh + ./configure \ + --with-version-suffix=-2.0 \ + --with-libiconv-prefix=/usr \ + --with-x=no \ + --disable-stdlib-debug \ + --prefix=/path/to/LyX.app \ + --with-qt-dir=/path/to/Qt4 + make + make install-strip -Then, cd to the top of the LyX source hierarchy, and enter: + +(c) Distribution build + +The distribution package build of LyX is supported by the shell script +"LyX-Mac-binary-release.sh" in the development sub-directory of the +LyX source hierarchy. + +Please read the script if you're about to make a distributable disk image. + +To use it, cd to the top of the LyX source hierarchy, and enter: + + sh development/LyX-Mac-binary-release.sh --with-qt-dir=/path/to/Qt4 + +This script automates all steps of the build process. +It detects the sources for Qt4, Aspell and Hunspell when placed in a +sibling directory and builds them ready to use for LyX packaging. +These libraries are then bundled with the LyX application as private +frameworks. Therefore the Qt4 libraries are build as frameworks. +Per default the resulting LyX application is build for ppc and i386 +to be usable on all systems from Tiger upwards. + + +(d) Development Versions (git checkouts and Qt4 frameworks) + +Instead of the instructions in (b), do the following: + + cd to the top of the LyX source hierarchy, and enter: ./autogen.sh - ./configure --prefix=/path/to/LyX.app --with-version-suffix=-2.0 --with-qt4-dir=/path/to/QT4 --with-included-gettext --enable-optimization=-O2 --disable-stdlib-debug + ./configure \ + --with-version-suffix=-2.0 \ + --with-libiconv-prefix=/usr \ + --with-x=no \ + --disable-stdlib-debug \ + --prefix=/path/to/LyX.app make make install-strip -Note that by default svn versions use some extra debugging code that -somewhat slows LyX down. If it is a real problem, you can pass the -option --enable-build-type=release to configure. + Note: The produced binary depends on the frameworks in location + /Library/Frameworks. These frameworks have to match the frameworks + you used on build. + + +3. Disclaimer The information on this page is believed to be accurate, has been used successfully on many systems and sites, and has benefited from the