summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-02-21 23:32:31 +0800
committerruki <[email protected]>2017-02-21 23:32:31 +0800
commitc3d883feee28fd29cfdde759f7a5252049bc6d1e (patch)
treec1b4e3a1768533c346d4b4a6b9ab08fa5324b5ec
parentfb6033c52082b69041783dc23a8d5b07f9bf007a (diff)
modify flags
-rw-r--r--xmake/core/tool/builder.lua4
-rw-r--r--xmake/core/tool/linker.lua9
-rw-r--r--xmake/languages/dlang/api.lua6
-rwxr-xr-xxmake/languages/dlang/xmake.lua16
-rw-r--r--xmake/languages/golang/api.lua4
-rwxr-xr-xxmake/languages/golang/xmake.lua10
-rw-r--r--xmake/platforms/macosx/load.lua39
-rwxr-xr-xxmake/tools/dmd.lua10
-rwxr-xr-xxmake/tools/go.lua2
-rwxr-xr-xxmake/tools/ldc.lua10
10 files changed, 48 insertions, 62 deletions
diff --git a/xmake/core/tool/builder.lua b/xmake/core/tool/builder.lua
index f1335df68..9fdb76ce1 100644
--- a/xmake/core/tool/builder.lua
+++ b/xmake/core/tool/builder.lua
@@ -156,8 +156,10 @@ end
function builder:_addflags_from_platform(flags)
-- add flags
+ local toolkind = self:get("kind")
for _, flagkind in ipairs(self:_flagkinds()) do
- table.join2(flags, platform.get(flagkind))
+ -- attempt to add special lanugage flags first, .e.g go-ldflags, dc-arflags
+ table.join2(flags, platform.get(toolkind .. 'flags') or platform.get(flagkind))
end
end
diff --git a/xmake/core/tool/linker.lua b/xmake/core/tool/linker.lua
index d438eb54a..7b9afdbbe 100644
--- a/xmake/core/tool/linker.lua
+++ b/xmake/core/tool/linker.lua
@@ -45,13 +45,15 @@ function linker:_addflags_from_compiler(flags, sourcekinds)
-- make flags
local flags_of_compiler = {}
+ local toolkind = self:get("kind")
for _, sourcekind in ipairs(table.wrap(sourcekinds)) do
-- load compiler
local instance, errors = compiler.load(sourcekind)
if instance then
for _, flagkind in ipairs(self:_flagkinds()) do
- table.join2(flags_of_compiler, instance:get(flagkind))
+ -- attempt to add special lanugage flags first, .e.g go-ldflags, dc-arflags
+ table.join2(flags_of_compiler, instance:get(toolkind .. 'flags') or instance:get(flagkind))
end
end
end
@@ -64,8 +66,11 @@ end
function linker:_addflags_from_linker(flags)
-- add flags
+ local toolkind = self:get("kind")
for _, flagkind in ipairs(self:_flagkinds()) do
- table.join2(flags, self:get(flagkind))
+
+ -- attempt to add special lanugage flags first, .e.g go-ldflags, dc-arflags
+ table.join2(flags, self:get(toolkind .. 'flags') or self:get(flagkind))
end
end
diff --git a/xmake/languages/dlang/api.lua b/xmake/languages/dlang/api.lua
index 60441d086..27d13640c 100644
--- a/xmake/languages/dlang/api.lua
+++ b/xmake/languages/dlang/api.lua
@@ -30,13 +30,13 @@ function apis()
{
-- target.add_xxx
"target.add_links"
- , "target.add_goflags"
+ , "target.add_dcflags"
, "target.add_ldflags"
, "target.add_arflags"
, "target.add_shflags"
-- option.add_xxx
, "option.add_links"
- , "option.add_goflags"
+ , "option.add_dcflags"
, "option.add_ldflags"
, "option.add_arflags"
, "option.add_shflags"
@@ -45,8 +45,10 @@ function apis()
{
-- target.add_xxx
"target.add_linkdirs"
+ , "target.add_includedirs"
-- option.add_xxx
, "option.add_linkdirs"
+ , "option.add_includedirs"
}
-- ok
diff --git a/xmake/languages/dlang/xmake.lua b/xmake/languages/dlang/xmake.lua
index e9f86c0d0..938ba5c94 100755
--- a/xmake/languages/dlang/xmake.lua
+++ b/xmake/languages/dlang/xmake.lua
@@ -29,13 +29,13 @@ language("dlang")
set_sourcekinds {dc = ".d"}
-- set source file flags
- set_sourceflags {dc = "dflags"}
+ set_sourceflags {dc = "dcflags"}
-- set target kinds
set_targetkinds {binary = "dc-ld", static = "dc-ar", shared = "dc-sh"}
-- set target flags
- set_targetflags {binary = "dc-ldflags", static = "dc-arflags", shared = "dc-shflags"}
+ set_targetflags {binary = "ldflags", static = "arflags", shared = "shflags"}
-- on load
on_load("load")
@@ -99,22 +99,10 @@ language("dlang")
{
{ }
, {nil, "dc", "kv", nil, "The Dlang Compiler" }
- , {nil, "dflags", "kv", nil, "The Dlang Compiler Flags" }
-
- , { }
, {nil, "dc-ld", "kv", nil, "The Dlang Linker" }
- , {nil, "dc-ldflags", "kv", nil, "The Dlang Linker Flags" }
-
- , { }
, {nil, "dc-ar", "kv", nil, "The Dlang Static Library Archiver" }
- , {nil, "dc-arflags", "kv", nil, "The Dlang Static Library Archvier Flags" }
-
-
- , { }
, {nil, "dc-sh", "kv", nil, "The Dlang Shared Library Linker" }
- , {nil, "dc-shflags", "kv", nil, "The Dlang Shared Library Linker Flags" }
- -- TODO
, { }
, {nil, "links", "kv", nil, "The Link Libraries" }
, {nil, "linkdirs", "kv", nil, "The Link Search Directories" }
diff --git a/xmake/languages/golang/api.lua b/xmake/languages/golang/api.lua
index 60441d086..0178f53c6 100644
--- a/xmake/languages/golang/api.lua
+++ b/xmake/languages/golang/api.lua
@@ -33,20 +33,20 @@ function apis()
, "target.add_goflags"
, "target.add_ldflags"
, "target.add_arflags"
- , "target.add_shflags"
-- option.add_xxx
, "option.add_links"
, "option.add_goflags"
, "option.add_ldflags"
, "option.add_arflags"
- , "option.add_shflags"
}
_g.pathes =
{
-- target.add_xxx
"target.add_linkdirs"
+ , "target.add_includedirs"
-- option.add_xxx
, "option.add_linkdirs"
+ , "option.add_includedirs"
}
-- ok
diff --git a/xmake/languages/golang/xmake.lua b/xmake/languages/golang/xmake.lua
index ab2e7566c..2a52e353e 100755
--- a/xmake/languages/golang/xmake.lua
+++ b/xmake/languages/golang/xmake.lua
@@ -35,7 +35,7 @@ language("golang")
set_targetkinds {binary = "go-ld", static = "go-ar"}
-- set target flags
- set_targetflags {binary = "go-ldflags", static = "go-arflags"}
+ set_targetflags {binary = "ldflags", static = "arflags"}
-- on load
on_load("load")
@@ -99,17 +99,9 @@ language("golang")
{
{ }
, {nil, "go", "kv", nil, "The Golang Compiler" }
- , {nil, "goflags", "kv", nil, "The Golang Compiler Flags" }
-
- , { }
, {nil, "go-ld", "kv", nil, "The Golang Linker" }
- , {nil, "go-ldflags", "kv", nil, "The Golang Linker Flags" }
-
- , { }
, {nil, "go-ar", "kv", nil, "The Golang Static Library Linker" }
- , {nil, "go-arflags", "kv", nil, "The Golang Static Library Linker Flags" }
- -- TODO
, { }
, {nil, "links", "kv", nil, "The Link Libraries" }
, {nil, "linkdirs", "kv", nil, "The Link Search Directories" }
diff --git a/xmake/platforms/macosx/load.lua b/xmake/platforms/macosx/load.lua
index 9f0fb3465..5496ed844 100644
--- a/xmake/platforms/macosx/load.lua
+++ b/xmake/platforms/macosx/load.lua
@@ -38,37 +38,34 @@ function main()
-- init flags for architecture
local arch = config.get("arch")
local target_minver = config.get("target_minver")
- _g.cxflags = { "-arch " .. arch, "-fpascal-strings", "-fmessage-length=0" }
- _g.mxflags = { "-arch " .. arch, "-fpascal-strings", "-fmessage-length=0" }
- _g.asflags = { "-arch " .. arch }
- _g.ldflags = { "-arch " .. arch, "-mmacosx-version-min=" .. target_minver, "-stdlib=libc++", "-lz" }
- _g.shflags = { "-arch " .. arch, "-mmacosx-version-min=" .. target_minver, "-stdlib=libc++", "-lz" }
- _g.scflags = { format("-target %s-apple-macosx%s", arch, target_minver) }
-- init flags for the xcode sdk directory
local xcode_dir = config.get("xcode_dir")
local xcode_sdkver = config.get("xcode_sdkver")
local xcode_sdkdir = xcode_dir .. "/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX" .. xcode_sdkver .. ".sdk"
- insert(_g.cxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.asflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.mxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.ldflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.shflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.scflags, "-sdk " .. xcode_sdkdir)
- -- init includedirs
- --
- -- @note
- -- cannot use _g.includedirs because the swift/objc compiler will compile code failed
- insert(_g.cxflags, "-I/usr/include")
- insert(_g.cxflags, "-I/usr/local/include")
+ -- init flags for c/c++
+ _g.cxflags = { "-arch " .. arch, "-fpascal-strings", "-fmessage-length=0", "-isysroot " .. xcode_sdkdir, "-I/usr/local/include", "-I/usr/include" }
+ _g.ldflags = { "-arch " .. arch, "-mmacosx-version-min=" .. target_minver, "-isysroot " .. xcode_sdkdir, "-L/usr/local/lib", "-L/usr/lib", "-stdlib=libc++", "-lz" }
+ _g.shflags = { "-arch " .. arch, "-mmacosx-version-min=" .. target_minver, "-isysroot " .. xcode_sdkdir, "-L/usr/local/lib", "-L/usr/lib", "-stdlib=libc++", "-lz" }
- -- init linkdirs
- _g.linkdirs = {"/usr/lib", "/usr/local/lib"}
+ -- init flags for objc/c++ (with _g.ldflags and _g.shflags)
+ _g.mxflags = { "-arch " .. arch, "-fpascal-strings", "-fmessage-length=0", "-isysroot " .. xcode_sdkdir }
- -- save swift link directory for tools
+ -- init flags for asm (with _g.ldflags and _g.shflags)
+ _g.asflags = { "-arch " .. arch, "-isysroot " .. xcode_sdkdir }
+
+ -- init flags for swift (with _g.ldflags and _g.shflags)
+ _g.scflags = { format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
config.set("__swift_linkdirs", xcode_dir .. "/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx")
+ -- init flags for golang
+ _g["go-ldflags"] = {}
+
+ -- init flags for dlang
+ _g["dc-shflags"] = {}
+ _g["dc-ldflags"] = {}
+
-- ok
return _g
end
diff --git a/xmake/tools/dmd.lua b/xmake/tools/dmd.lua
index 8329e1a3c..e71a0f51c 100755
--- a/xmake/tools/dmd.lua
+++ b/xmake/tools/dmd.lua
@@ -38,14 +38,14 @@ function init(shellname, kind)
_g.kind = kind
-- init arflags
- _g["dd-arflags"] = { "-lib" }
+ _g.arflags = { "-lib" }
-- init shflags
- _g["dd-shflags"] = { "-shared", "-fPIC" }
+ _g.shflags = { "-shared", "-fPIC" }
- -- init dflags for the kind: shared
- _g.shared = {}
- _g.shared.dflags = {"-fPIC"}
+ -- init dcflags for the kind: shared
+ _g.shared = {}
+ _g.shared.dcflags = {"-fPIC"}
-- init features
_g.features =
diff --git a/xmake/tools/go.lua b/xmake/tools/go.lua
index 578a49f6a..a8966404f 100755
--- a/xmake/tools/go.lua
+++ b/xmake/tools/go.lua
@@ -38,7 +38,7 @@ function init(shellname, kind)
_g.kind = kind
-- init arflags
- _g["go-arflags"] = { "grc" }
+ _g.arflags = { "grc" }
-- init the file formats
_g.formats = {}
diff --git a/xmake/tools/ldc.lua b/xmake/tools/ldc.lua
index d5e6198cd..213fd7e34 100755
--- a/xmake/tools/ldc.lua
+++ b/xmake/tools/ldc.lua
@@ -38,14 +38,14 @@ function init(shellname, kind)
_g.kind = kind
-- init arflags
- _g["dd-arflags"] = { "-lib" }
+ _g.arflags = { "-lib" }
-- init shflags
- _g["dd-shflags"] = { "-shared", "-fPIC" }
+ _g.shflags = { "-shared", "-fPIC" }
- -- init dflags for the kind: shared
- _g.shared = {}
- _g.shared.dflags = {"-fPIC"}
+ -- init dcflags for the kind: shared
+ _g.shared = {}
+ _g.shared.dcflags = {"-fPIC"}
-- init features
_g.features =