From dfd930a13e0061970ee72f951158cd2c4b0f7f32 Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Mon, 8 Feb 2021 16:59:20 -0600 Subject: [PATCH] libsuricata-config: program to print build flags 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 | 2 ++ Makefile.am | 1 + configure.ac | 2 ++ libsuricata-config.in | 66 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 libsuricata-config.in diff --git a/.gitignore b/.gitignore index ca98ed119e..56203f4e0a 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,5 @@ test.sh .vscode/* /suricata-update/* !/suricata-update/Makefile.am +/libsuricata-config +!/libsuricata-config.in diff --git a/Makefile.am b/Makefile.am index 5bcf9280a8..4cb7488750 100644 --- a/Makefile.am +++ b/Makefile.am @@ -58,3 +58,4 @@ endif install-library: cd src && $(MAKE) $@ cd rust && $(MAKE) $@ + $(INSTALL) libsuricata-config "$(DESTDIR)$(bindir)/libsuricata-config" diff --git a/configure.ac b/configure.ac index 8aaf4a66d0..af47d47b4b 100644 --- a/configure.ac +++ b/configure.ac @@ -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 index 0000000000..1fabe07652 --- /dev/null +++ b/libsuricata-config.in @@ -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"