# Makefile.in generated by automake 1.18 from Makefile.am.
# rust/Makefile.  Generated from Makefile.in by configure.

# Copyright (C) 1994-2025 Free Software Foundation, Inc.

# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.



am__is_gnu_make = { \
  if test -z '$(MAKELEVEL)'; then \
    false; \
  elif test -n '$(MAKE_HOST)'; then \
    true; \
  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    true; \
  else \
    false; \
  fi; \
}
am__make_running_with_option = \
  case $${target_option-} in \
      ?) ;; \
      *) echo "am__make_running_with_option: internal error: invalid" \
              "target option '$${target_option-}' specified" >&2; \
         exit 1;; \
  esac; \
  has_opt=no; \
  sane_makeflags=$$MAKEFLAGS; \
  if $(am__is_gnu_make); then \
    sane_makeflags=$$MFLAGS; \
  else \
    case $$MAKEFLAGS in \
      *\\[\ \	]*) \
        bs=\\; \
        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
    esac; \
  fi; \
  skip_next=no; \
  strip_trailopt () \
  { \
    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
  }; \
  for flg in $$sane_makeflags; do \
    test $$skip_next = yes && { skip_next=no; continue; }; \
    case $$flg in \
      *=*|--*) continue;; \
        -*I) strip_trailopt 'I'; skip_next=yes;; \
      -*I?*) strip_trailopt 'I';; \
        -*O) strip_trailopt 'O'; skip_next=yes;; \
      -*O?*) strip_trailopt 'O';; \
        -*l) strip_trailopt 'l'; skip_next=yes;; \
      -*l?*) strip_trailopt 'l';; \
      -[dEDm]) skip_next=yes;; \
      -[JT]) skip_next=yes;; \
    esac; \
    case $$flg in \
      *$$target_option*) has_opt=yes; break;; \
    esac; \
  done; \
  test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
am__rm_f = rm -f $(am__rm_f_notfound)
am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/suricata
pkgincludedir = $(includedir)/suricata
pkglibdir = $(libdir)/suricata
pkglibexecdir = $(libexecdir)/suricata
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = x86_64-pc-linux-gnu
host_triplet = x86_64-pc-linux-gnu
am__append_1 = ja3
am__append_2 = ja4
am__append_3 = debug
#am__append_4 = debug-validate
subdir = rust
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
	$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/autoconf.h
