65 lines
1.6 KiB
Lua
65 lines
1.6 KiB
Lua
--
|
|
-- _preload.lua
|
|
-- Define the makefile action(s).
|
|
-- Copyright (c) 2002-2015 Jason Perkins and the Premake project
|
|
--
|
|
|
|
local p = premake
|
|
local project = p.project
|
|
|
|
---
|
|
-- The GNU make action, with support for the new platforms API
|
|
---
|
|
|
|
newaction {
|
|
trigger = "gmake",
|
|
shortname = "GNU Make",
|
|
description = "Generate GNU makefiles for POSIX, MinGW, and Cygwin",
|
|
toolset = "gcc",
|
|
|
|
valid_kinds = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib", "Utility", "Makefile" },
|
|
valid_languages = { "C", "C++", "C#" },
|
|
valid_tools = {
|
|
cc = { "clang", "gcc" },
|
|
dotnet = { "mono", "msnet", "pnet" }
|
|
},
|
|
|
|
onWorkspace = function(wks)
|
|
p.escaper(p.make.esc)
|
|
p.generate(wks, p.make.getmakefilename(wks, false), p.make.generate_workspace)
|
|
end,
|
|
|
|
onProject = function(prj)
|
|
p.escaper(p.make.esc)
|
|
local makefile = p.make.getmakefilename(prj, true)
|
|
if prj.kind == p.UTILITY then
|
|
p.generate(prj, makefile, p.make.utility.generate)
|
|
elseif prj.kind == p.MAKEFILE then
|
|
p.generate(prj, makefile, p.make.makefile.generate)
|
|
else
|
|
if project.isdotnet(prj) then
|
|
p.generate(prj, makefile, p.make.cs.generate)
|
|
elseif project.isc(prj) or project.iscpp(prj) then
|
|
p.generate(prj, makefile, p.make.cpp.generate)
|
|
end
|
|
end
|
|
end,
|
|
|
|
onCleanWorkspace = function(wks)
|
|
p.clean.file(wks, p.make.getmakefilename(wks, false))
|
|
end,
|
|
|
|
onCleanProject = function(prj)
|
|
p.clean.file(prj, p.make.getmakefilename(prj, true))
|
|
end
|
|
}
|
|
|
|
|
|
--
|
|
-- Decide when the full module should be loaded.
|
|
--
|
|
|
|
return function(cfg)
|
|
return (_ACTION == "gmake")
|
|
end
|