kamailio-5.x: fix erlang build

The Erlang module build checks for libs and includes using the erl tool.
This is a hostpkg tool providing paths into the staging/hostpkg.
Of course this fails:

arc-openwrt-linux-uclibc-gcc -shared  -Wl,-O2 -Wl,-E  -L/builder/shared-workdir/build/sdk/staging_dir/toolchain-arc_arc700_gcc-8.4.0_uClibc/usr/lib -L/builder/shared-workdir/build/sdk/staging_dir/toolchain-arc_arc700_gcc-8.4.0_uClibc/lib -L/builder/shared-workdir/build/sdk/staging_dir/target-arc_arc700_uClibc/usr/lib/libiconv-stub/lib -Wl,-rpath-link=/builder/shared-workdir/build/sdk/staging_dir/target-arc_arc700_uClibc/usr/lib/libiconv-stub/lib -L/builder/shared-workdir/build/sdk/staging_dir/target-arc_arc700_uClibc/usr/lib/libintl-stub/lib -Wl,-rpath-link=/builder/shared-workdir/build/sdk/staging_dir/target-arc_arc700_uClibc/usr/lib/libintl-stub/lib -znow -zrelro -pthread -rdynamic "-ldl" -Wl,-Bsymbolic-functions handle_emsg.o pv_xbuff.o cnode.o erl_api.o epmd.o erl_helpers.o pv_ref.o pv_pid.o pv_atom.o worker.o handle_rpc.o pv_list.o pv_tuple.o erlang_mod.o  -L/builder/shared-workdir/build/sdk/staging_dir/hostpkg/lib/erlang/lib/erl_interface-4.0/lib -lei -lpthread   -o erlang.so
/builder/shared-workdir/build/sdk/staging_dir/toolchain-arc_arc700_gcc-8.4.0_uClibc/bin/../lib/gcc/arc-openwrt-linux-uclibc/8.4.0/../../../../arc-openwrt-linux-uclibc/bin/ld: /builder/shared-workdir/build/sdk/staging_dir/hostpkg/lib/erlang/lib/erl_interface-4.0/lib/libei.a: error adding symbols: file format not recognized
collect2: error: ld returned 1 exit status
../../Makefile.rules:191: recipe for target 'erlang.so' failed
make[6]: *** [erlang.so] Error 1

This patch prevents this by relying on the standard paths, where Erlang
resides in OpenWrt.

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
This commit is contained in:
Sebastian Kemper 2020-12-05 12:37:01 +01:00
parent de86a47df7
commit eea98c6533

View file

@ -0,0 +1,30 @@
--- a/src/modules/erlang/Makefile
+++ b/src/modules/erlang/Makefile
@@ -5,20 +5,21 @@ include ../../Makefile.defs
auto_gen=
NAME=erlang.so
-ERLANG=$(shell which erl)
+# In OpenWrt Erlang resides in standard locations, no special flags required
+#ERLANG=$(shell which erl)
ifneq ($(ERLANG),)
ERLANG_LIBDIR=$(shell $(ERLANG) -noshell -eval 'io:format("~n~s/lib~n", [[code:lib_dir("erl_interface")]]).' -s erlang halt | tail -n 1)
ERLANG_INCDIR=$(shell $(ERLANG) -noshell -eval 'io:format("~n~s/include~n", [[code:lib_dir("erl_interface")]]).' -s erlang halt | tail -n 1)
endif
-ifeq ($(ERLANG_LIBDIR)$(ERLANG_INCDIR),)
-$(error Not found Erlang)
-endif
+#ifeq ($(ERLANG_LIBDIR)$(ERLANG_INCDIR),)
+#$(error Not found Erlang)
+#endif
-LIBS=-L$(ERLANG_LIBDIR) -lei -lpthread
+LIBS=-lei -lpthread
-DEFS+=-I$(ERLANG_INCDIR)
+#DEFS+=-I$(ERLANG_INCDIR)
DEFS+=-D_REENTRANT