from SCons.Util import WhereIs
+def getVerFromConfigure(path):
+ " get lyx version from the AC_INIT line of configure.ac "
+ try:
+ config = open(os.path.join(path, 'configure.ac'))
+ except:
+ print "Can not open configure.ac. "
+ 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\([^,]+,([^,]+),')
+ for line in config.readlines():
+ if pat.match(line):
+ (version,) = pat.match(line).groups()
+ return version.strip()
+ return 'x.x.x'
+
+
+
def writeToFile(filename, lines, append = False):
" utility function: write or append lines to filename "
# create directory if needed
def checkIconvConst(conf):
''' check the declaration of iconv '''
check_iconv_const = '''
-#include <stdlib.h>
#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-#ifndef LIBICONV_DLL_EXPORTED
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#endif
-#else
-size_t iconv();
-#endif
-
-int main()
-{
- return 1;
+// this declaration will fail when there already exists a non const char**
+// version which returns size_t
+double iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
+int main() {
+ return 0;
}
'''
conf.Message('Check if the declaration of iconv needs const... ')
return ret
+def checkSizeOfWChar(conf):
+ ''' check the size of wchar '''
+ check_sizeof_wchar = '''
+int i[ ( sizeof(wchar_t)==%d ? 1 : -1 ) ];
+int main()
+{
+ return 0;
+}
+'''
+ conf.Message('Check the size of wchar_t... ')
+ if conf.TryLink(check_sizeof_wchar % 2, '.cpp'):
+ ret = 2
+ elif conf.TryLink(check_sizeof_wchar % 4, '.cpp'):
+ ret = 4
+ else:
+ ret = 0
+ conf.Result(str(ret))
+ return ret
+
+
def createConfigFile(conf, config_file,
config_pre = '', config_post = '',
headers = [], functions = [], types = [], libs = [],
description = "Define to 1 if you have the <%s> header file." % header[0]
if (header[2] == 'c' and conf.CheckCHeader(header[0])) or \
(header[2] == 'cxx' and conf.CheckCXXHeader(header[0])):
- result[header[1]] = True
+ result[header[1]] = 1
cont += configString('#define %s 1' % header[1], desc = description)
else:
- result[header[1]] = False
+ result[header[1]] = 0
cont += configString('/* #undef %s */' % header[1], desc = description)
# functions
for func in functions:
description = "Define to 1 if you have the `%s' function." % func[0]
if conf.CheckFunc(func[0], header=func[2]):
- result[func[1]] = True
+ result[func[1]] = 1
cont += configString('#define %s 1' % func[1], desc = description)
else:
- result[func[1]] = False
+ result[func[1]] = 0
cont += configString('/* #undef %s */' % func[1], desc = description)
# types
for t in types:
description = "Define to 1 if you have the `%s' type." % t[0]
if conf.CheckType(t[0], includes=t[2]):
- result[t[1]] = True
+ result[t[1]] = 1
cont += configString('#define %s 1' % t[1], desc = description)
else:
- result[t[1]] = False
+ result[t[1]] = 0
cont += configString('/* #undef %s */' % t[1], desc = description)
# libraries
for lib in libs:
else:
lib_list = lib[0]
# check if any of the lib exists
- result[lib[1]] = False
+ result[lib[1]] = 0
# if user want the name of the lib detected
if len(lib) == 3:
result[lib[2]] = None
for ll in lib_list:
if conf.CheckLib(ll):
- result[lib[1]] = True
+ result[lib[1]] = 1
if len(lib) == 3:
result[lib[2]] = ll
cont += configString('#define %s 1' % lib[1], desc = description)
# custom tests
for test in custom_tests:
if test[0]:
- result[test[1]] = True
+ result[test[1]] = 1
if len(test) == 3:
cont += configString('#define %s 1' % test[1], desc = test[2])
else:
cont += configString(test[3], desc = test[2])
else:
- result[test[1]] = False
+ result[test[1]] = 0
if len(test) == 3:
cont += configString('/* #undef %s */' % test[1], desc = test[2])
else:
return(ld_script)
+def installCygwinPostinstallScript(path):
+ ''' Install lyx.sh '''
+ postinstall_script = os.path.join(path, 'lyx.sh')
+ script = open(postinstall_script, 'w')
+ script.write('''#!/bin/sh
+
+# Add /usr/share/lyx/fonts to /etc/fonts/local.conf
+# if it is not already there.
+if [ -f /etc/fonts/local.conf ]; then
+ grep -q /usr/share/lyx/fonts /etc/fonts/local.conf
+ if [ $? -ne 0 ]; then
+ sed 's/^<\/fontconfig>/<dir>\/usr\/share\/lyx\/fonts<\/dir>\n<\/fontconfig>/' /etc/fonts/local.conf > /etc/fonts/local.conf.tmp
+ mv -f /etc/fonts/local.conf.tmp /etc/fonts/local.conf
+ fc-cache /usr/share/lyx/fonts
+ fi
+fi
+ ''')
+ script.close()
+ return(postinstall_script)
+
+
try:
# these will be used under win32
import win32file