mirror of
https://github.com/h3xduck/TripleCross.git
synced 2025-12-17 07:33:07 +08:00
101 lines
3.1 KiB
Lua
101 lines
3.1 KiB
Lua
add_rules("mode.release", "mode.debug")
|
|
add_rules("platform.linux.bpf")
|
|
set_license("GPL-2.0")
|
|
|
|
if xmake.version():satisfies(">=2.5.7 <=2.5.9") then
|
|
on_load(function (target)
|
|
raise("xmake(%s) has a bug preventing BPF source code compilation. Please run `xmake update -f 2.5.6` to revert to v2.5.6 version or upgrade to xmake v2.6.1 that fixed the issue.", xmake.version())
|
|
end)
|
|
end
|
|
|
|
option("system-libbpf", {showmenu = true, default = false, description = "Use system-installed libbpf"})
|
|
option("require-bpftool", {showmenu = true, default = false, description = "Require bpftool package"})
|
|
|
|
add_requires("libelf", "zlib")
|
|
if is_plat("android") then
|
|
add_requires("ndk >=22.x", "argp-standalone")
|
|
set_toolchains("@ndk", {sdkver = "23"})
|
|
else
|
|
add_requires("llvm >=10.x")
|
|
set_toolchains("@llvm")
|
|
add_requires("linux-headers")
|
|
end
|
|
|
|
add_includedirs("../../vmlinux")
|
|
|
|
-- we can run `xmake f --require-bpftool=y` to pull bpftool from xmake-repo repository
|
|
if has_config("require-bpftool") then
|
|
add_requires("linux-tools", {configs = {bpftool = true}})
|
|
add_packages("linux-tools")
|
|
else
|
|
before_build(function (target)
|
|
os.addenv("PATH", path.join(os.scriptdir(), "..", "..", "tools"))
|
|
end)
|
|
end
|
|
|
|
-- we use the vendored libbpf sources for libbpf-bootstrap.
|
|
-- for some projects you may want to use the system-installed libbpf, so you can run `xmake f --system-libbpf=y`
|
|
if has_config("system-libbpf") then
|
|
add_requires("libbpf", {system = true})
|
|
else
|
|
target("libbpf")
|
|
set_kind("static")
|
|
set_basename("bpf")
|
|
add_files("../../libbpf/src/*.c")
|
|
add_includedirs("../../libbpf/include")
|
|
add_includedirs("../../libbpf/include/uapi", {public = true})
|
|
add_includedirs("$(buildir)", {interface = true})
|
|
add_configfiles("../../libbpf/src/(*.h)", {prefixdir = "bpf"})
|
|
add_packages("libelf", "zlib")
|
|
if is_plat("android") then
|
|
add_defines("__user=", "__force=", "__poll_t=uint32_t")
|
|
end
|
|
end
|
|
|
|
target("minimal")
|
|
set_kind("binary")
|
|
add_files("minimal*.c")
|
|
add_packages("linux-headers")
|
|
if not has_config("system-libbpf") then
|
|
add_deps("libbpf")
|
|
end
|
|
|
|
target("bootstrap")
|
|
set_kind("binary")
|
|
add_files("bootstrap*.c")
|
|
add_packages("linux-headers")
|
|
if not has_config("system-libbpf") then
|
|
add_deps("libbpf")
|
|
end
|
|
if is_plat("android") then
|
|
add_packages("argp-standalone")
|
|
end
|
|
|
|
target("fentry")
|
|
set_kind("binary")
|
|
add_files("fentry*.c")
|
|
add_packages("linux-headers")
|
|
if not has_config("system-libbpf") then
|
|
add_deps("libbpf")
|
|
end
|
|
|
|
target("uprobe")
|
|
set_kind("binary")
|
|
add_files("uprobe*.c")
|
|
add_packages("linux-headers")
|
|
if not has_config("system-libbpf") then
|
|
add_deps("libbpf")
|
|
end
|
|
|
|
target("kprobe")
|
|
set_kind("binary")
|
|
add_files("kprobe*.c")
|
|
add_packages("linux-headers")
|
|
if not has_config("system-libbpf") then
|
|
add_deps("libbpf")
|
|
end
|
|
if is_plat("android") then
|
|
-- TODO we need fix vmlinux.h to support android
|
|
set_default(false)
|
|
end
|