summaryrefslogtreecommitdiff
path: root/xmake/rules/xcode/application
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/rules/xcode/application')
-rw-r--r--xmake/rules/xcode/application/build.lua2
-rw-r--r--xmake/rules/xcode/application/installcmd.lua70
-rw-r--r--xmake/rules/xcode/application/xmake.lua3
3 files changed, 73 insertions, 2 deletions
diff --git a/xmake/rules/xcode/application/build.lua b/xmake/rules/xcode/application/build.lua
index a98baf57a..8ea734d28 100644
--- a/xmake/rules/xcode/application/build.lua
+++ b/xmake/rules/xcode/application/build.lua
@@ -24,8 +24,6 @@ import("core.theme.theme")
import("core.project.depend")
import("private.tools.codesign")
import("utils.progress")
-
--- main entry
function main (target, opt)
-- get app and resources directory
diff --git a/xmake/rules/xcode/application/installcmd.lua b/xmake/rules/xcode/application/installcmd.lua
new file mode 100644
index 000000000..c08a0fede
--- /dev/null
+++ b/xmake/rules/xcode/application/installcmd.lua
@@ -0,0 +1,70 @@
+--!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-present, Xmake Open Source Community.
+--
+-- @author ruki
+-- @file installcmd.lua
+--
+
+-- install application for xpack
+function main(target, batchcmds, opt)
+ local package = opt.package
+
+ -- only for macosx when packing
+ if not target:is_plat("macosx") then
+ return
+ end
+
+ -- only for xpack (package exists)
+ if not package then
+ return
+ end
+
+ -- get app directory
+ local appdir = target:data("xcode.bundle.rootdir")
+ if not appdir or not os.isdir(appdir) then
+ return
+ end
+
+ -- get install directory
+ -- for dmg packing, we install .app to the root of install directory
+ local installdir = package:installdir()
+ if not installdir then
+ return
+ end
+
+ -- copy .app to install directory
+ local appname = path.filename(appdir)
+ local dstappdir = path.join(installdir, appname)
+ batchcmds:cp(appdir, dstappdir, {symlink = true})
+
+ -- install target files (skip binary installation)
+ local srcfiles, dstfiles = target:installfiles(installdir)
+ if srcfiles and dstfiles then
+ for idx, srcfile in ipairs(srcfiles) do
+ batchcmds:cp(srcfile, dstfiles[idx], {symlink = true})
+ end
+ end
+ -- install dependent target files
+ for _, dep in ipairs(target:orderdeps()) do
+ local srcfiles, dstfiles = dep:installfiles(installdir, {interface = true})
+ if srcfiles and dstfiles then
+ for idx, srcfile in ipairs(srcfiles) do
+ batchcmds:cp(srcfile, dstfiles[idx], {symlink = true})
+ end
+ end
+ end
+end
+
diff --git a/xmake/rules/xcode/application/xmake.lua b/xmake/rules/xcode/application/xmake.lua
index ecffaeeac..8af79a585 100644
--- a/xmake/rules/xcode/application/xmake.lua
+++ b/xmake/rules/xcode/application/xmake.lua
@@ -36,6 +36,9 @@ rule("xcode.application")
-- install application
on_install("install")
+ -- install application for xpack
+ on_installcmd("installcmd")
+
-- uninstall application
on_uninstall("uninstall")