+                'SIZEOF_WCHAR_T_IS_2',
+                'SIZEOF_WCHAR_T_IS_4',
+#ifdef SIZEOF_WCHAR_T_IS_2
+#  define SIZEOF_WCHAR_T 2
+#else
+#  ifdef SIZEOF_WCHAR_T_IS_4
+#    define SIZEOF_WCHAR_T 4
+#  endif
+#endif

We do not really need SIZEOF_WCHAR_T_IS_2 and 4, right? Then, I
propose the following simplified version. It will be applied if there
is no objection.

Index: development/scons/SConstruct
===================================================================
--- development/scons/SConstruct        (revision 14996)
+++ development/scons/SConstruct        (working copy)
@@ -653,6 +653,7 @@
        'CheckCXXGlobalCstd' : utils.checkCXXGlobalCstd,
        'CheckLC_MESSAGES' : utils.checkLC_MESSAGES,
        'CheckIconvConst' : utils.checkIconvConst,
+        'CheckSizeOfWChar' : utils.checkSizeOfWChar,
    }
)

@@ -981,6 +982,13 @@
    # 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 @@
                "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 @@
                ),
            ],
            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: development/scons/scons_utils.py
===================================================================
--- development/scons/scons_utils.py    (revision 14996)
+++ development/scons/scons_utils.py    (working copy)
@@ -255,6 +255,26 @@
    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 = [], l

Reply via email to