diff options
| author | Arthur LAURENT <[email protected]> | 2025-04-22 18:40:37 +0200 |
|---|---|---|
| committer | Arthur LAURENT <[email protected]> | 2025-04-22 18:40:37 +0200 |
| commit | f49af9018f3efbcdf3d49bb30c6663b300f1a133 (patch) | |
| tree | c047b0622ec6aa2b8f12a6c4dd19f2b1cbf1f768 /xmake/rules/c++/modules/config.lua | |
| parent | 40bfb6e1980d81454c9592da7eaaf0aded11f1ec (diff) | |
(C++ modules) cleanup module rules
Diffstat (limited to 'xmake/rules/c++/modules/config.lua')
| -rw-r--r-- | xmake/rules/c++/modules/config.lua | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/xmake/rules/c++/modules/config.lua b/xmake/rules/c++/modules/config.lua new file mode 100644 index 000000000..a39e4c4e0 --- /dev/null +++ b/xmake/rules/c++/modules/config.lua @@ -0,0 +1,58 @@ +--!A cross-platform build utility based on Lua +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-- Copyright (C) 2015-present, TBOOX Open Source Group. +-- +-- @author ruki, Arthapz +-- @file config.lua +-- + +import("support") + +function main(target) + + -- we disable to build across targets in parallel, because the source files may depend on other target modules + -- @see https://github.com/xmake-io/xmake/issues/1858 + if support.contains_modules(target) then + -- @note this will cause cross-parallel builds to be disabled for all sub-dependent targets, + -- even if some sub-targets do not contain C++ modules. + -- + -- maybe we will have a more fine-grained configuration strategy to disable it in the future. + target:set("policy", "build.fence", true) + + -- disable ccache for this target + -- + -- Caching can affect incremental compilation, for example + -- by interfering with the results of depfile generation for msvc. + -- + -- @see https://github.com/xmake-io/xmake/issues/3000 + target:set("policy", "build.ccache", false) + + -- load compiler support + support.load(target) + + -- mark this target with modules + target:data_set("cxx.has_modules", true) + + -- moduleonly modules are implicitly public + if target:is_moduleonly() then + local sourcebatch = target:sourcebatches()["c++.build.modules.builder"] + if sourcebatch then + for _, sourcefile in ipairs(sourcebatch.sourcefiles) do + target:fileconfig_add(sourcefile, {public = true}) + end + end + end + end +end |
