From 3023f93593bf4acf62c0db4a0d0c487fbdde6e80 Mon Sep 17 00:00:00 2001 From: Bo Peng Date: Sat, 16 Dec 2006 16:31:28 +0000 Subject: [PATCH] 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 --- INSTALL.scons | 16 +++++++--------- development/scons/SConstruct | 25 ++++++++----------------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/INSTALL.scons b/INSTALL.scons index 482cf90e79..44e5c100e1 100644 --- a/INSTALL.scons +++ b/INSTALL.scons @@ -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) diff --git a/development/scons/SConstruct b/development/scons/SConstruct index 89961b3478..4a72e08be8 100644 --- a/development/scons/SConstruct +++ b/development/scons/SConstruct @@ -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: -- 2.39.2