Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
INDY Cross Platform
#2
(10-28-2018, 11:38 PM)Cirrus22 Wrote: Regardless, I have a third party component that uses Indy. I have asked the vendor whether it is cross platform. His advice is that 'his' code is cross platform, but he uses INDY and INDY is not cross platform.

Then he doesn't know what he is talking about, because Indy is most definitely cross-platform.

(10-28-2018, 11:38 PM)Cirrus22 Wrote:     The component is not compatible with Firemonkey as it uses DLL files form Indy and the DLLs aren't cross-platform. 

Indy supports FireMonkey, and every platform that FireMonkey supports (Windows, OSX, iOS, Android, Linux). And it supports FreePascal, so it supports a lot more platforms than Delphi does.

He might be referring to the fact that some portions of Indy do make use of external libraries on various platforms (DLLs on Windows, SOs on Linux/Android, DyLibs on Apple, etc) for things like OpenSSL, ZLib, etc. But those are optional pieces. The majority of Indy is platform-agnostic, except for the underlying socket APIs used.

(10-28-2018, 11:38 PM)Cirrus22 Wrote: To which I replied:

According to StackOverflow, INDY works with FMX (and in my case macOS) and has for some time. Since there is nothing visual the VCL doesn't get invoked (this is from 2011).

Yup.

(10-28-2018, 11:38 PM)Cirrus22 Wrote: To which he replied:

         Indy works with Firemonkey, although the 2 DLL files included (ssleay32.dll, libeay32.dll) aren't cross-platform. 

DLLs are specific to Windows, but the concept of dynamic libraries is not. OpenSSL is available on many platforms, and Indy can use OpenSSL on all of the supported FireMonkey platforms (though there are some issues on Android 6+).

But more importantly, OpenSSL is merely Indy's default library of choice for SSL/TLS support, but OpenSSL is not a requirement. Any SSL/TLS library can be used with Indy as long as you have a TIdSSLIOHandlerSocketBase-derived wrapper component for it. For example, Eldos Blackbox provides such a component for its own SSL/TLS library. And Indy's team is researching to provide a new component for SChannel on Windows as an alternative for OpenSSL (and maybe other SSL/TLS libraries on other platforms in the future as OpenSSL platform support is starting to wain, such as BoringSSL, LibreSSL, etc). So, if you are willing to put in a little extra work when needed, you are NOT tied to OpenSSL specifically.

(10-28-2018, 11:38 PM)Cirrus22 Wrote: Is INDY (latest version) Cross Platform

Yes.

(10-28-2018, 11:38 PM)Cirrus22 Wrote: can I use it in my application that is to be deployed on macOS?

Yes.

(10-28-2018, 11:38 PM)Cirrus22 Wrote: and if so, is there anything 'special' I would need to do?

No.

(10-28-2018, 11:38 PM)Cirrus22 Wrote: For the record, his USES clause contains these references to INDY components:

  IdHTTP,
  IdLogFile,
  IdComponent,
  IdSocks,
  IdSSLOpenSSL;

None of those units are platform-specific. Though, the IdSSLOpenSSL unit does depend on the IdSSLOpenSSLHeaders unit, which it turn supports OpenSSL libraries (in DLL, SO, or DYLIB form) on all of FireMonkey's supported platforms. In the case of iOS, you do need to use the IdSSLOpenSSLHeaders_static unit and static-link .A files, as Indy loads OpenSSL statically on iOS devices (due to an old Apple restriction on loading libraries dynamically), but it loads OpenSSL dynamically on all other platforms (including the iOS simulator).

Reply


Messages In This Thread
INDY Cross Platform - by Cirrus22 - 10-28-2018, 11:38 PM
RE: INDY Cross Platform - by rlebeau - 10-29-2018, 07:28 PM
RE: INDY Cross Platform - by Cirrus22 - 10-29-2018, 11:08 PM
RE: INDY Cross Platform - by rlebeau - 10-31-2018, 07:32 PM
RE: INDY Cross Platform - by shochberg - 10-31-2018, 08:15 PM
RE: INDY Cross Platform - by shochberg - 10-31-2018, 06:34 PM

Forum Jump:


Users browsing this thread: 2 Guest(s)