X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=development%2Fscons%2FSConstruct;h=6d7ea195780e433790b16b7bd2f6e13009922ab3;hb=c8429d4bbc2e9291a6b5742233aecb089a3eece1;hp=253899722d88a6722b3e5d55b2a8c9e0e6d1bac2;hpb=c8e38f5e05a05cc2f6937132906b8e3b09021a81;p=lyx.git diff --git a/development/scons/SConstruct b/development/scons/SConstruct index 253899722d..6d7ea19578 100644 --- a/development/scons/SConstruct +++ b/development/scons/SConstruct @@ -12,7 +12,7 @@ # to INSTALL.scons for detailed instructions. # -import os, sys, copy, cPickle, glob +import os, sys, copy, cPickle, glob, time # scons_utils.py defines a few utility function sys.path.append('config') @@ -53,12 +53,18 @@ else: # some global settings # -package_version = '1.5.0svn' +# get version number from configure.ac so that JMarc does +# not have to change SConstruct during lyx release +package_version = utils.getVerFromConfigure(top_src_dir) +package_cygwin_version = '%s-1' % package_version boost_version = '1_33_1' -devel_version = True -default_build_mode = 'debug' -lyx_ext = '*.C' +if 'svn' in package_version: + devel_version = True + default_build_mode = 'debug' +else: + devel_version = False + default_build_mode = 'release' package = 'lyx' package_bugreport = 'lyx-devel@lists.lyx.org' @@ -68,7 +74,7 @@ package_string = '%s %s' % (package_name, package_version) # various cache/log files default_log_file = 'scons_lyx.log' -env_cache_file = 'env.cache' +opt_cache_file = 'opt.cache' #---------------------------------------------------------- @@ -83,26 +89,26 @@ if os.name == 'nt': default_packaging_method = 'windows' elif os.name == 'posix' and sys.platform != 'cygwin': platform_name = sys.platform - default_frontend = 'qt3' + default_frontend = 'qt4' default_prefix = '/usr/local' default_with_x = True default_packaging_method = 'posix' elif os.name == 'posix' and sys.platform == 'cygwin': platform_name = 'cygwin' - default_frontend = 'qt3' + default_frontend = 'qt4' default_prefix = '/usr' default_with_x = True default_packaging_method = 'posix' elif os.name == 'darwin': platform_name = 'macosx' - default_frontend = 'qt3' + default_frontend = 'qt4' # FIXME: macOSX default prefix? default_prefix = '.' default_with_x = False default_packaging_method = 'macosx' else: # unsupported system, assume posix behavior platform_name = 'others' - default_frontend = 'qt3' + default_frontend = 'qt4' default_prefix = '.' default_with_x = True default_packaging_method = 'posix' @@ -120,7 +126,7 @@ opts = Options(['config.py']) opts.AddOptions( # frontend EnumOption('frontend', 'Main GUI', default_frontend, - allowed_values = ('qt3', 'qt4', 'gtk') ), + allowed_values = ('qt4',) ), # debug or release build EnumOption('mode', 'Building method', default_build_mode, allowed_values = ('debug', 'release') ), @@ -147,7 +153,7 @@ opts.AddOptions( EnumOption('packaging', 'Packaging method to use.', default_packaging_method, allowed_values = ('windows', 'posix', 'macosx')), # - BoolOption('fast_start', 'Whether or not use cached tests and keep current config.h', True), + BoolOption('fast_start', 'This option is obsolete.', False), # No precompiled header support (too troublesome to make it work for msvc) # BoolOption('pch', 'Whether or not use pch', False), # enable assertion, (config.h has ENABLE_ASSERTIOS @@ -230,23 +236,8 @@ all_options = [x.key for x in opts.options] true_strings = ('y', 'yes', 'true', 't', '1', 'on' , 'all' ) false_strings = ('n', 'no', 'false', 'f', '0', 'off', 'none') -# whether or not use current config.h, and cached tests -# -# if fast_start=yes (default), load variables from env_cache_file -if (not ARGUMENTS.has_key('fast_start') or \ - ARGUMENTS['fast_start'] in true_strings) \ - and os.path.isfile(env_cache_file): - fast_start = True - cache_file = open(env_cache_file) - env_cache = cPickle.load(cache_file) - cache_file.close() - print '------------ fast_start mode --------------------' - print ' Use cached test results and current config.h' - print ' use fast_start=no to override' - print -else: - fast_start = False - env_cache = {} +if ARGUMENTS.has_key('fast_start'): + print 'fast_start option is obsolete' # if load_option=yes (default), load saved comand line options # @@ -254,26 +245,17 @@ else: # and tries to be clever in choosing options to load if (not ARGUMENTS.has_key('load_option') or \ ARGUMENTS['load_option'] not in false_strings) \ - and os.path.isfile(env_cache_file): - cache_file = open(env_cache_file) - opt_cache = cPickle.load(cache_file)['arg_cache'] + and os.path.isfile(opt_cache_file): + cache_file = open(opt_cache_file) + opt_cache = cPickle.load(cache_file) cache_file.close() # import cached options, but we should ignore qt_dir when frontend changes if ARGUMENTS.has_key('frontend') and opt_cache.has_key('frontend') \ and ARGUMENTS['frontend'] != opt_cache['frontend'] \ and opt_cache.has_key('qt_dir'): opt_cache.pop('qt_dir') - # some options will require full rebuild - # these are in general things that will change config.h - for arg in ['version_suffix', 'nls', 'boost', 'spell']: - if ARGUMENTS.has_key(arg) and ((not opt_cache.has_key(arg)) or \ - ARGUMENTS[arg] != opt_cache[arg]): - if fast_start: - print " ** fast_start is disabled because of the change of option", arg - print - fast_start = False # and we do not cache some options (dest_dir is obsolete) - for arg in ['fast_start', 'load_option', 'dest_dir']: + for arg in ['load_option', 'dest_dir']: if opt_cache.has_key(arg): opt_cache.pop(arg) # remove obsolete cached keys (well, SConstruct is evolving. :-) @@ -312,9 +294,10 @@ for arg in ARGUMENTS.keys(): print ' ' + '\n '.join(textwrap.wrap(', '.join(all_options))) Exit(1) -# save arguments -env_cache['arg_cache'] = ARGUMENTS - +# save options used +cache_file = open(opt_cache_file, 'w') +cPickle.dump(ARGUMENTS, cache_file) +cache_file.close() #--------------------------------------------------------- # Setting up environment @@ -384,13 +367,14 @@ env.AppendUnique(LIBPATH = ['$LOCALLIBPATH']) # lib/lyx2lyx/lyx2lyx_version.py.in # PACKAGE_VERSION # src/version.C.in -# PACKAGE_VERSION, VERSION_INFO +# PACKAGE_VERSION, LYX_DATE, VERSION_INFO # full path name is used to build msvs project files # and to replace TOP_SRCDIR in package.C env['TOP_SRCDIR'] = Dir(top_src_dir).abspath # needed by src/version.C.in => src/version.C env['PACKAGE_VERSION'] = package_version +env['LYX_DATE'] = time.asctime() # determine share_dir etc packaging_method = env.get('packaging') @@ -398,14 +382,14 @@ if packaging_method == 'windows': share_dir = 'Resources' man_dir = 'Resources/man/man1' locale_dir = 'Resources/locale' - default_prefix = 'c:/program files/lyx' else: share_dir = 'share/lyx' - man_dir = 'man/man1' locale_dir = 'share/locale' - default_prefix = '/usr/local/' + if platform_name == 'cygwin': + man_dir = 'share/man/man1' + else: + man_dir = 'man/man1' -# install to default_prefix by default # program suffix: can be yes, or a string if env.has_key('version_suffix'): if env['version_suffix'] in true_strings: @@ -465,7 +449,13 @@ if use_vc: # in the current code page (number) # C4996: foo was decleared deprecated CCFLAGS_required.extend(['/TP', '/EHsc']) - CCFLAGS_default.extend(['/wd4819', '/wd4996', '/nologo']) + if mode == 'debug': + CCFLAGS_default.extend(['/wd4819', '/wd4996', '/nologo', '/MDd']) + # the flags are also needed in C mode (for intl lib) + C_CCFLAGS.extend(['/wd4819', '/wd4996', '/nologo', '/MDd']) + else: + CCFLAGS_default.extend(['/wd4819', '/wd4996', '/nologo', '/MD']) + C_CCFLAGS.extend(['/wd4819', '/wd4996', '/nologo', '/MD']) else: if env.has_key('CXX') and env['CXX']: env['CC'] = env.subst('$CXX') @@ -524,25 +514,37 @@ def setEnvVariable(env, name, required = None, default = None, split = True): environment variables split: whether or not split obtained variable like '-02 -g' ''' - # first try command line argument (override environment settings) + # 1. ARGUMENTS is already set to env[name], override default. if ARGUMENTS.has_key(name): - default = ARGUMENTS[name] - if split: - default = default.split() + # env[name] may be rewritten when building tools are reloaded + # if that is the case, commandline option will override it. + env[name] = ARGUMENTS[name] + default = None # then use environment default elif os.environ.has_key(name): - print "Acquiring varaible %s from system environment: %s" % (name, os.environ[name]) + print "Acquiring variable %s from system environment: %s" % (name, os.environ[name]) default = os.environ[name] if split: default = default.split() - # set variable - if required is not None: - env[name] = required - if default is not None: - if env.has_key(name) and env[name] != default: - env[name] += default - else: - env[name] = default + # the real value should be env[name] + default + required + if split: + value = [] + if env.has_key(name): + value = str(env[name]).split() + if required is not None: + value += required + if default is not None: + value += default + else: + value = "" + if env.has_key(name): + value = str(env[name]) + if required is not None: + value += " " + required + if default is not None: + value += " " + default + env[name] = value + # print name, env[name] setEnvVariable(env, 'DESTDIR', split=False) setEnvVariable(env, 'CC') @@ -643,85 +645,82 @@ conf = Configure(env, 'CheckCXXGlobalCstd' : utils.checkCXXGlobalCstd, 'CheckLC_MESSAGES' : utils.checkLC_MESSAGES, 'CheckIconvConst' : utils.checkIconvConst, + 'CheckSizeOfWChar' : utils.checkSizeOfWChar, } ) # pkg-config? (if not, we use hard-coded options) -if not fast_start: - if conf.CheckPkgConfig('0.15.0'): - env['HAS_PKG_CONFIG'] = True - else: - print 'pkg-config >= 0.1.50 is not found' - env['HAS_PKG_CONFIG'] = False - env_cache['HAS_PKG_CONFIG'] = env['HAS_PKG_CONFIG'] +if conf.CheckPkgConfig('0.15.0'): + env['HAS_PKG_CONFIG'] = True else: - env['HAS_PKG_CONFIG'] = env_cache['HAS_PKG_CONFIG'] + print 'pkg-config >= 0.1.50 is not found' + env['HAS_PKG_CONFIG'] = False + +# zlib? This is required. +if (not use_vc and not conf.CheckLibWithHeader('z', 'zlib.h', 'C')) \ + or (use_vc and not conf.CheckLibWithHeader('zdll', 'zlib.h', 'C')): + print 'Did not find zdll.lib or zlib.h, exiting!' + Exit(1) +if conf.CheckLib('iconv'): + env['ICONV_LIB'] = 'iconv' +elif conf.CheckLib('libiconv'): + env['ICONV_LIB'] = 'libiconv' +elif conf.CheckFunc('iconv_open'): + env['ICONV_LIB'] = None +else: + print 'Did not find iconv or libiconv, exiting!' + Exit(1) -# zlib? This is required. (fast_start assumes the existance of zlib) -if not fast_start: - if (not use_vc and not conf.CheckLibWithHeader('z', 'zlib.h', 'C')) \ - or (use_vc and not conf.CheckLibWithHeader('zdll', 'zlib.h', 'C')): - print 'Did not find zdll.lib or zlib.h, exiting!' - Exit(1) # qt libraries? -if not fast_start: - # - # qt3 does not use pkg_config - if frontend == 'qt3': - if not conf.CheckLibWithHeader('qt-mt', 'qapp.h', 'c++', 'QApplication qapp();'): - print 'Did not find qt libraries, exiting!' - Exit(1) - elif frontend == 'qt4': - succ = False - # first: try pkg_config - if env['HAS_PKG_CONFIG']: - succ = conf.CheckPackage('QtCore') or conf.CheckPackage('QtCore4') - # FIXME: use pkg_config information? - #env['QT4_PKG_CONFIG'] = succ - # second: try to link to it - if not succ: - # Under linux, I can test the following perfectly - # Under windows, lib names need to passed as libXXX4.a ... - succ = conf.CheckLibWithHeader('QtCore', 'QtGui/QApplication', 'c++', 'QApplication qapp();') or \ - conf.CheckLibWithHeader('QtCore4', 'QtGui/QApplication', 'c++', 'QApplication qapp();') - # third: try to look up the path - if not succ: - succ = True - for lib in ['QtCore', 'QtGui']: - # windows version has something like QtGui4 ... - if not (os.path.isfile(os.path.join(qt_lib_path, 'lib%s.a' % lib)) or \ - os.path.isfile(os.path.join(qt_lib_path, 'lib%s4.a' % lib))): - succ = False - break - # still can not find it - if succ: - print "Qt4 libraries are found." - else: - print 'Did not find qt libraries, exiting!' - Exit(1) +# +if frontend == 'qt4': + succ = False + # first: try pkg_config + if env['HAS_PKG_CONFIG']: + succ = conf.CheckPackage('QtCore') or conf.CheckPackage('QtCore4') + # FIXME: use pkg_config information? + #env['QT4_PKG_CONFIG'] = succ + # second: try to link to it + if not succ: + # Under linux, I can test the following perfectly + # Under windows, lib names need to passed as libXXX4.a ... + succ = conf.CheckLibWithHeader('QtCore', 'QtGui/QApplication', 'c++', 'QApplication qapp();') or \ + conf.CheckLibWithHeader('QtCore4', 'QtGui/QApplication', 'c++', 'QApplication qapp();') + # third: try to look up the path + if not succ: + succ = True + for lib in ['QtCore', 'QtGui']: + # windows version has something like QtGui4 ... + if not (os.path.isfile(os.path.join(qt_lib_path, 'lib%s.a' % lib)) or \ + os.path.isfile(os.path.join(qt_lib_path, 'lib%s4.a' % lib))): + succ = False + break + # still can not find it + if succ: + print "Qt4 libraries are found." + else: + print 'Did not find qt libraries, exiting!' + Exit(1) # now, if msvc2005 is used, we will need that QT_LIB_PATH/QT_LIB.manifest file if use_vc: - if mode == 'debug': - manifest = os.path.join(qt_lib_path, 'QtGuid4.dll.manifest') - else: - manifest = os.path.join(qt_lib_path, 'QtGui4.dll.manifest') + if frontend == 'qt4': + if mode == 'debug': + manifest = os.path.join(qt_lib_path, 'QtGuid4.dll.manifest') + else: + manifest = os.path.join(qt_lib_path, 'QtGui4.dll.manifest') if os.path.isfile(manifest): env['LINKCOM'] = [env['LINKCOM'], 'mt.exe /MANIFEST %s /outputresource:$TARGET;1' % manifest] # check socket libs -if not fast_start: - socket_libs = [] - if conf.CheckLib('socket'): - socket_libs.append('socket') - # nsl is the network services library and provides a - # transport-level interface to networking services. - if conf.CheckLib('nsl'): - socket_libs.append('nsl') - env_cache['SOCKET_LIBS'] = socket_libs -else: - socket_libs = env_cache['SOCKET_LIBS'] +socket_libs = [] +if conf.CheckLib('socket'): + socket_libs.append('socket') +# nsl is the network services library and provides a +# transport-level interface to networking services. +if conf.CheckLib('nsl'): + socket_libs.append('nsl') # check available boost libs (since lyx1.4 does not use iostream) boost_libs = [] @@ -729,48 +728,39 @@ for lib in ['signals', 'regex', 'filesystem', 'iostreams']: if os.path.isdir(os.path.join(top_src_dir, 'boost', 'libs', lib)): boost_libs.append(lib) -if not fast_start: - # check boost libraries - boost_opt = ARGUMENTS.get('boost', 'auto') - # check for system boost - lib_paths = env['LIBPATH'] + ['/usr/lib', '/usr/local/lib'] - inc_paths = env['CPPPATH'] + ['/usr/include', '/usr/local/include'] - # default to $BUILDDIR/libs (use None since this path will be added anyway) - boost_libpath = None - # here I assume that all libraries are in the same directory - if boost_opt == 'included': +# check boost libraries +boost_opt = ARGUMENTS.get('boost', 'auto') +# check for system boost +lib_paths = env['LIBPATH'] + ['/usr/lib', '/usr/local/lib'] +inc_paths = env['CPPPATH'] + ['/usr/include', '/usr/local/include'] +# default to $BUILDDIR/libs (use None since this path will be added anyway) +boost_libpath = None +# here I assume that all libraries are in the same directory +if boost_opt == 'included': + boost_libraries = ['included_boost_%s' % x for x in boost_libs] + included_boost = True + env['BOOST_INC_PATH'] = '$TOP_SRCDIR/boost' +elif boost_opt == 'auto': + res = conf.CheckBoostLibraries(boost_libs, lib_paths, inc_paths, boost_version, mode == 'debug') + # if not found, use local boost + if res[0] is None: boost_libraries = ['included_boost_%s' % x for x in boost_libs] included_boost = True env['BOOST_INC_PATH'] = '$TOP_SRCDIR/boost' - elif boost_opt == 'auto': - res = conf.CheckBoostLibraries(boost_libs, lib_paths, inc_paths, boost_version, mode == 'debug') - # if not found, use local boost - if res[0] is None: - boost_libraries = ['included_boost_%s' % x for x in boost_libs] - included_boost = True - env['BOOST_INC_PATH'] = '$TOP_SRCDIR/boost' - else: - included_boost = False - (boost_libraries, boost_libpath, env['BOOST_INC_PATH']) = res - elif boost_opt == 'system': - res = conf.CheckBoostLibraries(boost_libs, lib_paths, inc_paths, boost_version, mode == 'debug') - if res[0] is None: - 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 "Or use boost=included to use included boost libraries." - Exit(2) - else: - included_boost = False - (boost_libraries, boost_libpath, env['BOOST_INC_PATH']) = res - env_cache['BOOST_LIBRARIES'] = boost_libraries - env_cache['INCLUDED_BOOST'] = included_boost - env_cache['BOOST_INC_PATH'] = env['BOOST_INC_PATH'] - env_cache['BOOST_LIBPATH'] = boost_libpath -else: - boost_libraries = env_cache['BOOST_LIBRARIES'] - included_boost = env_cache['INCLUDED_BOOST'] - env['BOOST_INC_PATH'] = env_cache['BOOST_INC_PATH'] - boost_libpath = env_cache['BOOST_LIBPATH'] + else: + included_boost = False + (boost_libraries, boost_libpath, env['BOOST_INC_PATH']) = res +elif boost_opt == 'system': + res = conf.CheckBoostLibraries(boost_libs, lib_paths, inc_paths, boost_version, mode == 'debug') + if res[0] is None: + 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 "Or use boost=included to use included boost libraries." + Exit(2) + else: + included_boost = False + (boost_libraries, boost_libpath, env['BOOST_INC_PATH']) = res + if boost_libpath is not None: env.AppendUnique(LIBPATH = [boost_libpath]) @@ -778,51 +768,49 @@ if boost_libpath is not None: env['ENABLE_NLS'] = env['nls'] -if not fast_start: - if not env['ENABLE_NLS']: - intl_libs = [] - included_gettext = False - else: - # check gettext libraries - gettext_opt = ARGUMENTS.get('gettext', 'auto') - # check for system gettext - succ = False - if gettext_opt in ['auto', 'system']: - if conf.CheckLib('intl'): - included_gettext = False - intl_libs = ['intl'] - succ = True - else: # no found - if gettext_opt == 'system': - print "Can not find system gettext library" - print "Please supply a path through extra_lib_path and try again." - print "Or use gettext=included to use included gettext libraries." - Exit(2) - # now, auto and succ = false, or gettext=included - if not succ: - # we do not need to set LIBPATH now. - included_gettext = True - intl_libs = ['included_intl'] - env_cache['INCLUDED_GETTEXT'] = included_gettext - env_cache['INTL_LIBS'] = intl_libs +if not env['ENABLE_NLS']: + intl_libs = [] + included_gettext = False else: - included_gettext = env_cache['INCLUDED_GETTEXT'] - intl_libs = env_cache['INTL_LIBS'] + # check gettext libraries + gettext_opt = ARGUMENTS.get('gettext', 'auto') + # check for system gettext + succ = False + if gettext_opt in ['auto', 'system']: + if conf.CheckFunc('gettext'): + included_gettext = False + intl_libs = [] + succ = True + elif conf.CheckLib('intl'): + included_gettext = False + intl_libs = ['intl'] + succ = True + else: # no found + if gettext_opt == 'system': + print "Can not find system gettext library" + print "Please supply a path through extra_lib_path and try again." + print "Or use gettext=included to use included gettext libraries." + Exit(2) + # now, auto and succ = false, or gettext=included + if not succ: + # we do not need to set LIBPATH now. + included_gettext = True + intl_libs = ['included_intl'] + # # check for msgfmt command -if not fast_start: - env['MSGFMT'] = conf.CheckCommand('msgfmt') - env_cache['MSGFMT'] = env['MSGFMT'] -else: - env['MSGFMT'] = env_cache['MSGFMT'] +env['MSGFMT'] = conf.CheckCommand('msgfmt') + +# cygwin packaging requires the binaries to be stripped +if platform_name == 'cygwin': + env['STRIP'] = conf.CheckCommand('strip') # check uic and moc commands for qt frontends -if not fast_start: - if frontend[:2] == 'qt' and (conf.CheckCommand('uic') == None \ - or conf.CheckCommand('moc') == None): - print 'uic or moc command is not found for frontend', frontend - Exit(1) +if frontend[:2] == 'qt' and (conf.CheckCommand('uic') == None \ + or conf.CheckCommand('moc') == None): + print 'uic or moc command is not found for frontend', frontend + Exit(1) # # Customized builders @@ -842,14 +830,12 @@ if platform_name == 'win32' and mode == 'debug' and use_vc: # check the existence of config.h config_h = os.path.join(env.Dir('$BUILDDIR/common').path, 'config.h') boost_config_h = os.path.join(env.Dir('$BUILDDIR/boost').path, 'config.h') -if not fast_start or not os.path.isfile(boost_config_h) \ - or not os.path.isfile(config_h): - # - print "Creating %s..." % boost_config_h - # - utils.createConfigFile(conf, - config_file = boost_config_h, - config_pre = '''/* boost/config.h. Generated by SCons. */ +# +print "Creating %s..." % boost_config_h +# +utils.createConfigFile(conf, + config_file = boost_config_h, + config_pre = '''/* boost/config.h. Generated by SCons. */ /* -*- C++ -*- */ /* @@ -866,19 +852,22 @@ if not fast_start or not os.path.isfile(boost_config_h) \ #ifndef _BOOST_CONFIG_H #define _BOOST_CONFIG_H ''', - headers = [ - ('ostream', 'HAVE_OSTREAM', 'cxx'), - ('locale', 'HAVE_LOCALE', 'cxx'), - ('sstream', 'HAVE_SSTREAM', 'cxx'), - #('newapis.h', 'HAVE_NEWAPIS_H', 'c'), - ], - custom_tests = [ - (env.has_key('assertions') and env['assertions'], - 'ENABLE_ASSERTIONS', - 'Define if you want assertions to be enabled in the code' - ), - ], - config_post = ''' + headers = [ + ('ostream', 'HAVE_OSTREAM', 'cxx'), + ('locale', 'HAVE_LOCALE', 'cxx'), + ('sstream', 'HAVE_SSTREAM', 'cxx'), + #('newapis.h', 'HAVE_NEWAPIS_H', 'c'), + ], + custom_tests = [ + (env.has_key('assertions') and env['assertions'], + 'ENABLE_ASSERTIONS', + 'Define if you want assertions to be enabled in the code' + ), + ], + types = [ + ('wchar_t', 'HAVE_WCHAR_T', None), + ], + config_post = ''' #if defined(HAVE_OSTREAM) && defined(HAVE_LOCALE) && defined(HAVE_SSTREAM) # define USE_BOOST_FORMAT 1 @@ -892,11 +881,12 @@ if not fast_start or not os.path.isfile(boost_config_h) \ #define BOOST_ENABLE_ASSERT_HANDLER 1 #define BOOST_DISABLE_THREADS 1 -#define BOOST_NO_WREGEX 1 #define BOOST_NO_WSTRING 1 #ifdef __CYGWIN__ # define BOOST_POSIX 1 +# define BOOST_POSIX_API 1 +# define BOOST_POSIX_PATH 1 #endif #define BOOST_ALL_NO_LIB 1 @@ -905,51 +895,62 @@ if not fast_start or not os.path.isfile(boost_config_h) \ # define WANT_GETFILEATTRIBUTESEX_WRAPPER 1 #endif +#if defined(HAVE_WCHAR_T) && SIZEOF_WCHAR_T == 4 +# define LIBC_WCTYPE_USES_UCS4 +#endif + #endif ''' - ) - # - print "\nGenerating %s..." % config_h +) +# +print "\nGenerating %s..." % config_h - # AIKSAURUS_H_LOCATION - if (conf.CheckCXXHeader("Aiksaurus.h")): - aik_location = '' - elif (conf.CheckCXXHeader("Aiksaurus/Aiksaurus.h")): - aik_location = '' - else: - aik_location = '' - - # determine headers to use - spell_opt = ARGUMENTS.get('spell', 'auto') - env['USE_ASPELL'] = False - env['USE_PSPELL'] = False - env['USE_ISPELL'] = False - if spell_opt in ['auto', 'aspell'] and conf.CheckLib(aspell_lib): - spell_engine = 'USE_ASPELL' - elif spell_opt in ['auto', 'pspell'] and conf.CheckLib('pspell'): - spell_engine = 'USE_PSPELL' - elif spell_opt in ['auto', 'ispell'] and conf.CheckLib('ispell'): - spell_engine = 'USE_ISPELL' - else: - spell_engine = None +# AIKSAURUS_H_LOCATION +if (conf.CheckCXXHeader("Aiksaurus.h")): + aik_location = '' +elif (conf.CheckCXXHeader("Aiksaurus/Aiksaurus.h")): + aik_location = '' +else: + aik_location = '' + +# determine headers to use +spell_opt = ARGUMENTS.get('spell', 'auto') +env['USE_ASPELL'] = False +env['USE_PSPELL'] = False +env['USE_ISPELL'] = False +if spell_opt in ['auto', 'aspell'] and conf.CheckLib(aspell_lib): + spell_engine = 'USE_ASPELL' +elif spell_opt in ['auto', 'pspell'] and conf.CheckLib('pspell'): + spell_engine = 'USE_PSPELL' +elif spell_opt in ['auto', 'ispell'] and conf.CheckLib('ispell'): + spell_engine = 'USE_ISPELL' +else: + spell_engine = None - if spell_engine is not None: - env[spell_engine] = True - else: - if spell_opt == 'auto': - print "Warning: Can not locate any spell checker" - elif spell_opt != 'no': - print "Warning: Can not locate specified spell checker:", spell_opt - Exit(1) +if spell_engine is not None: + env[spell_engine] = True +else: + if spell_opt == 'auto': + print "Warning: Can not locate any spell checker" + elif spell_opt != 'no': + print "Warning: Can not locate specified spell checker:", spell_opt + Exit(1) - # check arg types of select function - (select_arg1, select_arg234, select_arg5) = conf.CheckSelectArgType() +# check arg types of select function +(select_arg1, select_arg234, select_arg5) = conf.CheckSelectArgType() - # - # create config.h - result = utils.createConfigFile(conf, - config_file = config_h, - config_pre = '''/* config.h. Generated by SCons. */ +# check the size of wchar_t +sizeof_wchar_t = conf.CheckSizeOfWChar() +# something wrong +if sizeof_wchar_t == 0: + print 'Error: Can not determine the size of wchar_t.' + Exit(1) + +# +# create config.h +result = utils.createConfigFile(conf, + config_file = config_h, + config_pre = '''/* config.h. Generated by SCons. */ /* -*- C++ -*- */ /* @@ -966,139 +967,159 @@ if not fast_start or not os.path.isfile(boost_config_h) \ #ifndef _CONFIG_H #define _CONFIG_H ''', - headers = [ - ('io.h', 'HAVE_IO_H', 'c'), - ('limits.h', 'HAVE_LIMITS_H', 'c'), - ('locale.h', 'HAVE_LOCALE_H', 'c'), - ('process.h', 'HAVE_PROCESS_H', 'c'), - ('stdlib.h', 'HAVE_STDLIB_H', 'c'), - ('sys/stat.h', 'HAVE_SYS_STAT_H', 'c'), - ('sys/time.h', 'HAVE_SYS_TIME_H', 'c'), - ('sys/types.h', 'HAVE_SYS_TYPES_H', 'c'), - ('sys/utime.h', 'HAVE_SYS_UTIME_H', 'c'), - ('sys/socket.h', 'HAVE_SYS_SOCKET_H', 'c'), - ('unistd.h', 'HAVE_UNISTD_H', 'c'), - ('utime.h', 'HAVE_UTIME_H', 'c'), - ('direct.h', 'HAVE_DIRECT_H', 'c'), - ('istream', 'HAVE_ISTREAM', 'cxx'), - ('ios', 'HAVE_IOS', 'cxx'), - ], - functions = [ - ('open', 'HAVE_OPEN', None), - ('close', 'HAVE_CLOSE', None), - ('popen', 'HAVE_POPEN', None), - ('pclose', 'HAVE_PCLOSE', None), - ('_open', 'HAVE__OPEN', None), - ('_close', 'HAVE__CLOSE', None), - ('_popen', 'HAVE__POPEN', None), - ('_pclose', 'HAVE__PCLOSE', None), - ('getpid', 'HAVE_GETPID', None), - ('_getpid', 'HAVE__GETPID', None), - ('mkdir', 'HAVE_MKDIR', None), - ('_mkdir', 'HAVE__MKDIR', None), - ('mktemp', 'HAVE_MKTEMP', None), - ('mkstemp', 'HAVE_MKSTEMP', None), - ('strerror', 'HAVE_STRERROR', None), - ('count', 'HAVE_STD_COUNT', ''' + headers = [ + ('io.h', 'HAVE_IO_H', 'c'), + ('limits.h', 'HAVE_LIMITS_H', 'c'), + ('locale.h', 'HAVE_LOCALE_H', 'c'), + ('process.h', 'HAVE_PROCESS_H', 'c'), + ('stdlib.h', 'HAVE_STDLIB_H', 'c'), + ('sys/stat.h', 'HAVE_SYS_STAT_H', 'c'), + ('sys/time.h', 'HAVE_SYS_TIME_H', 'c'), + ('sys/types.h', 'HAVE_SYS_TYPES_H', 'c'), + ('sys/utime.h', 'HAVE_SYS_UTIME_H', 'c'), + ('sys/socket.h', 'HAVE_SYS_SOCKET_H', 'c'), + ('unistd.h', 'HAVE_UNISTD_H', 'c'), + ('utime.h', 'HAVE_UTIME_H', 'c'), + ('direct.h', 'HAVE_DIRECT_H', 'c'), + ('istream', 'HAVE_ISTREAM', 'cxx'), + ('ios', 'HAVE_IOS', 'cxx'), + ], + functions = [ + ('open', 'HAVE_OPEN', None), + ('chmod', 'HAVE_CHMOD', None), + ('close', 'HAVE_CLOSE', None), + ('popen', 'HAVE_POPEN', None), + ('pclose', 'HAVE_PCLOSE', None), + ('_open', 'HAVE__OPEN', None), + ('_close', 'HAVE__CLOSE', None), + ('_popen', 'HAVE__POPEN', None), + ('_pclose', 'HAVE__PCLOSE', None), + ('getpid', 'HAVE_GETPID', None), + ('_getpid', 'HAVE__GETPID', None), + ('mkdir', 'HAVE_MKDIR', None), + ('_mkdir', 'HAVE__MKDIR', None), + ('mktemp', 'HAVE_MKTEMP', None), + ('mkstemp', 'HAVE_MKSTEMP', None), + ('strerror', 'HAVE_STRERROR', None), + ('count', 'HAVE_STD_COUNT', ''' #include int count() { - char a[] = "hello"; - return std::count(a, a+5, 'l'); +char a[] = "hello"; +return std::count(a, a+5, 'l'); } '''), - ('getcwd', 'HAVE_GETCWD', None), - ('setenv', 'HAVE_SETENV', None), - ('putenv', 'HAVE_PUTENV', None), - ('fcntl', 'HAVE_FCNTL', None), - ], - types = [ - ('std::istreambuf_iterator', 'HAVE_DECL_ISTREAMBUF_ITERATOR', - '#include \n#include ') - ], - libs = [ - ('gdi32', 'HAVE_LIBGDI32'), - (('iconv', 'libiconv'), 'HAVE_ICONV', 'ICONV_LIB'), - (('Aiksaurus', 'libAiksaurus'), 'HAVE_LIBAIKSAURUS', 'AIKSAURUS_LIB'), - ], - custom_tests = [ - (conf.CheckType('pid_t', includes='#include '), - 'HAVE_PID_T', - 'Define is sys/types.h does not have pid_t', - '', - '#define pid_t int', - ), - (conf.CheckCXXGlobalCstd(), - 'CXX_GLOBAL_CSTD', - 'Define if your C++ compiler puts C library functions in the global namespace' - ), - (conf.CheckMkdirOneArg(), - 'MKDIR_TAKES_ONE_ARG', - 'Define if mkdir takes only one argument.' - ), - (conf.CheckLC_MESSAGES(), - 'HAVE_LC_MESSAGES', - 'Define if your file defines LC_MESSAGES.' - ), - (devel_version, 'DEVEL_VERSION', 'Whether or not a development version'), - (env['nls'], - 'ENABLE_NLS', - "Define to 1 if translation of program messages to the user's native anguage is requested.", - ), - (env['nls'] and not included_gettext, - 'HAVE_GETTEXT', - 'Define to 1 if using system gettext library' - ), - (env.has_key('warnings') and env['warnings'], - 'WITH_WARNINGS', - 'Define this if you want to see the warning directives put here and there by the developpers to get attention' - ), - (env.has_key('concept_checks') and env['concept_checks'], - '_GLIBCXX_CONCEPT_CHECKS', - 'libstdc++ concept checking' - ), - (env.has_key('stdlib_debug') and env['stdlib_debug'], - '_GLIBCXX_DEBUG', - 'libstdc++ debug mode' - ), - (env.has_key('stdlib_debug') and env['stdlib_debug'], - '_GLIBCXX_DEBUG_PEDANTIC', - 'libstdc++ pedantic debug mode' - ), - (os.name != 'nt', 'BOOST_POSIX', - 'Indicates to boost which API to use (posix or windows).' - ), - (spell_engine is not None, spell_engine, - 'Spell engine to use' - ), - ], - extra_items = [ - ('#define PACKAGE "%s%s"' % (package, program_suffix), - 'Name of package'), - ('#define PACKAGE_BUGREPORT "%s"' % package_bugreport, - 'Define to the address where bug reports for this package should be sent.'), - ('#define PACKAGE_NAME "%s"' % package_name, - 'Define to the full name of this package.'), - ('#define PACKAGE_STRING "%s"' % package_string, - 'Define to the full name and version of this package.'), - ('#define PACKAGE_TARNAME "%s"' % package_tarname, - 'Define to the one symbol short name of this package.'), - ('#define PACKAGE_VERSION "%s"' % package_version, - 'Define to the version of this package.'), - ('#define BOOST_ALL_NO_LIB 1', - 'disable automatic linking of boost libraries.'), - ('#define USE_%s_PACKAGING 1' % packaging_method.upper(), - 'Packaging method'), - ('#define AIKSAURUS_H_LOCATION ' + aik_location, - 'Aiksaurus include file'), - ('#define SELECT_TYPE_ARG1 %s' % select_arg1, - "Define to the type of arg 1 for `select'."), - ('#define SELECT_TYPE_ARG234 %s' % select_arg234, - "Define to the type of arg 2, 3, 4 for `select'."), - ('#define SELECT_TYPE_ARG5 %s' % select_arg5, - "Define to the type of arg 5 for `select'."), - ], - config_post = '''/************************************************************ + ('getcwd', 'HAVE_GETCWD', None), + ('setenv', 'HAVE_SETENV', None), + ('putenv', 'HAVE_PUTENV', None), + ('fcntl', 'HAVE_FCNTL', None), + ], + types = [ + ('std::istreambuf_iterator', 'HAVE_DECL_ISTREAMBUF_ITERATOR', + '#include \n#include '), + ('wchar_t', 'HAVE_WCHAR_T', None), + ('mode_t', 'HAVE_MODE_T', "#include "), + ], + libs = [ + ('gdi32', 'HAVE_LIBGDI32'), + (('Aiksaurus', 'libAiksaurus'), 'HAVE_LIBAIKSAURUS', 'AIKSAURUS_LIB'), + ], + custom_tests = [ + (conf.CheckType('pid_t', includes='#include '), + 'HAVE_PID_T', + 'Define is sys/types.h does not have pid_t', + '', + '#define pid_t int', + ), + (conf.CheckCXXGlobalCstd(), + 'CXX_GLOBAL_CSTD', + 'Define if your C++ compiler puts C library functions in the global namespace' + ), + (conf.CheckMkdirOneArg(), + 'MKDIR_TAKES_ONE_ARG', + 'Define if mkdir takes only one argument.' + ), + (conf.CheckIconvConst(), + 'ICONV_CONST', + 'Define as const if the declaration of iconv() needs const.', + '#define ICONV_CONST const', + '#define ICONV_CONST', + ), + (conf.CheckLC_MESSAGES(), + 'HAVE_LC_MESSAGES', + 'Define if your file defines LC_MESSAGES.' + ), + (devel_version, 'DEVEL_VERSION', 'Whether or not a development version'), + (env['nls'], + 'ENABLE_NLS', + "Define to 1 if translation of program messages to the user's native anguage is requested.", + ), + (env['nls'] and not included_gettext, + 'HAVE_GETTEXT', + 'Define to 1 if using system gettext library' + ), + (env.has_key('warnings') and env['warnings'], + 'WITH_WARNINGS', + 'Define this if you want to see the warning directives put here and there by the developpers to get attention' + ), + (env.has_key('concept_checks') and env['concept_checks'], + '_GLIBCXX_CONCEPT_CHECKS', + 'libstdc++ concept checking' + ), + (env.has_key('stdlib_debug') and env['stdlib_debug'], + '_GLIBCXX_DEBUG', + 'libstdc++ debug mode' + ), + (env.has_key('stdlib_debug') and env['stdlib_debug'], + '_GLIBCXX_DEBUG_PEDANTIC', + 'libstdc++ pedantic debug mode' + ), + (os.name != 'nt', 'BOOST_POSIX', + 'Indicates to boost < 1.34 which API to use (posix or windows).' + ), + (os.name != 'nt', 'BOOST_POSIX_API', + 'Indicates to boost 1.34 which API to use (posix or windows).' + ), + (os.name != 'nt', 'BOOST_POSIX_PATH', + 'Indicates to boost 1.34 which path style to use (posix or windows).' + ), + (spell_engine is not None, spell_engine, + 'Spell engine to use' + ), + # we need to know the byte order for unicode conversions + (sys.byteorder == 'big', 'WORDS_BIGENDIAN', + 'Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX).' + ), + ], + extra_items = [ + ('#define PACKAGE "%s%s"' % (package, program_suffix), + 'Name of package'), + ('#define PACKAGE_BUGREPORT "%s"' % package_bugreport, + 'Define to the address where bug reports for this package should be sent.'), + ('#define PACKAGE_NAME "%s"' % package_name, + 'Define to the full name of this package.'), + ('#define PACKAGE_STRING "%s"' % package_string, + 'Define to the full name and version of this package.'), + ('#define PACKAGE_TARNAME "%s"' % package_tarname, + 'Define to the one symbol short name of this package.'), + ('#define PACKAGE_VERSION "%s"' % package_version, + 'Define to the version of this package.'), + ('#define BOOST_ALL_NO_LIB 1', + 'disable automatic linking of boost libraries.'), + ('#define USE_%s_PACKAGING 1' % packaging_method.upper(), + 'Packaging method'), + ('#define AIKSAURUS_H_LOCATION ' + aik_location, + 'Aiksaurus include file'), + ('#define SELECT_TYPE_ARG1 %s' % select_arg1, + "Define to the type of arg 1 for `select'."), + ('#define SELECT_TYPE_ARG234 %s' % select_arg234, + "Define to the type of arg 2, 3, 4 for `select'."), + ('#define SELECT_TYPE_ARG5 %s' % select_arg5, + "Define to the type of arg 5 for `select'."), + ('#define SIZEOF_WCHAR_T %d' % sizeof_wchar_t, + 'Define to be the size of type wchar_t'), + ], + config_post = '''/************************************************************ ** You should not need to change anything beyond this point */ #ifndef HAVE_STRERROR @@ -1121,30 +1142,28 @@ int mkstemp(char*); #endif ''' - ) +) - # these keys are needed in env - for key in ['USE_ASPELL', 'USE_PSPELL', 'USE_ISPELL', 'HAVE_FCNTL',\ - 'HAVE_ICONV', 'HAVE_LIBGDI32', 'HAVE_LIBAIKSAURUS', - 'ICONV_LIB', 'AIKSAURUS_LIB']: - # USE_ASPELL etc does not go through result - if result.has_key(key): - env[key] = result[key] - env_cache[key] = env[key] +# these keys are needed in env +for key in ['USE_ASPELL', 'USE_PSPELL', 'USE_ISPELL', 'HAVE_FCNTL',\ + 'HAVE_LIBGDI32', 'HAVE_LIBAIKSAURUS', 'AIKSAURUS_LIB']: + # USE_ASPELL etc does not go through result + if result.has_key(key): + env[key] = result[key] +# +# if nls=yes and gettext=included, create intl/config.h +# intl/libintl.h etc +# +intl_config_h = os.path.join(env.Dir('$BUILDDIR/intl').path, 'config.h') +if env['nls'] and included_gettext: # - # if nls=yes and gettext=included, create intl/config.h - # intl/libintl.h etc + print "Creating %s..." % intl_config_h # - intl_config_h = os.path.join(env.Dir('$BUILDDIR/intl').path, 'config.h') - if env['nls'] and included_gettext: - # - print "Creating %s..." % intl_config_h - # - # create intl/config.h - result = utils.createConfigFile(conf, - config_file = intl_config_h, - config_pre = '''/* intl/config.h. Generated by SCons. */ + # create intl/config.h + result = utils.createConfigFile(conf, + config_file = intl_config_h, + config_pre = '''/* intl/config.h. Generated by SCons. */ /* -*- C++ -*- */ /* @@ -1161,110 +1180,95 @@ int mkstemp(char*); #ifndef _CONFIG_H #define _CONFIG_H ''', - headers = [ - ('unistd.h', 'HAVE_UNISTD_H', 'c'), - ('inttypes.h', 'HAVE_INTTYPES_H', 'c'), - ('string.h', 'HAVE_STRING_H', 'c'), - ('strings.h', 'HAVE_STRINGS_H', 'c'), - ('argz.h', 'HAVE_ARGZ_H', 'c'), - ('limits.h', 'HAVE_LIMITS_H', 'c'), - ('alloca.h', 'HAVE_ALLOCA_H', 'c'), - ('stddef.h', 'HAVE_STDDEF_H', 'c'), - ('stdint.h', 'HAVE_STDINT_H', 'c'), - ('sys/param.h', 'HAVE_SYS_PARAM_H', 'c'), - ], - functions = [ - ('getcwd', 'HAVE_GETCWD', None), - ('stpcpy', 'HAVE_STPCPY', None), - ('strcasecmp', 'HAVE_STRCASECMP', None), - ('strdup', 'HAVE_STRDUP', None), - ('strtoul', 'HAVE_STRTOUL', None), - ('alloca', 'HAVE_ALLOCA', None), - ('__fsetlocking', 'HAVE___FSETLOCKING', None), - ('mempcpy', 'HAVE_MEMPCPY', None), - ('__argz_count', 'HAVE___ARGZ_COUNT', None), - ('__argz_next', 'HAVE___ARGZ_NEXT', None), - ('__argz_stringify', 'HAVE___ARGZ_STRINGIFY', None), - ('setlocale', 'HAVE_SETLOCALE', None), - ('tsearch', 'HAVE_TSEARCH', None), - ('getegid', 'HAVE_GETEGID', None), - ('getgid', 'HAVE_GETGID', None), - ('getuid', 'HAVE_GETUID', None), - ('wcslen', 'HAVE_WCSLEN', None), - ('asprintf', 'HAVE_ASPRINTF', None), - ('wprintf', 'HAVE_WPRINTF', None), - ('snprintf', 'HAVE_SNPRINTF', None), - ('printf', 'HAVE_POSIX_PRINTF', None), - ('fcntl', 'HAVE_FCNTL', None), - ], - types = [ - ('intmax_t', 'HAVE_INTMAX_T', None), - ('long double', 'HAVE_LONG_DOUBLE', None), - ('long long', 'HAVE_LONG_LONG', None), - ('wchar_t', 'HAVE_WCHAR_T', None), - ('wint_t', 'HAVE_WINT_T', None), - ('uintmax_t', 'HAVE_INTTYPES_H_WITH_UINTMAX', '#include '), - ('uintmax_t', 'HAVE_STDINT_H_WITH_UINTMAX', '#include '), - ], - libs = [ - (('iconv', 'libiconv'), 'HAVE_ICONV', 'ICONV_LIB'), - ('c', 'HAVE_LIBC'), - ], - custom_tests = [ - (conf.CheckLC_MESSAGES(), - 'HAVE_LC_MESSAGES', - 'Define if your file defines LC_MESSAGES.' - ), - (conf.CheckIconvConst(), - 'ICONV_CONST', - 'Define as const if the declaration of iconv() needs const.', - '#define ICONV_CONST', - '#define ICONV_CONST const', - ), - (conf.CheckType('intmax_t', includes='#include ') or \ - conf.CheckType('intmax_t', includes='#include '), - 'HAVE_INTMAX_T', - "Define to 1 if you have the `intmax_t' type." - ), - (env.has_key('nls') and env['nls'], - 'ENABLE_NLS', - "Define to 1 if translation of program messages to the user's native anguage is requested.", - ), - ], - config_post = '#endif' - ) + headers = [ + ('unistd.h', 'HAVE_UNISTD_H', 'c'), + ('inttypes.h', 'HAVE_INTTYPES_H', 'c'), + ('string.h', 'HAVE_STRING_H', 'c'), + ('strings.h', 'HAVE_STRINGS_H', 'c'), + ('argz.h', 'HAVE_ARGZ_H', 'c'), + ('limits.h', 'HAVE_LIMITS_H', 'c'), + ('alloca.h', 'HAVE_ALLOCA_H', 'c'), + ('stddef.h', 'HAVE_STDDEF_H', 'c'), + ('stdint.h', 'HAVE_STDINT_H', 'c'), + ('sys/param.h', 'HAVE_SYS_PARAM_H', 'c'), + ], + functions = [ + ('getcwd', 'HAVE_GETCWD', None), + ('stpcpy', 'HAVE_STPCPY', None), + ('strcasecmp', 'HAVE_STRCASECMP', None), + ('strdup', 'HAVE_STRDUP', None), + ('strtoul', 'HAVE_STRTOUL', None), + ('alloca', 'HAVE_ALLOCA', None), + ('__fsetlocking', 'HAVE___FSETLOCKING', None), + ('mempcpy', 'HAVE_MEMPCPY', None), + ('__argz_count', 'HAVE___ARGZ_COUNT', None), + ('__argz_next', 'HAVE___ARGZ_NEXT', None), + ('__argz_stringify', 'HAVE___ARGZ_STRINGIFY', None), + ('setlocale', 'HAVE_SETLOCALE', None), + ('tsearch', 'HAVE_TSEARCH', None), + ('getegid', 'HAVE_GETEGID', None), + ('getgid', 'HAVE_GETGID', None), + ('getuid', 'HAVE_GETUID', None), + ('wcslen', 'HAVE_WCSLEN', None), + ('asprintf', 'HAVE_ASPRINTF', None), + ('wprintf', 'HAVE_WPRINTF', None), + ('snprintf', 'HAVE_SNPRINTF', None), + ('printf', 'HAVE_POSIX_PRINTF', None), + ('fcntl', 'HAVE_FCNTL', None), + ], + types = [ + ('intmax_t', 'HAVE_INTMAX_T', None), + ('long double', 'HAVE_LONG_DOUBLE', None), + ('long long', 'HAVE_LONG_LONG', None), + ('wchar_t', 'HAVE_WCHAR_T', None), + ('wint_t', 'HAVE_WINT_T', None), + ('uintmax_t', 'HAVE_INTTYPES_H_WITH_UINTMAX', '#include '), + ('uintmax_t', 'HAVE_STDINT_H_WITH_UINTMAX', '#include '), + ], + libs = [ + ('c', 'HAVE_LIBC'), + ], + custom_tests = [ + (conf.CheckLC_MESSAGES(), + 'HAVE_LC_MESSAGES', + 'Define if your file defines LC_MESSAGES.' + ), + (conf.CheckIconvConst(), + 'ICONV_CONST', + 'Define as const if the declaration of iconv() needs const.', + '#define ICONV_CONST const', + '#define ICONV_CONST', + ), + (conf.CheckType('intmax_t', includes='#include ') or \ + conf.CheckType('intmax_t', includes='#include '), + 'HAVE_INTMAX_T', + "Define to 1 if you have the `intmax_t' type." + ), + (env.has_key('nls') and env['nls'], + 'ENABLE_NLS', + "Define to 1 if translation of program messages to the user's native anguage is requested.", + ), + ], + extra_items = [ + ('#define HAVE_ICONV 1', 'Define if iconv or libiconv is found'), + ('#define SIZEOF_WCHAR_T %d' % sizeof_wchar_t, + 'Define to be the size of type wchar_t'), + ], + config_post = '#endif' + ) - # these keys are needed in env - for key in ['HAVE_ASPRINTF', 'HAVE_WPRINTF', 'HAVE_SNPRINTF', \ - 'HAVE_POSIX_PRINTF', 'HAVE_ICONV', 'HAVE_LIBC']: - # USE_ASPELL etc does not go through result - if result.has_key(key): - env[key] = result[key] - env_cache[key] = env[key] + # these keys are needed in env + for key in ['HAVE_ASPRINTF', 'HAVE_WPRINTF', 'HAVE_SNPRINTF', \ + 'HAVE_POSIX_PRINTF', 'HAVE_LIBC']: + # USE_ASPELL etc does not go through result + if result.has_key(key): + env[key] = result[key] -else: - # - # this comes as a big surprise, without this line - # (doing nothing obvious), adding fast_start=yes - # to a build with fast_start=no will result in a rebuild - # Note that the exact header file to check does not matter - conf.CheckCHeader('io.h') - # only a few variables need to be rescanned - for key in ['USE_ASPELL', 'USE_PSPELL', 'USE_ISPELL', 'HAVE_FCNTL',\ - 'HAVE_ICONV', 'HAVE_LIBGDI32', 'HAVE_LIBAIKSAURUS', - 'ICONV_LIB', 'AIKSAURUS_LIB']: - env[key] = env_cache[key] - # - # nls related keys - if env['nls'] and included_gettext: - # only a few variables need to be rescanned - for key in ['HAVE_ASPRINTF', 'HAVE_WPRINTF', 'HAVE_SNPRINTF', \ - 'HAVE_POSIX_PRINTF', 'HAVE_ICONV', 'HAVE_LIBC']: - env[key] = env_cache[key] # this looks misplaced, but intl/libintl.h is needed by src/message.C if env['nls'] and included_gettext: # libgnuintl.h.in => libintl.h + env.Depends('$TOP_SRCDIR/intl/libintl.h', '$BUILDDIR/intl/config.h') env.substFile('$BUILDDIR/intl/libintl.h', '$TOP_SRCDIR/intl/libgnuintl.h.in') env.Command('$BUILDDIR/intl/libgnuintl.h', '$BUILDDIR/intl/libintl.h', [Copy('$TARGET', '$SOURCE')]) @@ -1282,11 +1286,7 @@ env = conf.Finish() # # NOTE: Tool('qt') or Tool('qt4') will be loaded later # in their respective directory and specialized env. -if frontend == 'qt3': - # note: env.Tool('qt') my set QT_LIB to qt - qt_libs = ['qt-mt'] - frontend_libs = ['qt-mt'] -elif frontend == 'qt4': +if frontend == 'qt4': qt_libs = ['QtCore', 'QtGui'] # set the right lib names if platform_name == 'win32': @@ -1302,22 +1302,25 @@ elif frontend == 'qt4': frontend_libs = [x + qt_lib_suffix for x in qt_libs] +if env['ICONV_LIB'] is None: + system_libs = [] +else: + system_libs = [env['ICONV_LIB']] if platform_name in ['win32', 'cygwin']: # the final link step needs stdc++ to succeed under mingw # FIXME: shouldn't g++ automatically link to stdc++? if use_vc: - system_libs = ['shlwapi', 'shell32', 'advapi32', 'zdll'] + system_libs += ['ole32', 'shlwapi', 'shell32', 'advapi32', 'zdll'] else: - system_libs = ['shlwapi', 'stdc++', 'z'] + system_libs += ['shlwapi', 'stdc++', 'z'] elif platform_name == 'cygwin' and env['X11']: - system_libs = ['GL', 'Xmu', 'Xi', 'Xrender', 'Xrandr', 'Xcursor', - 'Xft', 'freetype', 'fontconfig', 'Xext', 'X11', 'SM', 'ICE', 'resolv', - 'pthread', 'z'] + system_libs += ['GL', 'Xmu', 'Xi', 'Xrender', 'Xrandr', + 'Xcursor', 'Xft', 'freetype', 'fontconfig', 'Xext', 'X11', 'SM', 'ICE', + 'resolv', 'pthread', 'z'] else: - system_libs = ['z'] + system_libs += ['z'] libs = [ - ('HAVE_ICONV', env['ICONV_LIB']), ('HAVE_LIBGDI32', 'gdi32'), ('HAVE_LIBAIKSAURUS', env['AIKSAURUS_LIB']), ('USE_ASPELL', aspell_lib), @@ -1368,7 +1371,7 @@ env['CPPPATH'].remove(qt_inc_path) # for details # if platform_name == 'cygwin': - ld_script_path = '/usr/lib/qt3/mkspecs/cygwin-g++' + ld_script_path = '/tmp' ld_script = utils.installCygwinLDScript(ld_script_path) env.AppendUnique(LINKFLAGS = ['-Wl,--enable-runtime-pseudo-reloc', '-Wl,--script,%s' % ld_script, '-Wl,-s']) @@ -1412,14 +1415,13 @@ Frontend: frontend, packaging_method, prefix, env['LYX_DIR']) -if frontend in ['qt3', 'qt4']: +if frontend in ['qt4']: env['VERSION_INFO'] += ''' include dir: %s library dir: %s X11: %s ''' % (qt_inc_path, qt_lib_path, env['X11']) -if not fast_start: - print env['VERSION_INFO'] +print env['VERSION_INFO'] # # Mingw command line may be too short for our link usage, @@ -1445,10 +1447,6 @@ if logfile != '' or platform_name == 'win32': # -h will print out help info Help(opts.GenerateHelpText(env)) -# save environment settings (for fast_start option) -cache_file = open(env_cache_file, 'w') -cPickle.dump(env_cache, cache_file) -cache_file.close() #---------------------------------------------------------- @@ -1499,7 +1497,6 @@ build_tex2lyx = True in ['tex2lyx' in x for x in targets] \ or 'install' in targets or 'all' in targets build_lyxbase = build_lyx or 'lyxbase' in targets build_po = 'po' in targets or 'install' in targets or 'all' 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_msvs_projects = use_vc and 'msvs_projects' in targets @@ -1526,7 +1523,6 @@ if rebuild_targets is not None: build_graphics = ifBuildLib('graphics', 'graphics', build_graphics) build_controllers = ifBuildLib('controllers', 'controllers', build_controllers) build_lyxbase = ifBuildLib('lyxbase', 'lyxbase_pre', build_lyxbase) - build_qt3 = ifBuildLib('qt3', 'qt3', build_qt3) build_qt4 = ifBuildLib('qt4', 'qt4', build_qt4) # def ifBuildApp(name, appname, old_value): @@ -1542,10 +1538,8 @@ if rebuild_targets is not None: build_tex2lyx = ifBuildApp('tex2lyx', 'tex2lyx', build_tex2lyx) build_client = ifBuildApp('client', 'lyxclient', build_client) -# sync frontend and frontend (maybe build qt4 with frontend=qt3) -if build_qt3: - frontend = 'qt3' -elif build_qt4: +# sync frontend and frontend (?) +if build_qt4: frontend = 'qt4' @@ -1625,6 +1619,7 @@ if build_support: # print "Processing files in src/support..." + env.Depends('$BUILDDIR/common/support/package.C', '$BUILDDIR/common/config.h') env.substFile('$BUILDDIR/common/support/package.C', '$TOP_SRCDIR/src/support/package.C.in') support = env.StaticLibrary( @@ -1700,50 +1695,11 @@ if build_controllers: # -# src/frontend/qt3/4 +# src/frontend/qt4 # -if build_qt3 or build_qt4: +if build_qt4: env.BuildDir('$BUILDDIR/$frontend', '$TOP_SRCDIR/src/frontend/$frontend', duplicate = 0) -if build_qt3: - print "Processing files in src/frontends/qt3..." - - qt3env = env.Copy() - # disable auto scan to speed up non build time - qt3env['QT_AUTOSCAN'] = 0 - qt3env['QT_MOCHPREFIX'] = '' - - # load qt3 tools - qt3env.Tool('qt') - - qt3env.AppendUnique(CPPPATH = [ - '$BUILDDIR/common', - '$BUILDDIR/common/images', - '$BUILDDIR/common/frontends', - '$BUILDDIR/common/frontends/qt3', - '$BUILDDIR/common/frontends/controllers', - qt_inc_path] - ) - - qt3_moc_files = ["$BUILDDIR/common/frontends/qt3/%s" % x for x in src_frontends_qt3_moc_files] - - # 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_uiced_files = [qt3env.Uic('$BUILDDIR/common/frontends/qt3/ui/'+x) for x in \ - src_frontends_qt3_ui_files] - - qt3_uiced_cc_files = [] - for x in qt3_uiced_files: - qt3_uiced_cc_files.extend(x[1:]) - - qt3 = qt3env.StaticLibrary( - target = '$LOCALLIBPATH/qt3', - source = ['$BUILDDIR/common/frontends/qt3/%s' % x for x in src_frontends_qt3_files] \ - + qt3_moced_files + qt3_uiced_cc_files - ) - Alias('qt3', qt3) - if build_qt4: print "Processing files in src/frontends/qt4..." @@ -1776,7 +1732,6 @@ if build_qt4: '-DQT_CLEAN_NAMESPACE', '-DQT_GENUINE_STR', '-DQT_NO_STL', - '-DQT3_SUPPORT', '-DQT_NO_KEYWORDS', ] ) @@ -1788,7 +1743,7 @@ if build_qt4: # Compile resources # resources = [qt4env.Uic4(x.split('.')[0]) for x in \ - src_frontends_qt4_ui_files] + ["$BUILDDIR/common/frontends/qt4/ui/%s" % x for x in src_frontends_qt4_ui_files]] # # moc qt4_moc_files, the moced files are included in the original files @@ -1841,14 +1796,14 @@ if build_tex2lyx: tex2lyx_env.Prepend(CPPPATH = ['$BUILDDIR/common/tex2lyx']) tex2lyx_env.AppendUnique(LIBPATH = ['#$LOCALLIBPATH']) - for file in ['FloatList.C', 'Floating.C', 'counters.C', 'lyxlayout.h', 'lyxlayout.C', + for file in ['FloatList.C', 'Floating.C', 'counters.C', 'lyxlayout.h', 'lyxlayout.C', 'lyxtextclass.h', 'lyxtextclass.C', 'lyxlex.C', 'lyxlex_pimpl.C']: env.Command('$BUILDDIR/common/tex2lyx/'+file, '$TOP_SRCDIR/src/'+file, [Copy('$TARGET', '$SOURCE')]) tex2lyx = tex2lyx_env.Program( target = '$BUILDDIR/common/tex2lyx/tex2lyx', - LIBS = ['support'] + boost_libraries + system_libs, + LIBS = ['support'] + boost_libraries + intl_libs + system_libs, source = ['$BUILDDIR/common/tex2lyx/%s' % x for x in src_tex2lyx_files] ) Alias('tex2lyx', env.Command(os.path.join('$BUILDDIR', os.path.split(str(tex2lyx[0]))[1]), @@ -1865,14 +1820,15 @@ if build_lyxbase: # print "Processing files in src..." + env.Depends('$BUILDDIR/common/version.C', '$BUILDDIR/common/config.h') env.substFile('$BUILDDIR/common/version.C', '$TOP_SRCDIR/src/version.C.in') if env.has_key('USE_ASPELL') and env['USE_ASPELL']: - lyx_post_source.append('aspell.C') + src_post_files.append('aspell.C') elif env.has_key('USE_PSPELL') and env['USE_PSPELL']: - lyx_post_source.append('pspell.C') + src_post_files.append('pspell.C') elif env.has_key('USE_ISPELL') and env['USE_ISPELL']: - lyx_post_source.append('ispell.C') + src_post_files.append('ispell.C') # msvc requires at least one source file with main() # so I exclude main.C from lyxbase @@ -1912,10 +1868,6 @@ if build_lyx: socket_libs + system_libs ) - # [/path/to/lyx.ext] => lyx-qt3.ext - target_name = os.path.split(str(lyx[0]))[1].replace('lyx', 'lyx-%s' % frontend) - Alias('lyx', env.Command(os.path.join('$BUILDDIR', target_name), lyx, - [Copy('$TARGET', '$SOURCE')])) Alias('lyx', lyx) else: # define lyx even if lyx is not built with rebuild=no @@ -1938,9 +1890,9 @@ if build_msvs_projects: the full path to start debug them. ''' if rebuildTargetOnly: - cmds = 'fast_start=yes rebuild='+target + cmds = 'rebuild='+target else: - cmds = 'fast_start=yes' + cmds = '' if full_target is None: build_target = target else: @@ -1985,10 +1937,6 @@ if build_msvs_projects: 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 = ['$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 = ['$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]) @@ -2005,49 +1953,26 @@ if build_msvs_projects: # 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': - build_project('lyx', - src = ['$TOP_SRCDIR/src/%s' % x for x in src_pre_files + src_post_files] + \ - ['$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, - full_target = File(env.subst('$BUILDDIR/$frontend/lyx$PROGSUFFIX')).abspath) - else: - build_project('lyx', - src = ['$TOP_SRCDIR/src/%s' % x for x in src_pre_files + src_post_files] + \ - ['$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, - full_target = File(env.subst('$BUILDDIR/$frontend/lyx$PROGSUFFIX')).abspath) + build_project('lyx', + src = ['$TOP_SRCDIR/src/%s' % x for x in src_pre_files + src_post_files] + \ + ['$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, + full_target = File(env.subst('$BUILDDIR/$frontend/lyx$PROGSUFFIX')).abspath) if build_po: @@ -2093,7 +2018,7 @@ if 'install' in targets: def joinPaths(path1, path2): ''' join path1 and path2, do not use os.path.join because under window, c:\destdir\d:\program is invalid ''' - if path1 is None: + if path1 == '': return os.path.normpath(path2) # separate drive letter (drive, path) = os.path.splitdrive(os.path.normpath(path2)) @@ -2101,7 +2026,7 @@ if 'install' in targets: return os.path.join(os.path.normpath(path1), path[1:]) # # install to dest_dir/prefix - dest_dir = env.get('DESTDIR', None) + dest_dir = env.get('DESTDIR', '') dest_prefix_dir = joinPaths(dest_dir, env.Dir(prefix).abspath) # create the directory if needed if not os.path.isdir(dest_prefix_dir): @@ -2133,30 +2058,23 @@ if 'install' in targets: else: version_suffix = '' # - # install lyx - target_name = os.path.split(str(lyx[0]))[1].replace('lyx', 'lyx%s' % version_suffix) - target = os.path.join(bin_dest_dir, target_name) - env.InstallAs(target, lyx) - Alias('install', target) - # install lyx as lyx-qt3 - target_name = os.path.split(str(lyx[0]))[1].replace('lyx', 'lyx-%s%s' % (frontend, version_suffix)) - target = os.path.join(bin_dest_dir, target_name) - env.InstallAs(target, lyx) - Alias('install', target) - # - # install tex2lyx - target_name = os.path.split(str(tex2lyx[0]))[1].replace('tex2lyx', 'tex2lyx%s' % version_suffix) - target = os.path.join(bin_dest_dir, target_name) - env.InstallAs(target, tex2lyx) - Alias('install', target) - # - # install lyxclient, may not exist - if client != None: - target_name = os.path.split(str(client[0]))[1].replace('client', 'client%s' % version_suffix) + # install lyx, if in release mode, try to strip the binary + if env.has_key('STRIP') and env['STRIP'] is not None and mode != 'debug': + # create a builder to strip and install + env['BUILDERS']['StripInstallAs'] = Builder(action='$STRIP $SOURCE -o $TARGET') + + # install executables + for (name, obj) in (('lyx', lyx), ('tex2lyx', tex2lyx), ('client', client)): + if obj is None: + continue + target_name = os.path.split(str(obj[0]))[1].replace(name, '%s%s' % (name, version_suffix)) target = os.path.join(bin_dest_dir, target_name) - env.InstallAs(target, client) + if env['BUILDERS'].has_key('StripInstallAs'): + env.StripInstallAs(target, obj) + else: + env.InstallAs(target, obj) Alias('install', target) - # + # share/lyx dirs = [] for (dir,files) in [ @@ -2176,14 +2094,38 @@ if 'install' in targets: ('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 - if os.path.isfile(env.subst('$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) + + if platform_name == 'cygwin': + # cygwin packaging requires a file /usr/share/doc/Cygwin/foot-vendor-suffix.README + Cygwin_README = os.path.join(dest_prefix_dir, 'share', 'doc', 'Cygwin', + '%s-%s.README' % (package, package_cygwin_version)) + env.InstallAs(Cygwin_README, + os.path.join(env.subst('$TOP_SRCDIR'), 'README.cygwin')) + Alias('install', Cygwin_README) + # also a directory /usr/share/doc/lyx for README etc + Cygwin_Doc = os.path.join(dest_prefix_dir, 'share', 'doc', package) + env.Install(Cygwin_Doc, [os.path.join(env.subst('$TOP_SRCDIR'), x) for x in \ + ['INSTALL', 'README', 'README.Cygwin', 'RELEASE-NOTES', 'COPYING', 'ANNOUNCE']]) + Alias('install', Cygwin_Doc) + # cygwin fonts also need to be installed + Cygwin_fonts = os.path.join(share_dest_dir, 'fonts') + env.Install(Cygwin_fonts, + [env.subst('$TOP_SRCDIR/development/Win32/packaging/bakoma/%s' % file) \ + for file in win32_bakoma_fonts]) + Alias('install', Cygwin_fonts) + # we also need a post installation script + tmp_script = utils.installCygwinPostinstallScript('/tmp') + postinstall_path = os.path.join(dest_dir, 'etc', 'postinstall') + env.Install(postinstall_path, tmp_script) + Alias('install', postinstall_path) + + # subst and install lyx2lyx_version.py which is not in scons_manifest.py + env.Depends(share_dest_dir + '/lyx2lyx/lyx2lyx_version.py', '$BUILDDIR/common/config.h') + 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') + # man env.InstallAs(os.path.join(man_dest_dir, 'lyx' + version_suffix + '.1'), env.subst('$TOP_SRCDIR/lyx.man')) @@ -2197,7 +2139,7 @@ if 'install' in targets: # ru.gmo ==> ru/LC_MESSAGES/lyxSUFFIX.mo for gmo in gmo_files: lan = os.path.split(str(gmo))[1].split('.')[0] - dest_file = os.path.join(locale_dest_dir, lan, 'LC_MESSAGES', 'lyx' + version_suffix + '.mo') + dest_file = os.path.join(locale_dest_dir, lan, 'LC_MESSAGES', 'lyx' + program_suffix + '.mo') env.InstallAs(dest_file, gmo) Alias('install', dest_file)