diff options
| author | ruki <[email protected]> | 2024-02-02 22:52:44 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-02-02 22:52:44 +0800 |
| commit | a204e49f7d3d39e27e621b3c5eb241c0021497a5 (patch) | |
| tree | f22e5037f5bbfcba0cc7ae730c99577c9ef9b011 | |
| parent | b81eed59a532fdb69f8ef8533cf5b9ae22c381d8 (diff) | |
format some codes
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 |
