--!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, Xmake Open Source Community. -- -- @author wuzhenqing -- @file bisheng.lua -- inherit("clang") function init(self) _super.init(self) self:add("shared.ascflags", "-fPIC") self:add("shared.aicpuflags", "-fPIC") self:add("ascflags", "-Qunused-arguments") self:add("aicpuflags", "-Qunused-arguments") self:set("ascshflags", "-shared") end -- make the npu-arch flag function nf_ascnpuarch(self, arch) if self:kind() == "aicpu" then return end return "--npu-arch=" .. arch end -- make the language flag function nf_language(self, stdname) if _g.cxxmaps == nil then _g.cxxmaps = { cxx03 = "-std=c++03" , cxx11 = "-std=c++11" , cxx14 = "-std=c++14" , cxx17 = "-std=c++17" , cxx20 = "-std=c++20" , cxxlatest = {"-std=c++20", "-std=c++17", "-std=c++14", "-std=c++11", "-std=c++03"} } local cxxmaps2 = {} for k, v in pairs(_g.cxxmaps) do cxxmaps2[k:gsub("xx", "++")] = v end table.join2(_g.cxxmaps, cxxmaps2) end local result = _g.cxxmaps[stdname] if type(result) == "table" then local flagkind = self:kind() == "aicpu" and "aicpuflags" or "ascflags" for _, flag in ipairs(result) do if self:has_flags(flag, flagkind) then result = flag _g.cxxmaps[stdname] = result break end end end return result end -- add source kind override flags (e.g. for .cce files compiled as asc) function add_sourceflags(self, sourcefile, fileconfig, target, targetkind) local sourcekind = fileconfig.sourcekind if sourcekind then local maps = {asc = "-x asc", aicpu = "-x aicpu"} return maps[sourcekind] end end