diff options
| author | ruki <[email protected]> | 2025-04-08 00:44:33 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-04-08 15:31:58 +0800 |
| commit | abd58c9c0e5043d73b127de9cd387e416bd5090f (patch) | |
| tree | 6194c2b72ac5a6f9a16b68147ec98753e987205f | |
| parent | f72d519dfe7b3a3744660ed15c620dbd5344c16c (diff) | |
prepare targets for more generators
| -rw-r--r-- | xmake/plugins/project/clang/compile_commands.lua | 1 | ||||
| -rw-r--r-- | xmake/plugins/project/clang/compile_flags.lua | 6 | ||||
| -rw-r--r-- | xmake/plugins/project/cmake/cmakelists.lua | 9 | ||||
| -rw-r--r-- | xmake/plugins/project/make/makefile.lua | 7 | ||||
| -rw-r--r-- | xmake/plugins/project/ninja/build_ninja.lua | 8 | ||||
| -rw-r--r-- | xmake/plugins/project/utils/target_cmds.lua | 7 | ||||
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs201x.lua | 13 |
7 files changed, 23 insertions, 28 deletions
diff --git a/xmake/plugins/project/clang/compile_commands.lua b/xmake/plugins/project/clang/compile_commands.lua index 46a9bfa64..c36cb8ade 100644 --- a/xmake/plugins/project/clang/compile_commands.lua +++ b/xmake/plugins/project/clang/compile_commands.lua @@ -317,6 +317,7 @@ end function make(outputdir) local oldir = os.cd(os.projectdir()) local jsonfile = io.open(path.join(outputdir, "compile_commands.json"), "w") + target_cmds.prepare_targets() _add_targets(jsonfile) jsonfile:close() os.cd(oldir) diff --git a/xmake/plugins/project/clang/compile_flags.lua b/xmake/plugins/project/clang/compile_flags.lua index 3c76b1bdb..5cfedbb19 100644 --- a/xmake/plugins/project/clang/compile_flags.lua +++ b/xmake/plugins/project/clang/compile_flags.lua @@ -85,10 +85,11 @@ end -- - https://clang.llvm.org/docs/JSONCompilationDatabase.html -- function make(outputdir) - - -- enter project directory local oldir = os.cd(os.projectdir()) + -- prepare targets + target_cmds.prepare_targets() + -- make all local flags = {} flags = _make_all(flags) @@ -100,6 +101,5 @@ function make(outputdir) end flagfile:close() - -- leave project directory os.cd(oldir) end diff --git a/xmake/plugins/project/cmake/cmakelists.lua b/xmake/plugins/project/cmake/cmakelists.lua index 464101268..f826cc453 100644 --- a/xmake/plugins/project/cmake/cmakelists.lua +++ b/xmake/plugins/project/cmake/cmakelists.lua @@ -31,7 +31,6 @@ import("lib.detect.find_tool") import("private.utils.batchcmds") import("private.utils.rule_groups") import("private.utils.target", {alias = "target_utils"}) -import("private.action.build.target", {alias = "target_buildutils"}) import("plugins.project.utils.target_cmds", {rootdir = os.programdir()}) import("rules.c++.modules.modules_support.compiler_support", {alias = "module_compiler_support", rootdir = os.programdir()}) @@ -299,12 +298,6 @@ function _get_flags_from_target(target, flagkind) return results end --- prepare targets -function _prepare_targets() - local targets_root = target_buildutils.get_root_targets() - target_buildutils.run_targetjobs(targets_root, {job_kind = "prepare"}) -end - -- set compiler function _set_compiler(cmakelists) if config.get("toolchain") then @@ -1341,7 +1334,7 @@ end function make(outputdir) local oldir = os.cd(os.projectdir()) local cmakelists = io.open(path.join(outputdir, "CMakeLists.txt"), "w") - _prepare_targets() + target_cmds.prepare_targets() _generate_cmakelists(cmakelists, outputdir) cmakelists:close() os.cd(oldir) diff --git a/xmake/plugins/project/make/makefile.lua b/xmake/plugins/project/make/makefile.lua index 3d4d5507f..e123943de 100644 --- a/xmake/plugins/project/make/makefile.lua +++ b/xmake/plugins/project/make/makefile.lua @@ -687,10 +687,11 @@ function _add_clean(makefile, outputdir) end function make(outputdir) - - -- enter project directory local oldir = os.cd(os.projectdir()) + -- prepare targets + target_cmds.prepare_targets() + -- open the makefile local makefile = io.open(path.join(outputdir, "makefile"), "w") @@ -715,7 +716,5 @@ function make(outputdir) -- close the makefile makefile:close() - - -- leave project directory os.cd(oldir) end diff --git a/xmake/plugins/project/ninja/build_ninja.lua b/xmake/plugins/project/ninja/build_ninja.lua index 819758447..11be6f4ae 100644 --- a/xmake/plugins/project/ninja/build_ninja.lua +++ b/xmake/plugins/project/ninja/build_ninja.lua @@ -28,6 +28,7 @@ import("core.tool.compiler") import("lib.detect.find_tool") import("lib.detect.find_toolname") import("core.tools.cl.parse_include") +import("plugins.project.utils.target_cmds", {rootdir = os.programdir()}) -- this sourcebatch is built? function _sourcebatch_is_built(sourcebatch) @@ -449,10 +450,11 @@ function _add_build_for_targets(ninjafile, outputdir) end function make(outputdir) - - -- enter project directory local oldir = os.cd(os.projectdir()) + -- prepare targets + target_cmds.prepare_targets() + -- open the build.ninja file -- -- we need to change encoding to support msvc_deps_prefix @@ -474,8 +476,6 @@ function make(outputdir) -- close the ninjafile ninjafile:close() - - -- leave project directory os.cd(oldir) end diff --git a/xmake/plugins/project/utils/target_cmds.lua b/xmake/plugins/project/utils/target_cmds.lua index 332e4858d..debc6fdc5 100644 --- a/xmake/plugins/project/utils/target_cmds.lua +++ b/xmake/plugins/project/utils/target_cmds.lua @@ -25,6 +25,7 @@ import("core.base.hashset") import("core.project.rule") import("private.utils.batchcmds") import("private.utils.rule_groups") +import("private.action.build.target", {alias = "target_buildutils"}) -- this sourcebatch is built? function _sourcebatch_is_built(sourcebatch) @@ -115,3 +116,9 @@ function get_target_buildcmd_sourcegroups(target, cmds, sourcegroups, opt) end end +-- prepare targets +function prepare_targets() + local targets_root = target_buildutils.get_root_targets() + target_buildutils.run_targetjobs(targets_root, {job_kind = "prepare"}) +end + diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua index b6b2e11d7..0a23a1847 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x.lua @@ -386,17 +386,14 @@ end -- make vstudio project function make(outputdir, vsinfo) - - -- enter project directory local oldir = os.cd(project.directory()) - -- init solution directory - vsinfo.solution_dir = path.join(outputdir, "vs" .. vsinfo.vstudio_version) + -- prepare targets + target_cmds.prepare_targets() - -- init modes + -- init vsinfo + vsinfo.solution_dir = path.join(outputdir, "vs" .. vsinfo.vstudio_version) vsinfo.modes = _make_vsinfo_modes() - - -- init archs vsinfo.archs = _make_vsinfo_archs() -- load targets @@ -519,7 +516,5 @@ function make(outputdir, vsinfo) -- clear local cache _clear_cache() - - -- leave project directory os.cd(oldir) end |