CONFIG_CLEAN_FILES = Cargo.lock Cargo.toml
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_$(V))
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_$(V))
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
am__v_GEN_0 = @echo "  GEN     " $@;
am__v_GEN_1 = 
AM_V_at = $(am__v_at_$(V))
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
am__v_at_1 = 
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
	ctags-recursive dvi-recursive html-recursive info-recursive \
	install-data-recursive install-dvi-recursive \
	install-exec-recursive install-html-recursive \
	install-info-recursive install-pdf-recursive \
	install-ps-recursive install-recursive installcheck-recursive \
	installdirs-recursive pdf-recursive ps-recursive \
	tags-recursive uninstall-recursive
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
  distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
  $(RECURSIVE_TARGETS) \
  $(RECURSIVE_CLEAN_TARGETS) \
  $(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
	distdir distdir-am
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates.  Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
  BEGIN { nonempty = 0; } \
  { items[$$0] = 1; nonempty = 1; } \
  END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique.  This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
  list='$(am__tagged_files)'; \
  unique=`for i in $$list; do \
    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  done | $(am__uniquify_input)`
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Cargo.lock.in $(srcdir)/Cargo.toml.in \
	$(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
  dir0=`pwd`; \
  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
  sed_rest='s,^[^/]*/*,,'; \
  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
  sed_butlast='s,/*[^/]*$$,,'; \
  while test -n "$$dir1"; do \
    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
    if test "$$first" != "."; then \
      if test "$$first" = ".."; then \
        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
      else \
        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
        if test "$$first2" = "$$first"; then \
          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
        else \
          dir2="../$$dir2"; \
        fi; \
        dir0="$$dir0"/"$$first"; \
      fi; \
    fi; \
    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
  done; \
  reldir="$$dir2"
ACLOCAL = ${SHELL} '/home/jason/oisf/dev/suricata/master/missing' aclocal-1.18
AMTAR = $${TAR-tar}
AM_DEFAULT_VERBOSITY = 1
AR = ar
AUTOCONF = ${SHELL} '/home/jason/oisf/dev/suricata/master/missing' autoconf
AUTOHEADER = ${SHELL} '/home/jason/oisf/dev/suricata/master/missing' autoheader
AUTOMAKE = ${SHELL} '/home/jason/oisf/dev/suricata/master/missing' automake-1.18
AWK = gawk
BINDGEN = /home/jason/.cargo/bin/bindgen
CARGO = /usr/bin/cargo
CARGO_BUILD_TARGET = 
CARGO_HOME = /home/jason/.cargo
CBINDGEN = /usr/bin/cbindgen
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -fno-common -Wall -Wextra -Wshadow -Wchar-subscripts -Wno-unused-parameter -Wno-deprecated-declarations -Wnull-dereference -Wno-missing-field-initializers -ggdb3 -O0 -fsanitize=address -fPIC -DOS_LINUX -std=c11 -march=native -I${srcdir}/../rust/gen -I${srcdir}/../rust/dist -I../rust/gen
CLANG = /usr/lib/ccache/bin/clang
CLANG_CFLAGS = 
CONFIGURE_DATAROOTDIR = /opt/suricata/8.0.0/share
CONFIGURE_LOCALSTATEDIR = /opt/suricata/8.0.0/var
CONFIGURE_PREFIX = /opt/suricata/8.0.0
CONFIGURE_SYSCONDIR = /opt/suricata/8.0.0/etc
CPP = gcc -E
CPPFLAGS =  -I/usr/include/hs  -I/usr/include/libnl3 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -D__SCFILENAME__=\"$(*F)\"
CSCOPE = cscope
CTAGS = ctags
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -fno-common -Wall -Wextra -Wshadow -Wchar-subscripts -Wno-unused-parameter -Wno-deprecated-declarations -Wnull-dereference -Wno-missing-field-initializers -ggdb3 -O0 -fsanitize=address
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DLLTOOL = false
DSYMUTIL = 
DUMPBIN = 
ECHO_C = 
ECHO_N = -n
ECHO_T = 
EGREP = /usr/bin/grep -E
ETAGS = etags
EXEEXT = 
FGREP = /usr/bin/grep -F
FILECMD = file
GCC_CFLAGS = -Wextra -Werror-implicit-function-declaration
GREP = /usr/bin/grep
HAVE_COCCINELLE_CONFIG = no
HAVE_CURL = 
HAVE_CYGPATH = no
HAVE_GETCONF_CMD = /usr/bin/getconf
HAVE_GIT_CMD = /usr/bin/git
HAVE_PCAP_CONFIG = 
HAVE_PDFLATEX = /usr/bin/pdflatex
HAVE_PKG_CONFIG = /usr/bin/pkg-config
HAVE_PYTHON = /usr/bin/python3
HAVE_WGET = /usr/bin/wget
HWLOC_CFLAGS = 
HWLOC_LIBS = 
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LD = /usr/bin/ld -m elf_x86_64
LDFLAGS =  -rdynamic
LIBOBJS = 
LIBS = -llz4 -lmagic -lunwind -lcap-ng -lbpf -lxdp -lelf -lpcap -lnet -lnetfilter_queue -lnfnetlink -ljansson -lpthread -lyaml -lhs -lpcre2-8  -lz -lhs -lpcap
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIB_FUZZING_ENGINE = 
LIPO = 
LLC = 
LN_S = ln -s
LTLIBOBJS = 
LT_SYS_LIBRARY_PATH = 
MAJOR_MINOR = 8.0
MAKEINFO = ${SHELL} '/home/jason/oisf/dev/suricata/master/missing' makeinfo
MANIFEST_TOOL = :
MKDIR_P = /usr/bin/mkdir -p
NDPI_LIB = 
NM = /usr/bin/nm -B
NMEDIT = 
OBJDUMP = objdump
OBJEXT = o
OPTIMIZATION_CFLAGS = -march=native
OTOOL = 
OTOOL64 = 
PACKAGE = suricata
PACKAGE_BUGREPORT = 
PACKAGE_NAME = suricata
PACKAGE_STRING = suricata 8.0.0
PACKAGE_TARNAME = suricata
PACKAGE_URL = 
PACKAGE_VERSION = 8.0.0
PATH_SEPARATOR = :
PCAP_CFLAGS = -I/usr/include/libnl3 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include
PCAP_LIBS = -lpcap
PKG_CONFIG = /usr/bin/pkg-config
PKG_CONFIG_LIBDIR = 
PKG_CONFIG_PATH = 
POW_LIB = 
RANLIB = ranlib
RELEASE_DATE = 2025-07-08
RUSTC = /usr/bin/rustc
RUSTUP_HOME_PATH = /home/jason/.rustup
RUST_FEATURES =  $(am__append_1) $(am__append_2) \
	$(am__append_3) $(am__append_4)
RUST_LDADD = -ldl -lrt -lm
RUST_SURICATA_LIB = ../rust/target/debug/libsuricata_rust.a
RUST_SURICATA_LIBDIR = ../rust/target/debug
RUST_SURICATA_LIBNAME = libsuricata_rust.a
SECCFLAGS = 
SECLDFLAGS = 
SED = /usr/bin/sed
SET_MAKE = 
SHELL = /bin/sh
SPHINX_BUILD = /usr/bin/sphinx-build
STRIP = strip
SURICATA_UPDATE_DIR = suricata-update
VERSION = 8.0.0
abs_builddir = /home/jason/oisf/dev/suricata/master/rust
abs_srcdir = /home/jason/oisf/dev/suricata/master/rust
abs_top_builddir = /home/jason/oisf/dev/suricata/master
abs_top_srcdir = /home/jason/oisf/dev/suricata/master
ac_ct_AR = ar
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_DUMPBIN = 
am__include = include
am__leading_dot = .
am__quote = 
am__rm_f_notfound = 
am__tar = tar --format=ustar -chf - "$$tardir"
am__untar = tar -xf -
am__xargs_n = xargs -n
bindir = ${exec_prefix}/bin
build = x86_64-pc-linux-gnu
build_alias = 
build_cpu = x86_64
build_os = linux-gnu
build_vendor = pc
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
e_datadir = /opt/suricata/8.0.0/var/lib/suricata/data
e_datarulesdir = /opt/suricata/8.0.0/share/suricata/rules
e_defaultruledir = /opt/suricata/8.0.0/var/lib/suricata/rules
e_enable_evelog = yes
e_localstatedir = /opt/suricata/8.0.0/var/run/suricata
e_logcertsdir = /opt/suricata/8.0.0/var/log/suricata/certs
e_logdir = /opt/suricata/8.0.0/var/log/suricata/
e_logfilesdir = /opt/suricata/8.0.0/var/log/suricata/files
e_magic_file = 
e_magic_file_comment = #
e_rundir = /opt/suricata/8.0.0/var/run/
e_rustdir = /home/jason/oisf/dev/suricata/master/rust
e_sghcachedir = /opt/suricata/8.0.0/var/lib/suricata/cache/sgh
e_sysconfdir = /opt/suricata/8.0.0/etc/suricata/
exec_prefix = ${prefix}
have_rustup = /usr/bin/rustup
host = x86_64-pc-linux-gnu
host_alias = 
host_cpu = x86_64
host_os = linux-gnu
host_vendor = pc
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = ${SHELL} /home/jason/oisf/dev/suricata/master/install-sh
install_suricata_update_reason = 
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
libhs_CFLAGS = -I/usr/include/hs
libhs_LIBS = -lhs
libnetfilter_queue_CFLAGS = 
libnetfilter_queue_LIBS = -lnetfilter_queue -lnfnetlink
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = $(MKDIR_P)
napatech_comment = #
ndpi_comment = #
oldincludedir = /usr/include
pdfdir = ${docdir}
pfring_comment = #
prefix = /opt/suricata/8.0.0
program_transform_name = s,x,x,
psdir = ${docdir}
runstatedir = ${localstatedir}/run
rust_vendor_comment = # 
rustup_home = RUSTUP_HOME=$(RUSTUP_HOME_PATH)
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias = 
top_build_prefix = ../
top_builddir = ..
top_srcdir = ..
SUBDIRS = htp \
		sys \
		suricatasc \
		suricatactl

EXTRA_DIST = .cargo/config.toml.in \
		Cargo.lock \
		Cargo.toml \
		cbindgen.toml \
		derive \
		derive/Cargo.toml \
		dist/htp/htp_rs.h \
		dist/rust-bindings.h \
		htp \
		src \
		suricatactl \
		suricatasc \
		sys \
		sys/Cargo.toml \
		vendor

#RELEASE = --release
#NIGHTLY_ARGS = -Z build-std
#RUST_TARGET = --target $(host_triplet)

# To pass specific CFLAGS to Lua.
CARGO_ENV = RUSTUP_HOME=$(RUSTUP_HOME_PATH) \
	CARGO_HOME="$(CARGO_HOME)" \
	CARGO_TARGET_DIR="$(abs_top_builddir)/rust/target" \
	SURICATA_LUA_SYS_HEADER_DST="$(abs_top_builddir)/rust/gen" \
	LOCALSTATEDIR=$(e_localstatedir) \
	SURICATA_LUA_SYS_CFLAGS="$(SURICATA_LUA_SYS_CFLAGS)"

# To pass specific CFLAGS to Lua.
#CARGO_ENV = RUSTUP_HOME=$(RUSTUP_HOME_PATH) \
#	CARGO_HOME="$(CARGO_HOME)" \
#	CARGO_TARGET_DIR="$(e_rustdir)/target" \
#	SURICATA_LUA_SYS_HEADER_DST="$(e_rustdir)/gen" \
#	LOCALSTATEDIR=$(e_localstatedir) \
#	SURICATA_LUA_SYS_CFLAGS="$(SURICATA_LUA_SYS_CFLAGS)"
all: all-recursive

.SUFFIXES:
$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
	        && { if test -f $@; then exit 0; else break; fi; }; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rust/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --gnu rust/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@case '$?' in \
	  *config.status*) \
	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
	  *) \
	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
	esac;

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh

