mirror of https://github.com/OISF/suricata
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.0 KiB
Makefile
169 lines
4.0 KiB
Makefile
SUBDIRS = sys \
|
|
suricatasc \
|
|
suricatactl
|
|
|
|
EXTRA_DIST = src derive \
|
|
.cargo/config.toml.in \
|
|
cbindgen.toml \
|
|
dist/rust-bindings.h \
|
|
vendor \
|
|
Cargo.toml Cargo.lock \
|
|
derive/Cargo.toml \
|
|
sys \
|
|
sys/Cargo.toml \
|
|
suricatasc \
|
|
suricatactl
|
|
|
|
if !DEBUG
|
|
RELEASE = --release
|
|
endif
|
|
|
|
if RUST_BUILD_STD
|
|
NIGHTLY_ARGS = -Z build-std
|
|
endif
|
|
|
|
if HAVE_JA3
|
|
RUST_FEATURES += ja3
|
|
endif
|
|
|
|
if HAVE_JA4
|
|
RUST_FEATURES += ja4
|
|
endif
|
|
|
|
if DEBUG
|
|
RUST_FEATURES += debug
|
|
endif
|
|
|
|
if DEBUG_VALIDATION
|
|
RUST_FEATURES += debug-validate
|
|
endif
|
|
|
|
if RUST_CROSS_COMPILE
|
|
RUST_TARGET = --target $(host_triplet)
|
|
endif
|
|
|
|
if HAVE_CYGPATH
|
|
CARGO_ENV = @rustup_home@ \
|
|
CARGO_HOME="$(CARGO_HOME)" \
|
|
CARGO_TARGET_DIR="$(e_rustdir)/target" \
|
|
SURICATA_LUA_SYS_HEADER_DST="$(e_rustdir)/gen"
|
|
else
|
|
CARGO_ENV = @rustup_home@ \
|
|
CARGO_HOME="$(CARGO_HOME)" \
|
|
CARGO_TARGET_DIR="$(abs_top_builddir)/rust/target" \
|
|
SURICATA_LUA_SYS_HEADER_DST="$(abs_top_builddir)/rust/gen"
|
|
endif
|
|
|
|
CARGO_ENV += LOCALSTATEDIR=$(e_localstatedir)
|
|
|
|
all-local: Cargo.toml
|
|
mkdir -p $(abs_top_builddir)/rust/gen
|
|
cd $(abs_top_srcdir)/rust && \
|
|
$(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
|
|
|
|
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 HAVE_BINDGEN
|
|
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
|
|
else
|
|
@echo "Unable to check bindgen bindings: bindgen not found"
|
|
endif
|
|
|
|
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:
|
|
if HAVE_BINDGEN
|
|
$(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.*' \
|
|
$(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
|
|
else
|
|
@echo "error: bindgen not installed, can't update bindings"
|
|
exit 1
|
|
endif
|
|
|
|
if HAVE_CBINDGEN
|
|
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
|
|
else
|
|
gen/rust-bindings.h:
|
|
endif
|
|
|
|
doc:
|
|
CARGO_HOME=$(CARGO_HOME) $(CARGO) doc --all-features --no-deps
|
|
|
|
if HAVE_CBINDGEN
|
|
dist/rust-bindings.h:
|
|
$(CBINDGEN) --config $(abs_top_srcdir)/rust/cbindgen.toml \
|
|
--quiet --output $(abs_top_builddir)/rust/dist/rust-bindings.h
|
|
else
|
|
dist/rust-bindings.h:
|
|
endif
|
|
|
|
Cargo.toml: Cargo.toml.in
|
|
|
|
update-lock: Cargo.toml
|
|
cargo update
|
|
mv Cargo.lock Cargo.lock.in
|