summaryrefslogtreecommitdiff
path: root/xmake/actions/config/xmake.lua
blob: 882250b4eafd31ba2aedacd076d59c163e1948c5 (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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
--!The Make-like Build Utility based on Lua
-- 
-- XMake is free software; you can redistribute it and/or modify
-- it under the terms of the GNU Lesser General Public License as published by
-- the Free Software Foundation; either version 2.1 of the License, or
-- (at your option) any later version.
-- 
-- XMake is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU Lesser General Public License for more details.
-- 
-- You should have received a copy of the GNU Lesser General Public License
-- along with XMake; 
-- If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a>
-- 
-- Copyright (C) 2015 - 2016, ruki All rights reserved.
--
-- @author      ruki
-- @file        xmake.lua
--

-- define task
task("config")

    -- set category
    set_category("action")

    -- on run
    on_run("main")

    -- set menu
    set_menu({
                    -- usage
                    usage = "xmake config|f [options] [target]"

                    -- description
                ,   description = "Configure the project."

                    -- xmake f
                ,   shortname = 'f'

                    -- options
                ,   options = 
                    {
                        {'c', "clean",      "k", nil,         "Clean the cached configure and configure all again."           }

                    ,   {}
                    ,   {'p', "plat",       "kv", "$(host)",  "Compile for the given platform."                               

                                                                -- show the description of all platforms
                                                              , function () 

                                                                    -- import platform 
                                                                    import("core.platform.platform")

                                                                    -- make description
                                                                    local description = {}
                                                                    for i, plat in ipairs(platform.plats()) do
                                                                        description[i] = "    - " .. plat
                                                                    end

                                                                    -- get it
                                                                    return description
                                                                end                                                            }
                    ,   {'a', "arch",       "kv", "auto",       "Compile for the given architecture."                               

                                                                -- show the description of all architectures
                                                              , function () 

                                                                    -- import platform 
                                                                    import("core.platform.platform")

                                                                    -- make description
                                                                    local description = {}
                                                                    for i, plat in ipairs(platform.plats()) do
                                                                        description[i] = "    - " .. plat .. ":"
                                                                        for _, arch in ipairs(platform.archs(plat)) do
                                                                            description[i] = description[i] .. " " .. arch
                                                                        end
                                                                    end

                                                                    -- get it
                                                                    return description
                                                                end                                                            }
                    ,   {'m', "mode",       "kv", "release",    "Compile for the given mode." 
                                                              , "    - debug"
                                                              , "    - release"
                                                              , "    - ... (custom)"                                           } 
                    ,   {'k', "kind",       "kv", "static",     "Compile for the given target kind." 
                                                              , "    - static"
                                                              , "    - shared"
                                                              , "    - binary"                                                 }
                    ,   {nil, "host",       "kv", "$(host)",    "The current host environment."                                }

                        -- show project menu options
                    ,   function () 

                            -- import project menu 
                            import("core.project.menu")

                            -- get project menu options 
                            return menu.options() 
                        end

                    ,   {}
                    ,   {nil, "ccache",     "kv", "auto",       "Enable or disable the c/c++ compiler cache."                   }

                    ,   {}
                    ,   {nil, "cross",      "kv", nil,          "The cross toolchains prefix"   
                                                              , ".e.g"
                                                              , "    - i386-mingw32-"
                                                              , "    - arm-linux-androideabi-"                                  }
                    ,   {nil, "toolchains", "kv", nil,          "The cross toolchains directory" 
                                                              , ".e.g"
                                                              , "    - sdk/bin (/arm-linux-gcc ..)"                             }
                    ,   {nil, "sdk",        "kv", nil,          "The cross sdk directory" 
                                                              , ".e.g"
                                                              , "    - sdk/bin (toolchains)"
                                                              , "    - sdk/lib"
                                                              , "    - sdk/include"                                             }
                    ,   {}
                    ,   {nil, "cc",         "kv", nil,          "The C Compiler"                                                }
                    ,   {nil, "cxx",        "kv", nil,          "The C++ Compiler"                                              }
                    ,   {nil, "cflags",     "kv", nil,          "The C Compiler Flags"                                          }
                    ,   {nil, "cxflags",    "kv", nil,          "The C/C++ compiler Flags"                                      }
                    ,   {nil, "cxxflags",   "kv", nil,          "The C++ Compiler Flags"                                        }

                    ,   {}
                    ,   {nil, "as",         "kv", nil,          "The Assembler"                                                 }
                    ,   {nil, "asflags",    "kv", nil,          "The Assembler Flags"                                           }
                   
                    ,   {}
                    ,   {nil, "sc",         "kv", nil,          "The Swift Compiler"                                            }
                    ,   {nil, "scflags",    "kv", nil,          "The Swift Compiler Flags"                                      }

                    ,   {}
                    ,   {nil, "ld",         "kv", nil,          "The Linker"                                                    }
                    ,   {nil, "ldflags",    "kv", nil,          "The Binary Linker Flags"                                       }

                    ,   {}
                    ,   {nil, "ar",         "kv", nil,          "The Static Library Linker"                                     }
                    ,   {nil, "arflags",    "kv", nil,          "The Static Library Linker Flags"                               }

                    ,   {}
                    ,   {nil, "sh",         "kv", nil,          "The Shared Library Linker"                                     }
                    ,   {nil, "shflags",    "kv", nil,          "The Shared Library Linker Flags"                               }
 
                    ,   {}
                    ,   {nil, "debugger",   "kv", "auto",       "The Debugger"                                                  }

                        -- show platform menu options
                    ,   function () 

                            -- import platform menu
                            import("core.platform.menu")

                            -- get config menu options
                            return menu.options("config")
                        end

                    ,   {'o', "buildir",    "kv", "build",      "Set the build directory."                                      }

                    ,   {}
                    ,   {nil, "target",     "v",  "all",        "Configure for the given target."                               }
                    }
                })