]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
libsuricata-config: program to print build flags
authorJason Ish <jason.ish@oisf.net>
Mon, 8 Feb 2021 22:59:20 +0000 (16:59 -0600)
committerJason Ish <jason.ish@oisf.net>
Tue, 16 Feb 2021 17:43:26 +0000 (11:43 -0600)
Following the pattern of many other libraries, provide a -config
program to output cflags and libs to properly link an application
against the library.

usage: libsuricata-config [--cflags] [--libs] [--static]

--cflags and --libs can be used infividually or together.

--static will link against the static libraries instead of the
shared library. Note that if the shared library is not available,
the static libraries will be provided even without this option.

.gitignore
Makefile.am
configure.ac
libsuricata-config.in [new file with mode: 0644]

index ca98ed119e66f16eb582bb5bc135d45592675b7d..56203f4e0acb80914a70ed1a5006900fc13cf901 100644 (file)
@@ -65,3 +65,5 @@ test.sh
 .vscode/*
 /suricata-update/*
 !/suricata-update/Makefile.am
+/libsuricata-config
+!/libsuricata-config.in
index 5bcf9280a856d6e2b2780049480806f1cb112b90..4cb74887509f8e773aac27832c38776e5ec7fe71 100644 (file)
@@ -58,3 +58,4 @@ endif
 install-library:
        cd src && $(MAKE) $@
        cd rust && $(MAKE) $@
+       $(INSTALL) libsuricata-config "$(DESTDIR)$(bindir)/libsuricata-config"
index 8aaf4a66d0d9da377edbd2cfefc9e4219e39b1f7..af47d47b4b18ad6108d1e60086c01d60d51089cd 100644 (file)
@@ -2680,6 +2680,7 @@ AC_SUBST(PACKAGE_VERSION)
 AC_SUBST(RUST_FEATURES)
 AC_SUBST(RUST_SURICATA_LIBDIR)
 AC_SUBST(RUST_SURICATA_LIBNAME)
+AC_SUBST(enable_non_bundled_htp)
 
 AM_CONDITIONAL([BUILD_SHARED_LIBRARY], [test "x$enable_shared" = "xyes"] && [test "x$can_build_shared_library" = "xyes"])
 
@@ -2690,6 +2691,7 @@ AC_CONFIG_FILES(contrib/Makefile contrib/file_processor/Makefile contrib/file_pr
 AC_CONFIG_FILES(suricata.yaml etc/Makefile etc/suricata.logrotate etc/suricata.service)
 AC_CONFIG_FILES(python/Makefile python/suricata/config/defaults.py)
 AC_CONFIG_FILES(ebpf/Makefile)
+AC_CONFIG_FILES(libsuricata-config)
 AC_OUTPUT
 
 SURICATA_BUILD_CONF="Suricata Configuration:
diff --git a/libsuricata-config.in b/libsuricata-config.in
new file mode 100644 (file)
index 0000000..1fabe07
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+includedir="@includedir@"
+libdir="@libdir@"
+LIBS="@LIBS@ @RUST_LDADD@"
+
+shared_lib="-lsuricata"
+static_lib="-lsuricata_c -lsuricata_rust"
+
+enable_non_bundled_htp="@enable_non_bundled_htp@"
+
+lib="$shared_lib"
+
+show_libs="no"
+show_cflags="no"
+use_static="no"
+
+if [ "$#" = 0 ]; then
+    echo "usage: suricata-config [--cflags] [--libs] [--static]"
+    exit 0
+fi
+
+while [ "$#" != 0 ]
+do
+    case "$1" in
+        --libs)
+            show_libs="yes"
+            ;;
+        --cflags)
+            show_cflags="yes"
+            ;;
+        --static)
+            lib="$static_lib"
+            use_status="yes"
+            ;;
+    esac
+    shift
+done
+
+# If --static wasn't provided, use the static library if the shared
+# library is not available.
+if [ "$use_static" = "no" ]; then
+    if ! test -e "$libdir/libsuricata.so"; then
+        lib="$static_lib"
+    fi
+fi
+
+# If we're using a bundled htp, add it to the libs as well. It will
+# already be present if we're use a non-bundled libhtp.
+if [ "$enable_non_bundled_htp" = "no" ]; then
+    lib="${lib} -lhtp"
+fi
+
+output=""
+
+if [ "$show_cflags" = "yes" ]; then
+    output="${output} -DHAVE_CONFIG_H -I$includedir/suricata"
+fi
+
+if [ "$show_libs" = "yes" ]; then
+    output="${output} -L$libdir $lib $LIBS"
+fi
+
+echo "$output"