summaryrefslogtreecommitdiff
path: root/xmake/scripts/base/project.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2015-06-15 08:48:55 +0800
committerruki <[email protected]>2015-06-15 08:48:55 +0800
commit31bba0ba7852b0699e41642815455afb62ddc8b7 (patch)
tree214944d863b5dfd9b55e7eaba1a755d82c27f5a5 /xmake/scripts/base/project.lua
parent7693b33a4e39c66fa52af65c57c6f0ddaaf56bca (diff)
support multi-languages and fix macro defines
Diffstat (limited to 'xmake/scripts/base/project.lua')
-rw-r--r--xmake/scripts/base/project.lua24
1 files changed, 17 insertions, 7 deletions
diff --git a/xmake/scripts/base/project.lua b/xmake/scripts/base/project.lua
index ba4b52cb4..c17060d9f 100644
--- a/xmake/scripts/base/project.lua
+++ b/xmake/scripts/base/project.lua
@@ -231,7 +231,7 @@ function project._filter(values)
local newvals = {}
for _, v in ipairs(utils.wrap(values)) do
if type(v) == "string" then
- v = v:gsub("%$%((.*)%)", function (w)
+ v = v:gsub("%$%((.-)%)", function (w)
local r = config.get(w)
if r and type(r) == "string" then return r
elseif w == "projectdir" then return xmake._PROJECT_DIR
@@ -265,7 +265,7 @@ function project._makeconf_for_target(target_name, target)
end
-- the prefix
- local prefix = target_name:upper() .. "_CONFIG"
+ local prefix = (target.configprefix or target_name:upper()) .. "_CONFIG"
-- open the file
local file = project._CONFILES[configfile] or io.openmk(configfile)
@@ -296,7 +296,9 @@ function project._makeconf_for_target(target_name, target)
if target.undefines then
file:write("// undefines\n")
for _, undefine in ipairs(utils.wrap(target.undefines)) do
- file:write(string.format("#undef %s\n", undefine))
+ file:write(string.format("#ifdef %s\n", undefine))
+ file:write(string.format("# undef %s\n", undefine))
+ file:write("#endif\n")
end
file:write("\n")
end
@@ -305,7 +307,9 @@ function project._makeconf_for_target(target_name, target)
if target.defines then
file:write("// defines\n")
for _, define in ipairs(utils.wrap(target.defines)) do
- file:write(string.format("#define %s\n", define:gsub("=", " ")))
+ file:write(string.format("#ifndef %s\n", define:gsub("=.*", "")))
+ file:write(string.format("# define %s\n", define:gsub("=", " ")))
+ file:write("#endif\n")
end
file:write("\n")
end
@@ -333,7 +337,9 @@ function project._makeconf_for_target(target_name, target)
if #defines ~= 0 then
file:write(string.format("// defines for %s\n", name))
for _, define in ipairs(defines) do
- file:write(string.format("#define %s\n", define:gsub("=", " ")))
+ file:write(string.format("#ifndef %s\n", define:gsub("=.*", "")))
+ file:write(string.format("# define %s\n", define:gsub("=", " ")))
+ file:write("#endif\n")
end
file:write("\n")
end
@@ -342,7 +348,9 @@ function project._makeconf_for_target(target_name, target)
if #undefines ~= 0 then
file:write(string.format("// undefines for %s\n", name))
for _, undefine in ipairs(undefines) do
- file:write(string.format("#undef %s\n", undefine))
+ file:write(string.format("#ifdef %s\n", undefine))
+ file:write(string.format("# undef %s\n", undefine))
+ file:write("#endif\n")
end
file:write("\n")
end
@@ -721,13 +729,14 @@ function project._load_targets(file)
, "targetdir"
, "objectdir"
, "configfile"
+ , "configprefix"
, "version"
, "strip"
, "options"
, "symbols"
, "warnings"
, "optimize"
- , "language"}
+ , "languages"}
for _, interface in ipairs(interfaces) do
newenv["set_" .. interface] = function (...) return project._api_set_values(newenv._TARGET or newenv._CONFIGS._SET, interface, ...) end
@@ -751,6 +760,7 @@ function project._load_targets(file)
, "options"
, "defines"
, "undefines"
+ , "languages"
, "vectorexts"}
for _, interface in ipairs(interfaces) do
newenv["add_" .. interface] = function (...) return project._api_add_values(newenv._TARGET or newenv._CONFIGS._ADD, interface, ...) end