My reliance on GCC/Cygwin includes the following:

1) App must be able to be built/run on: Linux, Solaris, and Cygwin
2) App needs Xerces-C XML parser, which includes unicode support, and I must
be able to build/link the library on all three platforms.

I did initial development on Solaris, then later ported to Linux. Both of
these were relatively painless (both configurations are well supported by
the Xerces development team; since Cygwin is not so well supported, I'm
treading a path not many others have used, according to info available from
the Xerces-C mailing list.) Prior to the recent introduction of the Xerces-C
library into my application, I was able to build it successfully under
Cygwin using the gcc 2.95 binary that came bundled with Cygwin. Now, when
trying to build the Xerces library on Cygwin, I'm running into trouble with
a file that tries to include wctype.h (file not found.)

Thinking that improvements since GCC 2.95 may have solved the problem, I
obtained the latest GCC release (3.0.4, full package), and built it
successfully, though the build process produced a message indicating that
wctype.h is missing, and wchar_t support is disabled. I have searched from
the Cygwin root directory (which encompasses GCC) for any file containing
the text 'wctype', and have found one instance of wctype.h, and several
other related files in various subdirectories. Still, I can't successfully
compile a source file containing #include <wctype.h> (or #include
<cwctype>), and thus some required function prototypes are missing.

I've attached a text file contining pertinent info about my platform, the
GCC configure/build process, the locations of the '*wctype*' files present
on my system, errors produced by attempting to compile my test file, code
snippets extracted from the troublesome source file necessitating the
inclusion of wctype.h, etc.

I hope I'm not off-topic here; I did first try posting to gnu-libstdc++, but
have not heard anything yet. If anyone can tell me whether it's possible to
get GCC/Cygwin to properly support wide characters, and if so, what steps I
need to take to do so, I will be extremely grateful.

Sincerely,
Bruce Reid

$ gcc -v
Reading specs from /usr/local/lib/gcc-lib/i686-pc-cygwin/3.0.4/specs
Configured with: /downloads/gnu/gcc/gcc-3.0.4/configure --verbose 
--enable-languages=c,c++ --disable-libgcj --enable-threads=win32 --disable-shared 
--disable-nls --with-as=/usr/bin/as --with-ld=/usr/bin/ld
Thread model: win32
gcc version 3.0.4

$ /downloads/gnu/gcc/gcc-3.0.4/config.guess
i686-pc-cygwin

# A problem indication extracted from the output of the gcc build process
#
checking for wchar.h... yes
checking for wctype.h... no
configure: warning: wchar_t support disabled.

# Result of compiling a file containing '#include <wctype.h>
#
$ g++ -Wall -o test test.cpp
test.cpp:4:20: wctype.h: No such file or directory

# Result of compiling a file containing '#include <cwctype>
#
$ g++ -Wall -o test test.cpp
In file included from /usr/local/include/g++-v3/cwctype:31,
                 from test.cpp:4:
/usr/local/include/g++-v3/bits/std_cwctype.h:38:20: wctype.h: No such file or directory
In file included from /usr/local/include/g++-v3/cwctype:31,
                 from test.cpp:4:
/usr/local/include/g++-v3/bits/std_cwctype.h:65: `wctype_t' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:66: `wctrans_t' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:68: `iswalnum' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:69: `iswalpha' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:70: `iswblank' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:71: `iswcntrl' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:72: `iswdigit' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:73: `iswgraph' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:74: `iswlower' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:75: `iswprint' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:76: `iswprint' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:77: `iswpunct' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:78: `iswspace' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:79: `iswupper' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:80: `iswxdigit' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:81: `iswctype' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:82: `towlower' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:83: `towupper' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:84: `towctrans' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:85: `wctrans' not declared
/usr/local/include/g++-v3/bits/std_cwctype.h:86: `wctype' not declared

# Locations of files related to wctype
#
$ find / -name '*wctype*'
/builds/gcc-3.0.4/i686-pc-cygwin/libstdc++-v3/include/bits/std_cwctype.h
/builds/gcc-3.0.4/i686-pc-cygwin/libstdc++-v3/include/cwctype
/downloads/gnu/gcc/gcc-3.0.4/libstdc++-v3/include/c/bits/std_cwctype.h
/downloads/gnu/gcc/gcc-3.0.4/libstdc++-v3/include/c_shadow/bits/std_cwctype.h
/downloads/gnu/gcc/gcc-3.0.4/libstdc++-v3/include/c_shadow/wctype.h
/downloads/gnu/gcc/gcc-3.0.4/libstdc++-v3/include/c_std/bits/std_cwctype.h
/downloads/gnu/gcc/gcc-3.0.4/libstdc++-v3/include/std/cwctype
/downloads/gnu/gcc/gcc-3.0.4/libstdc++-v3/testsuite/17_intro/header_cwctype.cc
/usr/include/g++-3/cwctype
/usr/local/include/g++-v3/bits/std_cwctype.h
/usr/local/include/g++-v3/cwctype


# Snippets of code necessitating the inclusion of wctype.h.
#
const XMLCh* cptr1 = comp1;
wint_t wch1 = towupper(*cptr1);
              ^^^^^^^^

bool IconvTransService::isSpace(const XMLCh toCheck) const
{
   return (iswspace(toCheck) != 0);
           ^^^^^^^^
}


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to