wollmers / Text-Levenshtein-Uni

Text-Levenshtein-Uni - calculate Levenshtein distance for Unicode (UTF-8 or U32) strings
Other
0 stars 0 forks source link

c compile fails #4

Open Shreeshrii opened 2 years ago

Shreeshrii commented 2 years ago
cc -std=c99 -pedantic -Wall -O3   -c -o levtest.o levtest.c
In file included from levbv.c:21:0,
                 from levtest.c:19:
utf8.h:8:14: error: unknown type name ‘u_int32_t’; did you mean ‘uint32_t’?
 int u8_toucs(u_int32_t *dest, int sz, char *src, int srcsz);
              ^~~~~~~~~
              uint32_t
In file included from utf8.c:29:0,
                 from levbv.c:22,
                 from levtest.c:19:
utf8.h:8:14: error: unknown type name ‘u_int32_t’; did you mean ‘uint32_t’?
 int u8_toucs(u_int32_t *dest, int sz, char *src, int srcsz);
              ^~~~~~~~~
              uint32_t
In file included from levbv.c:22:0,
                 from levtest.c:19:
utf8.c:31:14: error: unknown type name ‘u_int32_t’
 static const u_int32_t offsetsFromUTF8[6] = {
              ^~~~~~~~~
utf8.c:33:19: warning: overflow in implicit constant conversion [-Woverflow]
     0x03C82080UL, 0xFA082080UL, 0x82082080UL
                   ^~~~~~~~~~~~
utf8.c:33:33: warning: overflow in implicit constant conversion [-Woverflow]
     0x03C82080UL, 0xFA082080UL, 0x82082080UL
                                 ^~~~~~~~~~~~
utf8.c:57:14: error: unknown type name ‘u_int32_t’; did you mean ‘uint32_t’?
 int u8_toucs(u_int32_t *dest, int sz, char *src, int srcsz)
              ^~~~~~~~~
              uint32_t
In file included from levtest.c:19:0:
levbv.c: In function ‘dist_utf8_ucs’:
levbv.c:132:15: warning: implicit declaration of function ‘u8_toucs’; did you mean ‘mbstowcs’? [-Wimplicit-function-declaration]
     a_chars = u8_toucs(a_ucs, (alen+1)*4, a, alen);
               ^~~~~~~~
               mbstowcs
<builtin>: recipe for target 'levtest.o' failed
make: *** [levtest.o] Error 1
Shreeshrii commented 2 years ago

Builds with warnings, when I changed cc to g++.

g++ -std=c99 -pedantic -Wall -O3   -c -o levtest.o levtest.c
cc1plus: warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++
In file included from levtest.c:19:0:
levbv.c: In function ‘int dist_utf8_ucs(char*, int, char*, int)’:
levbv.c:127:30: warning: ISO C++ forbids variable length array ‘a_ucs’ [-Wvla]
     uint32_t a_ucs[(alen+1)*4];
                              ^
levbv.c:128:30: warning: ISO C++ forbids variable length array ‘b_ucs’ [-Wvla]
     uint32_t b_ucs[(blen+1)*4];
                              ^
levbv.c: In function ‘int dist_mixed(const uint32_t*, int, const uint32_t*, int)’:
levbv.c:167:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 if ( 1 && ((amax - amin) < width) ) {
            ~~~~~~~~~~~~~~^~~~~~~
levbv.c:189:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if ( a[i+amin] < low_chars ) {
              ~~~~~~~~~~^~~~~~~~~~~
levbv.c:199:31: warning: ISO C++ forbids variable length array ‘ikeys’ [-Wvla]
     uint32_t ikeys[uni_chars+1]; // static ikeys[64+1] ??
                               ^
levbv.c:200:29: warning: ISO C++ forbids variable length array ‘bits’ [-Wvla]
     bv_bits bits[uni_chars+1]; // static ikeys[64+1] ??
                             ^
levbv.c:211:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (a[i+amin] >= low_chars) {
                 ~~~~~~~~~~^~~~~~~~~~~~
levtest.c: In function ‘int main()’:
levtest.c:55:34: warning: ISO C++ forbids variable length array ‘a_ucs’ [-Wvla]
     uint32_t a_ucs[(utf_len1+1)*4];
                                  ^
levtest.c:56:34: warning: ISO C++ forbids variable length array ‘b_ucs’ [-Wvla]
     uint32_t b_ucs[(utf_len2+1)*4];
                                  ^
levtest.c:89:42: warning: ISO C++ forbids variable length array ‘a_ucs_l52’ [-Wvla]
     uint32_t a_ucs_l52[(utf_len1_l52+1)*4];
                                          ^
levtest.c:90:42: warning: ISO C++ forbids variable length array ‘b_ucs_l52’ [-Wvla]
     uint32_t b_ucs_l52[(utf_len2_l52+1)*4];
                                          ^
g++ -std=c99 -pedantic -Wall -O3 -o levtest levtest.o
g++ -std=c++11 -Wall -g -finput-charset=utf-8 -O3 -c -o levtestcpp.o levtestcpp.cpp
In file included from levtestcpp.cpp:19:0:
levbv.c: In function ‘int dist_mixed(const uint32_t*, int, const uint32_t*, int)’:
levbv.c:167:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 if ( 1 && ((amax - amin) < width) ) {
            ~~~~~~~~~~~~~~^~~~~~~
levbv.c:189:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if ( a[i+amin] < low_chars ) {
              ~~~~~~~~~~^~~~~~~~~~~
levbv.c:211:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (a[i+amin] >= low_chars) {
                 ~~~~~~~~~~^~~~~~~~~~~~
g++ -std=c++11 -Wall -g -finput-charset=utf-8 -O3 -o levtestcpp levtestcpp.o
make: warning:  Clock skew detected.  Your build may be incomplete.
(base) ubuntu@tesseract-ocr-1:~/Text-Levenshtein-Uni/src$
Shreeshrii commented 2 years ago
(base) ubuntu@tesseract-ocr-1:~/Text-Levenshtein-Uni/src$ cc -v
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
(base) ubuntu@tesseract-ocr-1:~/Text-Levenshtein-Uni/src$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
wollmers commented 2 years ago

Thanks for testing.

I only compiled under MacOS for Intel i7 with clang so far, which maybe is a little bit more tolerant. u_int32_t is a mistyping and I wonder, what magic on my environment happens.

Will try on weekend to merge my last changes, finish array mode, and compile on Debian too. Maybe setup github actions for tests on more environments.