Added PS3 compiler block for Visual Studio
This commit is contained in:
parent
ea8b251082
commit
d87875d2a6
@ -93,6 +93,7 @@
|
|||||||
for _, buildcfg in ipairs(sln.configurations) do
|
for _, buildcfg in ipairs(sln.configurations) do
|
||||||
for _, platform in ipairs(platforms) do
|
for _, platform in ipairs(platforms) do
|
||||||
local entry = { }
|
local entry = { }
|
||||||
|
entry.src_buildcfg = buildcfg
|
||||||
entry.src_platform = platform
|
entry.src_platform = platform
|
||||||
|
|
||||||
-- PS3 is funky and needs special handling; it's more of a build
|
-- PS3 is funky and needs special handling; it's more of a build
|
||||||
|
@ -5,11 +5,241 @@
|
|||||||
--
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Write out the <Platforms> element; ensures that each target platform
|
||||||
|
-- is listed only once. Skips over .NET's pseudo-platforms (like "Any CPU").
|
||||||
|
--
|
||||||
|
|
||||||
|
function premake.vs200x_vcproj_platforms(prj)
|
||||||
|
local used = { }
|
||||||
|
_p('\t<Platforms>')
|
||||||
|
for _, cfg in ipairs(prj.solution.vstudio_configs) do
|
||||||
|
if cfg.isreal and not table.contains(used, cfg.platform) then
|
||||||
|
table.insert(used, cfg.platform)
|
||||||
|
_p('\t\t<Platform')
|
||||||
|
_p('\t\t\tName="%s"', cfg.platform)
|
||||||
|
_p('\t\t/>')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
_p('\t</Platforms>')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Compiler block for Windows and XBox360 platforms.
|
||||||
|
--
|
||||||
|
|
||||||
|
function premake.vs200x_vcproj_VCCLCompilerTool(cfg)
|
||||||
|
_p('\t\t\t<Tool')
|
||||||
|
_p('\t\t\t\tName="%s"', iif(cfg.platform ~= "Xbox360", "VCCLCompilerTool", "VCCLX360CompilerTool"))
|
||||||
|
|
||||||
|
if #cfg.buildoptions > 0 then
|
||||||
|
_p('\t\t\t\tAdditionalOptions="%s"', table.concat(premake.esc(cfg.buildoptions), " "))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tOptimization="%s"', _VS.optimization(cfg))
|
||||||
|
|
||||||
|
if cfg.flags.NoFramePointer then
|
||||||
|
_p('\t\t\t\tOmitFramePointers="%s"', _VS.bool(true))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #cfg.includedirs > 0 then
|
||||||
|
_p('\t\t\t\tAdditionalIncludeDirectories="%s"', premake.esc(path.translate(table.concat(cfg.includedirs, ";"), '\\')))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #cfg.defines > 0 then
|
||||||
|
_p('\t\t\t\tPreprocessorDefinitions="%s"', premake.esc(table.concat(cfg.defines, ";")))
|
||||||
|
end
|
||||||
|
|
||||||
|
if cfg.flags.Symbols and not cfg.flags.Managed then
|
||||||
|
_p('\t\t\t\tMinimalRebuild="%s"', _VS.bool(true))
|
||||||
|
end
|
||||||
|
|
||||||
|
if cfg.flags.NoExceptions then
|
||||||
|
_p('\t\t\t\tExceptionHandling="%s"', iif(_ACTION < "vs2005", "FALSE", 0))
|
||||||
|
elseif cfg.flags.SEH and _ACTION > "vs2003" then
|
||||||
|
_p('\t\t\t\tExceptionHandling="2"')
|
||||||
|
end
|
||||||
|
|
||||||
|
if _VS.optimization(cfg) == 0 and not cfg.flags.Managed then
|
||||||
|
_p('\t\t\t\tBasicRuntimeChecks="3"')
|
||||||
|
end
|
||||||
|
if _VS.optimization(cfg) ~= 0 then
|
||||||
|
_p('\t\t\t\tStringPooling="%s"', _VS.bool(true))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tRuntimeLibrary="%s"', _VS.runtime(cfg))
|
||||||
|
_p('\t\t\t\tEnableFunctionLevelLinking="%s"', _VS.bool(true))
|
||||||
|
|
||||||
|
if _ACTION < "vs2005" and not cfg.flags.NoRTTI then
|
||||||
|
_p('\t\t\t\tRuntimeTypeInfo="%s"', _VS.bool(true))
|
||||||
|
elseif _ACTION > "vs2003" and cfg.flags.NoRTTI then
|
||||||
|
_p('\t\t\t\tRuntimeTypeInfo="%s"', _VS.bool(false))
|
||||||
|
end
|
||||||
|
|
||||||
|
if cfg.flags.NativeWChar then
|
||||||
|
_p('\t\t\t\tTreatWChar_tAsBuiltInType="%s"', _VS.bool(true))
|
||||||
|
elseif cfg.flags.NoNativeWChar then
|
||||||
|
_p('\t\t\t\tTreatWChar_tAsBuiltInType="%s"', _VS.bool(false))
|
||||||
|
end
|
||||||
|
|
||||||
|
if not cfg.flags.NoPCH and cfg.pchheader then
|
||||||
|
_p('\t\t\t\tUsePrecompiledHeader="%s"', iif(_ACTION < "vs2005", 3, 2))
|
||||||
|
_p('\t\t\t\tPrecompiledHeaderThrough="%s"', cfg.pchheader)
|
||||||
|
else
|
||||||
|
_p('\t\t\t\tUsePrecompiledHeader="%s"', iif(_ACTION > "vs2003" or cfg.flags.NoPCH, 0, 2))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tWarningLevel="%s"', iif(cfg.flags.ExtraWarnings, 4, 3))
|
||||||
|
|
||||||
|
if cfg.flags.FatalWarnings then
|
||||||
|
_p('\t\t\t\tWarnAsError="%s"', _VS.bool(true))
|
||||||
|
end
|
||||||
|
|
||||||
|
if _ACTION < "vs2008" and not cfg.flags.Managed then
|
||||||
|
_p('\t\t\t\tDetect64BitPortabilityProblems="%s"', _VS.bool(not cfg.flags.No64BitChecks))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tProgramDataBaseFileName="$(OutDir)\\$(ProjectName).pdb"')
|
||||||
|
_p('\t\t\t\tDebugInformationFormat="%s"', _VS.symbols(cfg))
|
||||||
|
_p('\t\t\t/>')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Linker block for Windows and Xbox 360 platforms.
|
||||||
|
--
|
||||||
|
|
||||||
|
function premake.vs200x_vcproj_VCLinkerTool(cfg)
|
||||||
|
_p('\t\t\t<Tool')
|
||||||
|
if cfg.kind ~= "StaticLib" then
|
||||||
|
_p('\t\t\t\tName="%s"', iif(cfg.platform ~= "Xbox360", "VCLinkerTool", "VCX360LinkerTool"))
|
||||||
|
|
||||||
|
if cfg.flags.NoImportLib then
|
||||||
|
_p('\t\t\t\tIgnoreImportLibrary="%s"', _VS.bool(true))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #cfg.linkoptions > 0 then
|
||||||
|
_p('\t\t\t\tAdditionalOptions="%s"', table.concat(premake.esc(cfg.linkoptions), " "))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #cfg.links > 0 then
|
||||||
|
_p('\t\t\t\tAdditionalDependencies="%s"', table.concat(premake.getlinks(cfg, "all", "fullpath"), " "))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tOutputFile="$(OutDir)\\%s"', cfg.buildtarget.name)
|
||||||
|
_p('\t\t\t\tLinkIncremental="%s"', iif(_VS.optimization(cfg) == 0, 2, 1))
|
||||||
|
_p('\t\t\t\tAdditionalLibraryDirectories="%s"', table.concat(premake.esc(path.translate(cfg.libdirs, '\\')) , ";"))
|
||||||
|
|
||||||
|
local deffile = premake.findfile(cfg, ".def")
|
||||||
|
if deffile then
|
||||||
|
_p('\t\t\t\tModuleDefinitionFile="%s"', deffile)
|
||||||
|
end
|
||||||
|
|
||||||
|
if cfg.flags.NoManifest then
|
||||||
|
_p('\t\t\t\tGenerateManifest="%s"', _VS.bool(false))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tGenerateDebugInformation="%s"', _VS.bool(_VS.symbols(cfg) ~= 0))
|
||||||
|
|
||||||
|
if _VS.symbols(cfg) ~= 0 then
|
||||||
|
_p('\t\t\t\tProgramDatabaseFile="$(OutDir)\\$(ProjectName).pdb"')
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tSubSystem="%s"', iif(cfg.kind == "ConsoleApp", 1, 2))
|
||||||
|
|
||||||
|
if _VS.optimization(cfg) ~= 0 then
|
||||||
|
_p('\t\t\t\tOptimizeReferences="2"')
|
||||||
|
_p('\t\t\t\tEnableCOMDATFolding="2"')
|
||||||
|
end
|
||||||
|
|
||||||
|
if (cfg.kind == "ConsoleApp" or cfg.kind == "WindowedApp") and not cfg.flags.WinMain then
|
||||||
|
_p('\t\t\t\tEntryPointSymbol="mainCRTStartup"')
|
||||||
|
end
|
||||||
|
|
||||||
|
if cfg.kind == "SharedLib" then
|
||||||
|
local implibname = path.translate(premake.gettarget(cfg, "link", "windows").fullpath, "\\")
|
||||||
|
_p('\t\t\t\tImportLibrary="%s"', iif(cfg.flags.NoImportLib, cfg.objectsdir .. "\\" .. path.getname(implibname), implibname))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tTargetMachine="1"')
|
||||||
|
|
||||||
|
else
|
||||||
|
_p('\t\t\t\tName="VCLibrarianTool"')
|
||||||
|
|
||||||
|
if #cfg.links > 0 then
|
||||||
|
_p('\t\t\t\tAdditionalDependencies="%s"', table.concat(premake.getlinks(cfg, "all", "fullpath"), " "))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tOutputFile="$(OutDir)\\%s"', cfg.buildtarget.name)
|
||||||
|
_p('\t\t\t\tAdditionalLibraryDirectories="%s"', table.concat(premake.esc(path.translate(cfg.libdirs)) , ";"))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t/>')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Compiler block for the PS3 platform, which uses GCC.
|
||||||
|
--
|
||||||
|
|
||||||
|
function premake.vs200x_vcproj_VCCLCompilerTool_GCC(cfg)
|
||||||
|
_p('\t\t\t<Tool')
|
||||||
|
_p('\t\t\t\tName="VCCLCompilerTool"')
|
||||||
|
|
||||||
|
local buildoptions = table.join(premake.gcc.getcflags(cfg), premake.gcc.getcxxflags(cfg), cfg.buildoptions)
|
||||||
|
if #buildoptions > 0 then
|
||||||
|
_p('\t\t\t\tAdditionalOptions="%s"', premake.esc(table.concat(buildoptions, " ")))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #cfg.includedirs > 0 then
|
||||||
|
_p('\t\t\t\tAdditionalIncludeDirectories="%s"', premake.esc(path.translate(table.concat(cfg.includedirs, ";"), '\\')))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #cfg.defines > 0 then
|
||||||
|
_p('\t\t\t\tPreprocessorDefinitions="%s"', table.concat(premake.esc(cfg.defines), ";"))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t\tProgramDataBaseFileName="$(OutDir)\\$(ProjectName).pdb"')
|
||||||
|
_p('\t\t\t\tDebugInformationFormat="0"')
|
||||||
|
_p('\t\t\t\tCompileAs="0"')
|
||||||
|
_p('\t\t\t/>')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Resource compiler block.
|
||||||
|
--
|
||||||
|
|
||||||
|
function premake.vs200x_vcproj_VCResourceCompilerTool(cfg)
|
||||||
|
_p('\t\t\t<Tool')
|
||||||
|
_p('\t\t\t\tName="VCResourceCompilerTool"')
|
||||||
|
|
||||||
|
if #cfg.resoptions > 0 then
|
||||||
|
_p('\t\t\t\tAdditionalOptions="%s"', table.concat(premake.esc(cfg.resoptions), " "))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #cfg.defines > 0 or #cfg.resdefines > 0 then
|
||||||
|
_p('\t\t\t\tPreprocessorDefinitions="%s"', table.concat(premake.esc(table.join(cfg.defines, cfg.resdefines)), ";"))
|
||||||
|
end
|
||||||
|
|
||||||
|
if #cfg.includedirs > 0 or #cfg.resincludedirs > 0 then
|
||||||
|
local dirs = table.join(cfg.includedirs, cfg.resincludedirs)
|
||||||
|
_p('\t\t\t\tAdditionalIncludeDirectories="%s"', premake.esc(path.translate(table.concat(dirs, ";"), '\\')))
|
||||||
|
end
|
||||||
|
|
||||||
|
_p('\t\t\t/>')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Write out a custom build steps block.
|
-- Write out a custom build steps block.
|
||||||
--
|
--
|
||||||
|
|
||||||
local function buildstepsblock(name, steps)
|
function premake.vs200x_vcproj_buildstepsblock(name, steps)
|
||||||
_p('\t\t\t<Tool')
|
_p('\t\t\t<Tool')
|
||||||
_p('\t\t\t\tName="%s"', name)
|
_p('\t\t\t\tName="%s"', name)
|
||||||
if #steps > 0 then
|
if #steps > 0 then
|
||||||
@ -19,6 +249,21 @@
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Map project tool blocks to handler functions. Unmapped blocks will output
|
||||||
|
-- an empty <Tool> element.
|
||||||
|
--
|
||||||
|
|
||||||
|
local blockmap =
|
||||||
|
{
|
||||||
|
VCCLCompilerTool = premake.vs200x_vcproj_VCCLCompilerTool,
|
||||||
|
VCCLCompilerTool_GCC = premake.vs200x_vcproj_VCCLCompilerTool_GCC,
|
||||||
|
VCLinkerTool = premake.vs200x_vcproj_VCLinkerTool,
|
||||||
|
VCResourceCompilerTool = premake.vs200x_vcproj_VCResourceCompilerTool,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Return a list of sections for a particular Visual Studio version and target platform.
|
-- Return a list of sections for a particular Visual Studio version and target platform.
|
||||||
--
|
--
|
||||||
@ -62,7 +307,7 @@
|
|||||||
"VCXMLDataGeneratorTool",
|
"VCXMLDataGeneratorTool",
|
||||||
"VCWebServiceProxyGeneratorTool",
|
"VCWebServiceProxyGeneratorTool",
|
||||||
"VCMIDLTool",
|
"VCMIDLTool",
|
||||||
"VCCLX360CompilerTool",
|
"VCCLCompilerTool",
|
||||||
"VCManagedResourceCompilerTool",
|
"VCManagedResourceCompilerTool",
|
||||||
"VCResourceCompilerTool",
|
"VCResourceCompilerTool",
|
||||||
"VCPreLinkEventTool",
|
"VCPreLinkEventTool",
|
||||||
@ -74,6 +319,28 @@
|
|||||||
"VCPostBuildEventTool",
|
"VCPostBuildEventTool",
|
||||||
"DebuggerTool",
|
"DebuggerTool",
|
||||||
}
|
}
|
||||||
|
end
|
||||||
|
if platform == "PS3" then
|
||||||
|
return {
|
||||||
|
"VCPreBuildEventTool",
|
||||||
|
"VCCustomBuildTool",
|
||||||
|
"VCXMLDataGeneratorTool",
|
||||||
|
"VCWebServiceProxyGeneratorTool",
|
||||||
|
"VCMIDLTool",
|
||||||
|
"VCCLCompilerTool_GCC",
|
||||||
|
"VCManagedResourceCompilerTool",
|
||||||
|
"VCResourceCompilerTool",
|
||||||
|
"VCPreLinkEventTool",
|
||||||
|
"VCLinkerTool",
|
||||||
|
"VCALinkTool",
|
||||||
|
"VCManifestTool",
|
||||||
|
"VCXDCMakeTool",
|
||||||
|
"VCBscMakeTool",
|
||||||
|
"VCFxCopTool",
|
||||||
|
"VCAppVerifierTool",
|
||||||
|
"VCWebDeploymentTool",
|
||||||
|
"VCPostBuildEventTool"
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return {
|
return {
|
||||||
"VCPreBuildEventTool",
|
"VCPreBuildEventTool",
|
||||||
@ -100,27 +367,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Write out the <Platforms> element; ensures that each target platform
|
|
||||||
-- is listed only once. Skips over .NET's pseudo-platforms (like "Any CPU").
|
|
||||||
--
|
|
||||||
|
|
||||||
function premake.vs200x_vcproj_platforms(prj)
|
|
||||||
local used = { }
|
|
||||||
_p('\t<Platforms>')
|
|
||||||
for _, cfg in ipairs(prj.solution.vstudio_configs) do
|
|
||||||
if cfg.isreal and not table.contains(used, cfg.platform) then
|
|
||||||
table.insert(used, cfg.platform)
|
|
||||||
_p('\t\t<Platform')
|
|
||||||
_p('\t\t\tName="%s"', cfg.platform)
|
|
||||||
_p('\t\t/>')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
_p('\t</Platforms>')
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- The main function: write the project file.
|
-- The main function: write the project file.
|
||||||
--
|
--
|
||||||
@ -160,7 +406,7 @@
|
|||||||
_p('\t<Configurations>')
|
_p('\t<Configurations>')
|
||||||
for _, cfginfo in ipairs(prj.solution.vstudio_configs) do
|
for _, cfginfo in ipairs(prj.solution.vstudio_configs) do
|
||||||
if cfginfo.isreal then
|
if cfginfo.isreal then
|
||||||
local cfg = premake.getconfig(prj, cfginfo.buildcfg, cfginfo.src_platform)
|
local cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)
|
||||||
|
|
||||||
-- Start a configuration
|
-- Start a configuration
|
||||||
_p('\t\t<Configuration')
|
_p('\t\t<Configuration')
|
||||||
@ -176,142 +422,16 @@
|
|||||||
|
|
||||||
for _, block in ipairs(getsections(_ACTION, cfginfo.src_platform)) do
|
for _, block in ipairs(getsections(_ACTION, cfginfo.src_platform)) do
|
||||||
|
|
||||||
-- Compiler block --
|
if blockmap[block] then
|
||||||
if block == "VCCLCompilerTool" or block == "VCCLX360CompilerTool" then
|
blockmap[block](cfg)
|
||||||
_p('\t\t\t<Tool')
|
|
||||||
_p('\t\t\t\tName="%s"', block)
|
|
||||||
if #cfg.buildoptions > 0 then
|
|
||||||
_p('\t\t\t\tAdditionalOptions="%s"', table.concat(premake.esc(cfg.buildoptions), " "))
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tOptimization="%s"', _VS.optimization(cfg))
|
|
||||||
if cfg.flags.NoFramePointer then
|
|
||||||
_p('\t\t\t\tOmitFramePointers="%s"', _VS.bool(true))
|
|
||||||
end
|
|
||||||
if #cfg.includedirs > 0 then
|
|
||||||
_p('\t\t\t\tAdditionalIncludeDirectories="%s"', table.concat(premake.esc(cfg.includedirs), ";"))
|
|
||||||
end
|
|
||||||
if #cfg.defines > 0 then
|
|
||||||
_p('\t\t\t\tPreprocessorDefinitions="%s"', table.concat(premake.esc(cfg.defines), ";"))
|
|
||||||
end
|
|
||||||
if cfg.flags.Symbols and not cfg.flags.Managed then
|
|
||||||
_p('\t\t\t\tMinimalRebuild="%s"', _VS.bool(true))
|
|
||||||
end
|
|
||||||
if cfg.flags.NoExceptions then
|
|
||||||
_p('\t\t\t\tExceptionHandling="%s"', iif(_ACTION < "vs2005", "FALSE", 0))
|
|
||||||
elseif cfg.flags.SEH and _ACTION > "vs2003" then
|
|
||||||
_p('\t\t\t\tExceptionHandling="2"')
|
|
||||||
end
|
|
||||||
if _VS.optimization(cfg) == 0 and not cfg.flags.Managed then
|
|
||||||
_p('\t\t\t\tBasicRuntimeChecks="3"')
|
|
||||||
end
|
|
||||||
if _VS.optimization(cfg) ~= 0 then
|
|
||||||
_p('\t\t\t\tStringPooling="%s"', _VS.bool(true))
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tRuntimeLibrary="%s"', _VS.runtime(cfg))
|
|
||||||
_p('\t\t\t\tEnableFunctionLevelLinking="%s"', _VS.bool(true))
|
|
||||||
if _ACTION < "vs2005" and not cfg.flags.NoRTTI then
|
|
||||||
_p('\t\t\t\tRuntimeTypeInfo="%s"', _VS.bool(true))
|
|
||||||
elseif _ACTION > "vs2003" and cfg.flags.NoRTTI then
|
|
||||||
_p('\t\t\t\tRuntimeTypeInfo="%s"', _VS.bool(false))
|
|
||||||
end
|
|
||||||
if cfg.flags.NativeWChar then
|
|
||||||
_p('\t\t\t\tTreatWChar_tAsBuiltInType="%s"', _VS.bool(true))
|
|
||||||
elseif cfg.flags.NoNativeWChar then
|
|
||||||
_p('\t\t\t\tTreatWChar_tAsBuiltInType="%s"', _VS.bool(false))
|
|
||||||
end
|
|
||||||
if not cfg.flags.NoPCH and cfg.pchheader then
|
|
||||||
_p('\t\t\t\tUsePrecompiledHeader="%s"', iif(_ACTION < "vs2005", 3, 2))
|
|
||||||
_p('\t\t\t\tPrecompiledHeaderThrough="%s"', cfg.pchheader)
|
|
||||||
else
|
|
||||||
_p('\t\t\t\tUsePrecompiledHeader="%s"', iif(_ACTION > "vs2003" or cfg.flags.NoPCH, 0, 2))
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tWarningLevel="%s"', iif(cfg.flags.ExtraWarnings, 4, 3))
|
|
||||||
if cfg.flags.FatalWarnings then
|
|
||||||
_p('\t\t\t\tWarnAsError="%s"', _VS.bool(true))
|
|
||||||
end
|
|
||||||
if _ACTION < "vs2008" and not cfg.flags.Managed then
|
|
||||||
_p('\t\t\t\tDetect64BitPortabilityProblems="%s"', _VS.bool(not cfg.flags.No64BitChecks))
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tProgramDataBaseFileName="$(OutDir)\\$(ProjectName).pdb"')
|
|
||||||
_p('\t\t\t\tDebugInformationFormat="%s"', _VS.symbols(cfg))
|
|
||||||
_p('\t\t\t/>')
|
|
||||||
-- End compiler block --
|
|
||||||
|
|
||||||
-- Linker block --
|
|
||||||
elseif block == "VCLinkerTool" or block == "VCX360LinkerTool" then
|
|
||||||
_p('\t\t\t<Tool')
|
|
||||||
if cfg.kind ~= "StaticLib" then
|
|
||||||
_p('\t\t\t\tName="%s"', block)
|
|
||||||
if cfg.flags.NoImportLib then
|
|
||||||
_p('\t\t\t\tIgnoreImportLibrary="%s"', _VS.bool(true))
|
|
||||||
end
|
|
||||||
if #cfg.linkoptions > 0 then
|
|
||||||
_p('\t\t\t\tAdditionalOptions="%s"', table.concat(premake.esc(cfg.linkoptions), " "))
|
|
||||||
end
|
|
||||||
if #cfg.links > 0 then
|
|
||||||
_p('\t\t\t\tAdditionalDependencies="%s"', table.concat(premake.getlinks(cfg, "all", "fullpath"), " "))
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tOutputFile="$(OutDir)\\%s"', cfg.buildtarget.name)
|
|
||||||
_p('\t\t\t\tLinkIncremental="%s"', iif(_VS.optimization(cfg) == 0, 2, 1))
|
|
||||||
_p('\t\t\t\tAdditionalLibraryDirectories="%s"', table.concat(premake.esc(path.translate(cfg.libdirs)) , ";"))
|
|
||||||
local deffile = premake.findfile(cfg, ".def")
|
|
||||||
if deffile then
|
|
||||||
_p('\t\t\t\tModuleDefinitionFile="%s"', deffile)
|
|
||||||
end
|
|
||||||
if cfg.flags.NoManifest then
|
|
||||||
_p('\t\t\t\tGenerateManifest="%s"', _VS.bool(false))
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tGenerateDebugInformation="%s"', _VS.bool(_VS.symbols(cfg) ~= 0))
|
|
||||||
if _VS.symbols(cfg) ~= 0 then
|
|
||||||
_p('\t\t\t\tProgramDatabaseFile="$(OutDir)\\$(ProjectName).pdb"')
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tSubSystem="%s"', iif(cfg.kind == "ConsoleApp", 1, 2))
|
|
||||||
if _VS.optimization(cfg) ~= 0 then
|
|
||||||
_p('\t\t\t\tOptimizeReferences="2"')
|
|
||||||
_p('\t\t\t\tEnableCOMDATFolding="2"')
|
|
||||||
end
|
|
||||||
if (cfg.kind == "ConsoleApp" or cfg.kind == "WindowedApp") and not cfg.flags.WinMain then
|
|
||||||
_p('\t\t\t\tEntryPointSymbol="mainCRTStartup"')
|
|
||||||
end
|
|
||||||
if cfg.kind == "SharedLib" then
|
|
||||||
local implibname = path.translate(premake.gettarget(cfg, "link", "windows").fullpath, "\\")
|
|
||||||
_p('\t\t\t\tImportLibrary="%s"', iif(cfg.flags.NoImportLib, cfg.objectsdir .. "\\" .. path.getname(implibname), implibname))
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tTargetMachine="1"')
|
|
||||||
else
|
|
||||||
_p('\t\t\t\tName="VCLibrarianTool"')
|
|
||||||
if #cfg.links > 0 then
|
|
||||||
_p('\t\t\t\tAdditionalDependencies="%s"', table.concat(premake.getlinks(cfg, "all", "fullpath"), " "))
|
|
||||||
end
|
|
||||||
_p('\t\t\t\tOutputFile="$(OutDir)\\%s"', cfg.buildtarget.name)
|
|
||||||
_p('\t\t\t\tAdditionalLibraryDirectories="%s"', table.concat(premake.esc(path.translate(cfg.libdirs)) , ";"))
|
|
||||||
end
|
|
||||||
_p('\t\t\t/>')
|
|
||||||
-- End linker block --
|
|
||||||
|
|
||||||
-- Resource compiler --
|
|
||||||
elseif block == "VCResourceCompilerTool" then
|
|
||||||
_p('\t\t\t<Tool')
|
|
||||||
_p('\t\t\t\tName="VCResourceCompilerTool"')
|
|
||||||
if #cfg.resoptions > 0 then
|
|
||||||
_p('\t\t\t\tAdditionalOptions="%s"', table.concat(premake.esc(cfg.resoptions), " "))
|
|
||||||
end
|
|
||||||
if #cfg.defines > 0 or #cfg.resdefines > 0 then
|
|
||||||
_p('\t\t\t\tPreprocessorDefinitions="%s"', table.concat(premake.esc(table.join(cfg.defines, cfg.resdefines)), ";"))
|
|
||||||
end
|
|
||||||
if #cfg.includedirs > 0 or #cfg.resincludedirs > 0 then
|
|
||||||
_p('\t\t\t\tAdditionalIncludeDirectories="%s"', table.concat(premake.esc(table.join(cfg.includedirs, cfg.resincludedirs)), ";"))
|
|
||||||
end
|
|
||||||
_p('\t\t\t/>')
|
|
||||||
-- End resource compiler --
|
|
||||||
|
|
||||||
-- Build event blocks --
|
-- Build event blocks --
|
||||||
elseif block == "VCPreBuildEventTool" then
|
elseif block == "VCPreBuildEventTool" then
|
||||||
buildstepsblock("VCPreBuildEventTool", cfg.prebuildcommands)
|
premake.vs200x_vcproj_buildstepsblock("VCPreBuildEventTool", cfg.prebuildcommands)
|
||||||
elseif block == "VCPreLinkEventTool" then
|
elseif block == "VCPreLinkEventTool" then
|
||||||
buildstepsblock("VCPreLinkEventTool", cfg.prelinkcommands)
|
premake.vs200x_vcproj_buildstepsblock("VCPreLinkEventTool", cfg.prelinkcommands)
|
||||||
elseif block == "VCPostBuildEventTool" then
|
elseif block == "VCPostBuildEventTool" then
|
||||||
buildstepsblock("VCPostBuildEventTool", cfg.postbuildcommands)
|
premake.vs200x_vcproj_buildstepsblock("VCPostBuildEventTool", cfg.postbuildcommands)
|
||||||
-- End build event blocks --
|
-- End build event blocks --
|
||||||
|
|
||||||
-- Xbox 360 custom sections --
|
-- Xbox 360 custom sections --
|
||||||
@ -352,3 +472,4 @@
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,15 +16,15 @@
|
|||||||
configurations { "Debug", "Release" }
|
configurations { "Debug", "Release" }
|
||||||
platforms {}
|
platforms {}
|
||||||
|
|
||||||
|
project "DotNetProject" -- to test handling of .NET platform in solution
|
||||||
|
language "C#"
|
||||||
|
kind "ConsoleApp"
|
||||||
|
|
||||||
prj = project "MyProject"
|
prj = project "MyProject"
|
||||||
language "C++"
|
language "C++"
|
||||||
kind "ConsoleApp"
|
kind "ConsoleApp"
|
||||||
uuid "AE61726D-187C-E440-BD07-2556188A6565"
|
uuid "AE61726D-187C-E440-BD07-2556188A6565"
|
||||||
|
|
||||||
project "DotNetProject" -- to test handling of .NET platform in solution
|
|
||||||
language "C#"
|
|
||||||
kind "ConsoleApp"
|
|
||||||
|
|
||||||
_ACTION = 'vs2005'
|
_ACTION = 'vs2005'
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
premake.buildconfigs()
|
premake.buildconfigs()
|
||||||
sln.vstudio_configs = premake.vstudio_buildconfigs(sln)
|
sln.vstudio_configs = premake.vstudio_buildconfigs(sln)
|
||||||
|
|
||||||
local cfg = premake.getconfig(sln.projects[1])
|
local cfg = premake.getconfig(sln.projects[2])
|
||||||
cfg.name = prj.name
|
cfg.name = prj.name
|
||||||
cfg.blocks = prj.blocks
|
cfg.blocks = prj.blocks
|
||||||
prj = cfg
|
prj = cfg
|
||||||
@ -273,6 +273,47 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Test Xbox360 handling
|
||||||
|
--
|
||||||
|
|
||||||
|
function T.vs200x_vcproj.PlatformsList_OnXbox360()
|
||||||
|
platforms { "Native", "Xbox360" }
|
||||||
|
prepare()
|
||||||
|
premake.vs200x_vcproj_platforms(prj)
|
||||||
|
test.capture [[
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
<Platform
|
||||||
|
Name="Xbox 360"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
]]
|
||||||
|
end
|
||||||
|
|
||||||
|
function T.vs200x_vcproj.CompilerBlock_OnXbox360()
|
||||||
|
platforms { "Xbox360" }
|
||||||
|
prepare()
|
||||||
|
premake.vs200x_vcproj_VCCLCompilerTool(premake.getconfig(prj, "Debug", "Xbox360"))
|
||||||
|
test.capture [[
|
||||||
|
<Tool
|
||||||
|
Name="VCCLX360CompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="3"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="true"
|
||||||
|
ProgramDataBaseFileName="$(OutDir)\$(ProjectName).pdb"
|
||||||
|
DebugInformationFormat="0"
|
||||||
|
/>
|
||||||
|
]]
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Test PS3 handling
|
-- Test PS3 handling
|
||||||
--
|
--
|
||||||
@ -289,3 +330,23 @@
|
|||||||
</Platforms>
|
</Platforms>
|
||||||
]]
|
]]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function T.vs200x_vcproj.CompilerBlock_OnPS3()
|
||||||
|
platforms { "PS3" }
|
||||||
|
flags { "Symbols" }
|
||||||
|
includedirs { "include/pkg1", "include/pkg2" }
|
||||||
|
defines { "DEFINE1", "DEFINE2" }
|
||||||
|
prepare()
|
||||||
|
premake.vs200x_vcproj_VCCLCompilerTool_GCC(premake.getconfig(prj, "Debug", "PS3"))
|
||||||
|
test.capture [[
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="-g"
|
||||||
|
AdditionalIncludeDirectories="include\pkg1;include\pkg2"
|
||||||
|
PreprocessorDefinitions="DEFINE1;DEFINE2"
|
||||||
|
ProgramDataBaseFileName="$(OutDir)\$(ProjectName).pdb"
|
||||||
|
DebugInformationFormat="0"
|
||||||
|
CompileAs="0"
|
||||||
|
/>
|
||||||
|
]]
|
||||||
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user