Subject: does libssh2 build for iOS 12.2 (with OpenSSL 1.1.1a or 1.1.1b) and XCode 10.2?

does libssh2 build for iOS 12.2 (with OpenSSL 1.1.1a or 1.1.1b) and XCode 10.2?

From: <rollastre_at_gmail.com>
Date: Mon, 13 May 2019 15:11:44 +0200

Hi list.

I have managed to build libssh2 in a variety of environments (android
clang, linux gcc, windows mvc, macos clang) and I am completely unable
to build it for iOS 12.2 (didn't try to do it in an older version) with
the specs of the subject (OpenSSL 1.1.1a or 1.1.1b, XCode 10.2.

I doesn't matter what I try. Building it manually, using this iSSH2
script (https://github.com/Frugghi/iSSH2
<https://github.com/Frugghi/iSSH2>), etc. It always fails. From syntax
errors like the following

CompileC
build/src/libssh2.build/Release-iphoneos/libssh2.build/Objects-normal/armv7/agent.o
src/agent.c normal armv7 c com.apple.compilers.llvm.clang.1_0.compiler
     cd /tmp/libssh2-1.8.0
    
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-x c -arch armv7 -fmessage-length=181
-fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0
-fcolor-diagnostics -Wno-trigraphs -fpascal-strings -O3
-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
-Wno-shorten-64-to-32 -Wpointer-sign -Wno-newline-eof
-DCMAKE_INTDIR=\"Release-iphoneos\" -DLIBSSH2_OPENSSL
-DLIBSSH2_DH_GEX_NEW=1 -DLIBSSH2_CLEAR_MEMORY -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk
-fstrict-aliasing -Wdeprecated-declarations -miphoneos-version-min=10.0
-Wno-sign-conversion -Wno-infinite-recursion -Wno-comma
-Wno-block-capture-autoreleasing -Wno-strict-prototypes
-Wno-semicolon-before-method-body -fembed-bitcode-marker
-I/tmp/libssh2-1.8.0/build/src/Release-iphoneos/include
-I/Users/jaume/Documents/dev/openssl-build-xcrun-ios/include
-I/tmp/libssh2-1.8.0/include -I/tmp/libssh2-1.8.0/build/src
-I/tmp/libssh2-1.8.0/build/src/libssh2.build/Release-iphoneos/libssh2.build/DerivedSources-normal/armv7
-I/tmp/libssh2-1.8.0/build/src/libssh2.build/Release-iphoneos/libssh2.build/DerivedSources/armv7
-I/tmp/libssh2-1.8.0/build/src/libssh2.build/Release-iphoneos/libssh2.build/DerivedSources
-Wmost -Wno-four-char-constants -Wno-unknown-pragmas
-F/tmp/libssh2-1.8.0/build/src/Release-iphoneos -DNDEBUG -std=gnu90 -MMD
-MT dependencies -MF
/tmp/libssh2-1.8.0/build/src/libssh2.build/Release-iphoneos/libssh2.build/Objects-normal/armv7/agent.d
--serialize-diagnostics
/tmp/libssh2-1.8.0/build/src/libssh2.build/Release-iphoneos/libssh2.build/Objects-normal/armv7/agent.dia
-c /tmp/libssh2-1.8.0/src/agent.c -o
/tmp/libssh2-1.8.0/build/src/libssh2.build/Release-iphoneos/libssh2.build/Objects-normal/armv7/agent.o
In file included from /tmp/libssh2-1.8.0/src/agent.c:40:
In file included from /tmp/libssh2-1.8.0/src/libssh2_priv.h:44:
/tmp/libssh2-1.8.0/build/src/libssh2_config.h:91:12: error: expected
parameter declarator
static int snprintf(char * cp, int cp_max_len, const char * fmt, ...)
            ^

or mismatch of BITCODE being used in libssh2 and not in openssl

to link error (which is the closest I get to get it built) like this

[100%] Linking C shared library ../../lib/libssh2.dylib
ld: warning: -headerpad_max_install_names is ignored when used with
-bitcode_bundle (Xcode setting ENABLE_BITCODE=YES)
Undefined symbols for architecture armv7:
   "_ENGINE_load_builtin_engines", referenced from:
       _libssh2_init in global.c.o
       __libssh2_init_if_needed in global.c.o
   "_ENGINE_register_all_complete", referenced from:
       _libssh2_init in global.c.o
       __libssh2_init_if_needed in global.c.o
ld: symbol(s) not found for architecture armv7

which normally means that the dependency (openssl) wasn't build for
armv7, but

$ lipo -info libcrypto.a
Architectures in the fat file: libcrypto.a are: armv7 armv7s x86_64 arm64
$ lipo -info libssl.a
Architectures in the fat file: libssl.a are: armv7 armv7s x86_64 arm64

so, not the case either.

I ran out of ideas and I wonder if it is just not possible to do what I
am trying to.

Anybody knows if it is possible and can enlighten me, please?
Thanks in advance.

_______________________________________________
libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
Received on 2019-05-13