From 963f544355305376c66e8fc9a98af19396c2a4a5 Mon Sep 17 00:00:00 2001 From: ruki Date: Fri, 16 Feb 2024 00:45:21 +0800 Subject: [PATCH] support native for selecting script #4657 --- tests/apis/xxx_script/xmake.lua | 4 ++++ xmake/core/base/private/select_script.lua | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/tests/apis/xxx_script/xmake.lua b/tests/apis/xxx_script/xmake.lua index 9bfb456b080..d0052368c58 100644 --- a/tests/apis/xxx_script/xmake.lua +++ b/tests/apis/xxx_script/xmake.lua @@ -8,6 +8,10 @@ target("test") print("before_build") end) + on_build("macosx|native", function (target) + print("build macosx:native") + end) + on_build(function (target) print("build") end) diff --git a/xmake/core/base/private/select_script.lua b/xmake/core/base/private/select_script.lua index cac17251fcd..b1039d06185 100644 --- a/xmake/core/base/private/select_script.lua +++ b/xmake/core/base/private/select_script.lua @@ -24,6 +24,17 @@ local utils = require("base/utils") -- match pattern, matched mode: plat|arch, excluded mode: !plat|arch function _match_pattern(pattern, plat, arch, excluded) + -- support native arch, e.g. macosx|native + -- @see https://github.com/xmake-io/xmake/issues/4657 + if pattern:find("native", 1, true) then + local splitinfo = pattern:split("|") + local pattern_plat = splitinfo[1] + local pattern_arch = splitinfo[2] + if pattern_arch and pattern_plat:trim("!") == os.subhost() then + pattern_arch = pattern_arch:gsub("native", os.subarch()) + pattern = pattern_plat .. "|" .. pattern_arch + end + end local is_excluded_pattern = pattern:find('!', 1, true) if excluded and is_excluded_pattern then return not ('!' .. plat .. '|' .. arch):match('^' .. pattern .. '$') and