summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2015-06-08 12:16:34 +0800
committerruki <[email protected]>2015-06-08 12:16:34 +0800
commit4d2fbb049f34e5899d962a148bf5e560fe9d978c (patch)
tree84f3dc90a474c7bf19784198628a72d0f34d502f
parentc0a3b7585c3dc8f0b0c9c776ae2785359ae1b651 (diff)
load switch files
-rw-r--r--tests/console/plat/demo_cpp.xswf8
-rw-r--r--tests/console/xmake.xproj17
-rw-r--r--xmake/scripts/base/project.lua22
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"