Building LyX with SCons
=========================
-June, 2006
+July, 2006
The GNU Build System (autoconf, automake and make) has been used to build
not necessarily easy to use and maintain (at least to non-m4 experts)
either. Because of these, a scons (http://www.scons.org) build system has
been set up as an alternative way to build lyx. As of writing, this system
-only supports qt3 and qt4 frontends.
+only supports the qt4 frontend.
This file is organized as follows:
1. General usage of scons
2. *nix systems (Linux, Solaris and Mac OSX)
3. Windows/mingw
4. Windows/cygwin
-5. windows/msvc
-6. Other versions of lyx (1.4.x)
+5. Windows/msvc
+6. Tips and hints
7. Troubleshooting
in the near future.
* Other libraries:
- These include zlib (required), qt3 or qt4 (required), gettext
+ These include zlib (required), qt4 (required), gettext
(optional), boost (optional), aspell (optional) and Aiksaurus
(optional). Please refer to the system-specific sections regarding the
availability and installation of them.
either development/scons by, for example:
> cd development/scons
> scons frontend=qt4 qt_dir=d:/qt4 -j3 lyx
-or from top source directory by:
- > scons -f development/scons/SConstruct frontend=qt4 all
+or from any other directory and use -f option to point to the SConstruct
+file:
+ > mkdir build
+ > cd build
+ > scons -f ../development/scons/SConstruct frontend=qt4 all
There are three types of command line options:
* key=value are user options. They are used to tell scons which
Components to use/build:
- * frontend=qt3/qt4: qt3 is the default for all *nix systems including
- windows cygwin. qt4 is the default for windows/mingw and windows/
- msvc. xform and gtk are not currently supported.
+ * frontend=qt4: qt4 is the only option right now.
* mode=debug/release: lyx will be built under the debug or release
directory, with different default build options.
* boost=included/system/auto: whether or not use included boost, system
Convenience options:
- * fast_start=yes/no: if true, bypass initial configuration step and use
- existing src/config.h
* load_option=yes/no/opt1,opt2/-opt1,opt2: if true, load previously saved
command line options so you can run 'scons install' directly after a
long 'scons all' building command. You can load selected options using
* rebuild=target1,target2... By default, scons will exam all components
when you build lyx. You can free scons from some hard work and save
yourself some time by telling scons to rebuild only specified
- component(s).
+ component(s). rebuild=no, none, yes or all can be used as well.
* log_file: a log file of executed commands, default to scons_lyx.log
* prefix: directory where lyx will be installed
* exec_dir: directory where lyx binaries will be installed.
Default to $prefix/bin
- * dest_dir: if specified, install to this directory instead of $prefix.
+ * DESTDIR: if specified, install to this directory instead of $prefix.
+ * version_suffix=yes/no/something : if specified, this suffix will be
+ appended to the user data directory.
Compiler choice and flags:
Static libraries (names correspond to their directories):
boost, intl, support, mathed, insets, frontends, graphics,
- controllers, client, qt3, qt4, lyxbase
+ controllers, client, qt4, lyxbase
Programs:
tex2lyx, client, lyx, all = tex2lyx + client + lyx
Installation:
$build_dir
- common: most of the intermediate files, mostly object files
- libs: all static libraries
- - qt3 etc: lyx executable built with the frontend
- executables: lyxclient, tex2lyx, lyx
MSVS projects will be put to development/scons (and you should invoke
(working on lyx_main.C, so only need to rebuild lyxbase)
> scons
(build again, only lyxbase will be rebuilt)
- > scons fast_start=no --config=force
- (need to regenerate src/config.h)
- > scons prefix=/usr/site dest_dir=/install/dir
+ > scons prefix=/usr/site DESTDIR=/install/dir
(lyx is built for /usr/site, but install to /install/dir)
4. Windows/cygwin
=================
-LyX should be easy to compile, but the qt3 library in the cygwin
-distribution does not work with the current cygwin dll (version 1.5.19-4
-as of June 2006) due to broken threading support. You should either wait
-for the forthcoming 1.5.20 version or install a recent snapshot from
-http://cygwin.com/snapshots.
+LyX should be easy to compile, but you must use the most recent cygwin
+dll (version 1.5.20-1 as of July 2006) because qt library in older
+cygwin distribution does not work with previous versions due to broken
+threading support.
To build lyx for cygwin, you should
* install (using the cygwin setup program) at least the following
packages and all other packages pulled in by dependencies:
- aspell grep libintl1 qt3-bin tar
- coreutils jbigkit libintl2 qt3-devel libiconv
- diffutils jpeg libpng python
- gettext libintl libpng2 sed
+ aspell gzip libiconv qt4-bin
+ aspell-dev jpeg libpng qt4-devel
+ gcc libintl libpng2
+ gettext libintl1 jpeg
+ gettext-devel libintl2 python
+
+ * install aiksaurus (http://aiksaurus.sourceforge.net/, optional):
+ There is no cygwin package for aiksaurus, so you should build it from
+ source. However, aiksaurus builds smoothly on cygwin.
* run scons as you would do under linux.
Note: cygwin/qt does not follow the usual $qt_dir/include, $qt_dir/bin,
-$qt_dir/lib directory structure. For example, cygwin/qt3 uses directories
-/usr/include/qt3, /usr/lib/qt3/bin and /usr/lib/qt3/lib. If these
+$qt_dir/lib directory structure. For example, cygwin/qt4 uses directories
+/usr/include/qt4, /usr/lib/qt4/bin and /usr/lib/qt4/lib. If these
directories can not be detected automatically, use options, for example,
- qt_dir=/usr/lib/qt3 qt_inc_path=/usr/include/qt3
-
+ qt_dir=/usr/lib/qt4 qt_inc_path=/usr/include/qt4
5. Windows/msvc
directories in VCProjectEngine.dll.express.config, as suggested in
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/.
- * build qt4
+ * build qt4
- download qt4 source from trolltech (not the binary version, which
only works with mingw)
- get q../free patch for qt4
- To use the msvc debugger, you have to use mode=debug (default).
-6. Other versions of lyx (1.4.x)
-================================
-
-The scons build system is not yet distributed with lyx1.4.x. Support for
-the qt2 frontend of lyx1.4.x is, however, added to the trunk (1.5.x). If
-you have checked out both 1.4.x and the trunk, you can build lyx 1.4.x
-using commands similar to
-
- > cd lyx-1.4.x
- > scons -f ../lyx-1.5.x/development/scons/SConstruct
+6. Tips and hints
+=================
-Note that lyx 1.4.x does not use the latest version of the boost library
-so option boost=included is recommended.
+ * Using external boost libraries (install boost libraries and use
+ option boost=system) can speed up scons' starting time a lot, since
+ the boost headers will then be considered as system headers and will
+ not be included in the dependency tree.
7. Troubleshooting