Scons: check HAVE_DECL_MKSTEMP to fix a configuration error with gcc4 on Linux

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18587 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Bo Peng 2007-05-31 01:34:33 +00:00
parent 0d2360c4a4
commit 3dc11ec08e
2 changed files with 32 additions and 1 deletions

View File

@ -603,6 +603,7 @@ conf = Configure(env,
'CheckLC_MESSAGES' : utils.checkLC_MESSAGES,
'CheckIconvConst' : utils.checkIconvConst,
'CheckSizeOfWChar' : utils.checkSizeOfWChar,
'CheckDeclaration' : utils.checkDeclaration,
}
)
@ -933,6 +934,9 @@ return std::count(a, a+5, 'l');
('fcntl', 'HAVE_FCNTL', None),
('mkfifo', 'HAVE_MKFIFO', None),
],
declarations = [
('mkstemp', 'HAVE_DECL_MKSTEMP', ['unistd.h', 'stdlib.h']),
],
types = [
('std::istreambuf_iterator<std::istream>', 'HAVE_DECL_ISTREAMBUF_ITERATOR',
'#include <streambuf>\n#include <istream>'),

View File

@ -432,9 +432,26 @@ 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
@ -444,6 +461,8 @@ def createConfigFile(conf, config_file,
('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
@ -492,6 +511,14 @@ def createConfigFile(conf, config_file,
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]