]> git.lyx.org Git - features.git/commitdiff
Scons: add SIZEOF_WCHAR_T
authorBo Peng <bpeng@lyx.org>
Thu, 14 Sep 2006 15:40:06 +0000 (15:40 +0000)
committerBo Peng <bpeng@lyx.org>
Thu, 14 Sep 2006 15:40:06 +0000 (15:40 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14997 a592a061-630c-0410-9148-cb99ea01b6c8

development/scons/SConstruct
development/scons/scons_utils.py

index efdaa92782622cc1a4ab33f99308dd202e9fcf00..8d0eb8666538460e59183678c3cfc8584a6ae09f 100644 (file)
@@ -653,6 +653,7 @@ conf = Configure(env,
         'CheckCXXGlobalCstd' : utils.checkCXXGlobalCstd,
         'CheckLC_MESSAGES' : utils.checkLC_MESSAGES,
         '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
     (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
     result = utils.createConfigFile(conf,
@@ -1148,6 +1156,8 @@ int count()
                 "Define to the type of arg 2, 3, 4 for `select'."),
             ('#define SELECT_TYPE_ARG5 %s' % select_arg5,
                 "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 = '''/************************************************************
 ** You should not need to change anything beyond this point */
@@ -1281,7 +1291,9 @@ int mkstemp(char*);
                 ),
             ],
             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'
         )
index e6c6aded651f66c28acd2c1f8dd6f890e5e30434..6eaa686be75d6761a26155cee922cecd6d009a30 100644 (file)
@@ -255,6 +255,26 @@ int main() {
     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 = [],