summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-09-09 15:45:00 +0800
committerGitHub <[email protected]>2025-09-09 15:45:00 +0800
commit5166d71131f62fb50c745510bcd8c54097bd6c05 (patch)
tree7d4d3724f8f09907f0186498e3a38fbaeb491574
parente115e55c064eb6b475914989ea4d5fbaa9f4f83c (diff)
parenta0c14f1bced28c8f9cfafa20bcf7146ff3de3345 (diff)
Merge pull request #6780 from xmake-io/opti
Add benchmarks and optimize config/build targets
-rw-r--r--core/src/xmake/engine.c3
-rw-r--r--tests/benchmarks/build_targets/.gitignore8
-rw-r--r--tests/benchmarks/build_targets/CMakeLists.txt6
-rw-r--r--tests/benchmarks/build_targets/meson.build5
-rw-r--r--tests/benchmarks/build_targets/src/test_1.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_10.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_11.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_12.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_13.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_14.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_15.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_16.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_17.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_18.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_19.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_2.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_20.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_21.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_22.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_23.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_24.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_25.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_26.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_27.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_28.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_29.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_3.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_30.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_4.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_5.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_6.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_7.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_8.cpp6
-rw-r--r--tests/benchmarks/build_targets/src/test_9.cpp6
-rw-r--r--tests/benchmarks/build_targets/test.lua79
-rw-r--r--tests/benchmarks/build_targets/xmake.lua7
-rw-r--r--tests/benchmarks/config_targets/.gitignore8
-rw-r--r--tests/benchmarks/config_targets/CMakeLists.txt6
-rw-r--r--tests/benchmarks/config_targets/meson.build5
-rw-r--r--tests/benchmarks/config_targets/src/main.cpp6
-rw-r--r--tests/benchmarks/config_targets/test.lua73
-rw-r--r--tests/benchmarks/config_targets/xmake.lua7
-rw-r--r--xmake/actions/build/main.lua7
-rw-r--r--xmake/actions/config/main.lua4
-rw-r--r--xmake/core/_xmake_main.lua1
-rw-r--r--xmake/core/base/xmake.lua5
-rw-r--r--xmake/core/sandbox/modules/import/core/tool/toolchain.lua1
-rw-r--r--xmake/core/sandbox/modules/xmake.lua1
-rw-r--r--xmake/core/tool/toolchain.lua34
-rw-r--r--xmake/plugins/project/vsxmake/getinfo.lua4
-rw-r--r--xmake/toolchains/armcc/xmake.lua1
-rw-r--r--xmake/toolchains/armclang/xmake.lua1
-rw-r--r--xmake/toolchains/c51/xmake.lua3
-rw-r--r--xmake/toolchains/clang-cl/check.lua1
-rw-r--r--xmake/toolchains/cosmocc/check.lua1
-rw-r--r--xmake/toolchains/cross/check.lua1
-rw-r--r--xmake/toolchains/dlang/check.lua1
-rw-r--r--xmake/toolchains/dpcpp/check.lua1
-rw-r--r--xmake/toolchains/emcc/xmake.lua1
-rw-r--r--xmake/toolchains/gdc/check.lua1
-rw-r--r--xmake/toolchains/hdk/check.lua1
-rw-r--r--xmake/toolchains/icc/check.lua3
-rw-r--r--xmake/toolchains/icx/check.lua3
-rw-r--r--xmake/toolchains/ifort/check.lua3
-rw-r--r--xmake/toolchains/ifx/check.lua3
-rw-r--r--xmake/toolchains/iverilog/xmake.lua1
-rw-r--r--xmake/toolchains/kotlin-native/xmake.lua1
-rw-r--r--xmake/toolchains/ldc/check.lua1
-rw-r--r--xmake/toolchains/llvm/check.lua2
-rw-r--r--xmake/toolchains/masm32/xmake.lua1
-rw-r--r--xmake/toolchains/mingw/check.lua1
-rw-r--r--xmake/toolchains/msvc/check.lua1
-rw-r--r--xmake/toolchains/ndk/check.lua2
-rw-r--r--xmake/toolchains/nim/xmake.lua1
-rw-r--r--xmake/toolchains/sdcc/check.lua1
-rw-r--r--xmake/toolchains/tinycc/xmake.lua1
-rw-r--r--xmake/toolchains/verilator/xmake.lua1
-rw-r--r--xmake/toolchains/wasi/xmake.lua1
-rw-r--r--xmake/toolchains/xcode/check.lua1
-rw-r--r--xmake/toolchains/zig/xmake.lua1
80 files changed, 439 insertions, 53 deletions
diff --git a/core/src/xmake/engine.c b/core/src/xmake/engine.c
index 1299cfc5f..f720e29f4 100644
--- a/core/src/xmake/engine.c
+++ b/core/src/xmake/engine.c
@@ -1548,6 +1548,9 @@ xm_engine_ref_t xm_engine_init(tb_char_t const* name, xm_engine_lni_initalizer_c
// init the temporary directory
if (!xm_engine_get_temporary_directory(engine->tmpdir, sizeof(engine->tmpdir), name, version_cstr))
break;
+
+ lua_pushboolean(engine->lua, tb_true);
+ lua_setglobal(engine->lua, "_EMBED");
#endif
// init short version string
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..1d7a2eaf2
--- /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/test_${i}.cpp)
+endforeach()
diff --git a/tests/benchmarks/build_targets/meson.build b/tests/benchmarks/build_targets/meson.build
new file mode 100644
index 000000000..0cc910968
--- /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/test_' + i.to_string() + '.cpp')
+endforeach
diff --git a/tests/benchmarks/build_targets/src/test_1.cpp b/tests/benchmarks/build_targets/src/test_1.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_1.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/src/test_10.cpp b/tests/benchmarks/build_targets/src/test_10.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_10.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/src/test_11.cpp b/tests/benchmarks/build_targets/src/test_11.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_11.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/src/test_12.cpp b/tests/benchmarks/build_targets/src/test_12.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_12.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/src/test_13.cpp b/tests/benchmarks/build_targets/src/test_13.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_13.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/src/test_14.cpp b/tests/benchmarks/build_targets/src/test_14.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_14.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/src/test_15.cpp b/tests/benchmarks/build_targets/src/test_15.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_15.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/src/test_16.cpp b/tests/benchmarks/build_targets/src/test_16.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_16.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/src/test_17.cpp b/tests/benchmarks/build_targets/src/test_17.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_17.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/src/test_18.cpp b/tests/benchmarks/build_targets/src/test_18.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_18.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/src/test_19.cpp b/tests/benchmarks/build_targets/src/test_19.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_19.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/src/test_2.cpp b/tests/benchmarks/build_targets/src/test_2.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_2.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/src/test_20.cpp b/tests/benchmarks/build_targets/src/test_20.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_20.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/src/test_21.cpp b/tests/benchmarks/build_targets/src/test_21.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_21.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/src/test_22.cpp b/tests/benchmarks/build_targets/src/test_22.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_22.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/src/test_23.cpp b/tests/benchmarks/build_targets/src/test_23.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_23.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/src/test_24.cpp b/tests/benchmarks/build_targets/src/test_24.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_24.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/src/test_25.cpp b/tests/benchmarks/build_targets/src/test_25.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_25.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/src/test_26.cpp b/tests/benchmarks/build_targets/src/test_26.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_26.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/src/test_27.cpp b/tests/benchmarks/build_targets/src/test_27.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_27.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/src/test_28.cpp b/tests/benchmarks/build_targets/src/test_28.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_28.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/src/test_29.cpp b/tests/benchmarks/build_targets/src/test_29.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_29.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/src/test_3.cpp b/tests/benchmarks/build_targets/src/test_3.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_3.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/src/test_30.cpp b/tests/benchmarks/build_targets/src/test_30.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_30.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/src/test_4.cpp b/tests/benchmarks/build_targets/src/test_4.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_4.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/src/test_5.cpp b/tests/benchmarks/build_targets/src/test_5.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_5.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/src/test_6.cpp b/tests/benchmarks/build_targets/src/test_6.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_6.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/src/test_7.cpp b/tests/benchmarks/build_targets/src/test_7.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_7.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/src/test_8.cpp b/tests/benchmarks/build_targets/src/test_8.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_8.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/src/test_9.cpp b/tests/benchmarks/build_targets/src/test_9.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/build_targets/src/test_9.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..1804dd59c
--- /dev/null
+++ b/tests/benchmarks/build_targets/test.lua
@@ -0,0 +1,79 @@
+import("lib.detect.find_tool")
+import("core.tool.toolchain")
+
+function test_build(t)
+
+ if xmake.is_embed() then
+ return
+ end
+
+ -- xmake
+ os.tryrm("build")
+ local xmake_dt = os.mclock()
+ os.run("xmake")
+ 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 + 2000 > 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)
+ -- TODO we need to improve it
+ --t:require((cmake_ninja_dt > xmake_dt) or (cmake_ninja_dt + 2000 > 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 + 2000 > 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(meson.program, {"compile", "-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 + 2000 > 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..8bab76f3b
--- /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/test_" .. tostring(i) .. ".cpp")
+end
diff --git a/tests/benchmarks/config_targets/.gitignore b/tests/benchmarks/config_targets/.gitignore
new file mode 100644
index 000000000..152105761
--- /dev/null
+++ b/tests/benchmarks/config_targets/.gitignore
@@ -0,0 +1,8 @@
+# Xmake cache
+.xmake/
+build/
+
+# MacOS Cache
+.DS_Store
+
+
diff --git a/tests/benchmarks/config_targets/CMakeLists.txt b/tests/benchmarks/config_targets/CMakeLists.txt
new file mode 100644
index 000000000..8a1c83c6d
--- /dev/null
+++ b/tests/benchmarks/config_targets/CMakeLists.txt
@@ -0,0 +1,6 @@
+cmake_minimum_required(VERSION 3.10)
+project(test)
+
+foreach(i RANGE 1 1000)
+ add_executable(test${i} src/main.cpp)
+endforeach()
diff --git a/tests/benchmarks/config_targets/meson.build b/tests/benchmarks/config_targets/meson.build
new file mode 100644
index 000000000..d32292c79
--- /dev/null
+++ b/tests/benchmarks/config_targets/meson.build
@@ -0,0 +1,5 @@
+project('test', 'cpp')
+
+foreach i : range(1, 1001)
+ executable('test' + i.to_string(), 'src/main.cpp')
+endforeach
diff --git a/tests/benchmarks/config_targets/src/main.cpp b/tests/benchmarks/config_targets/src/main.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/config_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/config_targets/test.lua b/tests/benchmarks/config_targets/test.lua
new file mode 100644
index 000000000..983f7f952
--- /dev/null
+++ b/tests/benchmarks/config_targets/test.lua
@@ -0,0 +1,73 @@
+import("lib.detect.find_tool")
+import("core.tool.toolchain")
+
+function test_config(t)
+
+ if xmake.is_embed() then
+ return
+ end
+
+ -- xmake
+ os.tryrm("build")
+ local xmake_dt = os.mclock()
+ os.runv("xmake", {"config", "-c"})
+ xmake_dt = os.mclock() - xmake_dt
+ print("config targets/1k: 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"})
+ cmake_default_dt = os.mclock() - cmake_default_dt
+ print("config targets/1k: cmake/default: %d ms", cmake_default_dt)
+ t:require((cmake_default_dt > xmake_dt) or (cmake_default_dt + 2000 > 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})
+ cmake_ninja_dt = os.mclock() - cmake_ninja_dt
+ print("config targets/1k: cmake/ninja: %d ms", cmake_ninja_dt)
+ t:require((cmake_ninja_dt > xmake_dt) or (cmake_ninja_dt + 2000 > xmake_dt))
+ end
+
+ if find_tool("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"})
+ cmake_makefile_dt = os.mclock() - cmake_makefile_dt
+ print("config targets/1k: cmake/makefile: %d ms", cmake_makefile_dt)
+ t:require((cmake_makefile_dt > xmake_dt) or (cmake_makefile_dt + 2000 > 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"})
+ meson_dt = os.mclock() - meson_dt
+ print("config targets/1k: meson: %d ms", meson_dt)
+ t:require((meson_dt > xmake_dt) or (meson_dt + 2000 > xmake_dt))
+ end
+end
+
+
diff --git a/tests/benchmarks/config_targets/xmake.lua b/tests/benchmarks/config_targets/xmake.lua
new file mode 100644
index 000000000..39b394da3
--- /dev/null
+++ b/tests/benchmarks/config_targets/xmake.lua
@@ -0,0 +1,7 @@
+add_rules("mode.debug", "mode.release")
+
+for i = 1, 1000 do
+ target("test" .. i)
+ set_kind("binary")
+ add_files("src/main.cpp")
+end
diff --git a/xmake/actions/build/main.lua b/xmake/actions/build/main.lua
index d883878f5..8560cb1bd 100644
--- a/xmake/actions/build/main.lua
+++ b/xmake/actions/build/main.lua
@@ -22,6 +22,7 @@
import("core.base.option")
import("core.base.global")
import("core.base.task")
+import("core.tool.toolchain")
import("core.project.rule")
import("core.project.config")
import("core.project.project")
@@ -126,6 +127,9 @@ function build_targets(targetnames, opt)
-- do check
check_targets(targetnames, {build = true})
+ -- save toolchain configs
+ toolchain.save()
+
-- dump cache stats
if option.get("diagnosis") then
build_cache.dump_stats()
@@ -141,6 +145,9 @@ function build_targets(targetnames, opt)
-- do rules after building
_do_project_rules("build_after", {errors = errors})
+ -- save toolchain configs
+ toolchain.save()
+
-- raise
if errors then
raise(errors)
diff --git a/xmake/actions/config/main.lua b/xmake/actions/config/main.lua
index 91b246e96..9a03c2992 100644
--- a/xmake/actions/config/main.lua
+++ b/xmake/actions/config/main.lua
@@ -22,6 +22,7 @@
import("core.base.option")
import("core.base.global")
import("core.base.hashset")
+import("core.tool.toolchain")
import("core.project.config")
import("core.project.project")
import("core.platform.platform")
@@ -444,6 +445,9 @@ force to build in current directory via run `xmake -P .`]], os.projectdir())
localcache.set("config", "options", options)
localcache.save("config")
+ -- save toolchain cache
+ toolchain.save()
+
-- unlock the whole project
project.unlock()
end
diff --git a/xmake/core/_xmake_main.lua b/xmake/core/_xmake_main.lua
index a2bbe8e00..00538c864 100644
--- a/xmake/core/_xmake_main.lua
+++ b/xmake/core/_xmake_main.lua
@@ -36,6 +36,7 @@ xmake._PROJECT_FILE = "xmake.lua"
xmake._WORKING_DIR = os.curdir()
xmake._FEATURES = _FEATURES
xmake._LUAJIT = _LUAJIT
+xmake._EMBED = _EMBED
xmake._THREAD_CALLBACK = _THREAD_CALLBACK
xmake._THREAD_CALLINFO = _THREAD_CALLINFO
diff --git a/xmake/core/base/xmake.lua b/xmake/core/base/xmake.lua
index 008e6596d..2b41e9a9d 100644
--- a/xmake/core/base/xmake.lua
+++ b/xmake/core/base/xmake.lua
@@ -62,6 +62,11 @@ function xmake.luajit()
return xmake._LUAJIT
end
+-- is embed?
+function xmake.is_embed()
+ return xmake._EMBED or false
+end
+
-- get command arguments
function xmake.argv()
return xmake._ARGV
diff --git a/xmake/core/sandbox/modules/import/core/tool/toolchain.lua b/xmake/core/sandbox/modules/import/core/tool/toolchain.lua
index 79b1e1c1f..922074cac 100644
--- a/xmake/core/sandbox/modules/import/core/tool/toolchain.lua
+++ b/xmake/core/sandbox/modules/import/core/tool/toolchain.lua
@@ -30,6 +30,7 @@ local raise = require("sandbox/modules/raise")
-- inherit some builtin interfaces
sandbox_core_tool_toolchain.apis = toolchain.apis
sandbox_core_tool_toolchain.directories = toolchain.directories
+sandbox_core_tool_toolchain.save = toolchain.save
-- get all toolchains list
function sandbox_core_tool_toolchain.list()
diff --git a/xmake/core/sandbox/modules/xmake.lua b/xmake/core/sandbox/modules/xmake.lua
index 32c8d0f4d..8c040a9a0 100644
--- a/xmake/core/sandbox/modules/xmake.lua
+++ b/xmake/core/sandbox/modules/xmake.lua
@@ -31,6 +31,7 @@ sandbox_xmake.branch = xmake.branch
sandbox_xmake.programdir = xmake.programdir
sandbox_xmake.programfile = xmake.programfile
sandbox_xmake.luajit = xmake.luajit
+sandbox_xmake.is_embed = xmake.is_embed
sandbox_xmake.argv = xmake.argv
-- return module
diff --git a/xmake/core/tool/toolchain.lua b/xmake/core/tool/toolchain.lua
index 342170ed8..188bbdbdf 100644
--- a/xmake/core/tool/toolchain.lua
+++ b/xmake/core/tool/toolchain.lua
@@ -48,13 +48,18 @@ function _instance.new(name, info, cachekey, is_builtin, configs)
if #parts > 0 then
instance._NAMESPACE = table.concat(parts, "::")
end
- instance._INFO = info
- instance._IS_BUILTIN = is_builtin
- instance._CACHE = toolchain._localcache()
- instance._CACHEKEY = cachekey
- instance._CONFIGS = instance._CACHE:get(cachekey) or {}
+ instance._INFO = info
+ instance._IS_BUILTIN = is_builtin
+ instance._CACHE = toolchain._localcache()
+ instance._CACHEKEY = cachekey
+ local toolchain_configs = instance._CACHE:get(cachekey)
+ if toolchain_configs == nil then
+ toolchain_configs = {}
+ instance._CACHE:set(cachekey, toolchain_configs)
+ end
+ instance._CONFIGS = toolchain_configs
for k, v in pairs(configs) do
- instance._CONFIGS[k] = v
+ toolchain_configs[k] = v
end
-- is global toolchain for the whole platform?
configs.plat = nil
@@ -63,7 +68,7 @@ function _instance.new(name, info, cachekey, is_builtin, configs)
local plat = config.get("plat") or os.host()
local arch = config.get("arch") or os.arch()
if instance:is_plat(plat) and instance:is_arch(arch) and #table.keys(configs) == 0 then
- instance._CONFIGS.__global = true
+ toolchain_configs.__global = true
end
return instance
end
@@ -281,10 +286,9 @@ function _instance:config_set(name, data)
self._CONFIGS[name] = data
end
--- save user configs
+-- save user config (deprecated)
function _instance:configs_save()
- self._CACHE:set(self:cachekey(), self._CONFIGS)
- self._CACHE:save()
+ utils.warning("toolchain:configs_save() is deprecated, please remove it.")
end
-- do check, we only check it once for all architectures
@@ -305,7 +309,6 @@ function _instance:check()
-- we need to persist this state
checked = checked or false
self:config_set("__checked", checked)
- self:configs_save()
end
return checked
end
@@ -828,7 +831,6 @@ function toolchain.tool(toolchains, toolkind, opt)
cache:set2(cachekey, "program", program)
cache:set2(cachekey, "toolname", toolname)
cache:set2(cachekey, "toolchain_info", toolchain_info)
- cache:save()
end
return program, toolname, toolchain_info
end
@@ -871,5 +873,13 @@ function toolchain.toolconfig(toolchains, name, opt)
return toolconfig or nil
end
+-- save all configs to the local cache
+--
+-- @see flushing localcache for each test is too slow,
+-- so we only flush the toolchain configuration cache once after the configuration is completed.
+function toolchain.save()
+ toolchain._localcache():save()
+end
+
-- return module
return toolchain
diff --git a/xmake/plugins/project/vsxmake/getinfo.lua b/xmake/plugins/project/vsxmake/getinfo.lua
index 613a41404..08c10ca60 100644
--- a/xmake/plugins/project/vsxmake/getinfo.lua
+++ b/xmake/plugins/project/vsxmake/getinfo.lua
@@ -22,6 +22,7 @@
import("core.base.option")
import("core.base.semver")
import("core.base.hashset")
+import("core.tool.toolchain")
import("core.project.config")
import("core.project.project")
import("core.platform.platform")
@@ -484,6 +485,9 @@ function main(outputdir, vsinfo)
-- update config files
generate_configfiles()
+ -- save toolchain configs
+ toolchain.save()
+
-- ensure to enter project directory
os.cd(project.directory())
diff --git a/xmake/toolchains/armcc/xmake.lua b/xmake/toolchains/armcc/xmake.lua
index 64216075b..95b54bdae 100644
--- a/xmake/toolchains/armcc/xmake.lua
+++ b/xmake/toolchains/armcc/xmake.lua
@@ -37,7 +37,6 @@ toolchain("armcc")
local mdk = find_mdk()
if mdk and mdk.sdkdir_armcc and find_tool("armcc") then
toolchain:config_set("sdkdir", mdk.sdkdir_armcc)
- toolchain:configs_save()
return true
end
end)
diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua
index 8d494af00..1601c8fab 100644
--- a/xmake/toolchains/armclang/xmake.lua
+++ b/xmake/toolchains/armclang/xmake.lua
@@ -44,7 +44,6 @@ toolchain("armclang")
else
toolchain:config_set("toolset_as", "armasm")
end
- toolchain:configs_save()
return true
end
end)
diff --git a/xmake/toolchains/c51/xmake.lua b/xmake/toolchains/c51/xmake.lua
index ee20c2a46..8e186674a 100644
--- a/xmake/toolchains/c51/xmake.lua
+++ b/xmake/toolchains/c51/xmake.lua
@@ -36,7 +36,6 @@ toolchain("c51")
local c51 = find_c51()
if c51 and c51.sdkdir and find_tool("c51") then
toolchain:config_set("sdkdir", c51.sdkdir)
- toolchain:configs_save()
return true
end
- end) \ No newline at end of file
+ end)
diff --git a/xmake/toolchains/clang-cl/check.lua b/xmake/toolchains/clang-cl/check.lua
index df05f4a38..8925e9ee2 100644
--- a/xmake/toolchains/clang-cl/check.lua
+++ b/xmake/toolchains/clang-cl/check.lua
@@ -98,7 +98,6 @@ function _check_vstudio(toolchain)
config.set("vs", vs, {force = true, readonly = true})
end
toolchain:config_set("vs", vs)
- toolchain:configs_save()
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.success}%s", toolchain:arch(), vs)
if clang_cl and clang_cl.version then
cprint("checking for LLVM Clang C/C++ Compiler (%s) version ... ${color.success}%s", toolchain:arch(), clang_cl.version)
diff --git a/xmake/toolchains/cosmocc/check.lua b/xmake/toolchains/cosmocc/check.lua
index ef673b5fc..b29496b6c 100644
--- a/xmake/toolchains/cosmocc/check.lua
+++ b/xmake/toolchains/cosmocc/check.lua
@@ -67,7 +67,6 @@ function main(toolchain)
if envs then
toolchain:config_set("envs", envs)
end
- toolchain:configs_save()
else
raise("cosmocc toolchain not found!")
end
diff --git a/xmake/toolchains/cross/check.lua b/xmake/toolchains/cross/check.lua
index 49cd94616..1f34cfa0f 100644
--- a/xmake/toolchains/cross/check.lua
+++ b/xmake/toolchains/cross/check.lua
@@ -52,7 +52,6 @@ function main(toolchain)
toolchain:config_set("cross", cross_toolchain.cross)
toolchain:config_set("bindir", cross_toolchain.bindir)
toolchain:config_set("sdkdir", cross_toolchain.sdkdir)
- toolchain:configs_save()
-- init default target os
if not config.get("target_os") then
config.set("target_os", "linux", {readonly = true, force = true})
diff --git a/xmake/toolchains/dlang/check.lua b/xmake/toolchains/dlang/check.lua
index 3325bc736..5e7435d23 100644
--- a/xmake/toolchains/dlang/check.lua
+++ b/xmake/toolchains/dlang/check.lua
@@ -44,7 +44,6 @@ function main(toolchain)
toolchain:config_set("cross", cross_toolchain.cross)
toolchain:config_set("bindir", cross_toolchain.bindir)
toolchain:config_set("sdkdir", cross_toolchain.sdkdir)
- toolchain:configs_save()
else
raise("cross toolchain not found!")
end
diff --git a/xmake/toolchains/dpcpp/check.lua b/xmake/toolchains/dpcpp/check.lua
index 21526601e..b6307e41d 100644
--- a/xmake/toolchains/dpcpp/check.lua
+++ b/xmake/toolchains/dpcpp/check.lua
@@ -37,7 +37,6 @@ function main(toolchain)
cprint("checking for Intel Data Parallel C++ (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("icxenv", icxenv)
toolchain:config_set("bindir", icxenv.bindir)
- toolchain:configs_save()
return true
end
return true
diff --git a/xmake/toolchains/emcc/xmake.lua b/xmake/toolchains/emcc/xmake.lua
index 5bc0674ad..3d64019e6 100644
--- a/xmake/toolchains/emcc/xmake.lua
+++ b/xmake/toolchains/emcc/xmake.lua
@@ -53,7 +53,6 @@ toolchain("emcc")
if emsdk then
toolchain:config_set("bindir", emsdk.emscripten)
toolchain:config_set("sdkdir", emsdk.sdkdir)
- toolchain:configs_save()
return emsdk
end
return find_tool("emcc")
diff --git a/xmake/toolchains/gdc/check.lua b/xmake/toolchains/gdc/check.lua
index dbb71c8db..8dfe539b4 100644
--- a/xmake/toolchains/gdc/check.lua
+++ b/xmake/toolchains/gdc/check.lua
@@ -44,7 +44,6 @@ function main(toolchain)
toolchain:config_set("cross", cross_toolchain.cross)
toolchain:config_set("bindir", cross_toolchain.bindir)
toolchain:config_set("sdkdir", cross_toolchain.sdkdir)
- toolchain:configs_save()
else
raise("cross toolchain not found!")
end
diff --git a/xmake/toolchains/hdk/check.lua b/xmake/toolchains/hdk/check.lua
index 9eed6ecad..7224d428e 100644
--- a/xmake/toolchains/hdk/check.lua
+++ b/xmake/toolchains/hdk/check.lua
@@ -42,7 +42,6 @@ function _check_hdk(toolchain)
toolchain:config_set("sdkdir", hdk.sdkdir)
toolchain:config_set("bindir", hdk.bindir)
toolchain:config_set("sysroot", hdk.sysroot)
- toolchain:configs_save()
return true
else
--[[TODO we also need to add this tips when use remote hdk toolchain
diff --git a/xmake/toolchains/icc/check.lua b/xmake/toolchains/icc/check.lua
index 51a1e9db0..002b9e191 100644
--- a/xmake/toolchains/icc/check.lua
+++ b/xmake/toolchains/icc/check.lua
@@ -95,7 +95,6 @@ function _check_vstudio(toolchain)
config.set("vs", vs, {force = true, readonly = true})
end
toolchain:config_set("vs", vs)
- toolchain:configs_save()
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.success}%s", toolchain:arch(), vs)
else
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.nothing}${text.nothing}", toolchain:arch())
@@ -122,7 +121,6 @@ function _check_intel_on_windows(toolchain)
if tool then
cprint("checking for Intel C/C++ Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("varsall", iclvarsall)
- toolchain:configs_save()
return _check_vstudio(toolchain)
end
end
@@ -143,7 +141,6 @@ function _check_intel_on_linux(toolchain)
cprint("checking for Intel C/C++ Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("iccenv", iccenv)
toolchain:config_set("bindir", iccenv.bindir)
- toolchain:configs_save()
return true
end
return true
diff --git a/xmake/toolchains/icx/check.lua b/xmake/toolchains/icx/check.lua
index 983f42f49..c781f5c8a 100644
--- a/xmake/toolchains/icx/check.lua
+++ b/xmake/toolchains/icx/check.lua
@@ -95,7 +95,6 @@ function _check_vstudio(toolchain)
config.set("vs", vs, {force = true, readonly = true})
end
toolchain:config_set("vs", vs)
- toolchain:configs_save()
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.success}%s", toolchain:arch(), vs)
else
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.nothing}${text.nothing}", toolchain:arch())
@@ -122,7 +121,6 @@ function _check_intel_on_windows(toolchain)
if tool then
cprint("checking for Intel LLVM C/C++ Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("varsall", icxvarsall)
- toolchain:configs_save()
return _check_vstudio(toolchain)
end
end
@@ -143,7 +141,6 @@ function _check_intel_on_linux(toolchain)
cprint("checking for Intel C/C++ Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("icxenv", icxenv)
toolchain:config_set("bindir", icxenv.bindir)
- toolchain:configs_save()
return true
end
return true
diff --git a/xmake/toolchains/ifort/check.lua b/xmake/toolchains/ifort/check.lua
index 23a035455..ac8f31c6e 100644
--- a/xmake/toolchains/ifort/check.lua
+++ b/xmake/toolchains/ifort/check.lua
@@ -95,7 +95,6 @@ function _check_vstudio(toolchain)
config.set("vs", vs, {force = true, readonly = true})
end
toolchain:config_set("vs", vs)
- toolchain:configs_save()
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.success}%s", toolchain:arch(), vs)
else
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.nothing}${text.nothing}", toolchain:arch())
@@ -122,7 +121,6 @@ function _check_intel_on_windows(toolchain)
if tool then
cprint("checking for Intel Fortran Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("varsall", ifortvarsall)
- toolchain:configs_save()
return _check_vstudio(toolchain)
end
end
@@ -143,7 +141,6 @@ function _check_intel_on_linux(toolchain)
cprint("checking for Intel Fortran Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("ifortenv", ifortenv)
toolchain:config_set("bindir", ifortenv.bindir)
- toolchain:configs_save()
return true
end
return true
diff --git a/xmake/toolchains/ifx/check.lua b/xmake/toolchains/ifx/check.lua
index 8e3b0ced0..75264e14e 100644
--- a/xmake/toolchains/ifx/check.lua
+++ b/xmake/toolchains/ifx/check.lua
@@ -95,7 +95,6 @@ function _check_vstudio(toolchain)
config.set("vs", vs, {force = true, readonly = true})
end
toolchain:config_set("vs", vs)
- toolchain:configs_save()
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.success}%s", toolchain:arch(), vs)
else
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.nothing}${text.nothing}", toolchain:arch())
@@ -122,7 +121,6 @@ function _check_intel_on_windows(toolchain)
if tool then
cprint("checking for Intel LLVM Fortran Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("varsall", ifxvarsall)
- toolchain:configs_save()
return _check_vstudio(toolchain)
end
end
@@ -143,7 +141,6 @@ function _check_intel_on_linux(toolchain)
cprint("checking for Intel Fortran Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
toolchain:config_set("ifxenv", ifxenv)
toolchain:config_set("bindir", ifxenv.bindir)
- toolchain:configs_save()
return true
end
return true
diff --git a/xmake/toolchains/iverilog/xmake.lua b/xmake/toolchains/iverilog/xmake.lua
index e120a773f..94b781bb5 100644
--- a/xmake/toolchains/iverilog/xmake.lua
+++ b/xmake/toolchains/iverilog/xmake.lua
@@ -49,6 +49,5 @@ toolchain("iverilog")
cprint("${dim}checking for vvp ... ${color.nothing}${text.nothing}")
raise("iverilog not found!")
end
- toolchain:configs_save()
return true
end)
diff --git a/xmake/toolchains/kotlin-native/xmake.lua b/xmake/toolchains/kotlin-native/xmake.lua
index bc6fa95f9..5e72b0ec1 100644
--- a/xmake/toolchains/kotlin-native/xmake.lua
+++ b/xmake/toolchains/kotlin-native/xmake.lua
@@ -73,7 +73,6 @@ toolchain("kotlin-native")
toolchain:config_set("sdkdir", path.directory(bindir))
toolchain:config_set("runenvs", runenvs)
end
- toolchain:configs_save()
return true
end
end)
diff --git a/xmake/toolchains/ldc/check.lua b/xmake/toolchains/ldc/check.lua
index 82e8696ff..c8ba89bf8 100644
--- a/xmake/toolchains/ldc/check.lua
+++ b/xmake/toolchains/ldc/check.lua
@@ -44,7 +44,6 @@ function main(toolchain)
toolchain:config_set("cross", cross_toolchain.cross)
toolchain:config_set("bindir", cross_toolchain.bindir)
toolchain:config_set("sdkdir", cross_toolchain.sdkdir)
- toolchain:configs_save()
else
raise("cross toolchain not found!")
end
diff --git a/xmake/toolchains/llvm/check.lua b/xmake/toolchains/llvm/check.lua
index 21ddd363a..54901824a 100644
--- a/xmake/toolchains/llvm/check.lua
+++ b/xmake/toolchains/llvm/check.lua
@@ -62,7 +62,6 @@ function _find_xcode(toolchain)
toolchain:config_set("xcode_sdkver", xcode_sdkver)
toolchain:config_set("target_minver", target_minver)
toolchain:config_set("appledev", appledev)
- toolchain:configs_save()
cprint("checking for SDK version of Xcode for %s (%s) ... ${color.success}%s", toolchain:plat(), toolchain:arch(), xcode_sdkver)
end
@@ -115,7 +114,6 @@ function main(toolchain)
toolchain:config_set("cross", cross)
toolchain:config_set("bindir", cross_toolchain.bindir)
toolchain:config_set("sdkdir", cross_toolchain.sdkdir)
- toolchain:configs_save()
else
raise("llvm toolchain not found!")
end
diff --git a/xmake/toolchains/masm32/xmake.lua b/xmake/toolchains/masm32/xmake.lua
index f7534c3ab..a943cd6fd 100644
--- a/xmake/toolchains/masm32/xmake.lua
+++ b/xmake/toolchains/masm32/xmake.lua
@@ -36,7 +36,6 @@ toolchain("masm32")
if masm32 and masm32.sdkdir and masm32.bindir and find_tool("ml.exe", {program = path.join(masm32.bindir, "ml.exe")}) then
toolchain:config_set("sdkdir", masm32.sdkdir)
toolchain:config_set("bindir", masm32.bindir)
- toolchain:configs_save()
return true
end
end)
diff --git a/xmake/toolchains/mingw/check.lua b/xmake/toolchains/mingw/check.lua
index 17ae0ea3c..fbb647661 100644
--- a/xmake/toolchains/mingw/check.lua
+++ b/xmake/toolchains/mingw/check.lua
@@ -41,7 +41,6 @@ function main(toolchain)
toolchain:config_set("mingw", mingw.sdkdir)
toolchain:config_set("cross", mingw.cross)
toolchain:config_set("bindir", mingw.bindir)
- toolchain:configs_save()
return true
end
end
diff --git a/xmake/toolchains/msvc/check.lua b/xmake/toolchains/msvc/check.lua
index df381ec69..01a81ad93 100644
--- a/xmake/toolchains/msvc/check.lua
+++ b/xmake/toolchains/msvc/check.lua
@@ -89,7 +89,6 @@ function _check_vstudio(toolchain)
config.set("vs", vs, {force = true, readonly = true})
end
toolchain:config_set("vs", vs)
- toolchain:configs_save()
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.success}%s", toolchain:arch(), vs)
if msvc and msvc.version then
cprint("checking for Microsoft C/C++ Compiler (%s) version ... ${color.success}%s", toolchain:arch(), msvc.version)
diff --git a/xmake/toolchains/ndk/check.lua b/xmake/toolchains/ndk/check.lua
index 6c59ca3a4..2845623c1 100644
--- a/xmake/toolchains/ndk/check.lua
+++ b/xmake/toolchains/ndk/check.lua
@@ -55,7 +55,6 @@ function _check_ndk(toolchain)
toolchain:config_set("ndk_sdkver", ndk.sdkver)
toolchain:config_set("ndk_toolchains_ver", ndk.toolchains_ver)
toolchain:config_set("ndk_sysroot", ndk.sysroot)
- toolchain:configs_save()
return true
else
--[[TODO we also need to add this tips when use remote ndk toolchain
@@ -73,7 +72,6 @@ function _check_android_sdk(toolchain)
if sdk then
toolchain:config_set("android_sdk", sdk.sdkdir)
toolchain:config_set("build_toolver", sdk.build_toolver)
- toolchain:configs_save()
end
end
diff --git a/xmake/toolchains/nim/xmake.lua b/xmake/toolchains/nim/xmake.lua
index 73ec3b0df..a0f28e34d 100644
--- a/xmake/toolchains/nim/xmake.lua
+++ b/xmake/toolchains/nim/xmake.lua
@@ -40,7 +40,6 @@ toolchain("nim")
end
if nim then
toolchain:config_set("nim", nim)
- toolchain:configs_save()
return true
end
end)
diff --git a/xmake/toolchains/sdcc/check.lua b/xmake/toolchains/sdcc/check.lua
index 1e7807ec9..fbe76a8e5 100644
--- a/xmake/toolchains/sdcc/check.lua
+++ b/xmake/toolchains/sdcc/check.lua
@@ -31,7 +31,6 @@ function main(toolchain)
if cross_toolchain then
toolchain:config_set("cross", cross_toolchain.cross)
toolchain:config_set("bindir", cross_toolchain.bindir)
- toolchain:configs_save()
return true
end
return find_tool("sdcc")
diff --git a/xmake/toolchains/tinycc/xmake.lua b/xmake/toolchains/tinycc/xmake.lua
index a4aae0b06..1dba13675 100644
--- a/xmake/toolchains/tinycc/xmake.lua
+++ b/xmake/toolchains/tinycc/xmake.lua
@@ -45,7 +45,6 @@ toolchain("tinycc")
if os.isfile(tcc.program) then
toolchain:config_set("bindir", path.directory(tcc.program))
end
- toolchain:configs_save()
return true
end
end)
diff --git a/xmake/toolchains/verilator/xmake.lua b/xmake/toolchains/verilator/xmake.lua
index 8b3af4cac..e956d0b84 100644
--- a/xmake/toolchains/verilator/xmake.lua
+++ b/xmake/toolchains/verilator/xmake.lua
@@ -39,7 +39,6 @@ toolchain("verilator")
cprint("${dim}checking for verilator ... ${color.nothing}${text.nothing}")
raise("verilator not found!")
end
- toolchain:configs_save()
return true
end)
diff --git a/xmake/toolchains/wasi/xmake.lua b/xmake/toolchains/wasi/xmake.lua
index c234a33e9..c1a29d57f 100644
--- a/xmake/toolchains/wasi/xmake.lua
+++ b/xmake/toolchains/wasi/xmake.lua
@@ -47,7 +47,6 @@ toolchain("wasi")
if wasisdk then
toolchain:config_set("bindir", wasisdk.bindir)
toolchain:config_set("sdkdir", wasisdk.sdkdir)
- toolchain:configs_save()
return wasisdk
end
return import("lib.detect.find_tool")("clang", {paths = toolchain:bindir()})
diff --git a/xmake/toolchains/xcode/check.lua b/xmake/toolchains/xcode/check.lua
index eece3399f..5cc0ace73 100644
--- a/xmake/toolchains/xcode/check.lua
+++ b/xmake/toolchains/xcode/check.lua
@@ -152,7 +152,6 @@ function main(toolchain)
toolchain:config_set("xcode_sdkver", xcode_sdkver)
toolchain:config_set("target_minver", target_minver)
toolchain:config_set("appledev", appledev)
- toolchain:configs_save()
if xcode_sdkver then
cprint("checking for SDK version of Xcode for %s (%s) ... ${color.success}%s", toolchain:plat(), toolchain:arch(), xcode_sdkver)
end
diff --git a/xmake/toolchains/zig/xmake.lua b/xmake/toolchains/zig/xmake.lua
index a88741b5b..87126b787 100644
--- a/xmake/toolchains/zig/xmake.lua
+++ b/xmake/toolchains/zig/xmake.lua
@@ -67,7 +67,6 @@ toolchain("zig")
_setup_zigcc_wrapper(zig)
toolchain:config_set("zig", zig)
toolchain:config_set("zig_version", zig_version)
- toolchain:configs_save()
return true
end
end)