Scons: stop globbing filenames, use explicit file list instead.

* INSTALL.scons: stop lyx1.4.x/qt2 support
	* development/scons/scons_manifest.py: list of all filenames
	* development/scons/SConstruct: use explicit file list
	* development/scons/scons_utils.py: remove globFiles


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14634 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Bo Peng 2006-08-13 04:54:25 +00:00
parent d7588feb8f
commit c8e38f5e05
4 changed files with 2785 additions and 403 deletions

View File

@ -319,22 +319,7 @@ To build lyx with msvc, you should
- To use the msvc debugger, you have to use mode=debug (default). - To use the msvc debugger, you have to use mode=debug (default).
6. Other versions of lyx (1.4.x) 6. Tips and hints
================================
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. Tips and hints
================= =================
* Using external boost libraries (install boost libraries and use * Using external boost libraries (install boost libraries and use
@ -343,7 +328,7 @@ so option boost=included is recommended.
not be included in the dependency tree. not be included in the dependency tree.
8. Troubleshooting 7. Troubleshooting
================== ==================
When you get an error: When you get an error:

View File

@ -17,6 +17,8 @@ import os, sys, copy, cPickle, glob
# scons_utils.py defines a few utility function # scons_utils.py defines a few utility function
sys.path.append('config') sys.path.append('config')
import scons_utils as utils import scons_utils as utils
# import all file lists
from scons_manifest import *
#---------------------------------------------------------- #----------------------------------------------------------
# Required runtime environment # Required runtime environment
@ -51,14 +53,8 @@ else:
# some global settings # some global settings
# #
# detect version of lyx package_version = '1.5.0svn'
# only 1.4.x has frontends/qt2 boost_version = '1_33_1'
if os.path.isdir(os.path.join(top_src_dir, 'src', 'frontends', 'qt2')):
package_version = '1.4.2svn'
boost_version = '1_32'
else:
package_version = '1.5.0svn'
boost_version = '1_33_1'
devel_version = True devel_version = True
default_build_mode = 'debug' default_build_mode = 'debug'
@ -111,10 +107,6 @@ else: # unsupported system, assume posix behavior
default_with_x = True default_with_x = True
default_packaging_method = 'posix' default_packaging_method = 'posix'
# 1.4.2 only has qt2 frontend
if package_version == '1.4.2svn':
default_frontend = 'qt2'
#--------------------------------------------------------- #---------------------------------------------------------
# Handling options # Handling options
#---------------------------------------------------------- #----------------------------------------------------------
@ -128,7 +120,7 @@ opts = Options(['config.py'])
opts.AddOptions( opts.AddOptions(
# frontend # frontend
EnumOption('frontend', 'Main GUI', default_frontend, EnumOption('frontend', 'Main GUI', default_frontend,
allowed_values = ('qt2', 'qt3', 'qt4', 'gtk') ), allowed_values = ('qt3', 'qt4', 'gtk') ),
# debug or release build # debug or release build
EnumOption('mode', 'Building method', default_build_mode, EnumOption('mode', 'Building method', default_build_mode,
allowed_values = ('debug', 'release') ), allowed_values = ('debug', 'release') ),
@ -588,15 +580,13 @@ if env.has_key('QTDIR'):
os.environ['PATH'] += os.pathsep + os.path.join(env['QTDIR'], 'bin') os.environ['PATH'] += os.pathsep + os.path.join(env['QTDIR'], 'bin')
env.PrependENVPath('PATH', os.path.join(env['QTDIR'], 'bin')) env.PrependENVPath('PATH', os.path.join(env['QTDIR'], 'bin'))
# allow qt2 frontend to locate qt3 libs.
frontend_lib = {'qt2':'qt3', 'qt3':'qt3', 'qt4':'qt4'}[frontend]
if env.has_key('qt_lib_path') and env['qt_lib_path']: if env.has_key('qt_lib_path') and env['qt_lib_path']:
qt_lib_path = env.subst('$qt_lib_path') qt_lib_path = env.subst('$qt_lib_path')
elif env.has_key('QTDIR') and 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') qt_lib_path = env.subst('$QTDIR/lib')
# this is the path for cygwin. # this is the path for cygwin.
elif os.path.isdir(os.path.join('/usr/lib/', frontend_lib, 'lib')): elif os.path.isdir(os.path.join('/usr/lib/', frontend, 'lib')):
qt_lib_path = '/usr/lib/%s/lib' % frontend_lib qt_lib_path = '/usr/lib/%s/lib' % frontend
else: else:
print "Qt library directory is not found. Please specify it using qt_lib_path" print "Qt library directory is not found. Please specify it using qt_lib_path"
Exit(1) Exit(1)
@ -609,8 +599,8 @@ if env.has_key('qt_inc_path') and env['qt_inc_path']:
elif env.has_key('QTDIR') and 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' qt_inc_path = '$QTDIR/include'
# this is the path for cygwin. # this is the path for cygwin.
elif os.path.isdir('/usr/include/' + frontend_lib): elif os.path.isdir('/usr/include/' + frontend):
qt_inc_path = '/usr/include/' + frontend_lib qt_inc_path = '/usr/include/' + frontend
else: else:
print "Qt include directory not found. Please specify it using qt_inc_path" print "Qt include directory not found. Please specify it using qt_inc_path"
Exit(1) Exit(1)
@ -678,7 +668,7 @@ if not fast_start:
if not fast_start: if not fast_start:
# #
# qt3 does not use pkg_config # qt3 does not use pkg_config
if frontend in ['qt2', 'qt3']: if frontend == 'qt3':
if not conf.CheckLibWithHeader('qt-mt', 'qapp.h', 'c++', 'QApplication qapp();'): if not conf.CheckLibWithHeader('qt-mt', 'qapp.h', 'c++', 'QApplication qapp();'):
print 'Did not find qt libraries, exiting!' print 'Did not find qt libraries, exiting!'
Exit(1) Exit(1)
@ -1292,7 +1282,7 @@ env = conf.Finish()
# #
# NOTE: Tool('qt') or Tool('qt4') will be loaded later # NOTE: Tool('qt') or Tool('qt4') will be loaded later
# in their respective directory and specialized env. # in their respective directory and specialized env.
if frontend in ['qt2', 'qt3']: if frontend == 'qt3':
# note: env.Tool('qt') my set QT_LIB to qt # note: env.Tool('qt') my set QT_LIB to qt
qt_libs = ['qt-mt'] qt_libs = ['qt-mt']
frontend_libs = ['qt-mt'] frontend_libs = ['qt-mt']
@ -1422,7 +1412,7 @@ Frontend:
frontend, packaging_method, frontend, packaging_method,
prefix, env['LYX_DIR']) prefix, env['LYX_DIR'])
if frontend in ['qt2', 'qt3', 'qt4']: if frontend in ['qt3', 'qt4']:
env['VERSION_INFO'] += ''' include dir: %s env['VERSION_INFO'] += ''' include dir: %s
library dir: %s library dir: %s
X11: %s X11: %s
@ -1509,7 +1499,6 @@ build_tex2lyx = True in ['tex2lyx' in x for x in targets] \
or 'install' in targets or 'all' in targets or 'install' in targets or 'all' in targets
build_lyxbase = build_lyx or 'lyxbase' in targets build_lyxbase = build_lyx or 'lyxbase' in targets
build_po = 'po' in targets or 'install' in targets or 'all' in targets build_po = 'po' in targets or 'install' in targets or 'all' in targets
build_qt2 = (build_lyx and frontend == 'qt2') or 'qt2' in targets
build_qt3 = (build_lyx and frontend == 'qt3') or 'qt3' in targets build_qt3 = (build_lyx and frontend == 'qt3') or 'qt3' in targets
build_qt4 = (build_lyx and frontend == 'qt4') or 'qt4' in targets build_qt4 = (build_lyx and frontend == 'qt4') or 'qt4' in targets
build_msvs_projects = use_vc and 'msvs_projects' in targets build_msvs_projects = use_vc and 'msvs_projects' in targets
@ -1537,7 +1526,6 @@ if rebuild_targets is not None:
build_graphics = ifBuildLib('graphics', 'graphics', build_graphics) build_graphics = ifBuildLib('graphics', 'graphics', build_graphics)
build_controllers = ifBuildLib('controllers', 'controllers', build_controllers) build_controllers = ifBuildLib('controllers', 'controllers', build_controllers)
build_lyxbase = ifBuildLib('lyxbase', 'lyxbase_pre', build_lyxbase) build_lyxbase = ifBuildLib('lyxbase', 'lyxbase_pre', build_lyxbase)
build_qt2 = ifBuildLib('qt2', 'qt2', build_qt2)
build_qt3 = ifBuildLib('qt3', 'qt3', build_qt3) build_qt3 = ifBuildLib('qt3', 'qt3', build_qt3)
build_qt4 = ifBuildLib('qt4', 'qt4', build_qt4) build_qt4 = ifBuildLib('qt4', 'qt4', build_qt4)
# #
@ -1555,9 +1543,7 @@ if rebuild_targets is not None:
build_client = ifBuildApp('client', 'lyxclient', build_client) build_client = ifBuildApp('client', 'lyxclient', build_client)
# sync frontend and frontend (maybe build qt4 with frontend=qt3) # sync frontend and frontend (maybe build qt4 with frontend=qt3)
if build_qt2: if build_qt3:
frontend = 'qt2'
elif build_qt3:
frontend = 'qt3' frontend = 'qt3'
elif build_qt4: elif build_qt4:
frontend = 'qt4' frontend = 'qt4'
@ -1580,8 +1566,7 @@ if build_boost:
print 'Processing files in boost/libs/%s/src...' % lib print 'Processing files in boost/libs/%s/src...' % lib
boostlib = boostenv.StaticLibrary( boostlib = boostenv.StaticLibrary(
target = '$LOCALLIBPATH/included_boost_%s' % lib, target = '$LOCALLIBPATH/included_boost_%s' % lib,
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/boost/libs/%s/src' % lib), source = ['$BUILDDIR/boost/%s/src/%s' % (lib, x) for x in eval('boost_libs_%s_src_files' % lib)]
pattern = '*.cpp', build_dir = '$BUILDDIR/boost/%s/src' % lib)
) )
Alias('boost', boostlib) Alias('boost', boostlib)
@ -1623,9 +1608,7 @@ if build_intl:
intl = intlenv.StaticLibrary( intl = intlenv.StaticLibrary(
target = '$LOCALLIBPATH/included_intl', target = '$LOCALLIBPATH/included_intl',
LIBS = ['c'], LIBS = ['c'],
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/intl'), pattern = '*.c', source = ['$BUILDDIR/intl/%s' % x for x in intl_files]
exclude = ['vasnprintf.c', 'printf-parse.c', 'printf-args.c', 'os2compat.c'],
build_dir = '$BUILDDIR/intl')
) )
Alias('intl', intl) Alias('intl', intl)
@ -1646,9 +1629,7 @@ if build_support:
support = env.StaticLibrary( support = env.StaticLibrary(
target = '$LOCALLIBPATH/support', target = '$LOCALLIBPATH/support',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/support'), pattern = lyx_ext, source = ['$BUILDDIR/common/support/%s' % x for x in src_support_files]
exclude = ['os_win32.C', 'os_unix.C', 'os_cygwin.C', 'os_os2.C', 'atexit.c'],
include = ['package.C'], build_dir = '$BUILDDIR/common/support')
) )
Alias('support', support) Alias('support', support)
@ -1661,10 +1642,7 @@ if build_mathed:
# #
mathed = env.StaticLibrary( mathed = env.StaticLibrary(
target = '$LOCALLIBPATH/mathed', target = '$LOCALLIBPATH/mathed',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/mathed'), source = ['$BUILDDIR/common/mathed/%s' % x for x in src_mathed_files]
pattern = lyx_ext,
exclude = ['math_xyarrowinset.C', 'math_mboxinset.C', 'formulamacro.C'],
build_dir = '$BUILDDIR/common/mathed')
) )
Alias('mathed', mathed) Alias('mathed', mathed)
@ -1677,9 +1655,7 @@ if build_insets:
# #
insets = env.StaticLibrary( insets = env.StaticLibrary(
target = '$LOCALLIBPATH/insets', target = '$LOCALLIBPATH/insets',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/insets'), source = ['$BUILDDIR/common/insets/%s' % x for x in src_insets_files]
pattern = lyx_ext,
exclude = ['insettheorem.C'], build_dir = '$BUILDDIR/common/insets')
) )
Alias('insets', insets) Alias('insets', insets)
@ -1692,8 +1668,7 @@ if build_frontends:
frontends = env.StaticLibrary( frontends = env.StaticLibrary(
target = '$LOCALLIBPATH/frontends', target = '$LOCALLIBPATH/frontends',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/frontends'), pattern = lyx_ext, source = ['$BUILDDIR/common/frontends/%s' % x for x in src_frontends_files]
build_dir = '$BUILDDIR/common/frontends')
) )
Alias('frontends', frontends) Alias('frontends', frontends)
@ -1706,8 +1681,7 @@ if build_graphics:
graphics = env.StaticLibrary( graphics = env.StaticLibrary(
target = '$LOCALLIBPATH/graphics', target = '$LOCALLIBPATH/graphics',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/graphics'), pattern = lyx_ext, source = ['$BUILDDIR/common/graphics/%s' % x for x in src_graphics_files]
build_dir = '$BUILDDIR/common/graphics')
) )
Alias('graphics', graphics) Alias('graphics', graphics)
@ -1720,116 +1694,17 @@ if build_controllers:
controllers = env.StaticLibrary( controllers = env.StaticLibrary(
target = '$LOCALLIBPATH/controllers', target = '$LOCALLIBPATH/controllers',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/frontends/controllers'), pattern = lyx_ext, source = ['$BUILDDIR/common/frontends/controllers/%s' % x for x in src_frontends_controllers_files]
build_dir = '$BUILDDIR/common/frontends/controllers')
) )
Alias('controllers', controllers) Alias('controllers', controllers)
# #
# src/frontend/qt2/3/4 # src/frontend/qt3/4
# #
if build_qt2 or build_qt3 or build_qt4: if build_qt3 or build_qt4:
env.BuildDir('$BUILDDIR/$frontend', '$TOP_SRCDIR/src/frontend/$frontend', duplicate = 0) env.BuildDir('$BUILDDIR/$frontend', '$TOP_SRCDIR/src/frontend/$frontend', duplicate = 0)
if build_qt2:
print "Processing files in src/frontends/qt2..."
qt2env = env.Copy()
# disable auto scan to speed up non build time
qt2env['QT_AUTOSCAN'] = 0
qt2env['QT_MOCHPREFIX'] = ''
# load qt2 tools
qt2env.Tool('qt')
qt2env.AppendUnique(CPPPATH = [
'$BUILDDIR/common',
'$BUILDDIR/common/images',
'$BUILDDIR/common/frontends',
'$BUILDDIR/common/frontends/qt2',
'$BUILDDIR/common/frontends/controllers',
qt_inc_path]
)
qt2_moc_files = ["$BUILDDIR/common/frontends/qt2/%s" % x for x in Split('''
BulletsModule.C
emptytable.C
FileDialog_private.C
floatplacement.C
iconpalette.C
lengthcombo.C
panelstack.C
QAboutDialog.C
QBibitemDialog.C
QBibtexDialog.C
QBoxDialog.C
QBranchDialog.C
QBrowseBox.C
QChangesDialog.C
QCharacterDialog.C
QCitationDialog.C
QCommandBuffer.C
QCommandEdit.C
QContentPane.C
QDelimiterDialog.C
QDocumentDialog.C
QErrorListDialog.C
QERTDialog.C
QExternalDialog.C
QFloatDialog.C
QGraphicsDialog.C
QIncludeDialog.C
QIndexDialog.C
QLogDialog.C
QLPopupMenu.C
QLPrintDialog.C
QMathDialog.C
QMathMatrixDialog.C
QNoteDialog.C
QParagraphDialog.C
QPrefsDialog.C
QRefDialog.C
QSearchDialog.C
QSendtoDialog.C
qsetborder.C
QShowFileDialog.C
QSpellcheckerDialog.C
QDialogView.C
QTabularCreateDialog.C
QTabularDialog.C
QTexinfoDialog.C
QThesaurusDialog.C
QTocDialog.C
qttableview.C
QtView.C
QURLDialog.C
QVSpaceDialog.C
QWrapDialog.C
QLToolbar.C
socket_callback.C
validators.C
''')]
# manually moc and uic files for better performance
qt2_moced_files = [qt2env.Moc(x.replace('.C', '_moc.cpp'), x.replace('.C', '.h')) for x in qt2_moc_files]
qt2_uiced_files = [qt2env.Uic('$BUILDDIR/common/frontends/qt2/ui/'+x) for x in \
utils.globSource(dir = env.subst('$TOP_SRCDIR/src/frontends/qt2/ui'), pattern = '*.ui')]
qt2_uiced_cc_files = []
for x in qt2_uiced_files:
qt2_uiced_cc_files.extend(x[1:])
qt2 = qt2env.StaticLibrary(
target = '$LOCALLIBPATH/qt2',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/frontends/qt2/'), pattern = lyx_ext,
build_dir = '$BUILDDIR/common/frontends/qt2') + qt2_moced_files + qt2_uiced_cc_files
)
Alias('qt2', qt2)
if build_qt3: if build_qt3:
print "Processing files in src/frontends/qt3..." print "Processing files in src/frontends/qt3..."
@ -1850,71 +1725,13 @@ if build_qt3:
qt_inc_path] qt_inc_path]
) )
qt3_moc_files = ["$BUILDDIR/common/frontends/qt3/%s" % x for x in Split(''' qt3_moc_files = ["$BUILDDIR/common/frontends/qt3/%s" % x for x in src_frontends_qt3_moc_files]
BulletsModule.C
emptytable.C
FileDialog_private.C
floatplacement.C
iconpalette.C
lengthcombo.C
panelstack.C
QAboutDialog.C
QBibitemDialog.C
QBibtexDialog.C
QBoxDialog.C
QBranchDialog.C
QBrowseBox.C
QChangesDialog.C
QCharacterDialog.C
QCitationDialog.C
QCommandBuffer.C
QCommandEdit.C
QContentPane.C
QDelimiterDialog.C
QDocumentDialog.C
QErrorListDialog.C
QERTDialog.C
QExternalDialog.C
QFloatDialog.C
QGraphicsDialog.C
QIncludeDialog.C
QIndexDialog.C
QLogDialog.C
QViewSourceDialog.C
QLPopupMenu.C
QLPrintDialog.C
QMathDialog.C
QMathMatrixDialog.C
QNoteDialog.C
QParagraphDialog.C
QPrefsDialog.C
QRefDialog.C
QSearchDialog.C
QSendtoDialog.C
qsetborder.C
QShowFileDialog.C
QSpellcheckerDialog.C
QDialogView.C
QTabularCreateDialog.C
QTabularDialog.C
QTexinfoDialog.C
QThesaurusDialog.C
QTocDialog.C
qttableview.C
QtView.C
QURLDialog.C
QVSpaceDialog.C
QWrapDialog.C
QLToolbar.C
socket_callback.C
validators.C
''')]
# manually moc and uic files for better performance # manually moc and uic files for better performance
qt3_moced_files = [qt3env.Moc(x.replace('.C', '_moc.cpp'), x.replace('.C', '.h')) for x in qt3_moc_files] qt3_moced_files = [qt3env.Moc(x.replace('.C', '_moc.cpp'), x.replace('.C', '.h')) for x in qt3_moc_files]
qt3_uiced_files = [qt3env.Uic('$BUILDDIR/common/frontends/qt3/ui/'+x) for x in \ qt3_uiced_files = [qt3env.Uic('$BUILDDIR/common/frontends/qt3/ui/'+x) for x in \
utils.globSource(dir = env.subst('$TOP_SRCDIR/src/frontends/qt3/ui'), pattern = '*.ui')] src_frontends_qt3_ui_files]
qt3_uiced_cc_files = [] qt3_uiced_cc_files = []
for x in qt3_uiced_files: for x in qt3_uiced_files:
@ -1922,8 +1739,8 @@ if build_qt3:
qt3 = qt3env.StaticLibrary( qt3 = qt3env.StaticLibrary(
target = '$LOCALLIBPATH/qt3', target = '$LOCALLIBPATH/qt3',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/frontends/qt3/'), pattern = lyx_ext, source = ['$BUILDDIR/common/frontends/qt3/%s' % x for x in src_frontends_qt3_files] \
build_dir = '$BUILDDIR/common/frontends/qt3') + qt3_moced_files + qt3_uiced_cc_files + qt3_moced_files + qt3_uiced_cc_files
) )
Alias('qt3', qt3) Alias('qt3', qt3)
@ -1965,76 +1782,13 @@ if build_qt4:
) )
qt4_moc_files = ["$BUILDDIR/common/frontends/qt4/%s" % x for x in Split(''' qt4_moc_files = ["$BUILDDIR/common/frontends/qt4/%s" % x for x in src_frontends_qt4_moc_files]
BulletsModule.C
emptytable.C
FileDialog_private.C
floatplacement.C
iconpalette.C
lengthcombo.C
InsertTableWidget.C
panelstack.C
QAboutDialog.C
QBibitemDialog.C
QBibtexDialog.C
QBoxDialog.C
QBranchDialog.C
QBranches.C
QChangesDialog.C
QCharacterDialog.C
QCitationDialog.C
QCommandBuffer.C
QCommandEdit.C
QDelimiterDialog.C
QDocumentDialog.C
QErrorListDialog.C
QERTDialog.C
QExternalDialog.C
QFloatDialog.C
QGraphicsDialog.C
QIncludeDialog.C
QIndexDialog.C
Action.C
QLogDialog.C
QViewSourceDialog.C
QViewSource.C
QLMenubar.C
QLPopupMenu.C
QLPrintDialog.C
QMathDialog.C
QMathMatrixDialog.C
QNoteDialog.C
QParagraphDialog.C
QPrefsDialog.C
QRefDialog.C
QSearchDialog.C
QSendtoDialog.C
qsetborder.C
QShowFileDialog.C
QSpellcheckerDialog.C
QDialogView.C
QTabularCreateDialog.C
QTabularDialog.C
QTexinfoDialog.C
QThesaurusDialog.C
TocModel.C
QTocDialog.C
GuiView.C
QURLDialog.C
QVSpaceDialog.C
GuiWorkArea.C
QWrapDialog.C
QLToolbar.C
socket_callback.C
validators.C
''') ]
# #
# Compile resources # Compile resources
# #
resources = [qt4env.Uic4(x.split('.')[0]) for x in \ resources = [qt4env.Uic4(x.split('.')[0]) for x in \
utils.globSource(dir = env.subst('$TOP_SRCDIR/src/frontends/qt4/ui'), pattern = '*.ui', src_frontends_qt4_ui_files]
build_dir = '$BUILDDIR/common/frontends/qt4/ui')]
# #
# moc qt4_moc_files, the moced files are included in the original files # moc qt4_moc_files, the moced files are included in the original files
@ -2043,8 +1797,7 @@ if build_qt4:
qt4 = qt4env.StaticLibrary( qt4 = qt4env.StaticLibrary(
target = '$LOCALLIBPATH/qt4', target = '$LOCALLIBPATH/qt4',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/frontends/qt4'), pattern = lyx_ext, source = ['$BUILDDIR/common/frontends/qt4/%s' % x for x in src_frontends_qt4_files]
exclude = ['QBrowseBox.C'], build_dir = '$BUILDDIR/common/frontends/qt4')
) )
Alias('qt4', qt4) Alias('qt4', qt4)
@ -2062,8 +1815,7 @@ if build_client:
target = '$BUILDDIR/common/client/lyxclient', target = '$BUILDDIR/common/client/lyxclient',
LIBS = ['support'] + intl_libs + system_libs + LIBS = ['support'] + intl_libs + system_libs +
socket_libs + boost_libraries, socket_libs + boost_libraries,
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/client'), pattern = lyx_ext, source = ['$BUILDDIR/common/client/%s' % x for x in src_client_files]
build_dir = '$BUILDDIR/common/client')
) )
Alias('client', env.Command(os.path.join('$BUILDDIR', os.path.split(str(client[0]))[1]), Alias('client', env.Command(os.path.join('$BUILDDIR', os.path.split(str(client[0]))[1]),
client, [Copy('$TARGET', '$SOURCE')])) client, [Copy('$TARGET', '$SOURCE')]))
@ -2097,10 +1849,7 @@ if build_tex2lyx:
tex2lyx = tex2lyx_env.Program( tex2lyx = tex2lyx_env.Program(
target = '$BUILDDIR/common/tex2lyx/tex2lyx', target = '$BUILDDIR/common/tex2lyx/tex2lyx',
LIBS = ['support'] + boost_libraries + system_libs, LIBS = ['support'] + boost_libraries + system_libs,
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src/tex2lyx'), pattern = lyx_ext, source = ['$BUILDDIR/common/tex2lyx/%s' % x for x in src_tex2lyx_files]
include = ['FloatList.C', 'Floating.C', 'counters.C', 'lyxlayout.C',
'lyxtextclass.C', 'lyxlex.C', 'lyxlex_pimpl.C'],
build_dir = '$BUILDDIR/common/tex2lyx')
) )
Alias('tex2lyx', env.Command(os.path.join('$BUILDDIR', os.path.split(str(tex2lyx[0]))[1]), Alias('tex2lyx', env.Command(os.path.join('$BUILDDIR', os.path.split(str(tex2lyx[0]))[1]),
tex2lyx, [Copy('$TARGET', '$SOURCE')])) tex2lyx, [Copy('$TARGET', '$SOURCE')]))
@ -2118,15 +1867,6 @@ if build_lyxbase:
env.substFile('$BUILDDIR/common/version.C', '$TOP_SRCDIR/src/version.C.in') env.substFile('$BUILDDIR/common/version.C', '$TOP_SRCDIR/src/version.C.in')
lyx_post_source = Split('''
tabular.C
dimension.C
PrinterParams.C
box.C
Thesaurus.C
SpellBase.C
''')
if env.has_key('USE_ASPELL') and env['USE_ASPELL']: if env.has_key('USE_ASPELL') and env['USE_ASPELL']:
lyx_post_source.append('aspell.C') lyx_post_source.append('aspell.C')
elif env.has_key('USE_PSPELL') and env['USE_PSPELL']: elif env.has_key('USE_PSPELL') and env['USE_PSPELL']:
@ -2138,14 +1878,11 @@ if build_lyxbase:
# so I exclude main.C from lyxbase # so I exclude main.C from lyxbase
lyxbase_pre = env.StaticLibrary( lyxbase_pre = env.StaticLibrary(
target = '$LOCALLIBPATH/lyxbase_pre', target = '$LOCALLIBPATH/lyxbase_pre',
source = utils.globSource(dir = env.subst('$TOP_SRCDIR/src'), pattern = lyx_ext, source = ['$BUILDDIR/common/%s' % x for x in src_pre_files]
exclude = lyx_post_source + ['main.C', 'aspell.C', 'pspell.C',
'ispell.C', 'Variables.C', 'Sectioning.C'],
include = ['version.C'], build_dir = '$BUILDDIR/common')
) )
lyxbase_post = env.StaticLibrary( lyxbase_post = env.StaticLibrary(
target = '$LOCALLIBPATH/lyxbase_post', target = '$LOCALLIBPATH/lyxbase_post',
source = ["$BUILDDIR/common/%s" % x for x in lyx_post_source] source = ["$BUILDDIR/common/%s" % x for x in src_post_files]
) )
Alias('lyxbase', lyxbase_pre) Alias('lyxbase', lyxbase_pre)
Alias('lyxbase', lyxbase_post) Alias('lyxbase', lyxbase_post)
@ -2186,47 +1923,24 @@ else:
if build_msvs_projects: if build_msvs_projects:
def build_project(target, dir, full_target = None, def build_project(target, full_target = None,
src_pattern = lyx_ext, include = [], resource = None, rebuildTargetOnly = True): src = [], inc = [], res = [], rebuildTargetOnly = True):
''' build mavs project files ''' build mavs project files
target: alias (correspond to directory name) target: alias (correspond to directory name)
dir: source directory or directories (a list)
full_target: full path/filename of the target full_target: full path/filename of the target
src_pattern: glob pattern src: source files
include: files to include into source inc: include files
resource: directory or directories with resource (.ui) files res: resource files
rebuildTargetOnly: whether or not only rebuild this target rebuildTargetOnly: whether or not only rebuild this target
For non-debug-able targets like static libraries, target (alias) is For non-debug-able targets like static libraries, target (alias) is
enough to build the target. For executable targets, msvs need to know enough to build the target. For executable targets, msvs need to know
the full path to start debug them. the full path to start debug them.
''' '''
if resource is not None:
res = utils.globSource(dir = env.subst('$TOP_SRCDIR/'+resource), pattern = '*.ui',
build_dir = env.subst('$TOP_SRCDIR/'+resource))
else:
res = []
if rebuildTargetOnly: if rebuildTargetOnly:
cmds = 'fast_start=yes rebuild='+target cmds = 'fast_start=yes rebuild='+target
else: else:
cmds = 'fast_start=yes' cmds = 'fast_start=yes'
if type(dir) == type([]):
src = []
inc = []
for d in dir:
src.extend(utils.globSource(dir = env.subst('$TOP_SRCDIR/' + d),
pattern = src_pattern, include = include,
build_dir = env.subst('$TOP_SRCDIR/' + d) ))
inc.extend(utils.globSource(dir = env.subst('$TOP_SRCDIR/' + d),
pattern = '*.h',
build_dir = env.subst('$TOP_SRCDIR/' + d) ))
else:
src = utils.globSource(dir = env.subst('$TOP_SRCDIR/' + dir),
pattern = src_pattern, include = include,
build_dir = env.subst('$TOP_SRCDIR/' + dir) )
inc = utils.globSource(dir = env.subst('$TOP_SRCDIR/' + dir),
pattern = '*.h',
build_dir = env.subst('$TOP_SRCDIR/' + dir) )
if full_target is None: if full_target is None:
build_target = target build_target = target
else: else:
@ -2234,55 +1948,104 @@ if build_msvs_projects:
# project # project
proj = env.MSVSProject( proj = env.MSVSProject(
target = target + env['MSVSPROJECTSUFFIX'], target = target + env['MSVSPROJECTSUFFIX'],
srcs = src, # this allows easy access to header files (along with source)
srcs = [env.subst(x) for x in src + inc],
incs = [env.subst('$TOP_SRCDIR/src/config.h')], incs = [env.subst('$TOP_SRCDIR/src/config.h')],
localincs = inc, localincs = [env.subst(x) for x in inc],
resources = res, resources = [env.subst(x) for x in res],
buildtarget = build_target, buildtarget = build_target,
cmdargs = cmds, cmdargs = cmds,
variant = 'Debug' variant = 'Debug'
) )
Alias('msvs_projects', proj) Alias('msvs_projects', proj)
# #
build_project('boost', ['boost/libs/%s/src' % x for x in boost_libs], boost_src = []
src_pattern = '*.cpp') for lib in boost_libs:
boost_src += ['$TOP_SRCDIR/boost/libs/%s/src/%s' % (lib, x) for x in eval('boost_libs_%s_src_files' % lib)]
build_project('boost', src = boost_src)
# #
build_project('intl', 'intl', src_pattern = '*.c') build_project('intl', src = ['$TOP_SRCDIR/intl/%s' % x for x in intl_files],
inc = ['$TOP_SRCDIR/intl/%s' % x for x in intl_header_files])
# #
build_project('support', 'src/support', include=['package.C.in']) build_project('support', src = ['$TOP_SRCDIR/src/support/%s' % x for x in src_support_files],
inc = ['$TOP_SRCDIR/src/support/%s' % x for x in src_support_header_files])
# #
build_project('mathed', 'src/mathed') build_project('mathed', src = ['$TOP_SRCDIR/src/support/%s' % x for x in src_support_files],
inc = ['$TOP_SRCDIR/src/support/%s' % x for x in src_support_header_files])
# #
build_project('insets', 'src/insets') build_project('insets', src = ['$TOP_SRCDIR/src/insets/%s' % x for x in src_insets_files],
inc = ['$TOP_SRCDIR/src/insets/%s' % x for x in src_insets_header_files])
# #
build_project('frontends', 'src/frontends') build_project('frontends', src = ['$TOP_SRCDIR/src/frontends/%s' % x for x in src_frontends_files],
inc = ['$TOP_SRCDIR/src/frontends/%s' % x for x in src_frontends_header_files])
# #
build_project('graphics', 'src/graphics') build_project('graphics', src = ['$TOP_SRCDIR/src/graphics/%s' % x for x in src_graphics_files],
inc = ['$TOP_SRCDIR/src/graphics/%s' % x for x in src_graphics_header_files])
# #
build_project('controllers', 'src/frontends/controllers') build_project('controllers', src = ['$TOP_SRCDIR/src/frontends/controllers/%s' % x for x in src_frontends_controllers_files],
inc = ['$TOP_SRCDIR/src/frontends/controllers/%s' % x for x in src_frontends_controllers_header_files])
# #
build_project('qt3', 'src/frontends/qt3', resource = 'src/frontends/qt3/ui') build_project('qt3', src = ['$TOP_SRCDIR/src/frontends/qt3/%s' % x for x in src_frontends_qt3_files + src_frontends_qt3_moc_files],
inc = ['$TOP_SRCDIR/src/frontends/qt3/%s' % x for x in src_frontends_qt3_header_files],
res = ['$TOP_SRCDIR/src/frontends/qt3/ui/%s' % x for x in src_frontends_qt3_ui_files])
# #
build_project('qt4', 'src/frontends/qt4', resource = 'src/frontends/qt4/ui') build_project('qt4', src = ['$TOP_SRCDIR/src/frontends/qt4/%s' % x for x in src_frontends_qt4_files + src_frontends_qt4_moc_files],
inc = ['$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])
# #
build_project('client', 'src/client', rebuildTargetOnly = False, build_project('client', src = ['$TOP_SRCDIR/src/client/%s' % x for x in src_client_files],
inc = ['$TOP_SRCDIR/src/client/%s' % x for x in src_client_header_files],
rebuildTargetOnly = False,
full_target = File(env.subst('$BUILDDIR/common/client/lyxclient$PROGSUFFIX')).abspath) full_target = File(env.subst('$BUILDDIR/common/client/lyxclient$PROGSUFFIX')).abspath)
# #
build_project('tex2lyx', 'src/tex2lyx', rebuildTargetOnly = False, build_project('tex2lyx', src = ['$TOP_SRCDIR/src/tex2lyx/%s' % x for x in src_tex2lyx_files],
inc = ['$TOP_SRCDIR/src/tex2lyx/%s' % x for x in src_tex2lyx_header_files],
rebuildTargetOnly = False,
full_target = File(env.subst('$BUILDDIR/common/tex2lyx/tex2lyx$PROGSUFFIX')).abspath) full_target = File(env.subst('$BUILDDIR/common/tex2lyx/tex2lyx$PROGSUFFIX')).abspath)
# #
build_project('lyxbase', 'src') build_project('lyxbase', src = ['$TOP_SRCDIR/src/%s' % x for x in src_pre_files + src_post_files],
inc = ['$TOP_SRCDIR/src/%s' % x for x in src_header_files])
# #
if frontend == 'qt3': if frontend == 'qt3':
build_project('lyx', ['src', 'src/support', 'src/mathed', 'src/insets', build_project('lyx',
'src/frontends', 'src/graphics', 'src/frontends/controllers', src = ['$TOP_SRCDIR/src/%s' % x for x in src_pre_files + src_post_files] + \
'src/frontends/qt3'], resource = 'src/frontends/qt3/ui', ['$TOP_SRCDIR/src/support/%s' % x for x in src_support_files] + \
['$TOP_SRCDIR/src/mathed/%s' % x for x in src_mathed_files] + \
['$TOP_SRCDIR/src/insets/%s' % x for x in src_insets_files] + \
['$TOP_SRCDIR/src/frontends/%s' % x for x in src_frontends_files] + \
['$TOP_SRCDIR/src/graphics/%s' % x for x in src_graphics_files] + \
['$TOP_SRCDIR/src/frontends/controllers/%s' % x for x in src_frontends_controllers_files] + \
['$TOP_SRCDIR/src/frontends/qt3/%s' % x for x in src_frontends_qt3_files + src_frontends_qt3_moc_files],
inc = ['$TOP_SRCDIR/src/%s' % x for x in src_header_files] + \
['$TOP_SRCDIR/src/support/%s' % x for x in src_support_header_files] + \
['$TOP_SRCDIR/src/mathed/%s' % x for x in src_mathed_header_files] + \
['$TOP_SRCDIR/src/insets/%s' % x for x in src_insets_header_files] + \
['$TOP_SRCDIR/src/frontends/%s' % x for x in src_frontends_header_files] + \
['$TOP_SRCDIR/src/graphics/%s' % x for x in src_graphics_header_files] + \
['$TOP_SRCDIR/src/frontends/controllers/%s' % x for x in src_frontends_controllers_header_files] + \
['$TOP_SRCDIR/src/frontends/qt3/%s' % x for x in src_frontends_qt3_header_files],
res = ['$TOP_SRCDIR/src/frontends/qt3/ui/%s' % x for x in src_frontends_qt3_ui_files],
rebuildTargetOnly = False, rebuildTargetOnly = False,
full_target = File(env.subst('$BUILDDIR/$frontend/lyx$PROGSUFFIX')).abspath) full_target = File(env.subst('$BUILDDIR/$frontend/lyx$PROGSUFFIX')).abspath)
else: else:
build_project('lyx', ['src', 'src/support', 'src/mathed', 'src/insets', build_project('lyx',
'src/frontends', 'src/graphics', 'src/frontends/controllers', src = ['$TOP_SRCDIR/src/%s' % x for x in src_pre_files + src_post_files] + \
'src/frontends/qt4'], resource = 'src/frontends/qt4/ui', ['$TOP_SRCDIR/src/support/%s' % x for x in src_support_files] + \
['$TOP_SRCDIR/src/mathed/%s' % x for x in src_mathed_files] + \
['$TOP_SRCDIR/src/insets/%s' % x for x in src_insets_files] + \
['$TOP_SRCDIR/src/frontends/%s' % x for x in src_frontends_files] + \
['$TOP_SRCDIR/src/graphics/%s' % x for x in src_graphics_files] + \
['$TOP_SRCDIR/src/frontends/controllers/%s' % x for x in src_frontends_controllers_files] + \
['$TOP_SRCDIR/src/frontends/qt4/%s' % x for x in src_frontends_qt4_files + src_frontends_qt4_moc_files],
inc = ['$TOP_SRCDIR/src/%s' % x for x in src_header_files] + \
['$TOP_SRCDIR/src/support/%s' % x for x in src_support_header_files] + \
['$TOP_SRCDIR/src/mathed/%s' % x for x in src_mathed_header_files] + \
['$TOP_SRCDIR/src/insets/%s' % x for x in src_insets_header_files] + \
['$TOP_SRCDIR/src/frontends/%s' % x for x in src_frontends_header_files] + \
['$TOP_SRCDIR/src/graphics/%s' % x for x in src_graphics_header_files] + \
['$TOP_SRCDIR/src/frontends/controllers/%s' % x for x in src_frontends_controllers_header_files] + \
['$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, rebuildTargetOnly = False,
full_target = File(env.subst('$BUILDDIR/$frontend/lyx$PROGSUFFIX')).abspath) full_target = File(env.subst('$BUILDDIR/$frontend/lyx$PROGSUFFIX')).abspath)
@ -2363,24 +2126,6 @@ if 'install' in targets:
# #
import glob import glob
# #
# do not install these files
exclude_list = ['Makefile.am', 'Makefile.in', 'Makefile',
'lyx2lyx_version.py.in']
def install(dest, src):
''' recusive installation of src to dest '''
# separate file and directory
files = filter(lambda x: os.path.isfile(x) and not os.path.split(x)[1] in exclude_list, src)
dirs = filter(os.path.isdir, src)
# install file
env.Install(dest, files)
# install directory
ins_dir = [dest]
for dir in dirs:
ins_dir.extend(install(os.path.join(dest, os.path.basename(dir)),
glob.glob(os.path.join(dir, '*'))) )
return ins_dir
#
# install executables (lyxclient may be None) # install executables (lyxclient may be None)
# #
if add_suffix: if add_suffix:
@ -2413,12 +2158,25 @@ if 'install' in targets:
Alias('install', target) Alias('install', target)
# #
# share/lyx # share/lyx
dirs = install(share_dest_dir, dirs = []
[env.subst('$TOP_SRCDIR/lib/') + file for file in ['configure.py', 'encodings', for (dir,files) in [
'chkconfig.ltx', 'CREDITS', 'external_templates', 'symbols', 'languages', ('.', lib_files),
'lyxrc.example', 'syntax.default', 'bind', 'images', 'layouts', 'scripts', ('clipart', lib_clipart_files),
'templates', 'examples', 'kbd', 'lyx2lyx', 'tex', 'clipart', 'doc', 'ui']] ('examples', lib_examples_files),
) ('images', lib_images_files),
('images/math', lib_images_math_files),
('bind', lib_bind_files),
('kbd', lib_kbd_files),
('layouts', lib_layouts_files),
('scripts', lib_scripts_files),
('templates', lib_templates_files),
('tex', lib_tex_files),
('ui', lib_ui_files),
('doc', lib_doc_files),
('lyx2lyx', lib_lyx2lyx_files)]:
dirs.append(env.Install(os.path.join(share_dest_dir, dir),
[env.subst('$TOP_SRCDIR/lib/%s/%s' % (dir, file)) for file in files]))
# lyx1.4.x does not have lyx2lyx_version.py.in # lyx1.4.x does not have lyx2lyx_version.py.in
if os.path.isfile(env.subst('$TOP_SRCDIR/lib/lyx2lyx/lyx2lyx_version.py.in')): if os.path.isfile(env.subst('$TOP_SRCDIR/lib/lyx2lyx/lyx2lyx_version.py.in')):
# subst and install this file # subst and install this file

File diff suppressed because it is too large Load Diff

View File

@ -58,19 +58,6 @@ def env_subst(target, source, env):
#st = os.stat(str(source[0])) #st = os.stat(str(source[0]))
#os.chmod(str(target[0]), stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE) #os.chmod(str(target[0]), stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
#
# glob filenames
#
def globSource(dir, pattern, build_dir = None, exclude = [], include = []):
''' glob files, in dir and use build_dir as returned path name '''
# exclude 'exclude+include' to avoid duplicate items in files
files = include + filter(lambda x: x not in exclude + include, glob.glob1(dir, pattern))
if build_dir is None:
return files
else:
return ['%s/%s' % (build_dir, x) for x in files]
# #
# autoconf tests # autoconf tests
# #