diff options
| author | ruki <[email protected]> | 2020-02-23 10:28:51 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-02-23 10:28:51 +0800 |
| commit | e5401a8399708b91f501d03b83f635a71bb23f5a (patch) | |
| tree | 171e7c4029722800044d9f37d25a8e4ee43a465e | |
| parent | 77ba31a49108211d65181cffb96a1bd179095c53 (diff) | |
support msvc for ninja
| -rw-r--r-- | xmake/plugins/project/ninja/build_ninja.lua | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/xmake/plugins/project/ninja/build_ninja.lua b/xmake/plugins/project/ninja/build_ninja.lua index 1fe10c860..84fc87144 100644 --- a/xmake/plugins/project/ninja/build_ninja.lua +++ b/xmake/plugins/project/ninja/build_ninja.lua @@ -42,6 +42,8 @@ function _add_rules_for_compiler_gcc(ninjafile, sourcekind, program) local ccache = find_tool("ccache") ninjafile:print("rule %s", sourcekind) ninjafile:print(" command = %s%s $ARGS -MMD -MF $out.d -o $out -c $in", ccache and (ccache.program .. " ") or "", program) + ninjafile:print(" deps = gcc") + ninjafile:print(" depfile = $out.d") ninjafile:print(" description = %scompiling.%s $in", ccache and "ccache " or "", config.mode()) ninjafile:print("") end @@ -51,13 +53,39 @@ function _add_rules_for_compiler_clang(ninjafile, sourcekind, program) return _add_rules_for_compiler_gcc(ninjafile, sourcekind, program) end +-- add rules for complier (msvc/cl) +function _add_rules_for_compiler_msvc_cl(ninjafile, sourcekind, program) + ninjafile:print("rule %s", sourcekind) + ninjafile:print(" command = %s -showIncludes -c $ARGS $in -Fo$out", program) + ninjafile:print(" deps = msvc") + ninjafile:print(" description = compiling.%s $in", config.mode()) + ninjafile:print("") +end + +-- add rules for complier (msvc/ml) +function _add_rules_for_compiler_msvc_ml(ninjafile, sourcekind, program) + ninjafile:print("rule %s", sourcekind) + ninjafile:print(" command = %s -c $ARGS -Fo$out $in", program) + ninjafile:print(" deps = msvc") + ninjafile:print(" description = compiling.%s $in", config.mode()) + ninjafile:print("") +end + -- add rules for complier function _add_rules_for_compiler(ninjafile) ninjafile:print("# rules for compiler") + if is_plat("windows") then + ninjafile:print("msvc_deps_prefix = Note: including file:") + end local add_compiler_rules = { - gcc = _add_rules_for_compiler_gcc, - clang = _add_rules_for_compiler_clang + gcc = _add_rules_for_compiler_gcc, + gxx = _add_rules_for_compiler_gcc, + clang = _add_rules_for_compiler_clang, + clangxx = _add_rules_for_compiler_clang, + cl = _add_rules_for_compiler_msvc_cl, + ml = _add_rules_for_compiler_msvc_ml, + ml64 = _add_rules_for_compiler_msvc_ml } for sourcekind, _ in pairs(language.sourcekinds()) do local program, toolname = platform.tool(sourcekind) @@ -92,6 +120,14 @@ function _add_rules_for_linker_clang(ninjafile, linkerkind, program) return _add_rules_for_linker_gcc(ninjafile, linkerkind, program) end +-- add rules for linker (msvc) +function _add_rules_for_linker_msvc(ninjafile, linkerkind, program) + ninjafile:print("rule %s", linkerkind) + ninjafile:print(" command = %s $ARGS -out:$out $in", program) + ninjafile:print(" description = linking.%s $out", config.mode()) + ninjafile:print("") +end + -- add rules for linker function _add_rules_for_linker(ninjafile) ninjafile:print("# rules for linker") @@ -105,7 +141,8 @@ function _add_rules_for_linker(ninjafile) gcc = _add_rules_for_linker_gcc, gxx = _add_rules_for_linker_gcc, clang = _add_rules_for_linker_clang, - clangxx = _add_rules_for_linker_clang + clangxx = _add_rules_for_linker_clang, + link = _add_rules_for_linker_msvc } for _, linkerkind in ipairs(table.unique(linkerkinds)) do local program, toolname = platform.tool(linkerkind) |
