diff options
| author | ruki <[email protected]> | 2025-09-07 22:58:40 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-09-07 22:58:40 +0800 |
| commit | 936758a450866cc95090001aab5e21bf095980ea (patch) | |
| tree | a8932938a2bbcd9f09b9013a4eadb09287ca8542 | |
| parent | e0c9112837c5619b1407c7a8b3eab8a30f5a883d (diff) | |
add build_targets test
| -rw-r--r-- | tests/benchmarks/build_targets/.gitignore | 8 | ||||
| -rw-r--r-- | tests/benchmarks/build_targets/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | tests/benchmarks/build_targets/meson.build | 5 | ||||
| -rw-r--r-- | tests/benchmarks/build_targets/src/main.cpp | 6 | ||||
| -rw-r--r-- | tests/benchmarks/build_targets/test.lua | 74 | ||||
| -rw-r--r-- | tests/benchmarks/build_targets/xmake.lua | 7 |
6 files changed, 106 insertions, 0 deletions
diff --git a/tests/benchmarks/build_targets/.gitignore b/tests/benchmarks/build_targets/.gitignore new file mode 100644 index 000000000..152105761 --- /dev/null +++ b/tests/benchmarks/build_targets/.gitignore @@ -0,0 +1,8 @@ +# Xmake cache +.xmake/ +build/ + +# MacOS Cache +.DS_Store + + diff --git a/tests/benchmarks/build_targets/CMakeLists.txt b/tests/benchmarks/build_targets/CMakeLists.txt new file mode 100644 index 000000000..a2530191d --- /dev/null +++ b/tests/benchmarks/build_targets/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.10) +project(test) + +foreach(i RANGE 1 30) + add_executable(test${i} src/main.cpp) +endforeach() diff --git a/tests/benchmarks/build_targets/meson.build b/tests/benchmarks/build_targets/meson.build new file mode 100644 index 000000000..11a834c57 --- /dev/null +++ b/tests/benchmarks/build_targets/meson.build @@ -0,0 +1,5 @@ +project('test', 'cpp') + +foreach i : range(1, 31) + executable('test' + i.to_string(), 'src/main.cpp') +endforeach diff --git a/tests/benchmarks/build_targets/src/main.cpp b/tests/benchmarks/build_targets/src/main.cpp new file mode 100644 index 000000000..7c775d288 --- /dev/null +++ b/tests/benchmarks/build_targets/src/main.cpp @@ -0,0 +1,6 @@ +#include <iostream> + +int main(int argc, char** argv) { + std::cout << "hello world!" << std::endl; + return 0; +} diff --git a/tests/benchmarks/build_targets/test.lua b/tests/benchmarks/build_targets/test.lua new file mode 100644 index 000000000..0107e44fa --- /dev/null +++ b/tests/benchmarks/build_targets/test.lua @@ -0,0 +1,74 @@ +import("lib.detect.find_tool") +import("core.tool.toolchain") + +function test_build(t) + + -- xmake + os.tryrm("build") + local xmake_dt = os.mclock() + os.runv(os.programfile()) + xmake_dt = os.mclock() - xmake_dt + print("build targets/30: xmake: %d ms", xmake_dt) + + -- cmake + local cmake = find_tool("cmake") + if cmake then + os.tryrm("build") + os.mkdir("build") + local cmake_default_dt = os.mclock() + os.runv(cmake.program, {".."}, {curdir = "build"}) + os.runv(cmake.program, {"--build", "."}, {curdir = "build"}) + cmake_default_dt = os.mclock() - cmake_default_dt + print("build targets/30: cmake/default: %d ms", cmake_default_dt) + t:require((cmake_default_dt > xmake_dt) or (cmake_default_dt + 1000 > xmake_dt)) + + local ninja = find_tool("ninja") + if ninja then + os.tryrm("build") + os.mkdir("build") + local configs = {} + local envs + if is_host("windows") then + table.insert(configs, "-DCMAKE_MAKE_PROGRAM=" .. ninja.program) + local msvc = toolchain.load("msvc") + if msvc:check() then + table.insert(configs, "-DCMAKE_CXX_COMPILER=" .. (msvc:tool("cxx"))) + table.insert(configs, "-DCMAKE_C_COMPILER=" .. (msvc:tool("cc"))) + envs = os.joinenvs(msvc:runenvs()) + end + end + local cmake_ninja_dt = os.mclock() + os.runv(cmake.program, table.join("..", "-G", "Ninja", configs), {curdir = "build", envs = envs}) + os.runv(cmake.program, {"--build", "."}, {curdir = "build", envs = envs}) + cmake_ninja_dt = os.mclock() - cmake_ninja_dt + print("build targets/30: cmake/ninja: %d ms", cmake_ninja_dt) + t:require((cmake_ninja_dt > xmake_dt) or (cmake_ninja_dt + 1000 > xmake_dt)) + end + + local make = find_tool("make") + if make and not is_subhost("windows") then + os.tryrm("build") + os.mkdir("build") + local cmake_makefile_dt = os.mclock() + os.runv(cmake.program, {"..", "-G", "Unix Makefiles"}, {curdir = "build"}) + os.runv(cmake.program, {"--build", "."}, {curdir = "build"}) + cmake_makefile_dt = os.mclock() - cmake_makefile_dt + print("build targets/30: cmake/makefile: %d ms", cmake_makefile_dt) + t:require((cmake_makefile_dt > xmake_dt) or (cmake_makefile_dt + 1000 > xmake_dt)) + end + end + + -- meson + local meson = find_tool("meson") + if meson then + os.tryrm("build") + local meson_dt = os.mclock() + os.runv(meson.program, {"setup", "build"}) + os.runv("ninja", {"-C", "build"}) + meson_dt = os.mclock() - meson_dt + print("build targets/30: meson: %d ms", meson_dt) + t:require((meson_dt > xmake_dt) or (meson_dt + 1000 > xmake_dt)) + end +end + + diff --git a/tests/benchmarks/build_targets/xmake.lua b/tests/benchmarks/build_targets/xmake.lua new file mode 100644 index 000000000..157d50ded --- /dev/null +++ b/tests/benchmarks/build_targets/xmake.lua @@ -0,0 +1,7 @@ +add_rules("mode.debug", "mode.release") + +for i = 1, 30 do + target("test" .. i) + set_kind("binary") + add_files("src/main.cpp") +end |
