diff options
| author | ruki <[email protected]> | 2026-01-11 08:47:37 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-11 08:47:37 +0800 |
| commit | 458849b4ffa70fe12d9cbb17ceb4250502e50784 (patch) | |
| tree | 392749ced1e5988e68e3453ec66988056277904e /tests/projects | |
| parent | fedbf62b7e11abac537157b3174e5dfd82333f47 (diff) | |
| parent | b84340552514434dbd213354a98a653bdd7d0d60 (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.lua | 87 | ||||
| -rw-r--r-- | tests/projects/package/schemes/src/main.cpp | 6 | ||||
| -rw-r--r-- | tests/projects/package/schemes/test.lua | 11 | ||||
| -rw-r--r-- | tests/projects/package/schemes/xmake.lua | 78 |
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") |
