summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-05-21 22:36:26 +0800
committerruki <[email protected]>2020-05-21 09:38:42 +0800
commitf42509d5a1f4b98ef789bcd1a12cc436e3dc43b1 (patch)
tree7c33c6a6547d6e5f829d75fe355e8df133326487
parent7053cde611448bba096b6a97527af5f5a50439c1 (diff)
remove sdcc platform
-rw-r--r--xmake/core/platform/platform.lua26
-rw-r--r--xmake/core/tool/toolchain.lua1
-rw-r--r--xmake/platforms/sdcc/check.lua114
-rw-r--r--xmake/platforms/sdcc/load.lua47
-rw-r--r--xmake/platforms/sdcc/xmake.lua39
-rw-r--r--xmake/toolchains/sdcc/xmake.lua6
6 files changed, 32 insertions, 201 deletions
diff --git a/xmake/core/platform/platform.lua b/xmake/core/platform/platform.lua
index c20da127e..9b0e1ebec 100644
--- a/xmake/core/platform/platform.lua
+++ b/xmake/core/platform/platform.lua
@@ -245,6 +245,24 @@ function _instance:check()
end
end
+-- get formats
+function _instance:formats()
+ local formats = self._FORMATS
+ if not formats then
+ for _, toolchain_inst in ipairs(self:toolchains()) do
+ formats = toolchain_inst:get("formats")
+ if formats then
+ break
+ end
+ end
+ if not formats then
+ formats = self._INFO:get("formats")
+ end
+ self._FORMATS = formats
+ end
+ return formats
+end
+
-- is builtin configuration?
function _instance:_is_builtin_conf(name)
@@ -510,8 +528,14 @@ end
-- get the format of the given target kind for platform
function platform.format(targetkind)
+ -- get platform instance
+ local instance, errors = platform.load(plat)
+ if not instance then
+ os.raise(errors)
+ end
+
-- get formats
- local formats = platform.get("formats")
+ local formats = instance:formats()
if formats then
return formats[targetkind]
end
diff --git a/xmake/core/tool/toolchain.lua b/xmake/core/tool/toolchain.lua
index 368a25b20..3644fa8c0 100644
--- a/xmake/core/tool/toolchain.lua
+++ b/xmake/core/tool/toolchain.lua
@@ -267,6 +267,7 @@ function toolchain._apis()
"toolchain.set_kind"
, "toolchain.set_bindir"
, "toolchain.set_sdkdir"
+ , "toolchain.set_archs"
}
, keyvalues =
{
diff --git a/xmake/platforms/sdcc/check.lua b/xmake/platforms/sdcc/check.lua
deleted file mode 100644
index 6532ea00e..000000000
--- a/xmake/platforms/sdcc/check.lua
+++ /dev/null
@@ -1,114 +0,0 @@
---!A cross-platform build utility based on Lua
---
--- Licensed under the Apache License, Version 2.0 (the "License");
--- you may not use this file except in compliance with the License.
--- You may obtain a copy of the License at
---
--- http://www.apache.org/licenses/LICENSE-2.0
---
--- Unless required by applicable law or agreed to in writing, software
--- distributed under the License is distributed on an "AS IS" BASIS,
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--- See the License for the specific language governing permissions and
--- limitations under the License.
---
--- Copyright (C) 2015-2020, TBOOX Open Source Group.
---
--- @author ruki
--- @file check.lua
---
-
--- imports
-import("core.project.config")
-import("core.base.singleton")
-import("detect.sdks.find_cross_toolchain")
-import("private.platform.toolchain")
-import("private.platform.check_arch")
-import("private.platform.check_toolchain")
-
--- check the architecture
-function _check_arch()
-
- -- get the architecture
- local arch = config.get("arch")
- if not arch then
- config.set("arch", "stm8")
- end
-end
-
--- check the cross toolchain
-function _check_cross_toolchain()
- -- find cross toolchain
- local cross_toolchain = find_cross_toolchain(config.get("sdk") or config.get("bin"), {bindir = config.get("bin"), cross = config.get("cross")})
- if cross_toolchain then
- config.set("cross", cross_toolchain.cross, {readonly = true, force = true})
- config.set("bin", cross_toolchain.bindir, {readonly = true, force = true})
-
- -- TODO add to environment module
- -- add bin search library for loading some dependent .dll files windows
- if cross_toolchain.bindir and is_host("windows") then
- os.addenv("PATH", cross_toolchain.bindir)
- end
- end
-end
-
--- get toolchains
-function _toolchains()
-
- -- init toolchains
- local cc = toolchain("the c compiler")
- local cxx = toolchain("the c++ compiler")
- local cpp = toolchain("the c preprocessor")
- local ld = toolchain("the linker")
- local sh = toolchain("the shared library linker")
- local ar = toolchain("the static library archiver")
- local ex = toolchain("the static library extractor")
- local ranlib = toolchain("the static library index generator")
- local as = toolchain("the assember")
- local toolchains = {cc = cc, cxx = cxx, cpp = cpp, as = as, ld = ld, sh = sh, ar = ar, ex = ex, ranlib = ranlib}
-
- -- init the c compiler
- cc:add("$(env CC)", "sdcc")
-
- -- init the c preprocessor
- cpp:add("$(env CPP)", "sdcpp")
-
- -- init the c++ compiler
- cxx:add("$(env CXX)", "sdcc")
-
- -- init the assember
- as:add("$(env AS)", "sdcc")
-
- -- init the linker
- ld:add("$(env LD)", "$(env CXX)", "sdcc")
-
- -- init the shared library linker
- sh:add("$(env SH)", "$(env CXX)", "sdcc")
-
- -- init the static library archiver
- ar:add("$(env AR)", "sdar")
-
- -- init the static library extractor
- ex:add("$(env AR)", "sdar")
- return toolchains
-end
-
--- check it
-function main(platform, name)
-
- -- only check the given config name?
- if name then
- local toolchain = singleton.get("cross.toolchains", _toolchains)[name]
- if toolchain then
- check_toolchain(config, name, toolchain)
- end
- else
-
- -- check arch
- _check_arch()
-
- -- check cross toolchain
- _check_cross_toolchain()
- end
-end
-
diff --git a/xmake/platforms/sdcc/load.lua b/xmake/platforms/sdcc/load.lua
deleted file mode 100644
index 2f44d691e..000000000
--- a/xmake/platforms/sdcc/load.lua
+++ /dev/null
@@ -1,47 +0,0 @@
---!A cross-platform build utility based on Lua
---
--- Licensed under the Apache License, Version 2.0 (the "License");
--- you may not use this file except in compliance with the License.
--- You may obtain a copy of the License at
---
--- http://www.apache.org/licenses/LICENSE-2.0
---
--- Unless required by applicable law or agreed to in writing, software
--- distributed under the License is distributed on an "AS IS" BASIS,
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--- See the License for the specific language governing permissions and
--- limitations under the License.
---
--- Copyright (C) 2015-2020, TBOOX Open Source Group.
---
--- @author ruki
--- @file load.lua
---
-
--- imports
-import("core.project.config")
-
--- load it
-function main(platform)
-
- -- init linkdirs and includedirs
- local sdkdir = config.get("sdk")
- if sdkdir then
- local includedir = path.join(sdkdir, "include")
- if os.isdir(includedir) then
- platform:add("includedirs", includedir)
- end
- local linkdir = path.join(sdkdir, "lib")
- if os.isdir(linkdir) then
- platform:add("linkdirs", linkdir)
- end
- end
-
- -- add port flags for arch
- local arch = config.get("arch")
- if arch then
- platform:add("cxflags", "-m" .. arch)
- platform:add("ldflags", "-m" .. arch)
- end
-end
-
diff --git a/xmake/platforms/sdcc/xmake.lua b/xmake/platforms/sdcc/xmake.lua
deleted file mode 100644
index ad2f02be9..000000000
--- a/xmake/platforms/sdcc/xmake.lua
+++ /dev/null
@@ -1,39 +0,0 @@
---!A cross-platform build utility based on Lua
---
--- Licensed under the Apache License, Version 2.0 (the "License");
--- you may not use this file except in compliance with the License.
--- You may obtain a copy of the License at
---
--- http://www.apache.org/licenses/LICENSE-2.0
---
--- Unless required by applicable law or agreed to in writing, software
--- distributed under the License is distributed on an "AS IS" BASIS,
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--- See the License for the specific language governing permissions and
--- limitations under the License.
---
--- Copyright (C) 2015-2020, TBOOX Open Source Group.
---
--- @author ruki
--- @file xmake.lua
---
-
--- define platform
-platform("sdcc")
-
- -- set hosts
- set_hosts("macosx", "linux", "windows")
-
- -- set archs
- set_archs("stm8", "mcs51", "z80", "z180", "r2k", "r3ka", "s08", "hc08")
-
- -- set formats
- set_formats {static = "$(name).lib", object = "$(name).rel", binary = "$(name).bin", symbol = "$(name).sym"}
-
- -- on check
- on_check("check")
-
- -- on load
- on_load("load")
-
-
diff --git a/xmake/toolchains/sdcc/xmake.lua b/xmake/toolchains/sdcc/xmake.lua
index c7f305e61..84a8d93fc 100644
--- a/xmake/toolchains/sdcc/xmake.lua
+++ b/xmake/toolchains/sdcc/xmake.lua
@@ -33,6 +33,12 @@ toolchain("sdcc")
set_toolsets("sh", "sdcc")
set_toolsets("ar", "sdar")
set_toolsets("ex", "sdar")
+
+ -- set archs
+ set_archs("stm8", "mcs51", "z80", "z180", "r2k", "r3ka", "s08", "hc08")
+
+ -- set formats
+ set_formats {static = "$(name).lib", object = "$(name).rel", binary = "$(name).bin", symbol = "$(name).sym"}
-- check toolchain
on_check("check")