Scons: add SIZEOF_WCHAR_T

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14997 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Bo Peng 2006-09-14 15:40:06 +00:00
parent 5889f636c0
commit dd0e06b339
2 changed files with 33 additions and 1 deletions

View File

@ -653,6 +653,7 @@ conf = Configure(env,
'CheckCXXGlobalCstd' : utils.checkCXXGlobalCstd, 'CheckCXXGlobalCstd' : utils.checkCXXGlobalCstd,
'CheckLC_MESSAGES' : utils.checkLC_MESSAGES, 'CheckLC_MESSAGES' : utils.checkLC_MESSAGES,
'CheckIconvConst' : utils.checkIconvConst, 'CheckIconvConst' : utils.checkIconvConst,
'CheckSizeOfWChar' : utils.checkSizeOfWChar,
} }
) )
@ -981,6 +982,13 @@ if not fast_start or not os.path.isfile(boost_config_h) \
# check arg types of select function # check arg types of select function
(select_arg1, select_arg234, select_arg5) = conf.CheckSelectArgType() (select_arg1, select_arg234, select_arg5) = conf.CheckSelectArgType()
# check the size of wchar_t
sizeof_wchar_t = conf.CheckSizeOfWChar()
# something wrong
if sizeof_wchar_t == 0:
print 'Error: Can not determine the size of wchar_t.'
Exit(1)
# #
# create config.h # create config.h
result = utils.createConfigFile(conf, result = utils.createConfigFile(conf,
@ -1148,6 +1156,8 @@ int count()
"Define to the type of arg 2, 3, 4 for `select'."), "Define to the type of arg 2, 3, 4 for `select'."),
('#define SELECT_TYPE_ARG5 %s' % select_arg5, ('#define SELECT_TYPE_ARG5 %s' % select_arg5,
"Define to the type of arg 5 for `select'."), "Define to the type of arg 5 for `select'."),
('#define SIZEOF_WCHAR_T %d' % sizeof_wchar_t,
'Define to be the size of type wchar_t'),
], ],
config_post = '''/************************************************************ config_post = '''/************************************************************
** You should not need to change anything beyond this point */ ** You should not need to change anything beyond this point */
@ -1281,7 +1291,9 @@ int mkstemp(char*);
), ),
], ],
extra_items = [ extra_items = [
('#define HAVE_ICONV 1', 'Define if iconv or libiconv is found') ('#define HAVE_ICONV 1', 'Define if iconv or libiconv is found'),
('#define SIZEOF_WCHAR_T %d' % sizeof_wchar_t,
'Define to be the size of type wchar_t'),
], ],
config_post = '#endif' config_post = '#endif'
) )

View File

@ -255,6 +255,26 @@ int main() {
return ret 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, def createConfigFile(conf, config_file,
config_pre = '', config_post = '', config_pre = '', config_post = '',
headers = [], functions = [], types = [], libs = [], headers = [], functions = [], types = [], libs = [],