diff options
| -rw-r--r-- | tests/console/plat/demo_cpp.xswf | 8 | ||||
| -rw-r--r-- | tests/console/xmake.xproj | 17 | ||||
| -rw-r--r-- | xmake/scripts/base/project.lua | 22 |
3 files changed, 39 insertions, 8 deletions
diff --git a/tests/console/plat/demo_cpp.xswf b/tests/console/plat/demo_cpp.xswf new file mode 100644 index 000000000..747cd54e6 --- /dev/null +++ b/tests/console/plat/demo_cpp.xswf @@ -0,0 +1,8 @@ +switches: +{ + defines: DDD_ENABLE + defines: WWW_ENABLE +# defines: ZZZ_ENABLE + defines: TTT_ENABLE, YYY_ENABLE + defines: XXX_ENABLE +} diff --git a/tests/console/xmake.xproj b/tests/console/xmake.xproj index 43eb93e4d..0c0db2788 100644 --- a/tests/console/xmake.xproj +++ b/tests/console/xmake.xproj @@ -82,15 +82,16 @@ project: console files: src/demo/*.cpp linkdirs: $(buildir) includedirs: $(buildir) - switches: aaa - switches: ccc - switches: fff, kkk + switches: AAA_ENABLE + switches: CCC_ENABLE + switches: FFF_ENABLE, KKK_ENABLE + switchfiles: plat/demo_cpp.xswf cxxflags: -DHELLO1 - , [_if(aaa, "-DAAA")] - , [_if(bbb, "-DBBB")] - , [_if(ccc, "-DCCC")] - , [_ifelse(ddd, "-DDDD", "-DEEE")] - , [_ifelse(kkk, "-DKKK", "-DFFF")] + , [_if (AAA_ENABLE, "-DAAA")] + , [_if (BBB_ENABLE, "-DBBB")] + , [_if (CCC_ENABLE, "-DCCC")] + , [_ifelse (DDD_ENABLE, "-DDDD", "-DEEE")] + , [_ifelse (KKK_ENABLE, "-DKKK", "-DFFF")] } platforms: macosx, ios diff --git a/xmake/scripts/base/project.lua b/xmake/scripts/base/project.lua index 8b8873983..a0e963909 100644 --- a/xmake/scripts/base/project.lua +++ b/xmake/scripts/base/project.lua @@ -175,6 +175,27 @@ function project._init_switches(target) end end + -- load switches from the xxxx.xswf + if target.switchfiles then + for _, switchfile in ipairs(target.switchfiles) do + if not path.is_absolute(switchfile) then + switchfile = path.absolute(switchfile, xmake._PROJECT_DIR) + end + local newenv, errors = preprocessor.loadfile(switchfile, "switches", {"defines"}) + if newenv and newenv._CONFIGS then + if newenv._CONFIGS.defines then + for _, switch in ipairs(newenv._CONFIGS.defines) do + target._SWITCHES[switch] = true + end + end + else + -- error + utils.error(errors) + assert(false) + end + end + end + -- attempt to get it from the switches setmetatable(target, { @@ -293,6 +314,7 @@ function project.loadxproj(file) , "shflags" , "defines" , "switches" + , "switchfiles" , "strip" , "symbols" , "warnings" |
