diff options
| author | ruki <[email protected]> | 2020-04-08 23:42:19 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-04-08 16:13:55 +0800 |
| commit | ef120036428f173d235b1822a242173b12c7a6b8 (patch) | |
| tree | 9e4729fdd9475dffae2175bfdb1da9b3831b4738 /xmake/rules/xcode/application | |
| parent | 4c12e160c53b2566f9c80a86d9f7350aee4f62b3 (diff) | |
seperate storyboard and xcassets rules
Diffstat (limited to 'xmake/rules/xcode/application')
| -rw-r--r-- | xmake/rules/xcode/application/build.lua | 4 | ||||
| -rw-r--r-- | xmake/rules/xcode/application/build_file.lua | 167 | ||||
| -rw-r--r-- | xmake/rules/xcode/application/install.lua | 2 | ||||
| -rw-r--r-- | xmake/rules/xcode/application/load.lua | 6 | ||||
| -rw-r--r-- | xmake/rules/xcode/application/uninstall.lua | 2 | ||||
| -rw-r--r-- | xmake/rules/xcode/application/xmake.lua | 9 |
6 files changed, 10 insertions, 180 deletions
diff --git a/xmake/rules/xcode/application/build.lua b/xmake/rules/xcode/application/build.lua index dfe6fcfc2..c67ef8058 100644 --- a/xmake/rules/xcode/application/build.lua +++ b/xmake/rules/xcode/application/build.lua @@ -45,8 +45,8 @@ end function main (target, opt) -- get app and contents directory - local appdir = path.absolute(target:data("xcode.app.rootdir")) - local contentsdir = path.absolute(target:data("xcode.app.contentsdir")) + local appdir = path.absolute(target:data("xcode.bundle.rootdir")) + local contentsdir = path.absolute(target:data("xcode.bundle.contentsdir")) -- need re-compile it? local dependfile = target:dependfile(appdir) diff --git a/xmake/rules/xcode/application/build_file.lua b/xmake/rules/xcode/application/build_file.lua deleted file mode 100644 index 999dc8035..000000000 --- a/xmake/rules/xcode/application/build_file.lua +++ /dev/null @@ -1,167 +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 build_file.lua --- - --- imports -import("core.base.option") -import("core.theme.theme") -import("core.project.depend") - --- build *.xcassets file -function _build_xcassets_file(target, sourcefile, opt) - - -- get xcode sdk directory - local xcode_sdkdir = assert(get_config("xcode"), "xcode not found!") - local xcode_usrdir = path.join(xcode_sdkdir, "Contents", "Developer", "usr") - - -- get app resources directory - local resourcesdir = target:data("xcode.app.resourcesdir") - - -- need re-compile it? - local dependfile = target:dependfile(sourcefile) - local dependinfo = option.get("rebuild") and {} or (depend.load(dependfile) or {}) - if not depend.is_changed(dependinfo, {lastmtime = os.mtime(dependfile)}) then - return - end - - -- trace progress info - cprintf("${color.build.progress}" .. theme.get("text.build.progress_format") .. ":${clear} ", opt.progress) - if option.get("verbose") then - cprint("${dim color.build.object}compiling.xcode.xcassets %s", sourcefile) - else - cprint("${color.build.object}compiling.xcode.xcassets %s", sourcefile) - end - - -- do compile - local argv = {"--warnings", "--notices", "--output-format", "human-readable-text"} - if is_plat("macosx") then - table.insert(argv, "--target-device") - table.insert(argv, "mac") - table.insert(argv, "--platform") - table.insert(argv, "macosx") - elseif is_plat("iphoneos") then - table.insert(argv, "--target-device") - table.insert(argv, "iphone") - table.insert(argv, "--target-device") - table.insert(argv, "ipad") - table.insert(argv, "--platform") - table.insert(argv, "iphoneos") - else - assert("unknown device!") - end - table.insert(argv, "--minimum-deployment-target") - table.insert(argv, get_config("target_minver")) - table.insert(argv, "--app-icon") - table.insert(argv, "AppIcon") - if is_plat("iphoneos") then - table.insert(argv, "--enable-on-demand-resources") - table.insert(argv, "YES") - table.insert(argv, "--compress-pngs") - else - table.insert(argv, "--enable-on-demand-resources") - table.insert(argv, "NO") - end - table.insert(argv, "--development-region") - table.insert(argv, "en") - table.insert(argv, "--product-type") - table.insert(argv, "com.apple.product-type.application") - table.insert(argv, "--compile") - table.insert(argv, resourcesdir) - table.insert(argv, sourcefile) - os.vrunv(path.join(xcode_usrdir, "bin", "actool"), argv) - - -- update files and values to the dependent file - dependinfo.files = {sourcefile} - depend.save(dependinfo, dependfile) -end - --- build *.storyboard file -function _build_storyboard_file(target, sourcefile, opt) - - -- get xcode sdk directory - local xcode_sdkdir = assert(get_config("xcode"), "xcode not found!") - local xcode_usrdir = path.join(xcode_sdkdir, "Contents", "Developer", "usr") - - -- get base.lproj - local base_lproj = path.join(target:autogendir(), "rules", "xcode", "storyboard", "Base.lproj") - - -- get app resources directory - local resourcesdir = target:data("xcode.app.resourcesdir") - - -- need re-compile it? - local dependfile = target:dependfile(sourcefile) - local dependinfo = option.get("rebuild") and {} or (depend.load(dependfile) or {}) - if not depend.is_changed(dependinfo, {lastmtime = os.mtime(dependfile)}) then - return - end - - -- trace progress info - cprintf("${color.build.progress}" .. theme.get("text.build.progress_format") .. ":${clear} ", opt.progress) - if option.get("verbose") then - cprint("${dim color.build.object}compiling.xcode.storyboard %s", sourcefile) - else - cprint("${color.build.object}compiling.xcode.storyboard %s", sourcefile) - end - - -- do compile - local argv = {"--errors", "--warnings", "--notices", "--auto-activate-custom-fonts", "--output-format", "human-readable-text"} - if is_plat("macosx") then - table.insert(argv, "--target-device") - table.insert(argv, "mac") - elseif is_plat("iphoneos") then - table.insert(argv, "--target-device") - table.insert(argv, "iphone") - table.insert(argv, "--target-device") - table.insert(argv, "ipad") - else - assert("unknown device!") - end - table.insert(argv, "--minimum-deployment-target") - table.insert(argv, get_config("target_minver")) - table.insert(argv, "--compilation-directory") - table.insert(argv, base_lproj) - table.insert(argv, sourcefile) - os.vrunv(path.join(xcode_usrdir, "bin", "ibtool"), argv, {envs = {XCODE_DEVELOPER_USR_PATH = xcode_usrdir}}) - - -- do link - argv = {"--errors", "--warnings", "--notices", "--auto-activate-custom-fonts", "--output-format", "human-readable-text"} - if is_plat("macosx") then - table.insert(argv, "--target-device") - table.insert(argv, "mac") - end - table.insert(argv, "--minimum-deployment-target") - table.insert(argv, get_config("target_minver")) - table.insert(argv, "--link") - table.insert(argv, resourcesdir) - table.insert(argv, path.join(base_lproj, path.filename(sourcefile) .. "c")) - os.vrunv(path.join(xcode_usrdir, "bin", "ibtool"), argv, {envs = {XCODE_DEVELOPER_USR_PATH = xcode_usrdir}}) - - -- update files and values to the dependent file - dependinfo.files = {sourcefile} - depend.save(dependinfo, dependfile) -end - --- main entry -function main (target, sourcefile, opt) - if sourcefile:endswith(".xcassets") then - _build_xcassets_file(target, sourcefile, opt) - elseif sourcefile:endswith(".storyboard") then - _build_storyboard_file(target, sourcefile, opt) - end -end diff --git a/xmake/rules/xcode/application/install.lua b/xmake/rules/xcode/application/install.lua index 1339e13de..76a20e731 100644 --- a/xmake/rules/xcode/application/install.lua +++ b/xmake/rules/xcode/application/install.lua @@ -20,7 +20,7 @@ -- main entry function main (target) - local appdir = path.absolute(target:data("xcode.app.rootdir")) + local appdir = path.absolute(target:data("xcode.bundle.rootdir")) local installdir = target:installdir() if not os.isdir(installdir) then os.mkdir(installdir) diff --git a/xmake/rules/xcode/application/load.lua b/xmake/rules/xcode/application/load.lua index 4986d454f..d3026948e 100644 --- a/xmake/rules/xcode/application/load.lua +++ b/xmake/rules/xcode/application/load.lua @@ -24,7 +24,7 @@ function main (target) -- get app directory local targetdir = target:targetdir() local appdir = path.join(targetdir, target:basename() .. ".app") - target:data_set("xcode.app.rootdir", appdir) + target:data_set("xcode.bundle.rootdir", appdir) -- get contents and resources directory local contentsdir = appdir @@ -33,8 +33,8 @@ function main (target) contentsdir = path.join(appdir, "Contents") resourcesdir = path.join(appdir, "Contents", "Resources") end - target:data_set("xcode.app.contentsdir", contentsdir) - target:data_set("xcode.app.resourcesdir", resourcesdir) + target:data_set("xcode.bundle.contentsdir", contentsdir) + target:data_set("xcode.bundle.resourcesdir", resourcesdir) -- set target directory for app target:set("kind", "binary") diff --git a/xmake/rules/xcode/application/uninstall.lua b/xmake/rules/xcode/application/uninstall.lua index a229faba6..4a95cb05e 100644 --- a/xmake/rules/xcode/application/uninstall.lua +++ b/xmake/rules/xcode/application/uninstall.lua @@ -20,7 +20,7 @@ -- main entry function main (target) - local appdir = path.absolute(target:data("xcode.app.rootdir")) + local appdir = path.absolute(target:data("xcode.bundle.rootdir")) local installdir = target:installdir() os.tryrm(path.join(installdir, path.filename(appdir))) end diff --git a/xmake/rules/xcode/application/xmake.lua b/xmake/rules/xcode/application/xmake.lua index 75cae682d..ac1624d73 100644 --- a/xmake/rules/xcode/application/xmake.lua +++ b/xmake/rules/xcode/application/xmake.lua @@ -18,18 +18,15 @@ -- @file xmake.lua -- --- define rule: xcode application (TODO developing) +-- define rule: xcode application rule("xcode.application") - -- support add_files("*.storyboard") - set_extensions(".storyboard", ".xcassets") + -- support add_files("*.storyboard", "*.xcassets") + add_deps("xcode.storyboard", "xcode.xcassets") -- we must set kind before target.on_load(), may we will use target in on_load() before_load("load") - -- build *.storyboard and *.xcassets - on_build_file("build_file") - -- build *.app after_build("build") |
