diff options
| author | ruki <[email protected]> | 2020-05-21 22:36:26 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-05-21 09:38:42 +0800 |
| commit | f42509d5a1f4b98ef789bcd1a12cc436e3dc43b1 (patch) | |
| tree | 7c33c6a6547d6e5f829d75fe355e8df133326487 | |
| parent | 7053cde611448bba096b6a97527af5f5a50439c1 (diff) | |
remove sdcc platform
| -rw-r--r-- | xmake/core/platform/platform.lua | 26 | ||||
| -rw-r--r-- | xmake/core/tool/toolchain.lua | 1 | ||||
| -rw-r--r-- | xmake/platforms/sdcc/check.lua | 114 | ||||
| -rw-r--r-- | xmake/platforms/sdcc/load.lua | 47 | ||||
| -rw-r--r-- | xmake/platforms/sdcc/xmake.lua | 39 | ||||
| -rw-r--r-- | xmake/toolchains/sdcc/xmake.lua | 6 |
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") |
