From 3e148e5ca8db2579f91b0895f1382c6ea9e840b3 Mon Sep 17 00:00:00 2001 From: shithappens2016 Date: Sat, 17 Sep 2022 11:17:49 +0800 Subject: remove `-fbuiltin-module-map` in the (windows)mingw environment There is no builtin module for clang in the mingw environment, so remove `-fbuiltin-module-map` in the mingw environment will make the compilation work. --- xmake/rules/c++/modules/modules_support/clang.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xmake/rules/c++/modules/modules_support/clang.lua b/xmake/rules/c++/modules/modules_support/clang.lua index e67bacef1..a80833b0b 100644 --- a/xmake/rules/c++/modules/modules_support/clang.lua +++ b/xmake/rules/c++/modules/modules_support/clang.lua @@ -489,7 +489,11 @@ function get_builtinmodulemapflag(target) if builtinmodulemapflag == nil then local compinst = target:compiler("cxx") if compinst:has_flags("-fbuiltin-module-map", "cxxflags", {flagskey = "clang_builtin_module_map"}) then - builtinmodulemapflag = "-fbuiltin-module-map" + if is_plat("windows", "mingw") then + builtinmodulemapflag = "" + else + builtinmodulemapflag = "-fbuiltin-module-map" + end end assert(builtinmodulemapflag, "compiler(clang): does not support c++ module!") _g.builtinmodulemapflag = builtinmodulemapflag or false -- cgit v1.3.1 From 340eacb560ac33fa2982c1bcf5769859f17f4366 Mon Sep 17 00:00:00 2001 From: shithappens2016 Date: Sat, 17 Sep 2022 11:58:20 +0800 Subject: `is_plat` to `target:is_plat` --- xmake/rules/c++/modules/modules_support/clang.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xmake/rules/c++/modules/modules_support/clang.lua b/xmake/rules/c++/modules/modules_support/clang.lua index a80833b0b..3c81aee0c 100644 --- a/xmake/rules/c++/modules/modules_support/clang.lua +++ b/xmake/rules/c++/modules/modules_support/clang.lua @@ -489,7 +489,7 @@ function get_builtinmodulemapflag(target) if builtinmodulemapflag == nil then local compinst = target:compiler("cxx") if compinst:has_flags("-fbuiltin-module-map", "cxxflags", {flagskey = "clang_builtin_module_map"}) then - if is_plat("windows", "mingw") then + if target:is_plat("windows", "mingw") then builtinmodulemapflag = "" else builtinmodulemapflag = "-fbuiltin-module-map" -- cgit v1.3.1 From a3afa19af78efbf72c9201d5499afc8ae3a1d8ab Mon Sep 17 00:00:00 2001 From: ruki Date: Mon, 19 Sep 2022 20:30:23 +0800 Subject: Update clang.lua --- xmake/rules/c++/modules/modules_support/clang.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/xmake/rules/c++/modules/modules_support/clang.lua b/xmake/rules/c++/modules/modules_support/clang.lua index 3c81aee0c..4eaee0a84 100644 --- a/xmake/rules/c++/modules/modules_support/clang.lua +++ b/xmake/rules/c++/modules/modules_support/clang.lua @@ -487,15 +487,15 @@ end function get_builtinmodulemapflag(target) local builtinmodulemapflag = _g.builtinmodulemapflag if builtinmodulemapflag == nil then - local compinst = target:compiler("cxx") - if compinst:has_flags("-fbuiltin-module-map", "cxxflags", {flagskey = "clang_builtin_module_map"}) then - if target:is_plat("windows", "mingw") then - builtinmodulemapflag = "" - else + -- this flag seems clang on mingw doesn't distribute it + -- @see https://github.com/xmake-io/xmake/pull/2833 + if not target:is_plat("mingw") then + local compinst = target:compiler("cxx") + if compinst:has_flags("-fbuiltin-module-map", "cxxflags", {flagskey = "clang_builtin_module_map"}) then builtinmodulemapflag = "-fbuiltin-module-map" end + assert(builtinmodulemapflag, "compiler(clang): does not support c++ module!") end - assert(builtinmodulemapflag, "compiler(clang): does not support c++ module!") _g.builtinmodulemapflag = builtinmodulemapflag or false end return builtinmodulemapflag or nil -- cgit v1.3.1