Added platform support to CodeLite

This commit is contained in:
starkos 2009-04-24 13:40:28 +00:00
parent 7e973368be
commit 457744c27e
3 changed files with 110 additions and 87 deletions

View File

@ -44,7 +44,7 @@ end
files files
{ {
"src/**.h", "src/**.c", "src/**.lua", "src/**.tmpl", "src/**.h", "src/**.c", "src/**.lua",
"tests/**.lua" "tests/**.lua"
} }

View File

@ -18,95 +18,109 @@
} }
_p(' <Settings Type="%s">', types[prj.kind]) _p(' <Settings Type="%s">', types[prj.kind])
for cfg in premake.eachconfig(prj) do -- build a list of supported target platforms that also includes a generic build
local name = premake.esc(cfg.name) local platforms = premake.filterplatforms(prj.solution, premake.gcc.platforms, "Native")
local compiler = iif(cfg.language == "C", "gcc", "g++")
_p(' <Configuration Name="%s" CompilerType="gnu %s" DebuggerType="GNU gdb debugger" Type="%s">', name, compiler, types[cfg.kind]) for _, platform in ipairs(platforms) do
for cfg in premake.eachconfig(prj) do
local fname = premake.esc(cfg.buildtarget.fullpath) local name = premake.esc(cfg.name)
local objdir = premake.esc(cfg.objectsdir) if platform ~= "Native" then
local runcmd = cfg.buildtarget.name name = name .. "|" .. platform
local rundir = cfg.buildtarget.directory end
local pause = iif(cfg.kind == "WindowedApp", "no", "yes") local compiler = iif(cfg.language == "C", "gcc", "g++")
_p(' <General OutputFile="%s" IntermediateDirectory="%s" Command="./%s" CommandArguments="" WorkingDirectory="%s" PauseExecWhenProcTerminates="%s"/>', fname, objdir, runcmd, rundir, pause) _p(' <Configuration Name="%s" CompilerType="gnu %s" DebuggerType="GNU gdb debugger" Type="%s">', name, compiler, types[cfg.kind])
-- begin compiler block -- local fname = premake.esc(cfg.buildtarget.fullpath)
local flags = premake.esc(table.join(premake.gcc.getcflags(cfg), premake.gcc.getcxxflags(cfg), cfg.buildoptions)) local objdir = premake.esc(cfg.objectsdir)
_p(' <Compiler Required="yes" Options="%s">', table.concat(flags, ";")) local runcmd = cfg.buildtarget.name
for _,v in ipairs(cfg.includedirs) do local rundir = cfg.buildtarget.directory
_p(' <IncludePath Value="%s"/>', premake.esc(v)) local pause = iif(cfg.kind == "WindowedApp", "no", "yes")
end _p(' <General OutputFile="%s" IntermediateDirectory="%s" Command="./%s" CommandArguments="" WorkingDirectory="%s" PauseExecWhenProcTerminates="%s"/>', fname, objdir, runcmd, rundir, pause)
for _,v in ipairs(cfg.defines) do
_p(' <Preprocessor Value="%s"/>', premake.esc(v)) -- begin compiler block --
end local flags = premake.esc(table.join(premake.gcc.getcflags(cfg), premake.gcc.getcxxflags(cfg), cfg.buildoptions))
_p(' </Compiler>') _p(' <Compiler Required="yes" Options="%s">', table.concat(flags, ";"))
-- end compiler block -- for _,v in ipairs(cfg.includedirs) do
-- begin linker block --
flags = premake.esc(table.join(premake.gcc.getldflags(cfg), cfg.linkoptions))
_p(' <Linker Required="yes" Options="%s">', table.concat(flags, ";"))
for _,v in ipairs(premake.getlinks(cfg, "all", "directory")) do
_p(' <LibraryPath Value="%s" />', premake.esc(v))
end
for _,v in ipairs(premake.getlinks(cfg, "all", "basename")) do
_p(' <Library Value="%s" />', premake.esc(v))
end
_p(' </Linker>')
-- end linker block --
-- begin resource compiler block --
if premake.findfile(cfg, ".rc") then
local defines = table.implode(table.join(cfg.defines, cfg.resdefines), "-D", ";", "")
local options = table.concat(cfg.resoptions, ";")
_p(' <ResourceCompiler Required="yes" Options="%s%s">', defines, options)
for _,v in ipairs(table.join(cfg.includedirs, cfg.resincludedirs)) do
_p(' <IncludePath Value="%s"/>', premake.esc(v)) _p(' <IncludePath Value="%s"/>', premake.esc(v))
end end
_p(' </ResourceCompiler>') for _,v in ipairs(cfg.defines) do
else _p(' <Preprocessor Value="%s"/>', premake.esc(v))
_p(' <ResourceCompiler Required="no" Options=""/>')
end
-- end resource compiler block --
-- begin build steps --
if #cfg.prebuildcommands > 0 then
_p(' <PreBuild>')
for _,v in ipairs(cfg.prebuildcommands) do
_p(' <Command Enabled="yes">%s</Command>', premake.esc(v))
end end
_p(' </PreBuild>') _p(' </Compiler>')
end -- end compiler block --
if #cfg.postbuildcommands > 0 then
_p(' <PostBuild>') -- begin linker block --
for _,v in ipairs(cfg.postbuildcommands) do flags = premake.esc(table.join(premake.gcc.getldflags(cfg), cfg.linkoptions))
_p(' <Command Enabled="yes">%s</Command>', premake.esc(v)) _p(' <Linker Required="yes" Options="%s">', table.concat(flags, ";"))
for _,v in ipairs(premake.getlinks(cfg, "all", "directory")) do
_p(' <LibraryPath Value="%s" />', premake.esc(v))
end end
_p(' </PostBuild>') for _,v in ipairs(premake.getlinks(cfg, "all", "basename")) do
_p(' <Library Value="%s" />', premake.esc(v))
end
_p(' </Linker>')
-- end linker block --
-- begin resource compiler block --
if premake.findfile(cfg, ".rc") then
local defines = table.implode(table.join(cfg.defines, cfg.resdefines), "-D", ";", "")
local options = table.concat(cfg.resoptions, ";")
_p(' <ResourceCompiler Required="yes" Options="%s%s">', defines, options)
for _,v in ipairs(table.join(cfg.includedirs, cfg.resincludedirs)) do
_p(' <IncludePath Value="%s"/>', premake.esc(v))
end
_p(' </ResourceCompiler>')
else
_p(' <ResourceCompiler Required="no" Options=""/>')
end
-- end resource compiler block --
-- begin build steps --
if #cfg.prebuildcommands > 0 then
_p(' <PreBuild>')
for _,v in ipairs(cfg.prebuildcommands) do
_p(' <Command Enabled="yes">%s</Command>', premake.esc(v))
end
_p(' </PreBuild>')
end
if #cfg.postbuildcommands > 0 then
_p(' <PostBuild>')
for _,v in ipairs(cfg.postbuildcommands) do
_p(' <Command Enabled="yes">%s</Command>', premake.esc(v))
end
_p(' </PostBuild>')
end
-- end build steps --
_p(' <CustomBuild Enabled="no">')
_p(' <CleanCommand></CleanCommand>')
_p(' <BuildCommand></BuildCommand>')
_p(' <SingleFileCommand></SingleFileCommand>')
_p(' <MakefileGenerationCommand></MakefileGenerationCommand>')
_p(' <ThirdPartyToolName>None</ThirdPartyToolName>')
_p(' <WorkingDirectory></WorkingDirectory>')
_p(' </CustomBuild>')
_p(' <AdditionalRules>')
_p(' <CustomPostBuild></CustomPostBuild>')
_p(' <CustomPreBuild></CustomPreBuild>')
_p(' </AdditionalRules>')
_p(' </Configuration>')
end end
-- end build steps --
_p(' <CustomBuild Enabled="no">')
_p(' <CleanCommand></CleanCommand>')
_p(' <BuildCommand></BuildCommand>')
_p(' <SingleFileCommand></SingleFileCommand>')
_p(' <MakefileGenerationCommand></MakefileGenerationCommand>')
_p(' <ThirdPartyToolName>None</ThirdPartyToolName>')
_p(' <WorkingDirectory></WorkingDirectory>')
_p(' </CustomBuild>')
_p(' <AdditionalRules>')
_p(' <CustomPostBuild></CustomPostBuild>')
_p(' <CustomPreBuild></CustomPreBuild>')
_p(' </AdditionalRules>')
_p(' </Configuration>')
end end
_p(' </Settings>') _p(' </Settings>')
for _,cfgname in ipairs(prj.configurations) do for _, platform in ipairs(platforms) do
_p(' <Dependencies name="%s">', cfgname) for _,cfgname in ipairs(prj.configurations) do
for _,dep in ipairs(premake.getdependencies(prj)) do local name = premake.esc(cfgname)
_p(' <Project Name="%s"/>', dep.name) if platform ~= "Native" then
name = name .. "|" .. platform
end
_p(' <Dependencies name="%s">', name)
for _,dep in ipairs(premake.getdependencies(prj)) do
_p(' <Project Name="%s"/>', dep.name)
end
_p(' </Dependencies>')
end end
_p(' </Dependencies>')
end end
_p('</CodeLite_Project>') _p('</CodeLite_Project>')

