I'm trying to cross compile libwebsockets for arm. I put OpenSSL and Zlib path in CMakefiles.txt. But after command "make", it makes error.
OpenSSL and Zlib path setting in CMakefiles.txt
SET(ZLIB_INCLUDE_DIR /home/jacob/Workspace/lib/zlib/include)
SET(ZLIB_LIBRARY /home/jacob/Workspace/lib/zlib/lib/libz.so)
set(OPENSSL_ROOT_DIR /home/jacob/Workspace/lib/openssl/)
set(OPENSSL_CRYPTO_LIBRARY /home/jacob/Workspace/lib/openssl/lib/libcrypto.so)
set(OPENSSL_INCLUDE_DIR /home/jacob/Workspace/lib/openssl/include/)
set(OPENSSL_LIBRARIES /home/jacob/Workspace/lib/openssl/lib/)
set(OPENSSL_SSL_LIBRARY /home/jacob/Workspace/lib/openssl/lib/libssl.so)
The error when I enter "make" command
jacob@ubuntu:~/Workspace/Github/libwebsockets/build$ make
Scanning dependencies of target GENHDR
[ 1%] Creating build include dir
[ 1%] Built target GENHDR
Scanning dependencies of target websockets
[ 2%] Building C object lib/CMakeFiles/websockets.dir/plat/unix/unix-caps.c.o
In file included from /home/jacob/Workspace/Github/libwebsockets/include/libwebsockets.h:632,
from /home/jacob/Workspace/Github/libwebsockets/lib/core/./private-lib-core.h:140,
from /home/jacob/Workspace/Github/libwebsockets/lib/plat/unix/unix-caps.c:28:
/home/jacob/Workspace/Github/libwebsockets/include/libwebsockets/lws-genhash.h:85:18: error: field ‘ctx’ has incomplete type
85 | HMAC_CTX ctx;
| ^~~
lib/CMakeFiles/websockets.dir/build.make:62: recipe for target 'lib/CMakeFiles/websockets.dir/plat/unix/unix-caps.c.o' failed
make[2]: *** [lib/CMakeFiles/websockets.dir/plat/unix/unix-caps.c.o] Error 1
CMakeFiles/Makefile2:1068: recipe for target 'lib/CMakeFiles/websockets.dir/all' failed
make[1]: *** [lib/CMakeFiles/websockets.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2
I fixed the issue myself. I added cmake options of toolchain, openssl that I cross-compiled and so on.
cmake command
cmake -DLWS_WITHOUT_EXTENSIONS=ON -DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITHOUT_TEST_CLIENT=ON \
-DLWS_WITHOUT_TEST_ECHO=ON -DLWS_WITHOUT_TEST_FRAGGLE=ON -DLWS_WITHOUT_TEST_PING=ON \
-DLWS_WITHOUT_TEST_SERVER=ON -DLWS_WITHOUT_TEST_SERVER_EXTPOLL=ON -DLWS_WITH_NO_LOGS=ON \
-DLWS_WITH_RANGES=OFF -DLWS_WITH_SHARED=OFF -DLWS_WITH_ZIP_FOPS=OFF -DLWS_WITH_ZLIB=OFF \
-DLWS_STATIC_PIC=ON -DLWS_WITH_SSL=ON \
-DLWS_OPENSSL_LIBRARIES="/home/jacob/Workspace/lib/openssl/lib/libssl.a;/home/jacob/Workspace/lib/openssl/lib/libcrypto.a" \
-DLWS_OPENSSL_INCLUDE_DIRS="/home/jacob/Workspace/lib/openssl/include" \
-DCMAKE_TOOLCHAIN_FILE="/home/jacob/Workspace/Github/libwebsockets/cross-compile-arm.cmake" ..
cross-compile-arm.cmake
set(CROSS_PATH /your-toolchain-path/bin)
set(CMAKE_SYSTEM_NAME Ubuntu)
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_C_COMPILER "${CROSS_PATH}/arm-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "${CROSS_PATH}/arm-linux-gnueabihf-g++")
set(CMAKE_C_FLAGS "-Wno-error")
set(CMAKE_FIND_ROOT_PATH "${CROSS_PATH}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)