Scons: can now be executed from any directory

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16303 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Bo Peng 2006-12-16 16:31:28 +00:00
parent dd586e2953
commit 3023f93593
2 changed files with 15 additions and 26 deletions

View File

@ -56,8 +56,11 @@ 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
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
@ -104,8 +107,6 @@ Paths: Most of them will be probed if not specified.
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
@ -122,7 +123,7 @@ 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.
* 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.
@ -156,7 +157,6 @@ directory structure is:
$build_dir
- common: most of the intermediate files, mostly object files
- libs: all static libraries
- qt4 etc: lyx executable built with the frontend
- executables: lyxclient, tex2lyx, lyx
MSVS projects will be put to development/scons (and you should invoke
@ -176,9 +176,7 @@ A typical working sequence:
(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)

View File

@ -37,20 +37,11 @@ if version[0] == 0 and version[1] == 96 and version[2] < 92:
# determine where I am ...
#
# called as 'cd development/scons; scons'
if os.path.isfile('SConstruct'):
top_src_dir = '../..'
scons_dir = '.'
# called as 'scons -f development/scons/SConstruct'
elif os.path.isfile('configure.ac'):
top_src_dir = '.'
scons_dir = 'development/scons'
else:
print "scons can only be called from top source directory, with command:"
print " $ scons -f development/scons/SConstruct [other options]"
print "or from development/scons, with command:"
print " $ scons [options]"
Exit(1)
from SCons.Node.FS import default_fs
# default_fs.SConstruct_dir is where SConstruct file is located.
scons_dir = default_fs.SConstruct_dir.path
# get the ../.. of scons_dir
top_src_dir = os.path.split(os.path.split(default_fs.SConstruct_dir.abspath)[0])[0]
#----------------------------------------------------------
@ -1857,7 +1848,7 @@ if build_lyx:
# Build lyx with given frontend
#
lyx = env.Program(
target = '$BUILDDIR/$frontend/lyx',
target = '$BUILDDIR/lyx',
source = ['$BUILDDIR/common/main.C'],
LIBS = [
'lyxbase_pre',
@ -1879,7 +1870,7 @@ if build_lyx:
Alias('lyx', lyx)
else:
# define lyx even if lyx is not built with rebuild=no
lyx = [env.subst('$BUILDDIR/$frontend/${PROGPREFIX}lyx$PROGSUFFIX')]
lyx = [env.subst('$BUILDDIR/${PROGPREFIX}lyx$PROGSUFFIX')]
if build_msvs_projects:
@ -1980,7 +1971,7 @@ if build_msvs_projects:
['$TOP_SRCDIR/src/frontends/qt4/%s' % x for x in src_frontends_qt4_header_files],
res = ['$TOP_SRCDIR/src/frontends/qt4/ui/%s' % x for x in src_frontends_qt4_ui_files],
rebuildTargetOnly = False,
full_target = File(env.subst('$BUILDDIR/$frontend/lyx$PROGSUFFIX')).abspath)
full_target = File(env.subst('$BUILDDIR/lyx$PROGSUFFIX')).abspath)
if build_po: