Open TSC21 opened 1 year ago
Hi @TSC21, Did you find a solution for this ? I don't have much experience in use cmake in this way to pull in dependencies, when I have used cmake and libsrtp in small cmake based projects I have either just let it find the system install or else used OPENSSL_ROOT_DIR if I need to point to a specific install. It is our aim to have cmake build that follows best practice but it is not always obvious what that is. If you find out what is wrong and how to fix it then please make a PR otherwise I do not think we will prioritizing fixing this.
I am trying to cross-compile
libdatachannel
to Windows, which depends onlibsrtp
, using dockcross (more specifically, https://github.com/dockcross/dockcross/tree/master/windows-static-x64) in Ubuntu 20.04. This container image in specific uses MXE together with thex86_64-w64-mingw32
compiler.OpenSSL (v1.1.1) is also built through this container using the following configuration and build command: (note this is being called from CMake, and so the usage of CMake variables)
The command above runs properly and
libcrypto.a
andlibssl.a
are both installed in${CMAKE_INSTALL_PREFIX}/lib
, besides the headers on the${CMAKE_INSTALL_PREFIX}/include
folder. Here's theinstall
tree structure:But, for some reason,
libsrtp
when callingfind_package(OpenSSL REQUIRED)
, fails to findOPENSSL_CRYPTO_LIBRARY
as it can be seen above. Note thatOPENSSL_INCLUDE_DIR
had to also be passed as aCMAKE_ARG
to buildlidatachannel
becauseFindOpenSSL()
is was also not able to findopenssl/ssl.h
, although it is installed in${CMAKE_INSTALL_PREFIX}/include
. OpenSSL is marked as a dependency oflibdatachannel
while building through CMake, so I don't necessarily understand why this fails. One thing to note is that MXE setsMSYS
to 1, and also since we are using mingw32 to cross-compile,WIN32
andMINGW
are also set to 1. If I try to manually setMINGW
andWIN32
to 0, thenfind_package(OpenSSL)
succeeds and the build process continues, until the linker fails because the architecture is of course wrong.This is the error seen:
Is this potentially a problem with the OpenSSL build or even with the default
FindOpenSSL.cmake
module? Or is this something that can be addressed onlibsrtp
CMakeLists.txt
? Any help with this would be appreciated.Thanks in advance!