mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Scons: polish scons' 1.4.x support.
* INSTALL.scons: add instruction for 1.4.x * development/scons/SConstruct: fix a installation bug for 1.4.x, better handling of QTDIR git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14311 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
d4253cbacd
commit
62d3cebb29
@ -2,7 +2,7 @@
|
||||
Building LyX with SCons
|
||||
=========================
|
||||
|
||||
June, 2006
|
||||
June, 2006
|
||||
|
||||
|
||||
The GNU Build System (autoconf, automake and make) has been used to build
|
||||
@ -19,7 +19,8 @@ This file is organized as follows:
|
||||
3. Windows/mingw
|
||||
4. Windows/cygwin
|
||||
5. windows/msvc
|
||||
6. Troubleshooting
|
||||
6. Other versions of lyx (1.4.x)
|
||||
7. Troubleshooting
|
||||
|
||||
|
||||
1. General usage of scons
|
||||
@ -37,21 +38,21 @@ Prerequisites:
|
||||
* 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
|
||||
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
|
||||
(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
|
||||
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
|
||||
@ -60,7 +61,7 @@ or from top source directory by:
|
||||
|
||||
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.
|
||||
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).
|
||||
@ -79,10 +80,12 @@ 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
|
||||
* 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
|
||||
boost, or try to detect system boost first. Note that boost=included
|
||||
is safer if system boost has a different version from the included
|
||||
one.
|
||||
* gettext=included/system/auto
|
||||
* nls=yes/no whether or not enable natural language support.
|
||||
* spell=aspell/pspell/ispell/auto: spell engine
|
||||
@ -90,10 +93,11 @@ Components to use/build:
|
||||
|
||||
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: top level directory of qt (with at least subdirectory bin
|
||||
containing commands uic and moc)
|
||||
* 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_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
|
||||
@ -105,10 +109,10 @@ 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
|
||||
command line options so you can run 'scons install' directly after a
|
||||
long 'scons all' building command. You can load selected options using
|
||||
load_option=opt1,opt2,... or exclude options using the - version of it.
|
||||
* rebuild=target1,target2... By default, scons will exam all components
|
||||
* 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).
|
||||
@ -118,7 +122,7 @@ Convenience options:
|
||||
Installation options:
|
||||
|
||||
* prefix: directory where lyx will be installed
|
||||
* exec_dir: directory where lyx binaries 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.
|
||||
|
||||
@ -126,7 +130,7 @@ Installation options:
|
||||
Compiler choice and flags:
|
||||
* use_vc: use msvc instead of mingw g++ under windows
|
||||
* optimization: optimization flag to use (e.g. -O2)
|
||||
* CC, LINK, CPP, CXX, CCFLAGS, LINKFLAGS etc: compiler commands and
|
||||
* CC, LINK, CPP, CXX, CCFLAGS, LINKFLAGS etc: compiler commands and
|
||||
flags. Setting CCFLAGS etc will replace default flags. These variables
|
||||
can be set as environment variables as well.
|
||||
|
||||
@ -136,8 +140,8 @@ 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,
|
||||
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
|
||||
@ -153,7 +157,7 @@ directory structure is:
|
||||
- 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
|
||||
- executables: lyxclient, tex2lyx, lyx
|
||||
|
||||
MSVS projects will be put to development/scons (and you should invoke
|
||||
scons from there for this target).
|
||||
@ -196,13 +200,13 @@ problems.
|
||||
mingw-utils-0.3.tar.gz
|
||||
MSYS-1.0.11-...exe
|
||||
msysDTK-1.0.1.exe
|
||||
w32api-3.6.tar.g
|
||||
w32api-3.6.tar.gz
|
||||
|
||||
* install the latest Qt official "open source" binary package for
|
||||
Windows/Mingw (required)
|
||||
|
||||
* install mingw/zlib (required):
|
||||
Download zlib binaries and developer files (zlib-1.2.3-bin.zip and
|
||||
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 .
|
||||
|
||||
* install iconv (optional):
|
||||
@ -217,7 +221,7 @@ problems.
|
||||
The complete package (without source) is recommended.
|
||||
|
||||
You may also try 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
|
||||
and gettext-tools-x.x.x.bin.woe32.zip) from one of the GNU mirrors
|
||||
(e.g. http://mirrors.usc.edu/pub/gnu/gettext/).
|
||||
|
||||
* install aspell (optional):
|
||||
@ -233,7 +237,7 @@ problems.
|
||||
|
||||
* Open a mingw xterm, and start scons as usual.
|
||||
|
||||
Note: gettext, iconv and zlib are usually decompressed to c:/mingw so no
|
||||
Note: gettext, iconv and zlib are usually decompressed to c:/mingw so no
|
||||
extra_inc_path etc is needed.
|
||||
|
||||
|
||||
@ -258,11 +262,18 @@ To build lyx for cygwin, you should
|
||||
|
||||
* 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
|
||||
directories can not be detected automatically, use options, for example,
|
||||
qt_dir=/usr/lib/qt3 qt_inc_path=/usr/include/qt3
|
||||
|
||||
|
||||
|
||||
5. Windows/msvc
|
||||
===============
|
||||
|
||||
To build lyx with msvc, you should
|
||||
To build lyx with msvc, you should
|
||||
|
||||
* install msvc
|
||||
It is recommended that you use MSVC2005 Express edition which is
|
||||
@ -272,7 +283,7 @@ To build lyx with msvc, you should
|
||||
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++
|
||||
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/.
|
||||
|
||||
@ -284,25 +295,40 @@ To build lyx with msvc, you should
|
||||
|
||||
* download and install the official zlib library from www.zlib.org.
|
||||
|
||||
* optionally install iconv, gettext, aspell, aiksaurus following
|
||||
* optionally install iconv, gettext, aspell, aiksaurus following
|
||||
the 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.
|
||||
* you can use the msvs_projects target to obtain msvc project files
|
||||
for each lyx component.
|
||||
- go to development/scons (important)
|
||||
- run
|
||||
- run
|
||||
> scons [other options] msvs_projects
|
||||
Note that
|
||||
Note that
|
||||
- The resulting project files will use scons to build lyx
|
||||
- All command line options, including rebuild, can be used as usual
|
||||
- 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
|
||||
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
|
||||
|
||||
Note that lyx 1.4.x does not use the latest version of the boost library
|
||||
so option boost=included is recommended.
|
||||
|
||||
|
||||
7. Troubleshooting
|
||||
==================
|
||||
|
||||
When you get an error:
|
||||
|
@ -103,6 +103,9 @@ else: # unsupported system, assume posix behavior
|
||||
default_with_x = True
|
||||
default_packaging_method = 'posix'
|
||||
|
||||
# 1.4.2 only has qt2 frontend
|
||||
if package_version == '1.4.2svn':
|
||||
default_frontend = 'qt2'
|
||||
|
||||
#---------------------------------------------------------
|
||||
# Handling options
|
||||
@ -544,13 +547,10 @@ if env.has_key('qt_dir') and env['qt_dir']:
|
||||
env.PrependENVPath('PATH', os.path.join(env['qt_dir'], 'bin'))
|
||||
elif os.path.isdir(os.environ.get('QTDIR', '/usr/lib/qt-3.3')):
|
||||
env['QTDIR'] = os.environ.get('QTDIR', '/usr/lib/qt-3.3')
|
||||
else:
|
||||
# QTDIR is not always used so no warning is issued.
|
||||
env['QTDIR'] = 'QTDIR_is_not_defined'
|
||||
|
||||
if env.has_key('qt_lib_path') and env['qt_lib_path']:
|
||||
qt_lib_path = env.subst('$qt_lib_path')
|
||||
elif os.path.isdir(os.path.join(env.subst('$QTDIR'), 'lib')):
|
||||
elif env.has_key('QTDIR') and os.path.isdir(os.path.join(env.subst('$QTDIR'), 'lib')):
|
||||
qt_lib_path = env.subst('$QTDIR/lib')
|
||||
# this is the path for cygwin.
|
||||
elif os.path.isdir(os.path.join('/usr/lib/', frontend, 'lib')):
|
||||
@ -564,7 +564,7 @@ env.PrependENVPath('PKG_CONFIG_PATH', qt_lib_path)
|
||||
|
||||
if env.has_key('qt_inc_path') and env['qt_inc_path']:
|
||||
qt_inc_path = env['qt_inc_path']
|
||||
elif os.path.isdir(os.path.join(env.subst('$QTDIR'), 'include')):
|
||||
elif env.has_key('QTDIR') and os.path.isdir(os.path.join(env.subst('$QTDIR'), 'include')):
|
||||
qt_inc_path = '$QTDIR/include'
|
||||
# this is the path for cygwin.
|
||||
elif os.path.isdir('/usr/include/' + frontend):
|
||||
@ -1249,29 +1249,24 @@ env = conf.Finish()
|
||||
#
|
||||
# NOTE: Tool('qt') or Tool('qt4') will be loaded later
|
||||
# in their respective directory and specialized env.
|
||||
try:
|
||||
if frontend in ['qt2', 'qt3']:
|
||||
# note: env.Tool('qt') my set QT_LIB to qt
|
||||
qt_libs = ['qt-mt']
|
||||
frontend_libs = ['qt-mt']
|
||||
elif frontend == 'qt4':
|
||||
qt_libs = ['QtCore', 'QtGui']
|
||||
# set the right lib names
|
||||
if platform_name == 'win32':
|
||||
if mode == 'debug' and use_vc:
|
||||
qt_lib_suffix = 'd4'
|
||||
else:
|
||||
qt_lib_suffix = '4'
|
||||
if frontend in ['qt2', 'qt3']:
|
||||
# note: env.Tool('qt') my set QT_LIB to qt
|
||||
qt_libs = ['qt-mt']
|
||||
frontend_libs = ['qt-mt']
|
||||
elif frontend == 'qt4':
|
||||
qt_libs = ['QtCore', 'QtGui']
|
||||
# set the right lib names
|
||||
if platform_name == 'win32':
|
||||
if mode == 'debug' and use_vc:
|
||||
qt_lib_suffix = 'd4'
|
||||
else:
|
||||
if mode == 'debug':
|
||||
qt_lib_suffix = '_debug'
|
||||
else:
|
||||
qt_lib_suffix = ''
|
||||
frontend_libs = [x + qt_lib_suffix for x in qt_libs]
|
||||
except:
|
||||
print "Can not locate qt tools"
|
||||
print "What I get is "
|
||||
print " QTDIR: ", env['QTDIR']
|
||||
qt_lib_suffix = '4'
|
||||
else:
|
||||
if mode == 'debug':
|
||||
qt_lib_suffix = '_debug'
|
||||
else:
|
||||
qt_lib_suffix = ''
|
||||
frontend_libs = [x + qt_lib_suffix for x in qt_libs]
|
||||
|
||||
|
||||
if platform_name in ['win32', 'cygwin']:
|
||||
@ -2262,7 +2257,7 @@ if 'install' in targets:
|
||||
#
|
||||
# do not install these files
|
||||
exclude_list = ['Makefile.am', 'Makefile.in', 'Makefile',
|
||||
'lyx2lyx_version.py', 'lyx2lyx_version.py.in']
|
||||
'lyx2lyx_version.py.in']
|
||||
|
||||
def install(dest, src):
|
||||
''' recusive installation of src to dest '''
|
||||
@ -2316,8 +2311,12 @@ if 'install' in targets:
|
||||
'lyxrc.example', 'syntax.default', 'bind', 'images', 'layouts', 'scripts',
|
||||
'templates', 'examples', 'kbd', 'lyx2lyx', 'tex', 'clipart', 'doc', 'ui']]
|
||||
)
|
||||
env.substFile(share_dest_dir + '/lyx2lyx/lyx2lyx_version.py',
|
||||
'$TOP_SRCDIR/lib/lyx2lyx/lyx2lyx_version.py.in')
|
||||
# lyx1.4.x does not have lyx2lyx_version.py.in
|
||||
if os.path.isfile('$TOP_SRCDIR/lib/lyx2lyx/lyx2lyx_version.py.in'):
|
||||
# subst and install this file
|
||||
env.substFile(share_dest_dir + '/lyx2lyx/lyx2lyx_version.py',
|
||||
'$TOP_SRCDIR/lib/lyx2lyx/lyx2lyx_version.py.in')
|
||||
Alias('install', share_dest_dir + '/lyx2lyx/lyx2lyx_version.py')
|
||||
Alias('install', dirs)
|
||||
# man
|
||||
env.InstallAs(os.path.join(man_dest_dir, 'lyx' + version_suffix + '.1'),
|
||||
|
Loading…
Reference in New Issue
Block a user