diff options
| author | ruki <[email protected]> | 2022-08-06 00:59:10 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-08-06 00:59:10 +0800 |
| commit | 53c31dfffd73cd635a6512d49b902e8c45dca102 (patch) | |
| tree | 998921520a998224de105e5dcfb637a6ba85a38c /xmake/rules/c++/modules/modules_support | |
| parent | 8ac03c2d83d6cf5b9509ab2d4e756998711886b8 (diff) | |
add batchjobs stub
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/clang.lua | 12 | ||||
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/common.lua | 47 | ||||
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/gcc.lua | 12 | ||||
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/msvc.lua | 12 |
4 files changed, 58 insertions, 25 deletions
diff --git a/xmake/rules/c++/modules/modules_support/clang.lua b/xmake/rules/c++/modules/modules_support/clang.lua index 04f92bdeb..89dbf4467 100644 --- a/xmake/rules/c++/modules/modules_support/clang.lua +++ b/xmake/rules/c++/modules/modules_support/clang.lua @@ -129,8 +129,8 @@ function generate_dependencies(target, sourcebatch, opt) end end --- generate target stl header units -function generate_stl_headerunits(target, batchcmds, headerunits, opt) +-- generate target stl header units for batchcmds +function generate_stl_headerunits_for_batchcmds(target, batchcmds, headerunits, opt) local compinst = target:compiler("cxx") -- get cachedirs @@ -159,8 +159,8 @@ function generate_stl_headerunits(target, batchcmds, headerunits, opt) return flags end --- generate target user header units -function generate_user_headerunits(target, batchcmds, headerunits, opt) +-- generate target user header units for batchcmds +function generate_user_headerunits_for_batchcmds(target, batchcmds, headerunits, opt) local compinst = target:compiler("cxx") assert(has_headerunitsupport(target), "compiler(clang): does not support c++ header units!") @@ -212,8 +212,8 @@ function generate_user_headerunits(target, batchcmds, headerunits, opt) return flags end --- build module files -function build_modules(target, batchcmds, objectfiles, modules, opt) +-- build module files for batchcmds +function build_modules_for_batchcmds(target, batchcmds, objectfiles, modules, opt) local compinst = target:compiler("cxx") -- get cachedirs diff --git a/xmake/rules/c++/modules/modules_support/common.lua b/xmake/rules/c++/modules/modules_support/common.lua index b5a49e680..5d5c625ec 100644 --- a/xmake/rules/c++/modules/modules_support/common.lua +++ b/xmake/rules/c++/modules/modules_support/common.lua @@ -52,10 +52,9 @@ function modules_cachedir(target) end -- get headerunits info -function get_headerunits(target, sourcebatch) +function get_headerunits(target, sourcebatch, modules) local headerunits local stl_headerunits - local modules = target:data("cxx.modules") for _, objectfile in ipairs(sourcebatch.objectfiles) do local m = modules[objectfile] if m then @@ -281,6 +280,7 @@ function _topological_sort_get_first_unmarked_node(nodes) end end +-- topological sort function sort_modules_by_dependencies(objectfiles, modules) local output = {} local nodes = {} @@ -412,22 +412,55 @@ function generate_dependencies(target, sourcebatch, opt) return parse_dependency_data(target, moduleinfos) end --- generate headerunits -function generate_headerunits(target, batchcmds, sourcebatch, opt) +-- generate headerunits for batchjobs, TODO +function generate_headerunits_for_batchjobs(target, batchjobs, sourcebatch, modules, opt) -- get headerunits info - local headerunits, stl_headerunits = get_headerunits(target, sourcebatch) + local headerunits, stl_headerunits = get_headerunits(target, sourcebatch, modules) -- generate headerunits + -- build stl header units as other headerunits may need them local headerunits_flags + if stl_headerunits then + headerunits_flags = headerunits_flags or {} +-- table.join2(headerunits_flags, modules_support(target).generate_stl_headerunits_for_batchjobs(target, batchjobs, stl_headerunits, opt)) + end + if headerunits then + headerunits_flags = headerunits_flags or {} +-- table.join2(headerunits_flags, modules_support(target).generate_user_headerunits_for_batchjobs(target, batchjobs, headerunits, opt)) + end + return headerunits_flags +end + +-- generate headerunits for batchcmds +function generate_headerunits_for_batchcmds(target, batchcmds, sourcebatch, modules, opt) + + -- get headerunits info + local headerunits, stl_headerunits = get_headerunits(target, sourcebatch, modules) + + -- generate headerunits -- build stl header units as other headerunits may need them + local headerunits_flags if stl_headerunits then headerunits_flags = headerunits_flags or {} - table.join2(headerunits_flags, modules_support(target).generate_stl_headerunits(target, batchcmds, stl_headerunits, opt)) + table.join2(headerunits_flags, modules_support(target).generate_stl_headerunits_for_batchcmds(target, batchcmds, stl_headerunits, opt)) end if headerunits then headerunits_flags = headerunits_flags or {} - table.join2(headerunits_flags, modules_support(target).generate_user_headerunits(target, batchcmds, headerunits, opt)) + table.join2(headerunits_flags, modules_support(target).generate_user_headerunits_for_batchcmds(target, batchcmds, headerunits, opt)) end return headerunits_flags end + +-- build modules for batchjobs, TODO +function build_modules_for_batchjobs(target, batchjobs, sourcebatch, modules, opt) + local objectfiles = sort_modules_by_dependencies(sourcebatch.objectfiles, modules) +-- modules_support(target).build_modules_for_batchjobs(target, batchjobs, objectfiles, modules, opt) +end + +-- build modules for batchcmds +function build_modules_for_batchcmds(target, batchcmds, sourcebatch, modules, opt) + local objectfiles = sort_modules_by_dependencies(sourcebatch.objectfiles, modules) + modules_support(target).build_modules_for_batchcmds(target, batchcmds, objectfiles, modules, opt) +end + diff --git a/xmake/rules/c++/modules/modules_support/gcc.lua b/xmake/rules/c++/modules/modules_support/gcc.lua index 841313a5b..08afba431 100644 --- a/xmake/rules/c++/modules/modules_support/gcc.lua +++ b/xmake/rules/c++/modules/modules_support/gcc.lua @@ -151,8 +151,8 @@ function generate_dependencies(target, sourcebatch, opt) end end --- generate target stl header units -function generate_stl_headerunits(target, batchcmds, headerunits, opt) +-- generate target stl header units for batchcmds +function generate_stl_headerunits_for_batchcmds(target, batchcmds, headerunits, opt) local compinst = target:compiler("cxx") local mapper_file = _get_module_mapper() @@ -175,8 +175,8 @@ function generate_stl_headerunits(target, batchcmds, headerunits, opt) batchcmds:set_depmtime(depmtime) end --- generate target user header units -function generate_user_headerunits(target, batchcmds, headerunits, opt) +-- generate target user header units for batchcmds +function generate_user_headerunits_for_batchcmds(target, batchcmds, headerunits, opt) local compinst = target:compiler("cxx") local mapper_file = _get_module_mapper() @@ -223,8 +223,8 @@ function generate_user_headerunits(target, batchcmds, headerunits, opt) batchcmds:set_depmtime(depmtime) end --- build module files -function build_modules(target, batchcmds, objectfiles, modules, opt) +-- build module files for batchcmds +function build_modules_for_batchcmds(target, batchcmds, objectfiles, modules, opt) local compinst = target:compiler("cxx") local mapper_file = _get_module_mapper() local common_args = {"-x", "c++"} diff --git a/xmake/rules/c++/modules/modules_support/msvc.lua b/xmake/rules/c++/modules/modules_support/msvc.lua index 5e0fba4a9..109c68751 100644 --- a/xmake/rules/c++/modules/modules_support/msvc.lua +++ b/xmake/rules/c++/modules/modules_support/msvc.lua @@ -111,8 +111,8 @@ function generate_dependencies(target, sourcebatch, opt) end end --- generate target stl header units -function generate_stl_headerunits(target, batchcmds, headerunits, opt) +-- generate target stl header units for batchcmds +function generate_stl_headerunits_for_batchcmds(target, batchcmds, headerunits, opt) local compinst = target:compiler("cxx") local toolchain = target:toolchain("msvc") local vcvars = toolchain:config("vcvars") @@ -149,8 +149,8 @@ function generate_stl_headerunits(target, batchcmds, headerunits, opt) return flags end --- generate target user header units -function generate_user_headerunits(target, batchcmds, headerunits, opt) +-- generate target user header units for batchcmds +function generate_user_headerunits_for_batchcmds(target, batchcmds, headerunits, opt) local compinst = target:compiler("cxx") local toolchain = target:toolchain("msvc") local vcvars = toolchain:config("vcvars") @@ -203,8 +203,8 @@ function generate_user_headerunits(target, batchcmds, headerunits, opt) return flags end --- build module files -function build_modules(target, batchcmds, objectfiles, modules, opt) +-- build module files for batchcmds +function build_modules_for_batchcmds(target, batchcmds, objectfiles, modules, opt) local cachedir = common.modules_cachedir(target) local compinst = target:compiler("cxx") |
