summaryrefslogtreecommitdiff
path: root/xmake/rules/xmake_cli/xmake.lua
blob: 455a67365482d5409aa555fd8d6dd77d3c74c922 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
--!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 rule: xmake cli program
rule("xmake.cli")
    before_load(function (target)
        target:set("kind", "binary")
        assert(target:pkg("libxmake"), 'please add_packages("libxmake") to target(%s) first!', target:name())
    end)
    after_install(function (target)
        -- install xmake/cli program
        --
        --  - bin
        --    - hello
        --  - share
        --    - hello
        --      - lua
        --        - main.lua
        --      - core
        --        - ..
        --
        local scriptdir = path.join(target:scriptdir(), "src")
        if not os.isfile(path.join(scriptdir, "lua", "main.lua")) then
            import("lib.detect.find_path")
            scriptdir = assert(find_path("lua/main.lua", path.join(target:scriptdir(), "**")), "lua/main.lua not found!")
        end
        local installdir = path.join(target:installdir(), "share", target:name())
        if not os.isdir(installdir) then
            os.mkdir(installdir)
        end
        os.vcp(path.join(scriptdir, "lua"), installdir)

        -- install xmake-core lua scripts
        local libxmake = target:pkg("libxmake")
        local programdir = path.join(path.directory(libxmake:get("linkdirs")), "share", "xmake")
        assert(os.isdir(programdir), "%s not found!", programdir)
        local coredir = path.join(installdir, "core")
        if not os.isdir(coredir) then
            os.mkdir(coredir)
        end
        os.vcp(path.join(programdir, "*"), coredir)
    end)
    before_run(function (target)
        local scriptdir = path.join(target:scriptdir(), "src")
        if not os.isfile(path.join(scriptdir, "lua", "main.lua")) then
            import("lib.detect.find_path")
            scriptdir = assert(find_path("lua/main.lua", path.join(target:scriptdir(), "**")), "lua/main.lua not found!")
        end
        local libxmake = target:pkg("libxmake")
        local programdir = path.join(path.directory(libxmake:get("linkdirs")), "share", "xmake")
        assert(os.isdir(programdir), "%s not found!", programdir)
        os.setenv("XMAKE_PROGRAM_DIR", programdir)
        os.setenv("XMAKE_MODULES_DIR", scriptdir)
    end)