def getVerFromConfigure(path):
- " get lyx version from the AC_INIT line of configure.ac "
+ ''' get lyx version from the AC_INIT line of configure.ac,
+ packed major and minor version numbers from the lyx version,
+ and LYX_DATE from an AC_SUBST line.
+ '''
try:
config = open(os.path.join(path, 'configure.ac'))
except:
return 'x.x.x'
# find a line like follows
# AC_INIT(LyX,1.4.4svn,[lyx-devel@lists.lyx.org],[lyx])
- pat = re.compile('AC_INIT\([^,]+,([^,]+),')
+ ver_pat = re.compile('AC_INIT\([^,]+,([^,]+),')
+ date_pat = re.compile('AC_SUBST\(LYX_DATE, \["(.*)"\]\)')
+ majmin_pat = re.compile('(\d+)\.(\d+)\..*')
+ version = 'x.x.x'
+ majmin = 'xx'
+ date = 'Not released'
for line in config.readlines():
- if pat.match(line):
- (version,) = pat.match(line).groups()
- return version.strip()
- return 'x.x.x'
+ if ver_pat.match(line):
+ (version,) = ver_pat.match(line).groups()
+ majmin_match = majmin_pat.match(version)
+ majmin = majmin_match.group(1) + majmin_match.group(2)
+ if date_pat.match(line):
+ (date,) = date_pat.match(line).groups()
+ if version != 'x.x.x' and date != 'Not released':
+ break
+ return version.strip(), majmin.strip(), date.strip()
def relativePath(path, base):
ret += ' '
# bundled?
if '-bundle.exe' in str(target[0]):
- ret += '/DSETUPTYPE_BUNDLE=1 '
+ ret += '/DSETUPTYPE=BUNDLE '
for s in source:
ret += quoteIfSpaced(str(s))
return ret
potfiles = []
trans = re.compile('_\(".*"\)', re.M)
for file in source:
- if str(file) not in potfiles and trans.search(open(str(file)).read()):
- potfiles.append(relativePath(str(file), env.subst('$TOP_SRCDIR')))
+ rel_file = relativePath(str(file), env.subst('$TOP_SRCDIR'))
+ if rel_file not in potfiles and trans.search(open(str(file)).read()):
+ potfiles.append(rel_file)
potfiles.sort()
print >> target_file, '\n'.join(potfiles)
target_file.close()
return []
+def env_qtResource(target, source, env):
+ '''Create resource.qrc'''
+ qrc = open(str(target[0]), 'w')
+ print >> qrc, "<!DOCTYPE RCC><RCC version='1.0'><qresource>"
+ for file in source:
+ rel_file = relativePath(str(file), env.subst('$TOP_SRCDIR/lib'))
+ abs_file = str(file.abspath)
+ print >> qrc, '<file alias="%s">%s</file>' % (rel_file, abs_file)
+ print >> qrc, '</qresource></RCC>'
+ qrc.close()
+
#
# autoconf tests
#
}
'''
conf.Message('Checking for the use of global cstd... ')
- ret = conf.TryLink(check_global_cstd_source, '.c')
+ # if can not compile, define CXX_GLOBAL_CSTD
+ ret = conf.TryLink(check_global_cstd_source, '.cpp')
conf.Result(ret)
return ret
}
'''
conf.Message('Checking if the declaration of iconv needs const... ')
- ret = conf.TryLink(check_iconv_const, '.c')
+ ret = conf.TryLink(check_iconv_const, '.cpp')
conf.Result(ret)
return ret
def checkSizeOfWChar(conf):
''' check the size of wchar '''
check_sizeof_wchar = '''
+#include <wchar.h>
int i[ ( sizeof(wchar_t)==%d ? 1 : -1 ) ];
int main()
{
return ret
+def checkDeclaration(conf, func, headers):
+ ''' check if a function is declared in given headers '''
+ check_decl = '''
+#include <%%s>
+int main()
+{
+#ifndef %s
+ char *p = (char *) %s;
+#endif
+}
+''' % (func, func)
+ conf.Message('Checking for the declaration of function %s... ' % func)
+ ret = True in [conf.TryLink(check_decl % header, '.c') for header in headers]
+ conf.Result(ret)
+ return ret
+
+
def createConfigFile(conf, config_file,
config_pre = '', config_post = '',
- headers = [], functions = [], types = [], libs = [],
+ headers = [], functions = [], declarations = [], types = [], libs = [],
custom_tests = [], extra_items = []):
''' create a configuration file, with options
config_file: which file to create
('file', 'HAVE_FILE', 'c'/'c++')
functions: functions to check, in the form of a list of
('func', 'HAVE_func', 'include lines'/None)
+ declarations: function declarations to check, in the form of a list of
+ ('func', 'HAVE_DECL_func', header_files)
types: types to check, in the form of a list of
('type', 'HAVE_TYPE', 'includelines'/None)
libs: libraries to check, in the form of a list of
else:
result[func[1]] = 0
cont += configString('/* #undef %s */' % func[1], desc = description)
+ for decl in declarations:
+ description = "Define to 1 if you have the declaration of `%s', and to 0 if you don't." % decl[0]
+ if conf.CheckDeclaration(decl[0], decl[2]):
+ result[decl[1]] = 1
+ cont += configString('#define %s 1' % decl[1], desc = description)
+ else:
+ result[decl[1]] = 0
+ cont += configString('/* #undef %s */' % decl[1], desc = description)
# types
for t in types:
description = "Define to 1 if you have the `%s' type." % t[0]