63 lines
2.2 KiB
Bash
Executable File
63 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# ============================================================================
|
|
# WARLOCK'S STAVE PRODUCTION COMPILATION PIPELINE (v7.0)
|
|
# ============================================================================
|
|
set -euo pipefail
|
|
|
|
log_step() { echo -e "\n [BUILD] $1"; }
|
|
|
|
log_step "Detecting host environment..."
|
|
if [ -f /etc/arch-release ]; then
|
|
echo " Profile: Arch Linux"
|
|
elif [ -f /etc/debian_version ]; then
|
|
echo " Profile: Debian/Ubuntu"
|
|
else
|
|
echo " Profile: Unknown (proceeding anyway)"
|
|
fi
|
|
|
|
log_step "Validating dependency tooling..."
|
|
cargo check
|
|
|
|
log_step "Compiling core library (release)..."
|
|
cargo build --release
|
|
|
|
log_step "Compiling embedded eBPF bytecode..."
|
|
mkdir -p ebpf_bin
|
|
if command -v clang &> /dev/null; then
|
|
cat << 'EOF' > ebpf_bin/stave_probe.c
|
|
#include <linux/bpf.h>
|
|
#include <bpf/bpf_helpers.h>
|
|
SEC("tracepoint/syscalls/sys_enter_connect")
|
|
int trace_sys_connect(void *ctx) { return 0; }
|
|
char _license[] SEC("license") = "GPL";
|
|
EOF
|
|
clang -O2 -target bpf -c ebpf_bin/stave_probe.c -o ebpf_bin/stave_probe.o
|
|
echo " eBPF binary assembled: ebpf_bin/stave_probe.o"
|
|
else
|
|
echo " Warning: clang missing. Creating stub eBPF object..."
|
|
touch ebpf_bin/stave_probe.o
|
|
fi
|
|
|
|
if command -v x86_64-w64-mingw32-g++ &> /dev/null; then
|
|
log_step "Cross-compiling Wine plugin bridge..."
|
|
x86_64-w64-mingw32-g++ -shared -static -O3 \
|
|
-o bridges/warlock_bridge.dp64 bridges/stave_stub.cpp -lkernel32
|
|
echo " Plugin output: bridges/warlock_bridge.dp64"
|
|
else
|
|
echo " Info: MinGW not found. Skipping Wine plugin build."
|
|
fi
|
|
|
|
log_step "Build complete. Warlock's Stave v7.0 is ready."
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Optional post-build steps (do not run automatically)
|
|
# ---------------------------------------------------------------------------
|
|
TARGET_LIB="./target/release/libstave_core.so"
|
|
if [ -f "$TARGET_LIB" ]; then
|
|
echo ""
|
|
echo " Optional: To enable kernel-level eBPF tracing, run:"
|
|
echo " sudo setcap cap_net_admin,cap_perfmon+ep $TARGET_LIB"
|
|
echo ""
|
|
echo " This grants the library permission to attach eBPF probe programs."
|
|
echo " It is NOT required for FFI, JNI, IPC, or UI-only usage."
|
|
fi |