-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathcodeblocks.lua
75 lines (61 loc) · 1.73 KB
/
codeblocks.lua
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
--
-- Name: codeblocks/codeblocks.lua
-- Purpose: Generate a Code::Blocks workspace and projects.
-- Copyright: See attached license file
--
-- Premake libraries
---@module 'premake5'
local p = premake
local project = p.project
-- CodeBlocks library
p.modules.codeblocks = {}
p.modules.codeblocks._VERSION = "1.0.1-dev"
local codeblocks = p.modules.codeblocks
codeblocks.workspace = {}
codeblocks.project = {}
function codeblocks.cfgname(cfg)
local cfgname = cfg.buildcfg
if codeblocks.workspace.multiplePlatforms then
cfgname = string.format("%s | %s", cfg.platform, cfg.buildcfg)
end
return cfgname
end
function codeblocks.esc(value)
local result = value:gsub('"', '"')
result = result:gsub('<', '<')
result = result:gsub('>', '>')
return result
end
function codeblocks.generateWorkspace(wks)
p.eol("\r\n")
p.indent("\t")
p.escaper(codeblocks.esc)
p.generate(wks, ".workspace", codeblocks.workspace.generate)
end
function codeblocks.generateProject(prj)
p.eol("\r\n")
p.indent("\t")
p.escaper(codeblocks.esc)
if project.isc(prj) or project.iscpp(prj) then
p.generate(prj, ".cbp", codeblocks.project.generate)
end
end
function codeblocks.cleanWorkspace(wks)
p.clean.file(wks, wks.name .. ".workspace")
p.clean.file(wks, wks.name .. ".workspace.layout")
end
function codeblocks.cleanProject(prj)
p.clean.file(prj, prj.name .. ".cbp")
p.clean.file(prj, prj.name .. ".layout")
p.clean.file(prj, prj.name .. ".depend")
end
function codeblocks.cleanTarget(tgt)
-- TODO
end
-- Load code
include("codeblocks_workspace.lua")
include("codeblocks_cbp.lua")
-- Way to go if not embedded ?
include("_preload.lua")
print("Code::Blocks module loaded.")
return codeblocks