diff options
| author | ruki <[email protected]> | 2015-06-15 08:48:55 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-06-15 08:48:55 +0800 |
| commit | 31bba0ba7852b0699e41642815455afb62ddc8b7 (patch) | |
| tree | 214944d863b5dfd9b55e7eaba1a755d82c27f5a5 /xmake/scripts/base/project.lua | |
| parent | 7693b33a4e39c66fa52af65c57c6f0ddaaf56bca (diff) | |
support multi-languages and fix macro defines
Diffstat (limited to 'xmake/scripts/base/project.lua')
| -rw-r--r-- | xmake/scripts/base/project.lua | 24 |
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 |
