summaryrefslogtreecommitdiff
path: root/tests/projects
diff options
context:
space:
mode:
authorruki <[email protected]>2026-01-11 08:47:37 +0800
committerGitHub <[email protected]>2026-01-11 08:47:37 +0800
commit458849b4ffa70fe12d9cbb17ceb4250502e50784 (patch)
tree392749ced1e5988e68e3453ec66988056277904e /tests/projects
parentfedbf62b7e11abac537157b3174e5dfd82333f47 (diff)
parentb84340552514434dbd213354a98a653bdd7d0d60 (diff)
Merge pull request #7189 from xmake-io/scheme
Add package schemes
Diffstat (limited to 'tests/projects')
-rw-r--r--tests/projects/package/schemes/port/xmake.lua87
-rw-r--r--tests/projects/package/schemes/src/main.cpp6
-rw-r--r--tests/projects/package/schemes/test.lua11
-rw-r--r--tests/projects/package/schemes/xmake.lua78
4 files changed, 182 insertions, 0 deletions
diff --git a/tests/projects/package/schemes/port/xmake.lua b/tests/projects/package/schemes/port/xmake.lua
new file mode 100644
index 000000000..82f6978b9
--- /dev/null
+++ b/tests/projects/package/schemes/port/xmake.lua
@@ -0,0 +1,87 @@
+includes("@builtin/check")
+
+add_rules("mode.release", "mode.debug")
+
+option("version", {description = "The ninja version."})
+set_version("$(version)")
+
+set_languages("c++14")
+check_cfuncs("USE_PPOLL=1", "ppoll", {includes = "poll.h"})
+
+target("libninja")
+ set_kind("$(kind)")
+ set_basename("ninja")
+
+ add_files("src/build_log.cc")
+ add_files("src/build.cc")
+ add_files("src/clean.cc")
+ add_files("src/clparser.cc")
+ add_files("src/debug_flags.cc")
+ add_files("src/deps_log.cc")
+ add_files("src/disk_interface.cc")
+ add_files("src/edit_distance.cc")
+ add_files("src/eval_env.cc")
+ add_files("src/graph.cc")
+ add_files("src/graphviz.cc")
+ add_files("src/line_printer.cc")
+ add_files("src/manifest_parser.cc")
+ add_files("src/metrics.cc")
+ add_files("src/state.cc")
+ add_files("src/string_piece_util.cc")
+ add_files("src/util.cc")
+ add_files("src/version.cc")
+ add_files("src/depfile_parser.cc", "src/lexer.cc")
+
+ if is_plat("windows", "mingw", "msys") then
+ add_files("src/subprocess-win32.cc")
+ add_files("src/includes_normalize-win32.cc")
+ add_files("src/msvc_helper-win32.cc")
+ add_files("src/msvc_helper_main-win32.cc")
+ add_files("src/getopt.c", {sourcekind = "cxx"})
+ add_files("src/minidump-win32.cc")
+
+ add_defines("NOMINMAX")
+ else
+ add_files("src/subprocess-posix.cc")
+ end
+
+ if is_plat("mingw") then
+ add_defines("_WIN32_WINNT=0x0601", "__USE_MINGW_ANSI_STDIO=1")
+ end
+
+ on_load(function (target)
+ import("core.base.semver")
+ local version = semver.new(target:version())
+ if version:ge("1.13.1") then
+ target:add("files", "src/elide_middle.cc")
+ target:add("files", "src/jobserver.cc")
+ target:add("files", "src/real_command_runner.cc")
+ target:add("files", "src/status_printer.cc")
+ if target:is_plat("windows", "mingw", "msys") then
+ target:add("files", "src/jobserver-win32.cc")
+ else
+ target:add("files", "src/jobserver-posix.cc")
+ end
+ end
+ if version:ge("1.11.0") then
+ if version:lt("1.13.1") then
+ target:add("files", "src/status.cc")
+ end
+ target:add("files", "src/json.cc")
+ target:add("files", "src/missing_deps.cc")
+ end
+ if version:ge("1.10.0") then
+ target:add("files", "src/dyndep.cc")
+ target:add("files", "src/dyndep_parser.cc")
+ target:add("files", "src/parser.cc")
+ end
+ end)
+
+target("ninja")
+ set_kind("binary")
+ add_deps("libninja")
+
+ add_files("src/ninja.cc")
+ if is_plat("windows") then
+ add_files("windows/ninja.manifest")
+ end
diff --git a/tests/projects/package/schemes/src/main.cpp b/tests/projects/package/schemes/src/main.cpp
new file mode 100644
index 000000000..4ca167f53
--- /dev/null
+++ b/tests/projects/package/schemes/src/main.cpp
@@ -0,0 +1,6 @@
+#include <iostream>
+
+int main(int argc, char** argv) {
+ std::cout << "Hello, schemes test!" << std::endl;
+ return 0;
+}
diff --git a/tests/projects/package/schemes/test.lua b/tests/projects/package/schemes/test.lua
new file mode 100644
index 000000000..4c7bad3c2
--- /dev/null
+++ b/tests/projects/package/schemes/test.lua
@@ -0,0 +1,11 @@
+function main(t)
+ -- freebsd ci is slower
+ if is_host("bsd", "solaris") then
+ return
+ end
+
+ -- only for x86/x64, because it will take too long time on ci with arm/mips
+ if os.subarch():startswith("x") or os.subarch() == "i386" then
+ t:build()
+ end
+end
diff --git a/tests/projects/package/schemes/xmake.lua b/tests/projects/package/schemes/xmake.lua
new file mode 100644
index 000000000..16fad87fa
--- /dev/null
+++ b/tests/projects/package/schemes/xmake.lua
@@ -0,0 +1,78 @@
+add_rules("mode.debug", "mode.release")
+
+package("ninja")
+ set_kind("binary")
+ set_homepage("https://ninja-build.org/")
+ set_description("Small build system for use with gyp or CMake.")
+
+ local function add_binary_urls(package, scheme_name)
+ local scheme = package
+ if scheme_name then
+ scheme = package:scheme(scheme_name)
+ end
+
+ if is_host("macosx") then
+ scheme:add("urls", "https://github.com/ninja-build/ninja/releases/download/v$(version)/ninja-mac.zip")
+ scheme:add("versions", "1.13.1", "da7797794153629aca5570ef7c813342d0be214ba84632af886856e8f0063dd9")
+ return true
+ elseif is_host("linux") then
+ scheme:add("urls", "https://github.com/ninja-build/ninja/releases/download/v$(version)/ninja-linux.zip")
+ scheme:add("versions", "1.13.1", "0830252db77884957a1a4b87b05a1e2d9b5f658b8367f82999a941884cbe0238")
+ return true
+ elseif is_host("windows") then
+ scheme:add("urls", "https://github.com/ninja-build/ninja/releases/download/v$(version)/ninja-win.zip")
+ scheme:add("versions", "1.13.1", "26a40fa8595694dec2fad4911e62d29e10525d2133c9a4230b66397774ae25bf")
+ return true
+ end
+ end
+
+ local function add_source_urls(package, scheme_name)
+ local scheme = package
+ if scheme_name then
+ scheme = package:scheme(scheme_name)
+ end
+ scheme:add("urls", "https://github.com/ninja-build/ninja/archive/refs/tags/v$(version).tar.gz")
+ scheme:add("versions", "1.13.1", "f0055ad0369bf2e372955ba55128d000cfcc21777057806015b45e4accbebf23")
+ end
+
+ if add_schemes then
+ add_schemes("binary", "source")
+ on_source(function (package)
+ add_binary_urls(package, "binary")
+ add_source_urls(package, "source")
+ end)
+ else
+ -- for compatibility with older xmake versions
+ on_source(function (package)
+ if add_binary_urls(package) then
+ package:data_set("scheme", "binary")
+ else
+ add_source_urls(package)
+ package:data_set("scheme", "source")
+ end
+ end)
+ end
+
+ on_install("@linux", "@windows", "@msys", "@cygwin", "@macosx", function (package)
+ local scheme_name = package.current_scheme and package:current_scheme():name() or package:data("scheme")
+ if scheme_name and scheme_name == "binary" then
+ raise("trigger failure when installing binaries, then we will fallback to install it from source tarball.")
+ else
+ local configs = {}
+ configs.version = package:version_str()
+ os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
+ import("package.tools.xmake").install(package, configs)
+ end
+ end)
+
+ on_test(function (package)
+ os.vrun("ninja --version")
+ end)
+package_end()
+
+add_requires("ninja", {system = false})
+
+target("test")
+ set_kind("binary")
+ add_files("src/*.cpp")
+ add_packages("ninja")