1--
2-- valac.lua
3-- Provides valac-specific configuration strings.
4--
5
6
7	premake.valac = { }
8
9
10--
11-- Set default tools
12--
13
14	premake.valac.valac  = "valac"
15	premake.valac.cc     = "gcc"
16
17
18--
19-- Translation of Premake flags into GCC flags
20--
21
22	local valaflags =
23	{
24		DisableAssert             = "--disable-assert",               -- Disable assertions
25		DisableSinceCheck         = "--disable-since-check",          -- Do not check whether used symbols exist in local packages
26		DisableWarnings           = "--disable-warnings",             -- Disable warnings
27		EnableChecking            = "--enable-checking",              -- Enable additional run-time checks
28		EnableDeprecated          = "--enable-deprecated",            -- Enable deprecated features
29		EnableExperimental        = "--enable-experimental",          -- Enable experimental features
30		EnableExperimentalNonNull = "--enable-experimental-non-null", -- Enable experimental enhancements for non-null types
31		EnableGObjectTracing      = "--enable-gobject-tracing",       -- Enable GObject creation tracing
32		EnableMemProfiler         = "--enable-mem-profiler",          -- Enable GLib memory profiler
33		EnableThreading           = "--thread",                       -- Enable multithreading support
34		FatalWarnings             = "--fatal-warnings",               -- Treat warnings as fatal
35		HideInternal              = "--hide-internal",                -- Hide symbols marked as internal
36		NoStdPkg                  = "--nostdpkg",                     -- Do not include standard packages
37		Optimize                  = "-X -O2",
38		OptimizeSize              = "-X -Os",
39		OptimizeSpeed             = "-X -O3",
40		Symbols                   = "-g",                             -- Produce debug information
41	}
42
43	premake.valac.platforms = {}
44
45--
46-- Returns a list of compiler flags, based on the supplied configuration.
47--
48
49	function premake.valac.getvalaflags(cfg)
50		return table.translate(cfg.flags, valaflags)
51	end
52
53
54
55--
56-- Decorate pkgs for the Vala command line.
57--
58
59	function premake.valac.getlinks(links)
60		local result = { }
61		for _, pkg in ipairs(links) do
62			table.insert(result, '--pkg ' .. pkg)
63		end
64		return result
65	end
66
67
68
69--
70-- Decorate defines for the Vala command line.
71--
72
73	function premake.valac.getdefines(defines)
74		local result = { }
75		for _, def in ipairs(defines) do
76			table.insert(result, '-D ' .. def)
77		end
78		return result
79	end
80
81
82
83--
84-- Decorate C flags for the Vala command line.
85--
86
87	function premake.valac.getbuildoptions(buildoptions)
88		local result = { }
89		for _, def in ipairs(buildoptions) do
90			table.insert(result, '-X ' .. def)
91		end
92		return result
93	end
94
95--
96-- Decorate vapidirs for the Vala command line.
97--
98
99	function premake.valac.getvapidirs(vapidirs)
100		local result = { }
101		for _, def in ipairs(vapidirs) do
102			table.insert(result, '--vapidir=' .. def)
103		end
104		return result
105	end
106