diff options
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/common.lua | 110 | ||||
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/stl_headers.lua | 122 |
2 files changed, 143 insertions, 89 deletions
diff --git a/xmake/rules/c++/modules/modules_support/common.lua b/xmake/rules/c++/modules/modules_support/common.lua index 176d89c4b..b86ad8f1f 100644 --- a/xmake/rules/c++/modules/modules_support/common.lua +++ b/xmake/rules/c++/modules/modules_support/common.lua @@ -1,3 +1,24 @@ +--!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 Arthapz, ruki +-- @file common.lua +-- + +-- imports import("core.base.json") import("core.base.hashset") import("core.project.config") @@ -5,95 +26,6 @@ import("core.tool.compiler") import("core.project.project") import("lib.detect.find_file") -_g.stl_headers = { - "algorithm", - "forward_list", - "numbers", - "stop_token", - "any", - "fstream", - "numeric", - "streambuf", - "array", - "functional", - "optional", - "string", - "atomic", - "future", - "ostream", - "string_view", - "barrier", - "initializer_list", - "queue", - "bit", - "iomanip", - "random", - "syncstream", - "bitset", - "ios", - "ranges", - "system_error", - "charconv", - "iosfwd", - "ratio", - "thread", - "chrono", - "iostream", - "regex", - "tuple", - "codecvt", - "istream", - "scoped_allocator", - "typeindex", - "compare", - "iterator", - "semaphore", - "typeinfo", - "complex", - "latch", - "set", - "type_traits", - "concepts", - "limits", - "shared_mutex", - "unordered_map", - "condition_variable", - "list", - "source_location", - "unordered_set", - "coroutine", - "locale", - "span", - "utility", - "deque", - "map", - "spanstream", - "valarray", - "exception", - "memory", - "sstream", - "variant", - "execution", - "memory_resource", - "stack", - "vector", - "filesystem", - "mutex", - "version", - "format", - "new", - "type_traits", - "string_view", - "stdexcept"} - -function get_stl_headers() - return hashset.from(_g.stl_headers) -end - -function is_stl_header(header) - return get_stl_headers():has(header) -end - function get_stlcache_dir(target) local stlcachedir = path.join(target:autogendir(), "stlmodules", "cache") if target:has_tool("cxx", "clang", "clangxx") then diff --git a/xmake/rules/c++/modules/modules_support/stl_headers.lua b/xmake/rules/c++/modules/modules_support/stl_headers.lua new file mode 100644 index 000000000..aa5cb497c --- /dev/null +++ b/xmake/rules/c++/modules/modules_support/stl_headers.lua @@ -0,0 +1,122 @@ +--!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 Arthapz, ruki +-- @file stl_headers.lua +-- + +-- imports +import("core.base.hashset") + +-- the stl headers list +function _stl_headers() + return { + "algorithm", + "forward_list", + "numbers", + "stop_token", + "any", + "fstream", + "numeric", + "streambuf", + "array", + "functional", + "optional", + "string", + "atomic", + "future", + "ostream", + "string_view", + "barrier", + "initializer_list", + "queue", + "bit", + "iomanip", + "random", + "syncstream", + "bitset", + "ios", + "ranges", + "system_error", + "charconv", + "iosfwd", + "ratio", + "thread", + "chrono", + "iostream", + "regex", + "tuple", + "codecvt", + "istream", + "scoped_allocator", + "typeindex", + "compare", + "iterator", + "semaphore", + "typeinfo", + "complex", + "latch", + "set", + "type_traits", + "concepts", + "limits", + "shared_mutex", + "unordered_map", + "condition_variable", + "list", + "source_location", + "unordered_set", + "coroutine", + "locale", + "span", + "utility", + "deque", + "map", + "spanstream", + "valarray", + "exception", + "memory", + "sstream", + "variant", + "execution", + "memory_resource", + "stack", + "vector", + "filesystem", + "mutex", + "version", + "format", + "new", + "type_traits", + "string_view", + "stdexcept"} +end + +-- get all stl headers +function get_stl_headers() + local stl_headers = _g.stl_headers + if stl_headers == nil then + stl_headers = hashset.from(_stl_headers()) + _g.stl_headers = stl_headers or false + end + return stl_headers or nil +end + +-- is stl header? +function is_stl_header(header) + return get_stl_headers():has(header) +end + |