$(top_srcdir)/configure:  $(am__configure_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
Cargo.lock: $(top_builddir)/config.status $(srcdir)/Cargo.lock.in
	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
Cargo.toml: $(top_builddir)/config.status $(srcdir)/Cargo.toml.in
	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
#     (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
	@fail=; \
	if $(am__make_keepgoing); then \
	  failcom='fail=yes'; \
	else \
	  failcom='exit 1'; \
	fi; \
	dot_seen=no; \
	target=`echo $@ | sed s/-recursive//`; \
	case "$@" in \
	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
	  *) list='$(SUBDIRS)' ;; \
	esac; \
	for subdir in $$list; do \
	  echo "Making $$target in $$subdir"; \
	  if test "$$subdir" = "."; then \
	    dot_seen=yes; \
	    local_target="$$target-am"; \
	  else \
	    local_target="$$target"; \
	  fi; \
	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
	  || eval $$failcom; \
	done; \
	if test "$$dot_seen" = "no"; then \
	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
	fi; test -z "$$fail"

ID: $(am__tagged_files)
	$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags

tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
	set x; \
	here=`pwd`; \
	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
	  include_option=--etags-include; \
	  empty_fix=.; \
	else \
	  include_option=--include; \
	  empty_fix=; \
	fi; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    test ! -f $$subdir/TAGS || \
	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
	  fi; \
	done; \
	$(am__define_uniq_tagged_files); \
	shift; \
	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
	  test -n "$$unique" || unique=$$empty_fix; \
	  if test $$# -gt 0; then \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      "$$@" $$unique; \
	  else \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      $$unique; \
	  fi; \
	fi
