keymanapp / keyman

Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
https://keyman.com/
Other
367 stars 102 forks source link

bug(developer): kmcmplib doesn't build under mac #11285

Open srl295 opened 2 weeks ago

srl295 commented 2 weeks ago
$ sw_vers
ProductName:            macOS
ProductVersion:         14.4.1
BuildVersion:           23E224
$ xcodebuild -version
Xcode 15.3
Build version 15E204a
$ developer/src/kmcmplib/build.sh test:arch
[10/30] Compiling C++ object src/libkmcmplib.a.p/CompileKeyboardBuffer.cpp.o
FAILED: src/libkmcmplib.a.p/CompileKeyboardBuffer.cpp.o
ccache c++ -Isrc/libkmcmplib.a.p -Isrc -I../../../src -Iinclude -I../../../include -I../../../../common/include -I../../../../../../common/include -Isubprojects/icu/source/common -I../../../subprojects/icu/source/common -fdiagnostics-color=always -Wall -Winvalid-pch -Werror -std=c++14 -O3 -g -DU_STATIC_IMPLEMENTATION -DU_ATTRIBUTE_DEPRECATED= -DUCONFIG_USE_LOCAL=1 -DU_NOEXCEPT= -DKMN_KBP_EXPORTING -Wctor-dtor-privacy -Wdouble-promotion -Wendif-labels -Wno-unknown-pragmas -Wno-missing-field-initializers -Wnon-virtual-dtor -Wshadow -Wimplicit-fallthrough -Wno-double-promotion -Wshorten-64-to-32 -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wall -Wextra -fvisibility=hidden -fvisibility-inlines-hidden -MD -MQ src/libkmcmplib.a.p/CompileKeyboardBuffer.cpp.o -MF src/libkmcmplib.a.p/CompileKeyboardBuffer.cpp.o.d -o src/libkmcmplib.a.p/CompileKeyboardBuffer.cpp.o -c ../../../src/CompileKeyboardBuffer.cpp
../../../src/CompileKeyboardBuffer.cpp:177:22: error: comparison of integers of different signs: 'int' and 'KMX_DWORD' (aka 'unsigned int') [-Werror,-Wsign-compare]
    for(int i = 0; i < fk->cxStoreArray; i++, store++) {
                   ~ ^ ~~~~~~~~~~~~~~~~
../../../src/CompileKeyboardBuffer.cpp:191:22: error: comparison of integers of different signs: 'int' and 'KMX_DWORD' (aka 'unsigned int') [-Werror,-Wsign-compare]
    for(int i = 0; i < fk->cxGroupArray; i++, group++) {
                   ~ ^ ~~~~~~~~~~~~~~~~
2 errors generated.
[14/30] Compiling C++ object src/libkmcmplib.a.p/Compiler.cpp.o
FAILED: src/libkmcmplib.a.p/Compiler.cpp.o
ccache c++ -Isrc/libkmcmplib.a.p -Isrc -I../../../src -Iinclude -I../../../include -I../../../../common/include -I../../../../../../common/include -Isubprojects/icu/source/common -I../../../subprojects/icu/source/common -fdiagnostics-color=always -Wall -Winvalid-pch -Werror -std=c++14 -O3 -g -DU_STATIC_IMPLEMENTATION -DU_ATTRIBUTE_DEPRECATED= -DUCONFIG_USE_LOCAL=1 -DU_NOEXCEPT= -DKMN_KBP_EXPORTING -Wctor-dtor-privacy -Wdouble-promotion -Wendif-labels -Wno-unknown-pragmas -Wno-missing-field-initializers -Wnon-virtual-dtor -Wshadow -Wimplicit-fallthrough -Wno-double-promotion -Wshorten-64-to-32 -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wall -Wextra -fvisibility=hidden -fvisibility-inlines-hidden -MD -MQ src/libkmcmplib.a.p/Compiler.cpp.o -MF src/libkmcmplib.a.p/Compiler.cpp.o.d -o src/libkmcmplib.a.p/Compiler.cpp.o -c ../../../src/Compiler.cpp
../../../src/Compiler.cpp:809:45: error: comparison of integers of different signs: 'KMX_DWORD' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare]
  if((gp->cxKeyArray + increment - 1) % 100 < increment) {
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
../../../src/Compiler.cpp:1194:14: error: declaration shadows a local variable [-Werror,-Wshadow]
    for(auto p: KMXKeymanTargets) {
             ^
../../../src/Compiler.cpp:1186:8: note: previous declaration is here
  auto p = new KMX_WCHAR[u16len(store)+1];
       ^
../../../src/Compiler.cpp:1197:14: error: declaration shadows a local variable [-Werror,-Wshadow]
    for(auto p: KMWKeymanTargets) {
             ^
../../../src/Compiler.cpp:1186:8: note: previous declaration is here
  auto p = new KMX_WCHAR[u16len(store)+1];
       ^
../../../src/Compiler.cpp:3524:31: error: implicit conversion loses integer precision: 'size_type' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
    *sz16 = result.size() * 2 - 2;
          ~ ~~~~~~~~~~~~~~~~~~^~~
../../../src/Compiler.cpp:3528:27: error: implicit conversion loses integer precision: 'size_type' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
    *sz16 = result.size() * 2;
          ~ ~~~~~~~~~~~~~~^~~
5 errors generated.
[26/30] Compiling C++ object tests/uset-api-test.p/uset-api-test.cpp.o
$
srl295 commented 2 weeks ago

fyi @markcsinclair @mcdurdin