Merge pull request #377 from starkos/fix-vs-unicode-default

Add new API characterset(); make Premake match Visual Studio default behavior
This commit is contained in:
Jason Perkins 2015-12-21 19:11:49 -05:00
commit e440d1d8a5
8 changed files with 77 additions and 21 deletions

View File

@ -132,6 +132,17 @@
tokens = true,
}
api.register {
name = "characterset",
scope = "config",
kind = "string",
allowed = {
"Default",
"MBCS",
"Unicode",
}
}
api.register {
name = "cleancommands",
scope = "config",
@ -474,7 +485,7 @@
"StaticRuntime",
"Symbols",
"UndefinedIdentifiers",
"Unicode",
"Unicode", -- DEPRECATED
"Unsafe", -- DEPRECATED
"WinMain",
"WPF",
@ -1230,6 +1241,16 @@
clr "On"
end)
-- 18 Dec 2015
api.deprecateValue("flags", "Unicode", nil,
function(value)
characterset "Unicode"
end,
function(value)
characterset "Default"
end)
-----------------------------------------------------------------------------

View File

@ -952,7 +952,7 @@
function m.characterSet(cfg)
if not vstudio.isMakefile(cfg) then
p.w('CharacterSet="%s"', iif(cfg.flags.Unicode, 1, 2))
p.w('CharacterSet="%s"', iif(cfg.characterset == p.MBCS, 2, 1))
end
end

View File

@ -1018,7 +1018,7 @@
function m.characterSet(cfg)
if not vstudio.isMakefile(cfg) then
m.element("CharacterSet", nil, iif(cfg.flags.Unicode, "Unicode", "MultiByte"))
m.element("CharacterSet", nil, iif(cfg.characterset == p.MBCS, "MultiByte", "Unicode"))
end
end

View File

@ -36,6 +36,7 @@
premake.LINUX = "linux"
premake.MACOSX = "macosx"
premake.MAKEFILE = "Makefile"
premake.MBCS = "MBCS"
premake.NONE = "None"
premake.DEFAULT = "Default"
premake.ON = "On"
@ -44,6 +45,7 @@
premake.PS3 = "ps3"
premake.SHAREDLIB = "SharedLib"
premake.STATICLIB = "StaticLib"
premake.UNICODE = "Unicode"
premake.UNIVERSAL = "universal"
premake.UTILITY = "Utility"
premake.WINDOWEDAPP = "WindowedApp"

View File

@ -103,6 +103,7 @@ return {
"actions/vstudio/vc2010/test_assembly_refs.lua",
"actions/vstudio/vc2010/test_build_events.lua",
"actions/vstudio/vc2010/test_build_log.lua",
"actions/vstudio/vc2010/test_character_set.lua",
"actions/vstudio/vc2010/test_compile_settings.lua",
"actions/vstudio/vc2010/test_config_props.lua",
"actions/vstudio/vc2010/test_debug_settings.lua",

View File

@ -40,7 +40,7 @@
OutputDirectory="bin\Debug"
IntermediateDirectory="obj\Debug"
ConfigurationType="1"
CharacterSet="2"
CharacterSet="1"
>
]]
end

View File

@ -0,0 +1,47 @@
--
-- tests/actions/vstudio/vc2010/test_character_set.lua
-- Validate generation Unicode/MBCS settings.
-- Copyright (c) 2011-2015 Jason Perkins and the Premake project
--
local suite = test.declare("vstudio_vs2010_character_set")
local vc2010 = premake.vstudio.vc2010
local wks, prj
function suite.setup()
_ACTION = "vs2010"
wks, prj = test.createWorkspace()
end
local function prepare()
local cfg = test.getconfig(prj, "Debug")
vc2010.characterSet(cfg)
end
function suite.onDefault()
prepare()
test.capture [[
<CharacterSet>Unicode</CharacterSet>
]]
end
function suite.onUnicode()
characterset "Unicode"
prepare()
test.capture [[
<CharacterSet>Unicode</CharacterSet>
]]
end
function suite.onMBCS()
characterset "MBCS"
prepare()
test.capture [[
<CharacterSet>MultiByte</CharacterSet>
]]
end

View File

@ -36,7 +36,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
]]
end
@ -96,21 +96,6 @@
]]
end
--
-- Check the support for Unicode.
--
function suite.characterSet_onUnicode()
flags "Unicode"
prepare()
test.capture [[
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
]]
end
--
-- Check the support for Managed C++.
@ -298,7 +283,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
]]
end