lyx_mirror/INSTALL.scons
Bo Peng 48ecd44845 Scons: Better MSVS Projects support (now with debug)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14069 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-10 21:02:11 +00:00

335 lines
11 KiB
Plaintext

=========================
Building LyX with SCons
=========================
June, 2006
The GNU Build System (autoconf, automake and make) has been used to build
and distribute lyx. These de facto *nix tools are readily available and
widely supported on the *nix systems, but not so under windows. They are
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.
This README 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. Troubleshooting
1. General usage of scons
=========================
Prerequisites:
--------------
* Python:
Python >= 1.5.2 is required to run scons, but Python >= 2.2 is used by
lyx itself so the newer version is recommended. Python is widely
available on non-windows systems. Windows users can download and install
python from http://www.python.org.
* SCons:
scons >= 0.96.92 is needed. You can either use a full system-wide scons
distribution or a light-weight one (called scons-local) installed along
with the lyx source tree. Both variants of scons are freely available
from http://www.scons.org. Note that LyX source may ship with scons-base
in the near future.
* Other libraries:
These include zlib (required), qt3 or 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.
Start scons:
------------
The scons system resides under development/scons. You can invoke it from
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
There are three types of command line options:
* key=value are user options. They are used to tell scons which
frontend to use, whether or not use included boost libraries etc.
You can use 'scons -h' to list all of the options.
* parameters start with - or -- are scons options. Useful ones include
-j3 (with three threads) and --config=force (force reconfiguration).
* others options are targets, which are lyx objects to build.
User Options:
-------------
Here I only list important options that you will likely use. Full option
list with detailed description and default value can be displayed using
command 'scons -h'.
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.
* 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
boost, or try to detect system boost first
* gettext=included/system/auto
* nls=yes/no whether or not enable natural language support.
* spell=aspell/pspell/ispell/auto: spell engine
Paths: Most of them will be probed if not specified.
* qt_dir: top level directory of qt (with subdirectory include, lib)
* qt_lib_path: path to the qt library, use only if there is no
$qt_dir/lib
* qt_inc_path: path to qt include directory, use only if there is no
$qt_dir/include
* extra_inc_path, extra_inc_path1, extra_lib_path, extra_lib_path1:
additional paths to other libraries
* extra_bin_path: a convenient way to add an extra path to $PATH
Convenience options:
* fast_start=yes/no: if true, bypass initial configuration step and use
existing src/config.h
* load_option=yes/no: if true, load previously saved command line
options so you can run 'scons install' directly after a long
'scons all' building command.
* 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).
* log_file: a log file of executed commands, default to scons_lyx.log
Installation options:
* 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.
Compiler choice and flags:
* use_vc: use msvc instead of mingw g++ under windows
* CC, LINK, CPP, CXX, CCFLAGS, LDFLAGS etc: compiler commands and
flags. They can be set as environment variables as well.
Targets:
--------
You can specify one or more of the following targets:
Static libraries (names correspond to their directories):
boost, intl, support, mathed, insets, frontends, graphics,
controllers, client, qt3, qt4, lyxbase
Programs:
tex2lyx, client, lyx, all = tex2lyx + client + lyx
Installation:
po, install = all + po
Misc:
msvs_projects
Your built targets are put into $build_dir, which is debug (mode=debug),
release (mode=release) or any name specified via build_dir=name. The
directory structure is:
$build_dir
- common: most of the intermediate files, mostly object files
- libs: all static libraries
- qt3/qt4: lyx built with the frontend
- executables: lyxclient, tex2lyx, lyx
MSVS projects will be put to development/scons (and you should invoke
scons from there for this target).
A typical working sequence:
---------------------------
> cd development/scons
> scons frontend=qt4 qt_dir=/path/to/qt4
(build lyx, and all necessary libraries...)
> scons all -j3
(build lyx, client and tex2lyx, options like qt_dir will be carried
over here)
> scons rebuild=lyxbase
(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
(lyx is built for /usr/site, but install to /install/dir)
2. *nix systems (Linux, Solaris and Mac OSX)
============================================
Proper use of extra_inc_path, qt_dir etc should solve most of the
problems.
3. Windows/mingw
================
* install mingw with the following packages:
FIXME: we only need gcc/g++ and win32 api.
binutils-2.16.91-...tar.gz
gcc-core-3.4.5-...tar.gz
gcc-g++-3.4.5-...tar.gz
mingw-runtime-3.9.tar.gz
mingw-utils-0.3.tar.gz
MSYS-1.0.11-...exe
msysDTK-1.0.1.exe
msys-libtool-1.5.tar.bz2
w32api-3.6.tar.g
* install the latest Qt official "open source" binary package for
Windows/Mingw
* install iconv (libiconv):
Download the windows binary (libiconv-x.x.x.bin.woe32.zip) of iconv
from one of the GNU mirrors listed in http://www.gnu.org/prep/ftp.html.
You may also try gnuwin32/libiconv from
http://gnuwin32.sourceforge.net/packages/libiconv.htm
* install gettext (libintl):
Download the windows binary (gettext-runtime-x.x.x.bin.woe32.zip and
gettext-tools-x.x.x.bin.woe32.zip) from one of the GNU mirrors
(e.g. http://mirrors.usc.edu/pub/gnu/gettext/) and decompress.
You may also try gnuwin32/libintl from
http://gnuwin32.sourceforge.net/packages/libintl.htm
* install mingw/zlib:
Download zlib binaries and developer files (zlib-1.2.3-bin.zip and
zlib-1.2.3-lib.zip) from http://gnuwin32.sourceforge.net/packages/zlib.htm .
* aspell: this is difficult. Everybody has his own compiled library.
Mine is in D:\program\Aspell-0.60.4.
* Open a mingw xterm, and start scons as usual.
Note: gettext, iconv and zlib are usually decompressed to c:/mingw so no
extra_inc_path etc is needed.
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.
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
* run scons as you would do under linux.
5. Windows/msvc
===============
To build lyx with msvc, you should
* install msvc
It is recommended that you use MSVC2005 Express edition which is
freely available from microsoft.
* get windows platform SDK
Please follow the link in the MSVC webpage to download and configure.
It is important that you add SDK paths to %INCLUDE% and %LIB% in, e.g.,
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat.
If you plan to use the MSVS IDE, you should also update the Visual C++
directories in VCProjectEngine.dll.express.config, as suggested in
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/.
* build qt4
- download qt4 source from trolltech (not the binary version, which
only works with mingw)
- get q../free patch for qt4
- compile qt4 as instructed
* download and install the official zlib library from www.zlib.org.
* install iconv (libiconv):
Download the windows binary (libiconv-x.x.x.bin.woe32.zip) of iconv
from one of the GNU mirrors listed in http://www.gnu.org/prep/ftp.html.
You may also try gnuwin32/libiconv from
http://gnuwin32.sourceforge.net/packages/libiconv.htm
* install gettext (libintl):
Download the windows binary (gettext-runtime-x.x.x.bin.woe32.zip and
gettext-tools-x.x.x.bin.woe32.zip) from one of the GNU mirrors
(e.g. http://mirrors.usc.edu/pub/gnu/gettext/) and decompress.
You may also try gnuwin32/libintl from
http://gnuwin32.sourceforge.net/packages/libintl.htm
* set up other optional libraries like aspell (following mingw
instructions)
* start from msvc command prompt, use the use_vc option to build lyx.
You may need to use extra_inc_path etc to point to zlib paths.
* you can use the msvs_projects target to obtain msvc project files
for each lyx component.
- go to development/scons (important)
- run
> scons [other options] msvs_projects
Note that
- The resulting project files will use scons to build lyx
- All command line options, including rebuild, can be used as usual
(when msvs invoke scons).
- To use the msvc debugger, you have to use mode=debug (default).
6. Troubleshooting
==================
When you get an error:
Q. Some path is not found.
A, Try options such as extra_inc_path, extra_lib_path.
Q. A test fails (failed to find zlib etc).
A. Have a look at config.log.
Q. I get a linking error.
A. Get the command sequence from scons_lyx.log and see what could
have gone wrong. You usually only need to tweak the last linking
command.
Q. Still can not figure it out.
A. Send an email to lyx-devel mailing list.
Q. Feeling too impatient/adventurous to wait for list response.
A. Read SConstruct and SConscript and see what went wrong. Trust me, they
are much easier to decipher than the autoconf/m4 files.