summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-02-02 22:52:44 +0800
committerruki <[email protected]>2024-02-02 22:52:44 +0800
commita204e49f7d3d39e27e621b3c5eb241c0021497a5 (patch)
treef22e5037f5bbfcba0cc7ae730c99577c9ef9b011
parentb81eed59a532fdb69f8ef8533cf5b9ae22c381d8 (diff)
format some codes
-rw-r--r--xmake/rules/c++/modules/modules_support/builder.lua9
-rw-r--r--xmake/rules/c++/modules/modules_support/clang/builder.lua21
-rw-r--r--xmake/rules/c++/modules/modules_support/compiler_support.lua2
-rw-r--r--xmake/rules/c++/modules/modules_support/dependency_scanner.lua47
-rw-r--r--xmake/rules/c++/modules/xmake.lua4
5 files changed, 13 insertions, 70 deletions
diff --git a/xmake/rules/c++/modules/modules_support/builder.lua b/xmake/rules/c++/modules/modules_support/builder.lua
index f92f2ed7e..c58f19510 100644
--- a/xmake/rules/c++/modules/modules_support/builder.lua
+++ b/xmake/rules/c++/modules/modules_support/builder.lua
@@ -153,12 +153,11 @@ function _generate_meta_module_info(target, name, sourcefile, requires)
-- add imports
if requires then
- for _name, _ in pairs(requires) do
+ for _name, _ in table.orderpairs(requires) do
module_metadata.imports = module_metadata.imports or {}
table.append(module_metadata.imports, _name)
end
end
-
return module_metadata
end
@@ -177,7 +176,6 @@ function _is_duplicated_headerunit(target, key)
end
function _builder(target)
-
local cachekey = tostring(target)
local builder = compiler_support.memcache():get2("builder", cachekey)
if builder == nil then
@@ -212,7 +210,6 @@ function build_modules_for_batchjobs(target, batchjobs, sourcebatch, modules, op
batchjobs:group_enter(target:name() .. "/build_modules", {rootjob = opt.rootjob})
local modulesjobs = {}
-
_build_modules(target, sourcebatch, modules, table.join(opt, {
build_module = function(deps, build, module, name, provide, objectfile, cppfile, fileconfig)
local job_name = name and target:name() .. name or cppfile
@@ -268,6 +265,7 @@ function build_headerunits_for_batchjobs(target, batchjobs, sourcebatch, modules
if not user_headerunits and not stl_headerunits then
return
end
+
-- we need new group(headerunits)
-- e.g. group(build_modules) -> group(headerunits)
opt.rootjob = batchjobs:group_leave() or opt.rootjob
@@ -329,15 +327,12 @@ end
-- get or create a target module mapper
function get_target_module_mapper(target)
-
- opt = opt or {}
local memcache = compiler_support.memcache()
local mapper = memcache:get2(target:name(), "module_mapper")
if not mapper then
mapper = {}
memcache:set2(target:name(), "module_mapper", mapper)
end
-
return mapper, table.keys(mapper)
end
diff --git a/xmake/rules/c++/modules/modules_support/clang/builder.lua b/xmake/rules/c++/modules/modules_support/clang/builder.lua
index 64243fd3f..d84bb0cd6 100644
--- a/xmake/rules/c++/modules/modules_support/clang/builder.lua
+++ b/xmake/rules/c++/modules/modules_support/clang/builder.lua
@@ -43,7 +43,6 @@ function _make_modulebuildflags(target, provide, bmifile, opt)
elseif provide then -- two step compilation of named module
precompile = true
flags = {{"-x", "c++-module", "--precompile"}}
-
if not opt.external then
table.insert(flags, {})
end
@@ -68,11 +67,8 @@ function _make_headerunitflags(target, headerunit, bmifile)
assert(module_headerflag, "compiler(clang): does not support c++ header units!")
local local_directory = (headerunit.type == ":quote") and {"-I" .. path.directory(headerunit.path)} or {}
-
local headertype = (headerunit.type == ":angle") and "system" or "user"
-
local flags = table.join(local_directory, {"-xc++-header", "-Wno-everything", module_headerflag .. headertype})
-
return flags
end
@@ -90,8 +86,8 @@ function _compile(target, flags, sourcefile, outputfile, opt)
print(compinst:compcmd(opt.bmifile or sourcefile, outputfile, {target = target, compflags = flags, rawargs = true}))
end
+ -- do compile
if not dryrun then
- -- do compile
assert(compinst:compile(opt.bmifile or sourcefile, outputfile, {target = target, compflags = flags}))
end
end
@@ -119,7 +115,6 @@ end
function _get_requiresflags(target, module, opt)
local modulefileflag = compiler_support.get_modulefileflag(target)
-
local name = module.name
local cachekey = target:name() .. name
@@ -130,11 +125,10 @@ function _get_requiresflags(target, module, opt)
requiresflags = {}
for required, _ in table.orderpairs(module.requires) do
local dep_module = get_from_target_mapper(target, required)
-
assert(dep_module, "module dependency %s required for %s not found", required, name)
- local bmifile = dep_module.bmi
-- aliased headerunit
+ local bmifile = dep_module.bmi
if dep_module.aliasof then
local aliased = get_from_target_mapper(target, dep_module.aliasof)
bmifile = aliased.bmi
@@ -151,15 +145,12 @@ function _get_requiresflags(target, module, opt)
compiler_support.memcache():set2(cachekey, "requiresflags", table.unique(requiresflags))
compiler_support.localcache():set2(cachekey, "requiresflags", table.unique(requiresflags))
end
-
return requiresflags
end
function _append_requires_flags(target, module, name, cppfile, bmifile, opt)
-
local cxxflags = {}
local requiresflags = _get_requiresflags(target, {name = (name or cppfile), bmi = bmifile, requires = module.requires}, {regenerate = opt.build})
-
for _, flag in ipairs(requiresflags) do
-- we need to wrap flag to support flag with space
if type(flag) == "string" and flag:find(" ", 1, true) then
@@ -171,11 +162,10 @@ function _append_requires_flags(target, module, name, cppfile, bmifile, opt)
target:fileconfig_add(cppfile, {force = {cxxflags = cxxflags}})
end
--- populate module map
+-- populate module map
function populate_module_map(target, modules)
local clang_version = compiler_support.get_clang_version(target)
local support_namedmodule = semver.compare(clang_version, "16.0") >= 0
-
for _, module in pairs(modules) do
local name, provide, cppfile = compiler_support.get_provided_module(module)
if provide then
@@ -190,14 +180,12 @@ function get_module_required_defines(target, sourcefile)
local compinst = compiler.load("cxx", {target = target})
local compflags = compinst:compflags({sourcefile = sourcefile, target = target})
local defines
-
for _, flag in ipairs(compflags) do
if flag:startswith("-D") then
defines = defines or {}
table.insert(defines, flag:sub(3))
end
end
-
return defines
end
@@ -322,9 +310,7 @@ end
-- build headerunit file for batchcmds
function make_headerunit_build_cmds(target, batchcmds, headerunit, bmifile, outputdir, opt)
-
batchcmds:mkdir(outputdir)
-
add_headerunit_to_target_mapper(target, headerunit, bmifile)
if opt.build then
@@ -337,7 +323,6 @@ function make_headerunit_build_cmds(target, batchcmds, headerunit, bmifile, outp
end
function get_requires(target, module)
-
local _requires
local flags = _get_requiresflags(target, module)
for _, flag in ipairs(flags) do
diff --git a/xmake/rules/c++/modules/modules_support/compiler_support.lua b/xmake/rules/c++/modules/modules_support/compiler_support.lua
index 3bf89b885..52ee86a57 100644
--- a/xmake/rules/c++/modules/modules_support/compiler_support.lua
+++ b/xmake/rules/c++/modules/modules_support/compiler_support.lua
@@ -242,7 +242,7 @@ function get_provided_module(module)
local name, provide, cppfile
if module.provides then
- -- assume there that provides is only one, until we encounter the cases
+ -- assume there that provides is only one, until we encounter the cases
-- "Some compiler may choose to implement the :private module partition as a separate module for lookup purposes, and if so, it should be indicated as a separate provides entry."
local length = 0
for k, v in pairs(module.provides) do
diff --git a/xmake/rules/c++/modules/modules_support/dependency_scanner.lua b/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
index 830263d07..46d53577a 100644
--- a/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
+++ b/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
@@ -69,7 +69,6 @@ function _parse_meta_info(target, metafile)
break
end
end
-
return filename, name, metadata
end
@@ -449,23 +448,21 @@ end
-- extract packages modules dependencies
function get_all_packages_modules(target, opt)
- local packages_modules
-- parse all meta-info and append their informations to the package store
local packages = target:pkgs() or {}
-
- for _, deps in pairs(target:orderdeps()) do
+ for _, deps in ipairs(target:orderdeps()) do
table.join2(packages, deps:pkgs())
end
- for _, package in pairs(packages) do
+ local packages_modules
+ for _, package in table.orderpairs(packages) do
local package_modules = _get_package_modules(target, package, opt)
if package_modules then
packages_modules = packages_modules or {}
table.join2(packages_modules, package_modules)
end
end
-
return packages_modules
end
@@ -511,40 +508,6 @@ end
-- when building a library we only cull external modules because we need module objectfiles to be linked inside the library
-- on an executable we cull explicitly referenced module
function cull_unused_modules(target, modules)
-
- local cull_all_modules = target:kind() == "executable"
-
- local needed_modules = {}
- for _, module in pairs(modules) do
- local fileconfig = target:fileconfig(module.sourcefile)
- local external = fileconfig and fileconfig.external
- if not (cull_all_modules and external) then
- goto CONTINUE
- end
-
- if module.provides and module.requires then
- table.join2(needed_modules, _fill_needed_module(target, modules, module))
- end
-
- ::CONTINUE::
- end
-
- local culled = {}
- for objectfile, module in pairs(modules) do
- -- if cull_all_modules and modules.provides then
- -- local name,_,_ = compiler_support.get_provided_module(module)
- -- if module.requires then
- -- for required, _ in pairs(module.requires) do
- -- table.insert(needed_modules, required)
- -- end
- -- end
- -- if table.find(needed_modules, name) then
- -- culled[objectfile] = module
- -- end
- -- else
- culled[objectfile] = module
- -- end
- end
-
- return culled
+ -- TODO
+ return modules
end
diff --git a/xmake/rules/c++/modules/xmake.lua b/xmake/rules/c++/modules/xmake.lua
index 56ec15343..13f248880 100644
--- a/xmake/rules/c++/modules/xmake.lua
+++ b/xmake/rules/c++/modules/xmake.lua
@@ -82,7 +82,7 @@ rule("c++.build.modules.builder")
local package_modules_data = dependency_scanner.get_all_packages_modules(target, opt)
if package_modules_data then
-- append to sourcebatch
- for _, package_module_data in pairs(package_modules_data) do
+ for _, package_module_data in table.orderpairs(package_modules_data) do
table.insert(sourcebatch.sourcefiles, package_module_data.file)
target:fileconfig_add(package_module_data.file, {external = true, defines = package_module_data.metadata.defines})
end
@@ -129,7 +129,7 @@ rule("c++.build.modules.builder")
local package_modules_data = dependency_scanner.get_all_packages_modules(target, opt)
if package_modules_data then
-- append to sourcebatch
- for _, package_module_data in pairs(package_modules_data) do
+ for _, package_module_data in table.orderpairs(package_modules_data) do
table.insert(sourcebatch.sourcefiles, package_module_data.file)
target:fileconfig_add(package_module_data.file, {external = true, defines = package_module_data.metadata.defines})
end