diff options
| author | ruki <[email protected]> | 2015-06-08 12:16:34 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-06-08 12:16:34 +0800 |
| commit | 4d2fbb049f34e5899d962a148bf5e560fe9d978c (patch) | |
| tree | 84f3dc90a474c7bf19784198628a72d0f34d502f | |
| parent | c0a3b7585c3dc8f0b0c9c776ae2785359ae1b651 (diff) | |
load switch files
| -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" |