ctags: ctags-recursive

CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
	$(am__define_uniq_tagged_files); \
	test -z "$(CTAGS_ARGS)$$unique" \
	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
	     $$unique

GTAGS:
	here=`$(am__cd) $(top_builddir) && pwd` \
	  && $(am__cd) $(top_srcdir) \
	  && gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-recursive

cscopelist-am: $(am__tagged_files)
	list='$(am__tagged_files)'; \
	case "$(srcdir)" in \
	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
	  *) sdir=$(subdir)/$(srcdir) ;; \
	esac; \
	for i in $$list; do \
	  if test -f "$$i"; then \
	    echo "$(subdir)/$$i"; \
	  else \
	    echo "$$sdir/$$i"; \
	  fi; \
	done >> $(top_builddir)/cscope.files

distclean-tags:
	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags

distdir: $(BUILT_SOURCES)
	$(MAKE) $(AM_MAKEFLAGS) distdir-am

distdir-am: $(DISTFILES)
	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	list='$(DISTFILES)'; \
	  dist_files=`for file in $$list; do echo $$file; done | \
	  sed -e "s|^$$srcdirstrip/||;t" \
	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
	case $$dist_files in \
	  */*) $(MKDIR_P) `echo "$$dist_files" | \
			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
			   sort -u` ;; \
	esac; \
	for file in $$dist_files; do \
	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
	  if test -d $$d/$$file; then \
	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
	    if test -d "$(distdir)/$$file"; then \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
	  else \
	    test -f "$(distdir)/$$file" \
	    || cp -p $$d/$$file "$(distdir)/$$file" \
	    || exit 1; \
	  fi; \
	done
	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    $(am__make_dryrun) \
	      || test -d "$(distdir)/$$subdir" \
	      || $(MKDIR_P) "$(distdir)/$$subdir" \
	      || exit 1; \
	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
	    $(am__relativize); \
	    new_distdir=$$reldir; \
	    dir1=$$subdir; dir2="$(top_distdir)"; \
	    $(am__relativize); \
	    new_top_distdir=$$reldir; \
	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
	    ($(am__cd) $$subdir && \
	      $(MAKE) $(AM_MAKEFLAGS) \
	        top_distdir="$$new_top_distdir" \
	        distdir="$$new_distdir" \
		am__remove_distdir=: \
		am__skip_length_check=: \
		am__skip_mode_fix=: \
	        distdir) \
	      || exit 1; \
	  fi; \
	done
check-am: all-am
check: check-recursive
all-am: Makefile all-local
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-recursive
install-strip:
	if test -z '$(STRIP)'; then \
	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	      install; \
	else \
	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
	fi
mostlyclean-generic:

clean-generic:

distclean-generic:
	-$(am__rm_f) $(CONFIG_CLEAN_FILES)
	-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)

maintainer-clean-generic:
	@echo "This command is intended for maintainers to use"
	@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive

clean-am: clean-generic clean-libtool clean-local mostlyclean-am

distclean: distclean-recursive
	-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-local \
	distclean-tags

dvi: dvi-recursive

dvi-am:

html: html-recursive

html-am:

info: info-recursive

info-am:

install-data-am:

install-dvi: install-dvi-recursive

install-dvi-am:

install-exec-am: install-exec-local

install-html: install-html-recursive

install-html-am:

install-info: install-info-recursive

install-info-am:

install-man:

install-pdf: install-pdf-recursive

install-pdf-am:

install-ps: install-ps-recursive

install-ps-am:

installcheck-am:

maintainer-clean: maintainer-clean-recursive
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-recursive

mostlyclean-am: mostlyclean-generic mostlyclean-libtool

pdf: pdf-recursive

pdf-am:

ps: ps-recursive

ps-am:

uninstall-am: uninstall-local

.MAKE: $(am__recursive_targets) install-am install-strip

.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
	check check-am clean clean-generic clean-libtool clean-local \
	cscopelist-am ctags ctags-am distclean distclean-generic \
	distclean-libtool distclean-local distclean-tags distdir dvi \
	dvi-am html html-am info info-am install install-am \
	install-data install-data-am install-dvi install-dvi-am \
	install-exec install-exec-am install-exec-local install-html \
	install-html-am install-info install-info-am install-man \
	install-pdf install-pdf-am install-ps install-ps-am \
	install-strip installcheck installcheck-am installdirs \
	installdirs-am maintainer-clean maintainer-clean-generic \
	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
	ps ps-am tags tags-am uninstall uninstall-am uninstall-local

.PRECIOUS: Makefile


all-local: Cargo.toml
	mkdir -p $(abs_top_builddir)/rust/gen
	cd $(abs_top_srcdir)/rust && \
		CC="$(CC)" AR="$(AR)" RANLIB="$(RANLIB)"\
		$(CARGO_ENV) \
		$(CARGO) build $(RELEASE) $(NIGHTLY_ARGS) \
			--features "$(RUST_FEATURES)" $(RUST_TARGET)
	if test -e $(RUST_SURICATA_LIBDIR)/suricata.lib; then \
		cp -a $(RUST_SURICATA_LIBDIR)/suricata.lib \
			$(RUST_SURICATA_LIBDIR)/${RUST_SURICATA_LIBNAME}; \
	fi
	if test -e $(RUST_SURICATA_LIBDIR)/libsuricata.a; then \
		cp -a $(RUST_SURICATA_LIBDIR)/libsuricata.a \
			$(RUST_SURICATA_LIBDIR)/${RUST_SURICATA_LIBNAME}; \
	fi
	$(MAKE) gen/rust-bindings.h
	$(MAKE) gen/htp/htp_rs.h
	if test -e Cargo.lock.in; then \
		cp Cargo.lock Cargo.lock.in; \
	fi

install-exec-local:
	install -d -m 0755 "$(DESTDIR)$(bindir)"
	install -m 0755 $(RUST_SURICATA_LIBDIR)/suricatasc "$(DESTDIR)$(bindir)/suricatasc"
	install -m 0755 $(RUST_SURICATA_LIBDIR)/suricatactl "$(DESTDIR)$(bindir)/suricatactl"

install-library:
	$(MKDIR_P) "$(DESTDIR)$(libdir)"
	$(INSTALL_DATA) $(RUST_SURICATA_LIB) "$(DESTDIR)$(libdir)"

uninstall-local:
	rm -f "$(DESTDIR)$(libdir)/$(RUST_SURICATA_LIBNAME)"
	rm -f "$(DESTDIR)$(bindir)/suricatasc"
	rm -f "$(DESTDIR)$(bindir)/suricatactl"

clean-local:
	rm -rf target gen

distclean-local:
	rm -rf vendor dist

check-bindgen-bindings:
	if test "$(top_srcdir)" = "$(top_builddir)"; then \
		cp sys/src/sys.rs sys/src/sys.rs.orig; \
		$(MAKE) update-bindings; \
		if diff sys/src/sys.rs sys/src/sys.rs.orig > /dev/null 2>&1; then \
			rm -f sys/src/sys.rs.orig; \
		else \
			echo "WARNING: bindgen bindings may be out of date"; \
		fi \
	else \
		echo "Not checking bindings for out of tree build"; \
	fi
#	@echo "Unable to check bindgen bindings: bindgen not found"

check:
	cd $(abs_top_srcdir)/rust && \
		$(CARGO_ENV) \
		$(CARGO) test --all $(RELEASE) --features "$(RUST_FEATURES)"
	$(MAKE) check-bindgen-bindings

vendor:
	$(CARGO_ENV) $(CARGO) vendor

update-bindings:
	$(BINDGEN) \
		-o sys/src/sys.rs.tmp \
		--rust-target 1.68 \
		--no-layout-tests \
		--disable-header-comment \
		--default-enum-style rust \
		--allowlist-type 'AppProto.*' \
		--allowlist-function 'AppProto.*' \
		--allowlist-type 'SC.*' \
		--allowlist-function 'SC.*' \
		--allowlist-var 'SC.*' \
		--opaque-type 'SCConfNode' \
		$(abs_top_srcdir)/src/bindgen.h \
		-- \
		-DHAVE_CONFIG_H -I../src -I../rust/gen $(CPPFLAGS)
	printf "// This file is automatically generated. Do not edit.\n\n" > sys/src/sys.rs
	cat sys/src/sys.rs.tmp >> sys/src/sys.rs
	rm -f sys/src/sys.rs.tmp
	$(CBINDGEN) --quiet --config cbindgen.toml src/jsonbuilder.rs -o gen/jsonbuilder.h
	$(BINDGEN) \
		-o sys/src/jsonbuilder.rs.tmp \
		--rust-target 1.68 \
		--no-layout-tests \
		--disable-header-comment \
		--allowlist-function 'SC.*' \
		gen/jsonbuilder.h \
		-- \
		-DHAVE_CONFIG_H -I../src -I../rust/gen $(CPPFLAGS)
	printf "// This file is automatically generated. Do not edit.\n\n" > sys/src/jsonbuilder.rs
	cat sys/src/jsonbuilder.rs.tmp >> sys/src/jsonbuilder.rs
	rm -f sys/src/jsonbuilder.rs.tmp
#	@echo "error: bindgen not installed, can't update bindings"
#	exit 1

gen/rust-bindings.h: $(RUST_SURICATA_LIB) cbindgen.toml
	cd $(abs_top_srcdir)/rust && \
		$(CBINDGEN) --config $(abs_top_srcdir)/rust/cbindgen.toml \
		--quiet --verify --output $(abs_top_builddir)/rust/gen/rust-bindings.h || true
#gen/rust-bindings.h:

gen/htp/htp_rs.h: $(RUST_SURICATA_LIB) htp/cbindgen.toml
	cd $(abs_top_srcdir)/rust/htp && \
		cbindgen --config $(abs_top_srcdir)/rust/htp/cbindgen.toml \
		--quiet --verify --output $(abs_top_builddir)/rust/gen/htp/htp_rs.h || true
#gen/htp/htp_rs.h:

doc:
	CARGO_HOME=$(CARGO_HOME) $(CARGO) doc --all-features --no-deps

dist/rust-bindings.h:
	$(CBINDGEN) --config $(abs_top_srcdir)/rust/cbindgen.toml \
		--quiet --output $(abs_top_builddir)/rust/dist/rust-bindings.h
#dist/rust-bindings.h:

dist/htp/htp_rs.h:
	cd $(abs_top_srcdir)/rust/htp && \
	cbindgen --config cbindgen.toml \
		--quiet --output $(abs_top_builddir)/rust/dist/htp/htp_rs.h
#dist/htp/htp_rs.h:

Cargo.toml: Cargo.toml.in

update-lock: Cargo.toml
	cargo update
	mv Cargo.lock Cargo.lock.in

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

# Tell GNU make to disable its built-in pattern rules.
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
