summaryrefslogtreecommitdiff
path: root/xmake/scripts
diff options
context:
space:
mode:
authorruki <[email protected]>2015-06-03 18:34:06 +0800
committerruki <[email protected]>2015-06-03 18:34:06 +0800
commita73db10e9b42c8b18bf5b95d78855481beb67f20 (patch)
treeb2e13353bc39cfd3f3b0cfb115b07bc15e505a00 /xmake/scripts
parent795001d9b03960d9a8fc290e6f6f9710f49c86bc (diff)
trim spaces for the makefile command
Diffstat (limited to 'xmake/scripts')
-rw-r--r--xmake/scripts/base/string.lua41
-rw-r--r--xmake/scripts/compiler/compiler.lua26
-rw-r--r--xmake/scripts/linker/linker.lua10
3 files changed, 68 insertions, 9 deletions
diff --git a/xmake/scripts/base/string.lua b/xmake/scripts/base/string.lua
index 793abad00..3abe68c05 100644
--- a/xmake/scripts/base/string.lua
+++ b/xmake/scripts/base/string.lua
@@ -49,5 +49,46 @@ function string.split(self, pattern)
return list
end
+-- trim the spaces
+function string.trim(self)
+ return (self:gsub("^%s*(.-)%s*$", "%1"))
+end
+
+-- trim the left spaces
+function string.ltrim(self)
+ return (self:gsub("^%s*", ""))
+end
+
+-- trim the right spaces
+function string.rtrim(self)
+ local n = #self
+ while n > 0 and s:find("^%s", n) do n = n - 1 end
+ return self:sub(1, n)
+end
+
+-- append a substring with a given separator
+function string.append(self, substr, separator)
+
+ -- check
+ assert(self)
+
+ -- not substr? return self
+ if not substr then
+ return self
+ end
+
+ -- append it
+ local s = self
+ if #s == 0 then
+ s = substr
+ else
+ s = string.format("%s%s%s", s, separator or "", substr)
+ end
+
+ -- ok
+ return s
+end
+
+
-- return module: string
return string
diff --git a/xmake/scripts/compiler/compiler.lua b/xmake/scripts/compiler/compiler.lua
index 6bd6561af..a92fc37e0 100644
--- a/xmake/scripts/compiler/compiler.lua
+++ b/xmake/scripts/compiler/compiler.lua
@@ -83,7 +83,7 @@ function compiler._make(self, target, filetype, srcfile, objfile)
-- get the common flags from the current compiler
local flags_common = ""
for _, flag_name in ipairs(flag_names) do
- flags_common = string.format("%s %s", flags_common, configs[flag_name] or "")
+ flags_common = flags_common:append(configs[flag_name], " ")
end
-- get the target flags from the current project
@@ -93,15 +93,20 @@ function compiler._make(self, target, filetype, srcfile, objfile)
-- get flags
local flags = table.concat(compiler._mapflags(self, utils.wrap(target[flag_name])), " ")
+ -- trim the spaces
+ flags = flags:trim()
+
-- append flags
- flags_target = string.format("%s %s", flags_target, flags or "")
+ if flags and #flags ~= 0 then
+ flags_target = flags_target:append(flags, " ")
+ end
end
-- get the includedirs flags from the current project
if self._make_includedir then
local includedirs = utils.wrap(target.includedirs)
for _, includedir in ipairs(includedirs) do
- flags_target = string.format("%s %s", flags_target, self._make_includedir(configs, includedir))
+ flags_target = flags_target:append(self._make_includedir(configs, includedir), " ")
end
end
@@ -109,7 +114,7 @@ function compiler._make(self, target, filetype, srcfile, objfile)
if self._make_define then
local defines = utils.wrap(target.defines)
for _, define in ipairs(defines) do
- flags_target = string.format("%s %s", flags_target, self._make_define(configs, define))
+ flags_target = flags_target:append(self._make_define(configs, define), " ")
end
end
@@ -120,12 +125,21 @@ function compiler._make(self, target, filetype, srcfile, objfile)
-- get flags
local flags = table.concat(compiler._mapflags(self, utils.wrap(config.get(flag_name))), " ")
+ -- trim the spaces
+ flags = flags:trim()
+
-- append flags
- flags_config = string.format("%s %s", flags_config, flags or "")
+ if flags and #flags ~= 0 then
+ flags_config = flags_config:append(flags, " ")
+ end
end
-- make the flags string
- local flags = string.format("%s %s %s", flags_common, flags_target, flags_config)
+ local flags = ""
+ flags = flags:append(flags_common, " ")
+ flags = flags:append(flags_target, " ")
+ flags = flags:append(flags_config, " ")
+ flags = flags:trim()
-- get it
return self._make(configs, srcfile, objfile, flags)
diff --git a/xmake/scripts/linker/linker.lua b/xmake/scripts/linker/linker.lua
index d5338271a..c8f651971 100644
--- a/xmake/scripts/linker/linker.lua
+++ b/xmake/scripts/linker/linker.lua
@@ -92,7 +92,7 @@ function linker._make(self, target, objfiles, targetfile)
if self._make_linkdir then
local linkdirs = utils.wrap(target.linkdirs)
for _, linkdir in ipairs(linkdirs) do
- flags_target = string.format("%s %s", flags_target, self._make_linkdir(configs, linkdir))
+ flags_target = flags_target:append(self._make_linkdir(configs, linkdir), " ")
end
end
@@ -100,7 +100,7 @@ function linker._make(self, target, objfiles, targetfile)
if self._make_link then
local links = utils.wrap(target.links)
for _, link in ipairs(links) do
- flags_target = string.format("%s %s", flags_target, self._make_link(configs, link))
+ flags_target = flags_target:append(self._make_link(configs, link), " ")
end
end
@@ -109,7 +109,11 @@ function linker._make(self, target, objfiles, targetfile)
assert(flags_config)
-- make the flags string
- local flags = string.format("%s %s %s", flags_common, flags_target, flags_config)
+ local flags = ""
+ flags = flags:append(flags_common, " ")
+ flags = flags:append(flags_target, " ")
+ flags = flags:append(flags_config, " ")
+ flags = flags:trim()
-- make it
return self._make(configs, table.concat(objfiles, " "), targetfile, flags)