]> git.lyx.org Git - lyx.git/blobdiff - INSTALL.MacOSX
Configure for Windows 2.3.3 release.
[lyx.git] / INSTALL.MacOSX
index fd515b728c218aa999684d364a35e3d3b71da683..3acceb66a088e82a09dd16893db165e1fbcc8bb4 100644 (file)
@@ -1,18 +1,20 @@
-Building LyX/Mac-1.5
+Building LyX/Mac-2.0
 Ronald Florence <ron@18james.com>
-Modified by Bennett Helm <bennett.helm@fandm.edu>, Anders
-Ekberg <anek@mac.com> and Jean-Marc Lasgouttes <lasgouttes@lyx.org>.
+Modified by Bennett Helm <bennett.helm@fandm.edu>,
+Anders Ekberg <anek@mac.com>,
+Jean-Marc Lasgouttes <lasgouttes@lyx.org> and
+Stephan Witt <st.witt@gmx.de>.
 
 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
 
@@ -21,28 +23,58 @@ so steps 2 and 3 can be skipped in these cases. Those wanting to
 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
-<http://trolltech.com/developer/downloads/qt/mac/>. 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
+1. Qt/Mac Opensource Edition, version 4.
+
+This library is GPL-licensed and can be downloaded from
+<http://trolltech.com/developer/downloads/qt/mac/>.
+An alternative location is <ftp://ftp.qt.nokia.com/qt/source>.
+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
-     cd /path/to/QT4/lib
-     rm *.la
 
-2. [Needed only for developmental builds:] automake, version 1.10
+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."
+
+
+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
@@ -50,54 +82,196 @@ 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
 
 
+5. To build with included spell checker (ASpell):
+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
+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.
 
-(a) Official Releases
+(e) When working with the Qt4 frameworks provided by Nokia
 
-If you did not install pkg-config, first set the LDFLAGS variable:
+   We have to help again with some environment variables to make configure work.
 
-     export LDFLAGS="-framework Carbon -framework OpenGL -framework AGL -framework QuickTime -framework Cocoa"
+   In case pkgconfig is installed... disable it.
+   The Qt4 frameworks come without the required .pc files.
 
-Then, cd to the top of the LyX source hierarchy, and enter:
+   export PKG_CONFIG=""
 
-     ./configure --prefix=/path/to/LyX.app --with-version-suffix=-2.0 --with-qt4-dir=/path/to/QT4 --with-included-gettext --enable-optimization=-O2
+   The required compiler flags to compile a Qt4 application has to be provided.
+
+   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
 
-(Note that the --with-version-suffix=-1.6 option will result in LyX's
-user's directory being located at ~/Library/Application Support/LyX-1.6)
+(Note that the --with-version-suffix=-2.0 option will result in LyX's
+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:
+
+     ./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
+
+
+(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:
 
-     export LDFLAGS="-framework Carbon -framework OpenGL -framework AGL -framework QuickTime -framework Cocoa"
+   sh development/LyX-Mac-binary-release.sh --with-qt-dir=/path/to/Qt4
 
-Then, cd to the top of the LyX source hierarchy, and enter:
+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=-1.6 --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