Alias('boost', iostreams)
+if env['INCLUDED_GETTEXT'] or 'intl' in targets:
+ #
+ # intl
+ #
+ print "Processing files in intl"
+
+ env.BuildDir('$BUILDDIR/intl', '$TOP_SRC_DIR/intl', duplicate = 0)
+
+ intlenv = env.Copy()
+ # we need the original C compiler for these files
+ intlenv['CC'] = intlenv['C_COMPILER']
+ intlenv['CPPPATH'] += ['intl']
+
+ intlenv.Append(CCFLAGS = [
+ r'-DLOCALEDIR=\"' + env['LOCALE_DIR'] + r'\"',
+ r'-DLOCALE_ALIAS_PATH=\"' + env['LOCALE_DIR'] + r'\"',
+ r'-DLIBDIR=\"' + env['TOP_SRC_DIR'] + r'/lib\"',
+ '-DIN_LIBINTL',
+ '-DENABLE_RELOCATABLE=1',
+ '-DIN_LIBRARY',
+ r'-DINSTALLDIR=\"' + env['PREFIX'] + r'/lib\"',
+ '-DNO_XMALLOC',
+ '-Dset_relocation_prefix=libintl_set_relocation_prefix',
+ '-Drelocate=libintl_relocate',
+ '-DDEPENDS_ON_LIBICONV=1',
+ '-DHAVE_CONFIG_H'
+ ]
+ )
+
+ # libgnuintl.h.in => libintl.h
+ env.substFile('$TOP_SRC_DIR/intl/libintl.h', '$TOP_SRC_DIR/intl/libgnuintl.h.in')
+ env.Command('$TOP_SRC_DIR/intl/libgnuintl.h', '$TOP_SRC_DIR/intl/libintl.h',
+ [Copy('$TARGET', '$SOURCE')])
+
+ intl = intlenv.StaticLibrary(
+ target = '$LOCALLIBPATH/intl',
+ LIBS = ['c'],
+ source = ["$BUILDDIR/intl/%s" % x for x in Split('''
+ bindtextdom.c
+ dcgettext.c
+ dgettext.c
+ gettext.c
+ finddomain.c
+ loadmsgcat.c
+ localealias.c
+ textdomain.c
+ l10nflist.c
+ explodename.c
+ dcigettext.c
+ dcngettext.c
+ dngettext.c
+ ngettext.c
+ plural.c
+ plural-exp.c
+ localcharset.c
+ relocatable.c
+ localename.c
+ log.c
+ printf.c
+ osdep.c
+ os2compat.c
+ intl-compat.c
+ ''')]
+ )
+ Alias('intl', intl)
+
#
# Now, src code under src/
#
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')
''')]
# manually moc and uic files for better performance
- # (stop autoscan, 13:20s->12:50s :-)
- qt3_moced_files = [qt3env.Moc(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_ui_files]
qt3_uiced_cc_files = []
for x in qt3_uiced_files:
#
qt4_moced_files = [qt4env.Moc4(x.replace('.C', '_moc.cpp'), x.replace('.C', '.h')) for x in qt4_moc_files]
- # if the moced files are included in the .C file
- # the Flatten(...) part will not be needed
qt4 = qt4env.StaticLibrary(
target = '$LOCALLIBPATH/qt4',
LIBS = qt4env['QT_LIB'],
if env['HAVE_FCNTL']:
client = env.Program(
target = '$BUILDDIR/common/client/lyxclient',
- LIBS = env['BOOST_LIBRARIES'] + env['SOCKET_LIBS'] + ['supports'],
+ LIBS = ['supports'] + env['INTL_LIB'] + env['SYSTEM_LIBS'] +
+ env['SOCKET_LIBS'] + env['BOOST_LIBRARIES'],
source = ["$BUILDDIR/common/client/%s" % x for x in Split('''
boost.C
client.C
tex2lyx_env.Prepend(CPPPATH = ['$BUILDDIR/common/tex2lyx'])
tex2lyx_env.AppendUnique(LIBPATH = ['#$LOCALLIBPATH'])
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/FloatList.C', '$TOP_SRC_DIR/src/FloatList.C')
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/Floating.C', '$TOP_SRC_DIR/src/Floating.C')
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/counters.C', '$TOP_SRC_DIR/src/counters.C')
- # for some reason I do not know, I have to copy the header files as well.
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlayout.h', '$TOP_SRC_DIR/src/lyxlayout.h')
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlayout.C', '$TOP_SRC_DIR/src/lyxlayout.C')
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxtextclass.h', '$TOP_SRC_DIR/src/lyxtextclass.h')
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxtextclass.C', '$TOP_SRC_DIR/src/lyxtextclass.C')
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlex.C', '$TOP_SRC_DIR/src/lyxlex.C')
- tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlex_pimpl.C', '$TOP_SRC_DIR/src/lyxlex_pimpl.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_SRC_DIR/src/'+file,
+ [Copy('$TARGET', '$SOURCE')])
tex2lyx = tex2lyx_env.Program(
target = '$BUILDDIR/common/tex2lyx/tex2lyx',
] +
env['BOOST_LIBRARIES'] +
env['EXTRA_LIBS'] +
+ env['INTL_LIB'] +
env['SOCKET_LIBS'] +
env['SYSTEM_LIBS']
)
# others: $PREFIX/share/locale
locale_dir = env['LOCALE_DIR']
# do not install these files
- execlude_list = ['Makefile.am', 'Makefile.in', 'Makefile',
+ exclude_list = ['Makefile.am', 'Makefile.in', 'Makefile',
'lyx2lyx_version.py', '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 execlude_list, src)
+ 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)
return ins_dir
#
# executables (some of them may be none)
- env.Install(env['BIN_DIR'], filter(lambda x: x != None, [lyx, tex2lyx, client]))
- Alias('install', env['BIN_DIR'])
+ #
+ if env['ADD_SUFFIX_TO_EXECUTABLES']:
+ program_suffix = env['PROGRAM_SUFFIX']
+ else:
+ program_suffix = ''
+ #
+ # install lyx
+ target_name = os.path.split(str(lyx[0]))[1].replace('lyx', 'lyx%s' % program_suffix)
+ target = os.path.join(env['BIN_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, program_suffix))
+ target = os.path.join(env['BIN_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' % program_suffix)
+ target = os.path.join(env['BIN_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' % program_suffix)
+ target = os.path.join(env['BIN_DIR'], target_name)
+ env.InstallAs(target, client)
+ Alias('install', target)
#
# share/lyx
dirs = install(env['SHARE_DIR'],
Alias('install', [os.path.join(env['MAN_DIR'], x) for
x in ['lyx.1', 'tex2lyx.1', 'lyxclient.1']])
# locale files?
- # ru.gmo ==> ru/LC_MESSAGES/lyx.mo
+ # 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(env['LOCALE_DIR'], lan, 'LC_MESSAGES', 'lyx.mo')
+ dest_file = os.path.join(env['LOCALE_DIR'], lan, 'LC_MESSAGES', 'lyx' + env['PROGRAM_SUFFIX'] + '.mo')
env.InstallAs(dest_file, gmo)
Alias('install', dest_file)
# If not specified, boost tries to figure out by itself, but it may fail.
boost_posix = False
packaging_method = 'windows'
+ add_suffix_to_executables = False
default_prefix = 'c:/program files/lyx'
share_dir = 'Resources'
man_dir = 'Resources/man/man1'
default_with_x = True
boost_posix = True
packaging_method = 'posix'
+ add_suffix_to_executables = True
default_prefix = '/usr/local/'
share_dir = 'share/lyx'
man_dir = 'man/man1'
default_with_x = True
boost_posix = True
packaging_method = 'posix'
+ add_suffix_to_executables = True
default_prefix = '/usr/local/'
share_dir = 'share/lyx'
man_dir = 'man/man1'
default_with_x = False
boost_posix = True
packaging_method = 'mac'
+ add_suffix_to_executables = True
# FIXME: where to install?
default_prefix = '/usr/local/'
share_dir = 'Resources'
default_with_x = True
boost_posix = False
packaging_method = 'posix'
+ add_suffix_to_executables = True
default_prefix = '/usr/local/'
share_dir = 'share/lyx'
man_dir = 'man/man1'
BoolOption('warnings', 'Use warnings', True),
# enable glib, (config.h has _GLIBCXX_CONCEPT_CHECKS)
BoolOption('concept_checks', 'Enable concept checks', True),
- # FIXME: I do not know what is nls
- BoolOption('nls', '(NA) Whether or not use native language support', False),
+ #
+ BoolOption('nls', 'Whether or not use native language support', True),
# FIXME: not implemented
BoolOption('profile', '(NA) Whether or not enable profiling', False),
# FIXME: not implemented
BoolOption('std_debug', '(NA) Whether or not turn on stdlib debug', False),
# using x11?
BoolOption('X11', 'Use x11 windows system', default_with_x),
- # FIXME: not implemented
- BoolOption('libintl', '(NA) Use libintl library', False),
#
PathOption('qt_dir', 'Path to qt directory', None),
#
('version_suffix', 'install lyx as lyx-suffix', ''),
#
PathOption('exec_prefix', 'install architecture-independent executable files in PREFIX', None),
- # FIXME: not implemented
- PathOption('intl_prefix', '(NA) Path to intl library', None),
# log file
('logfile', 'save commands (not outputs) to logfile', default_log_file),
# Path to aikasurus
env['BIN_DIR'] = env['exec_prefix']
else:
env['BIN_DIR'] = os.path.join(env['PREFIX'], 'bin')
-env['SHARE_DIR'] = os.path.join(env['PREFIX'], share_dir)
+# program suffix
+if env.has_key('version_suffix'):
+ env['PROGRAM_SUFFIX'] = env['version_suffix']
+else:
+ env['PROGRAM_SUFFIX'] = ''
+env['ADD_SUFFIX_TO_EXECUTABLES'] = add_suffix_to_executables
+env['SHARE_DIR'] = os.path.join(env['PREFIX'], share_dir + env['PROGRAM_SUFFIX'])
env['MAN_DIR'] = os.path.join(env['PREFIX'], man_dir)
env['LOCALE_DIR'] = os.path.join(env['PREFIX'], locale_dir)
+#
+# this is a bit out of place (after auto-configration) but
+# it is required to do the tests. Since Tool('mingw') will
+# reset CCFLAGS etc, this should be before getEnvVariable
+if platform_name == 'win32':
+ env.Tool('mingw')
+ env.AppendUnique(CPPPATH = ['#c:/MinGW/include'])
+
+
# speed up source file processing
#env['CPPSUFFIXES'] = ['.C', '.cc', '.cpp']
#env['CXXSUFFIX'] = ['.C']
if env.has_key('aikasurus_path') and env['aikasurus_path']:
env.AppendUnique(LIBPATH = [env['aikasurus_path']])
-#
-# this is a bit out of place (after auto-configration)
-# but it is required to do the tests.
-if platform_name == 'win32':
- env.AppendUnique(CPPPATH = ['#c:/MinGW/include'])
- env.Tool('mingw')
# under windows, scons is confused by .C/.c and uses gcc instead of
# g++. I am forcing the use of g++ here. This is expected to change
# Note that this step has to be after env.Tool('mingw') step
# since env.Tool('mingw') will set env['CC'] etc.
#
+# save the old c compiler
+env['C_COMPILER'] = env['CC']
if env.has_key('CXX') and env['CXX']:
env['CC'] = env['CXX']
env['LINK'] = env['CXX']
custom_tests = {
'CheckPkgConfig' : utils.checkPkgConfig,
'CheckPackage' : utils.checkPackage,
- 'CheckPutenv' : utils.checkPutenv,
- 'CheckIstreambufIterator' : utils.checkIstreambufIterator,
'CheckMkdirOneArg' : utils.checkMkdirOneArg,
- 'CheckStdCount' : utils.checkStdCount,
'CheckSelectArgType' : utils.checkSelectArgType,
'CheckBoostLibraries' : utils.checkBoostLibraries,
- 'CheckMsgFmt' : utils.checkMsgFmt,
+ 'CheckCommand' : utils.checkCommand,
}
)
env['BOOST_LIBRARIES'] = env_cache['BOOST_LIBRARIES']
env['INCLUDED_BOOST'] = env_cache['INCLUDED_BOOST']
+
+if not env.has_key('nls') or env['nls']:
+ env['ENABLE_NLS'] = True
+
+if not fast_start:
+ if not env['ENABLE_NLS']:
+ env['INTL_LIB'] = []
+ env['INCLUDED_GETTEXT'] = False
+ else:
+ # check gettext libraries
+ gettext_opt = ARGUMENTS.get('gettext', default_gettext_opt)
+ # check for system gettext
+ succ = False
+ if gettext_opt in ['auto', 'system']:
+ if conf.CheckLib('intl'):
+ env['INCLUDED_GETTEXT'] = False
+ 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.
+ env['INCLUDED_GETTEXT'] = True
+ env['INTL_LIB'] = ['intl']
+ env_cache['INCLUDED_GETTEXT'] = env['INCLUDED_GETTEXT']
+ env_cache['INTL_LIB'] = env['INTL_LIB']
+else:
+ env['INTL_LIB'] = env_cache['INTL_LIB']
+ env['INCLUDED_GETTEXT'] = env_cache['INCLUDED_GETTEXT']
+
#
# check for msgfmt command
if not fast_start:
- env['MSGFMT'] = conf.CheckMsgFmt()
+ env['MSGFMT'] = conf.CheckCommand('msgfmt')
env_cache['MSGFMT'] = env['MSGFMT']
else:
env['MSGFMT'] = env_cache['MSGFMT']
('sys/utime.h', 'HAVE_SYS_UTIME_H', 'c'),
('sys/socket.h', 'HAVE_SYS_SOCKET_H', 'c'),
('unistd.h', 'HAVE_UNISTD_H', 'c'),
+ ('inttypes.h', 'HAVE_INTTYPES_H', 'c'),
('utime.h', 'HAVE_UTIME_H', 'c'),
('istream', 'HAVE_ISTREAM', 'cxx'),
('ostream', 'HAVE_OSTREAM', 'cxx'),
# HAVE__GETPID
# HAVE_MKDIR
# HAVE__MKDIR
+ # HAVE_PUTENV
# HAVE_MKTEMP
# HAVE_MKSTEMP
# HAVE_STRERROR
- # HAVE_FCNTL
+ # HAVE_STD_COUNT
# Check functions
functions = [
- ('open', 'HAVE_OPEN'),
- ('close', 'HAVE_CLOSE'),
- ('popen', 'HAVE_POPEN'),
- ('pclose', 'HAVE_PCLOSE'),
- ('_open', 'HAVE__OPEN'),
- ('_close', 'HAVE__CLOSE'),
- ('_popen', 'HAVE__POPEN'),
- ('_pclose', 'HAVE__PCLOSE'),
- ('getpid', 'HAVE_GETPID'),
- ('_getpid', 'HAVE__GETPID'),
- ('mkdir', 'HAVE_MKDIR'),
- ('_mkdir', 'HAVE__MKDIR'),
- ('mktemp', 'HAVE_MKTEMP'),
- ('mkstemp', 'HAVE_MKSTEMP'),
- ('strerror', 'HAVE_STRERROR'),
+ ('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),
+ ('putenv', 'HAVE_PUTENV', None),
+ ('mktemp', 'HAVE_MKTEMP', None),
+ ('mkstemp', 'HAVE_MKSTEMP', None),
+ ('strerror', 'HAVE_STRERROR', None),
+ ('count', 'HAVE_STD_COUNT', '''
+#include <algorithm>
+int count()
+{
+ char a[] = "hello";
+ return std::count(a, a+5, 'l');
+}
+''')
]
+ # HAVE_ASPRINTF
+ # HAVE_WPRINTF
+ # HAVE_SNPRINTF
+ # HAVE_POSIX_PRINTF
+ # HAVE_FCNTL
+
for func in functions:
+ if conf.CheckFunc(func[0], header=func[2]):
+ utils.addToConfig('#define %s 1' % func[1], TOP_SRC_DIR)
+ else:
+ utils.addToConfig('/* #undef %s */' % func[1], TOP_SRC_DIR)
+
+ env_functions = [
+ ('asprintf', 'HAVE_ASPRINTF'),
+ ('wprintf', 'HAVE_WPRINTF'),
+ ('snprintf', 'HAVE_SNPRINTF'),
+ ('printf', 'HAVE_POSIX_PRINTF'),
+ ('fcntl', 'HAVE_FCNTL')
+ ]
+
+ for func in env_functions:
if conf.CheckFunc(func[0]):
utils.addToConfig('#define %s 1' % func[1], TOP_SRC_DIR)
+ env[func[1]] = 1
else:
utils.addToConfig('/* #undef %s */' % func[1], TOP_SRC_DIR)
+ env[func[1]] = 0
- if conf.CheckFunc('fcntl'):
- utils.addToConfig('#define HAVE_FCNTL 1', TOP_SRC_DIR)
- env['HAVE_FCNTL'] = True
+ # HAVE_INTMAX_T
+ # HAVE_INTTYPES_H_WITH_UINTMAX
+ # HAVE_DECL_ISTREAMBUF_ITERATOR
+ if conf.CheckType('intmax_t', includes='#include <stdint.h>') or \
+ conf.CheckType('intmax_t', includes='#include <inttypes.h>'):
+ utils.addToConfig('#define HAVE_INTMAX_T 1', TOP_SRC_DIR)
else:
- utils.addToConfig('/* #undef HAVE_FCNTL */', TOP_SRC_DIR)
- env['HAVE_FCNTL'] = False
+ utils.addToConfig('/* #undef HAVE_INTMAX_T */', TOP_SRC_DIR)
+ if conf.CheckType('uintmax_t', includes='#include <inttypes.h>'):
+ utils.addToConfig('#define HAVE_INTTYPES_H_WITH_UINTMAX 1', TOP_SRC_DIR)
+ else:
+ utils.addToConfig('/* #undef HAVE_INTTYPES_H_WITH_UINTMAX */', TOP_SRC_DIR)
+
+ if conf.CheckType('std::istreambuf_iterator<std::istream>',
+ includes='#include <streambuf>\n#include <istream>'):
+ utils.addToConfig('#define HAVE_DECL_ISTREAMBUF_ITERATOR 1', TOP_SRC_DIR)
+ else:
+ utils.addToConfig('/* #undef HAVE_DECL_ISTREAMBUF_ITERATOR */', TOP_SRC_DIR)
+
+
# PACKAGE
# PACKAGE_VERSION
# DEVEL_VERSION
- utils.addToConfig('#define PACKAGE "%s"' % PACKAGE, TOP_SRC_DIR)
+ utils.addToConfig('#define PACKAGE "%s%s"' % (PACKAGE, env['PROGRAM_SUFFIX']), TOP_SRC_DIR)
utils.addToConfig('#define PACKAGE_VERSION "%s"' % PACKAGE_VERSION, TOP_SRC_DIR)
if DEVEL_VERSION:
utils.addToConfig('#define DEVEL_VERSION 1', TOP_SRC_DIR)
else:
utils.addToConfig('/* #undef BOOST_POSIX */', TOP_SRC_DIR)
- # HAVE_PUTENV
- if conf.CheckPutenv():
- utils.addToConfig('#define HAVE_PUTENV 1', TOP_SRC_DIR)
- else:
- utils.addToConfig('/* #undef HAVE_PUTENV */', TOP_SRC_DIR)
-
- # HAVE_DECL_ISTREAMBUF_ITERATOR
- if conf.CheckIstreambufIterator():
- utils.addToConfig('#define HAVE_DECL_ISTREAMBUF_ITERATOR 1', TOP_SRC_DIR)
- else:
- utils.addToConfig('/* #undef HAVE_DECL_ISTREAMBUF_ITERATOR */', TOP_SRC_DIR)
-
# MKDIR_TAKES_ONE_ARG
if conf.CheckMkdirOneArg():
utils.addToConfig('#define MKDIR_TAKES_ONE_ARG 1', TOP_SRC_DIR)
else:
utils.addToConfig('/* #undef MKDIR_TAKES_ONE_ARG */', TOP_SRC_DIR)
- # HAVE_STD_COUNT
- if conf.CheckStdCount():
- utils.addToConfig('#define HAVE_STD_COUNT 1', TOP_SRC_DIR)
- else:
- utils.addToConfig('/* #undef HAVE_STD_COUNT */', TOP_SRC_DIR)
-
# SELECT_TYPE_ARG1
# SELECT_TYPE_ARG234
# SELECT_TYPE_ARG5
env_cache['USE_ASPELL'] = env['USE_ASPELL']
env_cache['USE_PSPELL'] = env['USE_PSPELL']
env_cache['USE_ISPELL'] = env['USE_ISPELL']
+ env_cache['HAVE_ASPRINTF'] = env['HAVE_ASPRINTF']
+ env_cache['HAVE_WPRINTF'] = env['HAVE_WPRINTF']
+ env_cache['HAVE_SNPRINTF'] = env['HAVE_SNPRINTF']
+ env_cache['HAVE_POSIX_PRINTF'] = env['HAVE_POSIX_PRINTF']
env_cache['HAVE_FCNTL'] = env['HAVE_FCNTL']
else:
env['USE_ASPELL'] = env_cache['USE_ASPELL']
env['USE_PSPELL'] = env_cache['USE_PSPELL']
env['USE_ISPELL'] = env_cache['USE_ISPELL']
+ env['HAVE_ASPRINTF'] = env_cache['HAVE_ASPRINTF']
+ env['HAVE_WPRINTF'] = env_cache['HAVE_WPRINTF']
+ env['HAVE_SNPRINTF'] = env_cache['HAVE_SNPRINTF']
+ env['HAVE_POSIX_PRINTF'] = env_cache['HAVE_POSIX_PRINTF']
env['HAVE_FCNTL'] = env_cache['HAVE_FCNTL']
#
#
# install customized builders
env['BUILDERS']['substFile'] = Builder(action = utils.env_subst)
-# FIXME: there must be a better way.
-env['BUILDERS']['fileCopy'] = Builder(action = utils.env_filecopy)
#
# A Link script for cygwin see
# LYX_ABS_INSTALLED_LOCALEDIR
env['LOCALEDIR'] = env['LOCALE_DIR']
env['TOP_SRCDIR'] = env['TOP_SRC_DIR']
-# program suffix
-if env.has_key('version_suffix'):
- env['PROGRAM_SUFFIX'] = env['version_suffix']
-else:
- env['PROGRAM_SUFFIX'] = ''
# needed by src/version.C.in => src/version.C
env['PACKAGE_VERSION'] = PACKAGE_VERSION
# fill in the version info
#
import os, sys, re, shutil, glob
+from SCons.Util import WhereIs
config_h = os.path.join('src', 'config.h')
+config_content = ''
def writeToFile(filename, lines, append = False):
" utility function: write or append lines to filename "
file.close()
-def addToConfig(lines, top_src_dir):
- ''' utility function: shortcut for appending lines to outfile
- add newline at the end of lines.
- '''
- if lines.strip() != '':
- writeToFile(os.path.join(top_src_dir, config_h), lines + '\n\n', append = True)
-
-
def printEnvironment(env, keys=[]):
''' used to check profile settings '''
dict = env.Dictionary()
#os.chmod(str(target[0]), stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
-def env_filecopy(target, source, env):
- ''' target can be a directory '''
- shutil.copy(str(source[0]), str(target[0]))
-
-
#
# autoconf tests
#
def startConfigH(top_src_dir):
''' Write the first part of config.h '''
- writeToFile(os.path.join(top_src_dir, config_h),
-'''/* src/config.h. Generated by scon. */
+ global config_content
+ config_content = '''/* src/config.h. Generated by scon. */
/* -*- C++ -*- */
/*
#ifndef _CONFIG_H
#define _CONFIG_H
-''')
+'''
+
+
+def addToConfig(lines, top_src_dir):
+ ''' utility function: shortcut for appending lines to outfile
+ add newline at the end of lines.
+ '''
+ global config_content
+ if lines.strip() != '':
+ config_content += lines + '\n\n'
def endConfigH(top_src_dir):
''' Write the last part of config.h '''
- writeToFile(os.path.join(top_src_dir, config_h), '''
-/************************************************************
+ global config_content
+ writeToFile(os.path.join(top_src_dir, config_h), config_content +
+'''/************************************************************
** You should not need to change anything beyond this point */
#ifndef HAVE_STRERROR
#endif
#endif
-''', append=True)
-
-
-#HAVE_PUTENV
-def checkPutenv(conf):
- check_putenv_source = """
-#include <stdlib.h>
-int main()
-{
- putenv("");
- return(0);
-}
-"""
- conf.Message('Checking for putenv... ')
- ret = conf.TryLink(check_putenv_source, '.c')
- conf.Result(ret)
- return ret
-
-
-#HAVE_DECL_ISTREAMBUF_ITERATOR
-def checkIstreambufIterator(conf):
- check_istreambuf_iterator_source = """
-#include <streambuf>
-#include <istream>
-int main()
-{
- std::istreambuf_iterator<std::istream> iter;
- return 0;
-}
-"""
- conf.Message('Checking for iostreambuf::iterator... ')
- ret = conf.TryLink(check_istreambuf_iterator_source, '.cpp')
- conf.Result(ret)
- return ret
+''')
#MKDIR_TAKES_ONE_ARG
return ret
-#HAVE_STD_COUNT
-def checkStdCount(conf):
- check_std_count_source = """
-#include <algorithm>
-using std::count;
-int countChar(char * b, char * e, char const c)
-{
- return count(b, e, c);
-}
-
-int main()
-{
- char a[] = "hello";
- int i = countChar(a, a + 5, 'l');
-}
-"""
- conf.Message('Checking for std::count... ')
- ret = conf.TryLink(check_std_count_source, '.cpp')
- conf.Result(ret)
- return ret
-
-
# SELECT_TYPE_ARG1
# SELECT_TYPE_ARG234
# SELECT_TYPE_ARG5
return ('','')
-def checkMsgFmt(conf):
- ''' check the existence of command msgfmt '''
- conf.Message('Checking for gettext command msgfmt...')
- res = conf.TryAction('msgfmt --help')
- conf.Result(res[0])
- if res[0]:
- return 'msgfmt'
- else:
- return None
+def checkCommand(conf, cmd):
+ ''' check the existence of a command
+ return full path to the command, or none
+ '''
+ conf.Message('Checking for command %s...' % cmd)
+ res = WhereIs(cmd)
+ conf.Result(res is not None)
+ return res
def installCygwinLDScript(path):