mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-22 16:37:28 +00:00
Scons: check system boost version, probe qt3 libs for qt2 frontend
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14354 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
c8c3f0ed11
commit
fc42d0d4f9
@ -49,8 +49,10 @@ else:
|
|||||||
# only 1.4.x has frontends/qt2
|
# only 1.4.x has frontends/qt2
|
||||||
if os.path.isdir(os.path.join(top_src_dir, 'src', 'frontends', 'qt2')):
|
if os.path.isdir(os.path.join(top_src_dir, 'src', 'frontends', 'qt2')):
|
||||||
package_version = '1.4.2svn'
|
package_version = '1.4.2svn'
|
||||||
|
boost_version = '1_32'
|
||||||
else:
|
else:
|
||||||
package_version = '1.5.0svn'
|
package_version = '1.5.0svn'
|
||||||
|
boost_version = '1_33_1'
|
||||||
|
|
||||||
devel_version = True
|
devel_version = True
|
||||||
default_build_mode = 'debug'
|
default_build_mode = 'debug'
|
||||||
@ -544,17 +546,20 @@ if env.has_key('qt_dir') and env['qt_dir']:
|
|||||||
# add path to the qt tools
|
# add path to the qt tools
|
||||||
env.AppendUnique(LIBPATH = [os.path.join(env['qt_dir'], 'lib')])
|
env.AppendUnique(LIBPATH = [os.path.join(env['qt_dir'], 'lib')])
|
||||||
# set environment so that moc etc can be found even if its path is not set properly
|
# set environment so that moc etc can be found even if its path is not set properly
|
||||||
|
os.environ['PATH'] += os.pathsep + os.path.join(env['qt_dir'], 'bin')
|
||||||
env.PrependENVPath('PATH', os.path.join(env['qt_dir'], 'bin'))
|
env.PrependENVPath('PATH', os.path.join(env['qt_dir'], 'bin'))
|
||||||
elif os.path.isdir(os.environ.get('QTDIR', '/usr/lib/qt-3.3')):
|
elif os.path.isdir(os.environ.get('QTDIR', '/usr/lib/qt-3.3')):
|
||||||
env['QTDIR'] = os.environ.get('QTDIR', '/usr/lib/qt-3.3')
|
env['QTDIR'] = os.environ.get('QTDIR', '/usr/lib/qt-3.3')
|
||||||
|
|
||||||
|
# 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')):
|
elif os.path.isdir(os.path.join('/usr/lib/', frontend_lib, 'lib')):
|
||||||
qt_lib_path = env.subst('/usr/lib/$frontend/lib')
|
qt_lib_path = '/usr/lib/%s/lib' % frontend_lib
|
||||||
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)
|
||||||
@ -567,8 +572,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):
|
elif os.path.isdir('/usr/include/' + frontend_lib):
|
||||||
qt_inc_path = '/usr/include/$frontend'
|
qt_inc_path = '/usr/include/' + frontend_lib
|
||||||
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)
|
||||||
@ -589,9 +594,9 @@ if env.has_key('extra_inc_path1') and env['extra_inc_path1']:
|
|||||||
if env.has_key('extra_lib_path1') and env['extra_lib_path1']:
|
if env.has_key('extra_lib_path1') and env['extra_lib_path1']:
|
||||||
env.AppendUnique(LIBPATH = [env['extra_lib_path1']])
|
env.AppendUnique(LIBPATH = [env['extra_lib_path1']])
|
||||||
if env.has_key('extra_bin_path') and env['extra_bin_path']:
|
if env.has_key('extra_bin_path') and env['extra_bin_path']:
|
||||||
# maybe only one of them is needed
|
# only the first one is needed (a scons bug?)
|
||||||
os.environ['PATH'] += os.pathsep + env['extra_bin_path']
|
os.environ['PATH'] += os.pathsep + env['extra_bin_path']
|
||||||
env['ENV']['PATH'] += os.pathsep + env['extra_bin_path']
|
env.PrependENVPath('PATH', env['extra_bin_path'])
|
||||||
# extra_inc_paths will be used later by intlenv etc
|
# extra_inc_paths will be used later by intlenv etc
|
||||||
env.AppendUnique(CPPPATH = extra_inc_paths)
|
env.AppendUnique(CPPPATH = extra_inc_paths)
|
||||||
|
|
||||||
@ -711,7 +716,7 @@ if not fast_start:
|
|||||||
included_boost = True
|
included_boost = True
|
||||||
env['BOOST_INC_PATH'] = '$TOP_SRCDIR/boost'
|
env['BOOST_INC_PATH'] = '$TOP_SRCDIR/boost'
|
||||||
elif boost_opt == 'auto':
|
elif boost_opt == 'auto':
|
||||||
res = conf.CheckBoostLibraries(boost_libs, lib_paths, inc_paths, mode == 'debug')
|
res = conf.CheckBoostLibraries(boost_libs, lib_paths, inc_paths, boost_version, mode == 'debug')
|
||||||
# if not found, use local boost
|
# if not found, use local boost
|
||||||
if res[0] is None:
|
if res[0] is None:
|
||||||
boost_libraries = ['included_boost_%s' % x for x in boost_libs]
|
boost_libraries = ['included_boost_%s' % x for x in boost_libs]
|
||||||
@ -721,9 +726,9 @@ if not fast_start:
|
|||||||
included_boost = False
|
included_boost = False
|
||||||
(boost_libraries, boost_libpath, env['BOOST_INC_PATH']) = res
|
(boost_libraries, boost_libpath, env['BOOST_INC_PATH']) = res
|
||||||
elif boost_opt == 'system':
|
elif boost_opt == 'system':
|
||||||
res = conf.CheckBoostLibraries(boost_libs, lib_paths, inc_paths, mode == 'debug')
|
res = conf.CheckBoostLibraries(boost_libs, lib_paths, inc_paths, boost_version, mode == 'debug')
|
||||||
if res[0] is None:
|
if res[0] is None:
|
||||||
print "Can not find system boost libraries"
|
print "Can not find system boost libraries with version %s " % boost_version
|
||||||
print "Please supply a path through extra_lib_path and try again."
|
print "Please supply a path through extra_lib_path and try again."
|
||||||
print "Or use boost=included to use included boost libraries."
|
print "Or use boost=included to use included boost libraries."
|
||||||
Exit(2)
|
Exit(2)
|
||||||
|
@ -153,11 +153,12 @@ int main()
|
|||||||
return ('int', 'int *', 'struct timeval *')
|
return ('int', 'int *', 'struct timeval *')
|
||||||
|
|
||||||
|
|
||||||
def checkBoostLibraries(conf, libs, lib_paths, inc_paths, isDebug):
|
def checkBoostLibraries(conf, libs, lib_paths, inc_paths, version, isDebug):
|
||||||
''' look for boost libraries
|
''' look for boost libraries
|
||||||
libs: library names
|
libs: library names
|
||||||
lib_paths: try these paths for boost libraries
|
lib_paths: try these paths for boost libraries
|
||||||
inc_paths: try these paths for boost headers
|
inc_paths: try these paths for boost headers
|
||||||
|
version: required boost version
|
||||||
isDebug: if true, use debug libraries
|
isDebug: if true, use debug libraries
|
||||||
'''
|
'''
|
||||||
conf.Message('Checking for boost library %s... ' % ', '.join(libs))
|
conf.Message('Checking for boost library %s... ' % ', '.join(libs))
|
||||||
@ -180,17 +181,20 @@ def checkBoostLibraries(conf, libs, lib_paths, inc_paths, isDebug):
|
|||||||
files = glob.glob(os.path.join(path, 'libboost_%s-*.a' % lib))
|
files = glob.glob(os.path.join(path, 'libboost_%s-*.a' % lib))
|
||||||
# check things like libboost_iostreams-gcc-mt-d-1_33_1.a
|
# check things like libboost_iostreams-gcc-mt-d-1_33_1.a
|
||||||
if len(files) > 0:
|
if len(files) > 0:
|
||||||
|
# runtime code includes s,g,y,d,p,n, where we should look for
|
||||||
|
# d,g,y for debug, s,p,n for release
|
||||||
if isDebug:
|
if isDebug:
|
||||||
files = filter(lambda x: re.search('libboost_%s-\w+-mt-d-[\d-]+' % lib, x), files)
|
lib_files = filter(lambda x: re.search('libboost_%s-\w+-mt-[^spn]+-%s.a' % (lib, version), x), files)
|
||||||
else:
|
else:
|
||||||
files = filter(lambda x: re.search('libboost_%s-\w+-mt-[\d-]+' % lib, x), files)
|
lib_files = filter(lambda x: re.search('libboost_%s-\w+-mt-([^dgy]+-)*%s.a' % (lib, version), x), files)
|
||||||
if len(files) == 0:
|
if len(lib_files) == 0:
|
||||||
print 'Warning: %s directory seems to have the boost libraries, but ' % path
|
print 'Warning: Can not find an appropriate boost library in %s.' % path
|
||||||
print 'I can not find one that has the form lib%s-xxx-mt[-d]-x_xx_x.a' % lib
|
lib_files = filter(lambda x: re.search('libboost_%s-[\w-]+%s.a' % (lib, version), x), files)
|
||||||
print 'Check your boost installation, or change select criteria in scons_util.py'
|
if len(lib_files) > 0:
|
||||||
if len(files) > 0:
|
print 'Use library ' % lib_files[0]
|
||||||
# get xxx-gcc-1_33_1 from /usr/local/lib/libboost_xxx-gcc-1_33_1.a
|
if len(lib_files) > 0:
|
||||||
lib_names.append(files[0].split(os.sep)[-1][3:-2])
|
# get xxx-gcc-1_33_1 from /usr/local/lib/libboost_xxx-gcc-1_33_1.a
|
||||||
|
lib_names.append(lib_files[0].split(os.sep)[-1][3:-2])
|
||||||
if len(lib_names) == len(libs):
|
if len(lib_names) == len(libs):
|
||||||
found_lib = True
|
found_lib = True
|
||||||
lib_path = path
|
lib_path = path
|
||||||
@ -198,15 +202,19 @@ def checkBoostLibraries(conf, libs, lib_paths, inc_paths, isDebug):
|
|||||||
if not found_lib:
|
if not found_lib:
|
||||||
conf.Result('no')
|
conf.Result('no')
|
||||||
return (None, None, None)
|
return (None, None, None)
|
||||||
|
# check version number in boost/version.hpp
|
||||||
|
def isValidBoostDir(dir):
|
||||||
|
file = os.path.join(dir, 'boost', 'version.hpp')
|
||||||
|
version_string = '#define BOOST_LIB_VERSION "%s"' % version
|
||||||
|
return os.path.isfile(file) and version_string in open(file).read()
|
||||||
# check for boost header file
|
# check for boost header file
|
||||||
for path in inc_paths:
|
for path in inc_paths:
|
||||||
# check path/boost/regex.h
|
if isValidBoostDir(path):
|
||||||
if os.path.isfile(os.path.join(path, 'boost', 'regex.h')):
|
|
||||||
inc_path = path
|
inc_path = path
|
||||||
found_inc = True
|
found_inc = True
|
||||||
else: # check path/boost_1_xx_x/boost
|
else: # check path/boost_1_xx_x/boost
|
||||||
dirs = glob.glob(os.path.join(path, 'boost-*'))
|
dirs = glob.glob(os.path.join(path, 'boost-*'))
|
||||||
if len(dirs) > 0 and os.path.isfile(os.path.join(dirs[0], 'boost', 'regex.h')):
|
if len(dirs) > 0 and isValidBoostDir(dirs[0]):
|
||||||
inc_path = dirs[0]
|
inc_path = dirs[0]
|
||||||
found_inc = True
|
found_inc = True
|
||||||
# return result
|
# return result
|
||||||
|
Loading…
x
Reference in New Issue
Block a user