-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Description
Describe the bug
Can't build for iOS 64bits without ignoring 64 to 32bits conversion precision loss
Steps To Reproduce
Using guide https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#switching-between-device-and-simulator
$ cmake -S. -B_builds -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=13.0 -DCMAKE_INSTALL_PREFIX=`pwd`/_install -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO -DCMAKE_IOS_INSTALL_COMBINED=YES
[REDACTED]
$ cmake --build _builds --config Release --target json-c-static -- -sdk iphonesimulator
[...]
CompileC /Users/kenji/Desktop/json-c/_builds/build/json-c-static.build/Release-iphonesimulator/Objects-normal/arm64/json_object.o /Users/kenji/Desktop/json-c/json_object.c normal arm64 c com.apple.compilers.llvm.clang.1_0.compiler (in target 'json-c-static' from project 'json-c')
cd /Users/kenji/Desktop/json-c
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c -target arm64-apple-ios13.0-simulator -fmessage-length\=242 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit\=0 -fcolor-diagnostics -Wno-trigraphs -fpascal-strings -O2 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-implicit-fallthrough -DCMAKE_INTDIR\=\"Release-iphonesimulator\" -D_GNU_SOURCE -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk -fstrict-aliasing -Wdeprecated-declarations -Wno-sign-conversion -Wno-infinite-recursion -Wno-comma -Wno-block-capture-autoreleasing -Wno-strict-prototypes -Wno-semicolon-before-method-body -I/Users/kenji/Desktop/json-c/_builds/Release-iphonesimulator/include -I/Users/kenji/Desktop/json-c -I/Users/kenji/Desktop/json-c/_builds -I/Users/kenji/Desktop/json-c/_builds/build/json-c-static.build/Release-iphonesimulator/DerivedSources-normal/arm64 -I/Users/kenji/Desktop/json-c/_builds/build/json-c-static.build/Release-iphonesimulator/DerivedSources/arm64 -I/Users/kenji/Desktop/json-c/_builds/build/json-c-static.build/Release-iphonesimulator/DerivedSources -F/Users/kenji/Desktop/json-c/_builds/Release-iphonesimulator -ffunction-sections -fdata-sections -Werror -Wall -Wcast-qual -Wno-error\=deprecated-declarations -Wextra -Wwrite-strings -Wno-unused-parameter -Wstrict-prototypes -DNDEBUG -fPIC -D_REENTRANT -D JSON_C_DLL -MMD -MT dependencies -MF /Users/kenji/Desktop/json-c/_builds/build/json-c-static.build/Release-iphonesimulator/Objects-normal/arm64/json_object.d --serialize-diagnostics /Users/kenji/Desktop/json-c/_builds/build/json-c-static.build/Release-iphonesimulator/Objects-normal/arm64/json_object.dia -c /Users/kenji/Desktop/json-c/json_object.c -o /Users/kenji/Desktop/json-c/_builds/build/json-c-static.build/Release-iphonesimulator/Objects-normal/arm64/json_object.o
Task input dependencies:
/Users/kenji/Desktop/json-c/json_object.c
Task output dependencies:
/Users/kenji/Desktop/json-c/_builds/build/json-c-static.build/Release-iphonesimulator/Objects-normal/arm64/json_object.o
Run reason: rule has never built
/Users/kenji/Desktop/json-c/json_object.c:52:2: error: Unable to determine size of ssize_t
#error Unable to determine size of ssize_t
^
/Users/kenji/Desktop/json-c/json_object.c:204:52: error: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Werror,-Wshorten-64-to-32]
printbuf_memappend(pb, str + start_offset, pos - start_offset);
~~~~~~~~~~~~~~~~~~ ~~~~^~~~~~~~~~~~~~
/Users/kenji/Desktop/json-c/json_object.c:231:29: error: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Werror,-Wshorten-64-to-32]
pos - start_offset);
~~~~^~~~~~~~~~~~~~
/Users/kenji/Desktop/json-c/json_object.c:242:50: error: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Werror,-Wshorten-64-to-32]
printbuf_memappend(pb, str + start_offset, pos - start_offset);
~~~~~~~~~~~~~~~~~~ ~~~~^~~~~~~~~~~~~~
/Users/kenji/Desktop/json-c/json_object.c:682:38: error: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Werror,-Wshorten-64-to-32]
return printbuf_memappend(pb, sbuf, strlen(sbuf));
~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~
/Users/kenji/Desktop/json-c/json_object.c:1065:13: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
size = p - buf;
~ ~~^~~~~
/Users/kenji/Desktop/json-c/json_object.c:1136:21: error: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Werror,-Wshorten-64-to-32]
int userdata_len = strlen((const char *)jso->_userdata);
~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kenji/Desktop/json-c/json_object.c:1251:13: error: use of undeclared identifier 'SSIZE_T_MAX'
if (len > (SSIZE_T_MAX - (sizeof(*jso) - sizeof(jso->c_string)) - 1))
^
/Users/kenji/Desktop/json-c/json_object.c:1304:32: error: implicit conversion loses integer precision: 'ssize_t' (aka 'long') to 'int' [-Werror,-Wshorten-64-to-32]
case json_type_string: return _json_object_get_string_len(JC_STRING_C(jso));
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kenji/Desktop/json-c/json_object.c:1676:37: error: implicit conversion loses integer precision: 'ssize_t' (aka 'long') to 'int' [-Werror,-Wshorten-64-to-32]
_json_object_get_string_len(JC_STRING(src)));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10 errors generated.
[...]
While ignoring the conversion (risky) succeed to build libjson.a:
cmake --build _builds --config Release --target json-c-static -- -sdk iphonesimulator GCC_WARN_64_TO_32_BIT_CONVERSION=No
Version and Platform
- json-c version: [master]
- OS: [macOS 13 / Xcode 14.2]
- Custom cmake/build flags, if any => see steps to reproduce
Metadata
Metadata
Assignees
Labels
No labels