View File

@ -15,15 +15,24 @@
_p(' <Project Name="%s" Path="%s.project" Active="%s" />', name, fname, active) _p(' <Project Name="%s" Path="%s.project" Active="%s" />', name, fname, active)
end end
-- build a list of supported target platforms that also includes a generic build
local platforms = premake.filterplatforms(sln, premake[_OPTIONS.cc].platforms, "Native")
_p(' <BuildMatrix>') _p(' <BuildMatrix>')
for _, cfgname in ipairs(sln.configurations) do for _, platform in ipairs(platforms) do
_p(' <WorkspaceConfiguration Name="%s" Selected="yes">', cfgname) for _, cfgname in ipairs(sln.configurations) do
local name = cfgname
if platform ~= "Native" then
name = name .. "|" .. platform
end
_p(' <WorkspaceConfiguration Name="%s" Selected="yes">', name)
for _,prj in ipairs(sln.projects) do for _,prj in ipairs(sln.projects) do
_p(' <Project Name="%s" ConfigName="%s"/>', prj.name, cfgname) _p(' <Project Name="%s" ConfigName="%s"/>', prj.name, name)
end
_p(' </WorkspaceConfiguration>')
end end
_p(' </WorkspaceConfiguration>')
end end
_p(' </BuildMatrix>') _p(' </BuildMatrix>')
_p('</CodeLite_Workspace>') _p('</CodeLite_Workspace>')