From 3755a6f67399b8e42df9f39ec7c506918dbb433a Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Sat, 7 Jan 2023 17:44:36 +0100 Subject: reenable old clang modules by default and fix tests --- tests/projects/c++/modules/stdmodules/test.lua | 2 +- tests/projects/c++/modules/stdmodules/xmake.lua | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) (limited to 'tests/projects/c++/modules/stdmodules') diff --git a/tests/projects/c++/modules/stdmodules/test.lua b/tests/projects/c++/modules/stdmodules/test.lua index 0657ead56..e77adc4ae 100644 --- a/tests/projects/c++/modules/stdmodules/test.lua +++ b/tests/projects/c++/modules/stdmodules/test.lua @@ -1 +1 @@ -inherit(".test_msvc") +inherit(".test_stdmodules") diff --git a/tests/projects/c++/modules/stdmodules/xmake.lua b/tests/projects/c++/modules/stdmodules/xmake.lua index 85e738d14..134aee26c 100644 --- a/tests/projects/c++/modules/stdmodules/xmake.lua +++ b/tests/projects/c++/modules/stdmodules/xmake.lua @@ -1,14 +1,11 @@ add_rules("mode.debug", "mode.release") - -add_cxxflags("clang::-stdlib=libc++") - set_languages("c++latest") target("mod") set_kind("static") add_files("src/*.cpp", "src/*.mpp") -target("test") +target("stdmodules") set_kind("binary") add_files("test/*.cpp") add_deps("mod") -- cgit v1.3.1 From 429ff39f5874e63741aecbe3dfdc15d790e0fb44 Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Wed, 11 Jan 2023 14:47:19 +0100 Subject: rename clang std modulemap enabler and disable it by default --- tests/projects/c++/modules/class/xmake.lua | 2 +- tests/projects/c++/modules/dependence/xmake.lua | 1 - tests/projects/c++/modules/headerunits_person/xmake.lua | 1 - tests/projects/c++/modules/inline_and_template/xmake.lua | 1 - tests/projects/c++/modules/stdmodules/xmake.lua | 4 ++++ tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua | 4 ++++ xmake/rules/c++/modules/modules_support/clang.lua | 2 +- 7 files changed, 10 insertions(+), 5 deletions(-) (limited to 'tests/projects/c++/modules/stdmodules') diff --git a/tests/projects/c++/modules/class/xmake.lua b/tests/projects/c++/modules/class/xmake.lua index 2dfca344c..42da78369 100644 --- a/tests/projects/c++/modules/class/xmake.lua +++ b/tests/projects/c++/modules/class/xmake.lua @@ -5,4 +5,4 @@ target("class") set_kind("binary") add_files("src/*.cpp", "src/*.mpp") - set_values("c++.clang.modules.strict", true) -- clang std module clash with stl headers, header units and c++23 std module so we disable it when using libc++ + diff --git a/tests/projects/c++/modules/dependence/xmake.lua b/tests/projects/c++/modules/dependence/xmake.lua index 16e47a55d..4d035c42b 100644 --- a/tests/projects/c++/modules/dependence/xmake.lua +++ b/tests/projects/c++/modules/dependence/xmake.lua @@ -5,4 +5,3 @@ target("dependence") set_kind("binary") add_files("src/*.cpp", "src/*.mpp") - set_values("c++.clang.modules.strict", true) -- clang std module clash with stl headers, header units and c++23 std module so we disable it when using libc++ \ No newline at end of file diff --git a/tests/projects/c++/modules/headerunits_person/xmake.lua b/tests/projects/c++/modules/headerunits_person/xmake.lua index 93b635988..d11b49824 100644 --- a/tests/projects/c++/modules/headerunits_person/xmake.lua +++ b/tests/projects/c++/modules/headerunits_person/xmake.lua @@ -5,4 +5,3 @@ target("headerunits_person") set_kind("binary") add_files("src/*.cpp", "src/*.mpp") - set_values("c++.clang.modules.strict", true) -- clang std module clash with stl headers, header units and c++23 std module so we disable it \ No newline at end of file diff --git a/tests/projects/c++/modules/inline_and_template/xmake.lua b/tests/projects/c++/modules/inline_and_template/xmake.lua index 57635eff3..8c981fae9 100644 --- a/tests/projects/c++/modules/inline_and_template/xmake.lua +++ b/tests/projects/c++/modules/inline_and_template/xmake.lua @@ -5,4 +5,3 @@ target("inline_and_template") set_kind("binary") add_files("src/*.cpp", "src/*.mpp") - set_values("c++.clang.modules.strict", true) -- clang std module clash with stl headers, header units and c++23 std module so we disable it when using libc++ \ No newline at end of file diff --git a/tests/projects/c++/modules/stdmodules/xmake.lua b/tests/projects/c++/modules/stdmodules/xmake.lua index 134aee26c..8007553ed 100644 --- a/tests/projects/c++/modules/stdmodules/xmake.lua +++ b/tests/projects/c++/modules/stdmodules/xmake.lua @@ -5,7 +5,11 @@ target("mod") set_kind("static") add_files("src/*.cpp", "src/*.mpp") + set_values("c++.clang.module.stdmodules", true) + target("stdmodules") set_kind("binary") add_files("test/*.cpp") add_deps("mod") + + set_values("c++.clang.module.stdmodules", true) diff --git a/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua b/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua index 61d451908..330fa56f8 100644 --- a/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua +++ b/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua @@ -5,6 +5,10 @@ target("mod") set_kind("static") add_files("src/*.cpp", "src/*.mpp") + set_values("c++.clang.module.stdmodules", true) + target("mod2") set_kind("static") add_files("src/*.cpp", "src/*.mpp") + + set_values("c++.clang.module.stdmodules", true) diff --git a/xmake/rules/c++/modules/modules_support/clang.lua b/xmake/rules/c++/modules/modules_support/clang.lua index 7d843c3dd..19f6968c6 100644 --- a/xmake/rules/c++/modules/modules_support/clang.lua +++ b/xmake/rules/c++/modules/modules_support/clang.lua @@ -84,7 +84,7 @@ function load(target) target:add("cxxflags", modulestsflag) end - if not target:values("c++.clang.modules.strict") then + if target:values("c++.clang.modules.stdmodules") then target:add("cxxflags", builtinmodulemapflag, {force = true}) target:add("cxxflags", implicitmodulesflag, {force = true}) else -- cgit v1.3.1 From 98e4399340bca560915c8faef19a632840046a0e Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Wed, 11 Jan 2023 17:31:14 +0100 Subject: use policies instead of target values --- tests/projects/c++/modules/stdmodules/xmake.lua | 4 ++-- tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua | 4 ++-- xmake/core/project/policy.lua | 2 ++ xmake/rules/c++/modules/modules_support/clang.lua | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) (limited to 'tests/projects/c++/modules/stdmodules') diff --git a/tests/projects/c++/modules/stdmodules/xmake.lua b/tests/projects/c++/modules/stdmodules/xmake.lua index 8007553ed..496961cd0 100644 --- a/tests/projects/c++/modules/stdmodules/xmake.lua +++ b/tests/projects/c++/modules/stdmodules/xmake.lua @@ -5,11 +5,11 @@ target("mod") set_kind("static") add_files("src/*.cpp", "src/*.mpp") - set_values("c++.clang.module.stdmodules", true) + set_policy("c++.clang.module.stdmodules", true) target("stdmodules") set_kind("binary") add_files("test/*.cpp") add_deps("mod") - set_values("c++.clang.module.stdmodules", true) + set_policy("c++.clang.module.stdmodules", true) diff --git a/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua b/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua index 330fa56f8..3501597ff 100644 --- a/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua +++ b/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua @@ -5,10 +5,10 @@ target("mod") set_kind("static") add_files("src/*.cpp", "src/*.mpp") - set_values("c++.clang.module.stdmodules", true) + set_policy("c++.clang.module.stdmodules", true) target("mod2") set_kind("static") add_files("src/*.cpp", "src/*.mpp") - set_values("c++.clang.module.stdmodules", true) + set_policy("c++.clang.module.stdmodules", true) diff --git a/xmake/core/project/policy.lua b/xmake/core/project/policy.lua index 8148a37e2..ac93415f9 100644 --- a/xmake/core/project/policy.lua +++ b/xmake/core/project/policy.lua @@ -35,6 +35,8 @@ function policy.policies() if not policies then policies = { + -- enable clang std modulemap + ["c++.clang.module.stdmodules"] = {description = "Enable clang std modulemap.", default = false, type = "boolean"}, -- we will check and ignore all unsupported flags by default, but we can also pass `{force = true}` to force to set flags, e.g. add_ldflags("-static", {force = true}) ["check.auto_ignore_flags"] = {description = "Enable check and ignore unsupported flags automatically.", default = true, type = "boolean"}, -- we will map gcc flags to the current compiler and linker by default. diff --git a/xmake/rules/c++/modules/modules_support/clang.lua b/xmake/rules/c++/modules/modules_support/clang.lua index 74b2f62cc..747c62166 100644 --- a/xmake/rules/c++/modules/modules_support/clang.lua +++ b/xmake/rules/c++/modules/modules_support/clang.lua @@ -84,7 +84,7 @@ function load(target) target:add("cxxflags", modulestsflag) end - if target:values("c++.clang.modules.stdmodules") then + if target:policy("c++.clang.module.stdmodules") then target:add("cxxflags", builtinmodulemapflag, {force = true}) target:add("cxxflags", implicitmodulesflag, {force = true}) else @@ -298,7 +298,7 @@ function generate_dependencies(target, sourcebatch, opt) end end - assert(not (has_std_modules and not target:values("c++.clang.modules.stdmodules")), + assert(not (has_std_modules and not target:policy("c++.clang.modules.stdmodules")), [[On llvm <= 16 standard C++ modules are not supported ; they can be emulated through clang modules and supported only on libc++ ; please add -stdlib=libc++ cxx flag or disable strict mode]]) -- cgit v1.3.1 From 8a582f9a9fb7be2cfbfdd2f18f31510547dff12b Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Wed, 11 Jan 2023 17:58:02 +0100 Subject: rename clang std modulemap policy --- tests/projects/c++/modules/stdmodules/xmake.lua | 4 ++-- tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua | 4 ++-- xmake/core/project/policy.lua | 4 ++-- xmake/rules/c++/modules/modules_support/clang.lua | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'tests/projects/c++/modules/stdmodules') diff --git a/tests/projects/c++/modules/stdmodules/xmake.lua b/tests/projects/c++/modules/stdmodules/xmake.lua index 496961cd0..5cf4ccb9d 100644 --- a/tests/projects/c++/modules/stdmodules/xmake.lua +++ b/tests/projects/c++/modules/stdmodules/xmake.lua @@ -5,11 +5,11 @@ target("mod") set_kind("static") add_files("src/*.cpp", "src/*.mpp") - set_policy("c++.clang.module.stdmodules", true) + set_policy("build.c++.clang.stdmodules", true) target("stdmodules") set_kind("binary") add_files("test/*.cpp") add_deps("mod") - set_policy("c++.clang.module.stdmodules", true) + set_policy("build.c++.clang.stdmodules", true) diff --git a/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua b/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua index 3501597ff..32bed613b 100644 --- a/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua +++ b/tests/projects/c++/modules/stdmodules_multiple_targets/xmake.lua @@ -5,10 +5,10 @@ target("mod") set_kind("static") add_files("src/*.cpp", "src/*.mpp") - set_policy("c++.clang.module.stdmodules", true) + set_policy("build.c++.clang.stdmodules", true) target("mod2") set_kind("static") add_files("src/*.cpp", "src/*.mpp") - set_policy("c++.clang.module.stdmodules", true) + set_policy("build.c++.clang.stdmodules", true) diff --git a/xmake/core/project/policy.lua b/xmake/core/project/policy.lua index 4c0d1a793..4c9f87cd1 100644 --- a/xmake/core/project/policy.lua +++ b/xmake/core/project/policy.lua @@ -35,8 +35,6 @@ function policy.policies() if not policies then policies = { - -- enable clang std modulemap - ["c++.clang.module.stdmodules"] = {description = "Enable clang std modulemap.", default = false, type = "boolean"}, -- we will check and ignore all unsupported flags by default, but we can also pass `{force = true}` to force to set flags, e.g. add_ldflags("-static", {force = true}) ["check.auto_ignore_flags"] = {description = "Enable check and ignore unsupported flags automatically.", default = true, type = "boolean"}, -- we will map gcc flags to the current compiler and linker by default. @@ -55,6 +53,8 @@ function policy.policies() ["build.optimization.lto"] = {description = "Enable LTO linker-time optimization for c/c++ building.", type = "boolean"}, -- enable C++ modules for C++ building, even if no .mpp is involved in the compilation ["build.c++.modules"] = {description = "Enable C++ modules for C++ building.", type = "boolean"}, + -- enable clang std modulemap + ["build.c++.clang.stdmodules"] = {description = "Enable clang std modulemap.", default = false, type = "boolean"}, -- preprocessor configuration for ccache/distcc, we can disable linemarkers to speed up preprocess ["preprocessor.linemarkers"] = {description = "Enable linemarkers for preprocessor.", default = true, type = "boolean"}, -- preprocessor configuration for ccache/distcc, we can disable it to avoid cache object file with __DATE__, __TIME__ diff --git a/xmake/rules/c++/modules/modules_support/clang.lua b/xmake/rules/c++/modules/modules_support/clang.lua index 747c62166..30b27bc2a 100644 --- a/xmake/rules/c++/modules/modules_support/clang.lua +++ b/xmake/rules/c++/modules/modules_support/clang.lua @@ -84,7 +84,7 @@ function load(target) target:add("cxxflags", modulestsflag) end - if target:policy("c++.clang.module.stdmodules") then + if target:policy("build.c++.clang.stdmodules") then target:add("cxxflags", builtinmodulemapflag, {force = true}) target:add("cxxflags", implicitmodulesflag, {force = true}) else -- cgit v1.3.1