summaryrefslogtreecommitdiff
path: root/tests/projects
diff options
context:
space:
mode:
authorruki <[email protected]>2026-01-08 23:01:45 +0800
committerruki <[email protected]>2026-01-09 17:59:11 +0800
commitcabdd8b0bf48356b7ffb9e6bb8d776cb4813f301 (patch)
treed09a738ed1b457eba63c475bb42ad5eb29c64345 /tests/projects
parentf3c2a43971a0562270cc07320904b0c8a78e10e4 (diff)
use ninja instead of cmake in scheme test
Diffstat (limited to 'tests/projects')
-rw-r--r--tests/projects/package/schemes/port/xmake.lua87
-rw-r--r--tests/projects/package/schemes/xmake.lua80
2 files changed, 106 insertions, 61 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..7cf73fc43
--- /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") 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") 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/xmake.lua b/tests/projects/package/schemes/xmake.lua
index 6c6ae5bfe..689b9c88d 100644
--- a/tests/projects/package/schemes/xmake.lua
+++ b/tests/projects/package/schemes/xmake.lua
@@ -1,69 +1,27 @@
add_rules("mode.debug", "mode.release")
-package("cmake")
+package("ninja")
set_kind("binary")
- set_homepage("https://cmake.org")
- set_description("A cross-platform family of tools designed to build, test and package software")
+ 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://cmake.org/files/v$(version).tar.gz", {version = function (version)
- return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-macos-universal" or "-Darwin-x86_64")
- end})
- scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version).tar.gz", {version = function (version)
- return version .. "/cmake-" .. version .. (version:ge("3.20") and "-macos-universal" or "-Darwin-x86_64")
- end})
- scheme:add("versions", "4.2.1", "0bb18f295e52d7e9309980e361e79e76a1d8da67a1587255cbe3696ea998f597")
+ 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
- if os.arch():find("arm64.*") then
- scheme:add("urls", "https://cmake.org/files/v$(version)-aarch64.tar.gz", {version = function (version)
- return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux")
- end})
- scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version)-aarch64.tar.gz", {version = function (version)
- return version .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux")
- end})
- scheme:add("versions", "4.2.1", "3e178207a2c42af4cd4883127f8800b6faf99f3f5187dccc68bfb2cc7808f5f7")
- else
- scheme:add("urls", "https://cmake.org/files/v$(version)-x86_64.tar.gz", {version = function (version)
- return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux")
- end})
- scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version)-x86_64.tar.gz", {version = function (version)
- return version .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux")
- end})
- scheme:add("versions", "4.2.1", "c059bff1e97a2b6b5b0c0872263627486345ad0ed083298cb21cff2eda883980")
- end
+ 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
- if os.arch() == "x64" then
- scheme:add("urls", "https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version)
- return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-x86_64" or "-win64-x64")
- end})
- scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version)
- return version .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-x86_64" or "-win64-x64")
- end})
- scheme:add("versions", "4.2.1", "dfc2b2afac257555e3b9ce375b12b2883964283a366c17fec96cf4d17e4f1677")
- elseif os.arch() == "x86" then
- scheme:add("urls", "https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version)
- return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-i386" or "-win32-x86")
- end})
- scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version)
- return version .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-i386" or "-win32-x86")
- end})
- scheme:add("versions", "4.2.1", "696129556482da90293f9d64c1fa68dbe06b0ede80331d7da9aaa03aada6aecf")
- elseif os.arch() == "arm64" then
- scheme:add("urls", "https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version)
- return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. "-windows-arm64"
- end})
- scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version)
- return version .. "/cmake-" .. version .. "-windows-arm64"
- end})
- scheme:add("versions", "4.2.1", "96b097ca3a019cd62839d4805958ad0163dd1adedcfbe578730d57c098aaf667")
- end
+ 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
@@ -73,8 +31,8 @@ package("cmake")
if scheme_name then
scheme = package:scheme(scheme_name)
end
- scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version)/cmake-$(version).tar.gz")
- scheme:add("versions", "4.2.1", "414aacfac54ba0e78e64a018720b64ed6bfca14b587047b8b3489f407a14a070")
+ 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
@@ -101,21 +59,21 @@ package("cmake")
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
- import("core.base.option")
- os.vrunv("sh", {"./bootstrap", "--parallel=" .. (option.get("jobs") or tostring(os.default_njob())),
- "--prefix=" .. package:installdir(), "--", "-DCMAKE_USE_OPENSSL=OFF"})
- import("package.tools.make").install(package)
+ 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("cmake --version")
+ os.vrun("ninja --version")
end)
package_end()
-add_requires("cmake", {system = false})
+add_requires("ninja", {system = false})
target("test")
set_kind("binary")
add_files("src/*.cpp")
- add_packages("cmake")
+ add_packages("ninja")