Compile version 4.4.0 in Yocto
I created the recipe for yocto libwebsocket_4.4.0.bb with
SRCREV = "e636b7bd133c4c0bfbdbf0d77afebdb20e09a5a2" SRC_URI = "git://github.com/warmcat/libwebsockets.git;protocol=https;branch=master;branch=v4.4-stable"
I had to enable -DCMAKE_C_FLAGS=‘-Wno-error’ to see the error, which is as follows:
| FAILED: lib/CMakeFiles/websockets_shared.dir/plat/unix/unix-plugins.c.o | /home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc -DLWS_BUILDING_SHARED -Dwebsockets_shared_EXPORTS -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/include -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/build -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/secure-streams -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/plat/unix/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/tls/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/core/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/misc/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/misc/misc/jrpc -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/system/./async-dns -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/system/smd/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/system/metrics/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/core-net/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/http/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/http/./compression -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/h1/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/h2/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/ws/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/raw-skt/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/raw-file/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/roles/listen/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/event-libs/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/event-libs/poll/../poll -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/event-libs/libuv/. -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/recipe-sysroot/usr/include -I/home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/secure-streams/. -Wno-deprecated-declarations -Wno-deprecated -Wall -Wextra -Wno-unused-parameter -Wconversion -Wsign-compare -Wstrict-aliasing -fvisibility=hidden -Wundef -Wuninitialized -Wtype-limits -Wignored-qualifiers -Wno-error -Werror -fPIC -MD -MT lib/CMakeFiles/websockets_shared.dir/plat/unix/unix-plugins.c.o -MF lib/CMakeFiles/websockets_shared.dir/plat/unix/unix-plugins.c.o.d -o lib/CMakeFiles/websockets_shared.dir/plat/unix/unix-plugins.c.o -c /home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/plat/unix/unix-plugins.c | In file included from /home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/core/./private-lib-core.h:330, | from /home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/plat/unix/unix-plugins.c:28: | /home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/system/smd/./private-lib-system-smd.h:74:9: error: unknown type name 'lws_mutex_t' | 74 | lws_mutex_t lock_messages; | | ^~~~~~~~~~~ | /home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/system/smd/./private-lib-system-smd.h:76:9: error: unknown type name 'lws_mutex_t' | 76 | lws_mutex_t lock_peers; | | ^~~~~~~~~~~ | /home/irisbond/workdir/yocto/build_hiru/tmp/work/armv8a-poky-linux/libwebsockets/4.4.0-r0/git/lib/system/smd/./private-lib-system-smd.h:82:9: error: unknown type name 'lws_tid_t' | 82 | lws_tid_t tid_holding;
It seems to be something related to a new library in lib/system/smd (System Message Distribution), as if an include is missing somewhere in the data, and it does not recognize the “lws_mutex_t” structure.
The tests I have tried have been useless... Any ideas?
You should make sure the cmake part 1) feels you are on unix plat, 2) have pthreads (LWS_HAVE_PTHREAD_H)
Because lws_mutex_t comes from lib/plat/unix/private-lib-plat-unix.h
#if defined(LWS_HAVE_PTHREAD_H)
#include <pthread.h>
#include <sys/types.h>
typedef pthread_mutex_t lws_mutex_t;
...
If you don't care about SMD you might be able to evade the problem by -DLWS_WITH_SYS_SMD=0 at lws cmake