From 3dc11ec08e7b5a25e2e24586fec7f2c480af0a69 Mon Sep 17 00:00:00 2001 From: Bo Peng Date: Thu, 31 May 2007 01:34:33 +0000 Subject: [PATCH] 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 --- development/scons/SConstruct | 4 ++++ development/scons/scons_utils.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/development/scons/SConstruct b/development/scons/SConstruct index 153e565993..7cf68eac9e 100644 --- a/development/scons/SConstruct +++ b/development/scons/SConstruct @@ -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', 'HAVE_DECL_ISTREAMBUF_ITERATOR', '#include \n#include '), diff --git a/development/scons/scons_utils.py b/development/scons/scons_utils.py index 1e3d6acaef..2baa5eef40 100644 --- a/development/scons/scons_utils.py +++ b/development/scons/scons_utils.py @@ -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] -- 2.39.2