LDFLAGS="${LDFLAGS} -L/opt/local/lib"
;;
*-*-linux*)
+ # Always compile with -fPIC on Linux for shared library support.
+ CFLAGS="${CFLAGS} -fPIC"
RUST_LDADD="-ldl -lrt -lm"
+ can_build_shared_library="yes"
;;
*-*-mingw32*|*-*-msys)
CFLAGS="${CFLAGS} -DOS_WIN32"
AC_SUBST(RUST_FEATURES)
AC_SUBST(RUST_SURICATA_LIBDIR)
+AM_CONDITIONAL([BUILD_SHARED_LIBRARY], [test "x$enable_shared" = "xyes"] && [test "x$can_build_shared_library" = "xyes"])
+
AC_CONFIG_FILES(Makefile src/Makefile rust/Makefile rust/Cargo.toml rust/.cargo/config)
AC_CONFIG_FILES(qa/Makefile qa/coccinelle/Makefile)
AC_CONFIG_FILES(rules/Makefile doc/Makefile doc/userguide/Makefile doc/devguide/Makefile)
suricata_LDADD = libsuricata_c.a $(HTP_LDADD) $(RUST_LDADD)
suricata_DEPENDENCIES = libsuricata_c.a
+if BUILD_SHARED_LIBRARY
+libsuricata.so.$(VERSION): libsuricata_c.a
+ $(CC) -shared -o $@ -Wl,-soname,$@ -Wl,--whole-archive \
+ libsuricata_c.a \
+ $(RUST_SURICATA_LIB) \
+ -Wl,--no-whole-archive
+libsuricata.so: libsuricata.so.$(VERSION)
+else
+libsuricata.so:
+ @echo "shared library support not enabled"
+ @exit 1
+endif
+
if BUILD_FUZZTARGETS
LDFLAGS_FUZZ = $(all_libraries) $(SECLDFLAGS)