ASPLes / nopoll

OpenSource WebSocket toolkit
http://www.aspl.es/nopoll
GNU Lesser General Public License v2.1
126 stars 73 forks source link

Build error while Cross-Compiling #64

Closed firozsainudeen closed 5 years ago

firozsainudeen commented 5 years ago

Hi, Got the following build error while trying to cross compile nopoll for openwrt (Raspberry Pi3) . The build seems to be unable to find some SSL methods. Is there any similar issues?

checking for openssl/ssl.h... yes checking for SSLv3_method in -lssl... no checking for SSLv23_method in -lssl... no checking for TLSv1_method in -lssl... no checking for TLSv1_1_method in -lssl... no checking for TLSv1_2_method in -lssl... no checking for TLS_client_method in -lssl... no Checking vasprintf support: no checking for doxygen... no checking that generated files are newer than configure... done configure: creating ./config.status Host detected: aarch64-openwrt-linux-gnu config.status: creating Makefile config.status: creating src/Makefile config.status: creating doc/Makefile config.status: creating doc/nopoll.doxygen config.status: creating test/Makefile config.status: creating nopoll.pc config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands config.status: executing libtool commands config.status: executing nopoll_config.h commands config.status: nopoll_config.h is unchanged

-- LibNoPoll (0.4.5.b375) LIBRARY SETTINGS --

Installation prefix: select(2) support: yes poll(2) support: yes epoll(2) support: no OpenSSL TLS protocol versions detected: SSLv3: no SSLv23: no TLSv1.0: no TLSv1.1: no TLSv1.2: no TLS flx: no

-- NOW TYPE: make; make install --

-- Mira papa! Sin manos!!! --

In file included from ./nopoll.h:41:0, from nopoll.c:38: ./nopoll_decl.h:541:1: error: empty enum is invalid } noPollSslProtocol ;

francisbrosnan commented 5 years ago

Hello @firozsainudeen It seems your installation have no ssl support. It seems OpenWrt already provides support for noPoll:

https://openwrt.org/packages/table/start?dataflt%5BName_pkg-dependencies*~%5D=nopoll

..though it is an older version, it confirms nopoll can run on OpenWrt.

I've been checking packaging for latest OpenWrt and they add nothing speciall to have it compiled:

https://github.com/openwrt/packages/tree/openwrt-18.06/libs/libnopoll

With all these identified, please, check your installation to have openssl devel libraries installed and available so you get at least one "yes" on configure checking:

checking for SSLv3_method in -lssl... no
checking for SSLv23_method in -lssl... no
checking for TLSv1_method in -lssl... no
checking for TLSv1_1_method in -lssl... no
checking for TLSv1_2_method in -lssl... no
checking for TLS_client_method in -lssl... no
francisbrosnan commented 5 years ago

Seems to me user specific case. Please, reopen and provide details on how noPoll could fix this. Best Regards.

kyakan commented 5 years ago

I have the same issue, I prepare a custom target sysroot for build it, and put inside the ssl library

ls target/usr/lib/libssl*
rpisys/target/usr/lib/libssl3.so  rpisys/target/usr/lib/libssl.so.1.0.2  rpisys/target/usr/lib/libssl.so.1.1

I run the configure with

 ./configure LDFLAGS="-L${CMAKE_FIND_ROOT_PATH}/usr/lib/" CFLAGS="-I${CMAKE_FIND_ROOT_PATH}/usr/include " --enable-static --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf -prefix=/nopoll --with-sysroot=${CMAKE_FIND_ROOT_PATH}

CMAKE_FIND_ROOT_PATH is the path to target root sysfs, as you see I put it explicitly in the LDFLAGS and CFLAGS but get the same result

Seems that it doesn't use --with-sysroot= to search the library, or the check can't be performed on a different architecture (in this case -lssl is ARM)

Regards

francisbrosnan commented 5 years ago

Please, provide full compilation logs for two or three objects (.o) where flags you are adding appears and are not considered.