Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/premake-4.x-stable.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Schneider <oliver@assarbad.net>2017-03-16 01:44:43 +0300
committerOliver Schneider <oliver@assarbad.net>2017-03-16 01:44:43 +0300
commit254f662b5f6713ec9d757deac116e7ccc8a422d8 (patch)
tree2b782c7fb445641b63562487e8d32a2a42ffbf31
parente6b972d4069fe63d66e59a94a789df1924e9215f (diff)
Adding support for Visual Studio 2017 projects and solutions.
Does not add the VisualStudioVersion and MinimumVisualStudioVersion in solution files, but VS2017 opens those fine regardless and picks them up first even when VS2010, 2012, 2013 and VS2017 are installed as well. Added corresponding tests and verified that all is as expected. --HG-- branch : vs2017_support
-rw-r--r--.hgignore1
-rw-r--r--src/_manifest.lua1
-rw-r--r--src/actions/vstudio/vs2005_solution.lua6
-rw-r--r--src/actions/vstudio/vs2010_vcxproj.lua2
-rw-r--r--src/actions/vstudio/vs2015.lua1
-rw-r--r--src/actions/vstudio/vs2017.lua58
-rw-r--r--tests/actions/vstudio/cs2005/buildevents.lua53
-rwxr-xr-xtests/actions/vstudio/sln2005/header.lua29
-rw-r--r--tests/actions/vstudio/vc2010/test_config_props.lua13
-rw-r--r--tests/premake4.lua1
-rw-r--r--tests/testfx.lua2
11 files changed, 108 insertions, 59 deletions
diff --git a/.hgignore b/.hgignore
index fa9c505..ef2ea98 100644
--- a/.hgignore
+++ b/.hgignore
@@ -41,3 +41,4 @@ intermediate/**
premake4.exe
src/host/hgtip.h
*.asc
+.vs/**
diff --git a/src/_manifest.lua b/src/_manifest.lua
index 19f497a..e8a6619 100644
--- a/src/_manifest.lua
+++ b/src/_manifest.lua
@@ -66,6 +66,7 @@
"actions/vstudio/vs2012.lua",
"actions/vstudio/vs2013.lua",
"actions/vstudio/vs2015.lua",
+ "actions/vstudio/vs2017.lua",
-- Xcode action
"actions/xcode/_xcode.lua",
diff --git a/src/actions/vstudio/vs2005_solution.lua b/src/actions/vstudio/vs2005_solution.lua
index b0942db..7e10ff0 100644
--- a/src/actions/vstudio/vs2005_solution.lua
+++ b/src/actions/vstudio/vs2005_solution.lua
@@ -40,7 +40,11 @@
function sln2005.header(sln)
local action = premake.action.current()
_p('Microsoft Visual Studio Solution File, Format Version %d.00', action.vstudio.solutionVersion)
- _p('# Visual Studio %s', _ACTION:sub(3))
+ if action.vstudio.shortSlnVersion ~= nil then
+ _p('# Visual Studio %s', action.vstudio.shortSlnVersion)
+ else
+ _p('# Visual Studio %s', _ACTION:sub(3))
+ end
end
diff --git a/src/actions/vstudio/vs2010_vcxproj.lua b/src/actions/vstudio/vs2010_vcxproj.lua
index dcff220..d6f9b7b 100644
--- a/src/actions/vstudio/vs2010_vcxproj.lua
+++ b/src/actions/vstudio/vs2010_vcxproj.lua
@@ -79,7 +79,7 @@
_p(2,'<UseDebugLibraries>%s</UseDebugLibraries>', iif(optimisation(cfg) == "Disabled","true","false"))
_p(2,'<CharacterSet>%s</CharacterSet>',iif(cfg.flags.Unicode,"Unicode","MultiByte"))
- local toolsets = { vs2012 = "v110", vs2013 = "v120", vs2015 = "v140" }
+ local toolsets = { vs2012 = "v110", vs2013 = "v120", vs2015 = "v140", vs2017 = "v141" }
local toolset = toolsets[_ACTION]
if toolset then
_p(2,'<PlatformToolset>%s</PlatformToolset>', toolset)
diff --git a/src/actions/vstudio/vs2015.lua b/src/actions/vstudio/vs2015.lua
index 8fa0ca9..9a8ba02 100644
--- a/src/actions/vstudio/vs2015.lua
+++ b/src/actions/vstudio/vs2015.lua
@@ -53,5 +53,6 @@
solutionVersion = "12",
targetFramework = "4.5.2",
toolsVersion = "14.0",
+ shortSlnVersion = "14",
}
}
diff --git a/src/actions/vstudio/vs2017.lua b/src/actions/vstudio/vs2017.lua
new file mode 100644
index 0000000..0bc0a02
--- /dev/null
+++ b/src/actions/vstudio/vs2017.lua
@@ -0,0 +1,58 @@
+--
+-- vs2017.lua
+-- Baseline support for Visual Studio 2017.
+-- Copyright (c) 2013 Jason Perkins and the Premake project
+--
+
+ premake.vstudio.vc2017 = {}
+ local vc2017 = premake.vstudio.vc2017
+ local vstudio = premake.vstudio
+
+
+---
+-- Register a command-line action for Visual Studio 2017.
+---
+
+ newaction
+ {
+ trigger = "vs2017",
+ shortname = "Visual Studio 2017",
+ description = "Generate Microsoft Visual Studio 2017 project files",
+ os = "windows",
+
+ valid_kinds = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib" },
+
+ valid_languages = { "C", "C++", "C#"},
+
+ valid_tools = {
+ cc = { "msc" },
+ dotnet = { "msnet" },
+ },
+
+ onsolution = function(sln)
+ premake.generate(sln, "%%.sln", vstudio.sln2005.generate)
+ end,
+
+ onproject = function(prj)
+ if premake.isdotnetproject(prj) then
+ premake.generate(prj, "%%.csproj", vstudio.cs2005.generate)
+ premake.generate(prj, "%%.csproj.user", vstudio.cs2005.generate_user)
+ else
+ premake.generate(prj, "%%.vcxproj", premake.vs2010_vcxproj)
+ premake.generate(prj, "%%.vcxproj.user", premake.vs2010_vcxproj_user)
+ premake.generate(prj, "%%.vcxproj.filters", vstudio.vc2010.generate_filters)
+ end
+ end,
+
+
+ oncleansolution = premake.vstudio.cleansolution,
+ oncleanproject = premake.vstudio.cleanproject,
+ oncleantarget = premake.vstudio.cleantarget,
+
+ vstudio = {
+ solutionVersion = "12",
+ targetFramework = "4.5.2",
+ toolsVersion = "15.0",
+ shortSlnVersion = "15",
+ }
+ }
diff --git a/tests/actions/vstudio/cs2005/buildevents.lua b/tests/actions/vstudio/cs2005/buildevents.lua
deleted file mode 100644
index 213de1b..0000000
--- a/tests/actions/vstudio/cs2005/buildevents.lua
+++ /dev/null
@@ -1,53 +0,0 @@
---
--- tests/actions/vstudio/cs2005/buildevents.lua
--- Validate the build events in Visual Studio 2005+ .csproj
--- Copyright (c) 2009-2014 Jason Perkins and the Premake project
---
-
- T.vstudio_cs2005_buildevents = { }
- local suite = T.vstudio_cs2005_buildevents
- local cs2005 = premake.vstudio.cs2005
-
---
--- Setup
---
-
- local sln, prj
-
- function suite.setup()
- sln = test.createsolution()
- end
-
- local function prepare()
- premake.bake.buildconfigs()
- prj = premake.solution.getproject(sln, 1)
- cs2005.buildevents(prj)
- end
-
---
--- Prebuild events
---
-
- function suite.prebuildEvents()
- prebuildcommands { "pre" }
- prepare()
- test.capture [[
- <PropertyGroup>
- <PreBuildEvent>pre</PreBuildEvent>
- </PropertyGroup>
- ]]
- end
-
---
--- Postbuild events
---
-
- function suite.postbuildEvents()
- postbuildcommands { "post" }
- prepare()
- test.capture [[
- <PropertyGroup>
- <PostBuildEvent>post</PostBuildEvent>
- </PropertyGroup>
- ]]
- end
diff --git a/tests/actions/vstudio/sln2005/header.lua b/tests/actions/vstudio/sln2005/header.lua
index a959677..2208b42 100755
--- a/tests/actions/vstudio/sln2005/header.lua
+++ b/tests/actions/vstudio/sln2005/header.lua
@@ -76,6 +76,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
]]
+--[[
+VS 2013 seems to add:
+
+VisualStudioVersion = 12.0.31101.0
+MinimumVisualStudioVersion = 10.0.40219.1
+
+which don't seem to be mandatory, though.
+]]
end
function suite.On2015()
@@ -83,10 +91,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00
prepare()
test.capture [[
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2015
+# Visual Studio 14
]]
--[[
-VS2015 seems to add:
+VS 2015 seems to add:
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
@@ -94,3 +102,20 @@ MinimumVisualStudioVersion = 10.0.40219.1
which don't seem to be mandatory, though.
]]
end
+
+ function suite.On2017()
+ _ACTION = "vs2017"
+ prepare()
+ test.capture [[
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+ ]]
+--[[
+VS 2017 seems to add:
+
+VisualStudioVersion = 15.0.26228.4
+MinimumVisualStudioVersion = 10.0.40219.1
+
+which don't seem to be mandatory, though.
+]]
+ end
diff --git a/tests/actions/vstudio/vc2010/test_config_props.lua b/tests/actions/vstudio/vc2010/test_config_props.lua
index 2970ad4..d2f18dd 100644
--- a/tests/actions/vstudio/vc2010/test_config_props.lua
+++ b/tests/actions/vstudio/vc2010/test_config_props.lua
@@ -89,3 +89,16 @@
</PropertyGroup>
]]
end
+
+ function suite.structureIsCorrect_onDefaultValues_on2017()
+ _ACTION = "vs2017"
+ prepare()
+ test.capture [[
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ ]]
+ end
diff --git a/tests/premake4.lua b/tests/premake4.lua
index 6c149e3..b0ebde9 100644
--- a/tests/premake4.lua
+++ b/tests/premake4.lua
@@ -86,7 +86,6 @@
dofile("actions/vstudio/cs2005/projectelement.lua")
dofile("actions/vstudio/cs2005/projectsettings.lua")
dofile("actions/vstudio/cs2005/propertygroup.lua")
- dofile("actions/vstudio/cs2005/buildevents.lua")
-- Visual Studio 2005-2010 solutions
dofile("actions/vstudio/sln2005/dependencies.lua")
diff --git a/tests/testfx.lua b/tests/testfx.lua
index 8342086..5a0f33b 100644
--- a/tests/testfx.lua
+++ b/tests/testfx.lua
@@ -23,7 +23,7 @@
function test.string_does_not_contain(buffer, expected)
if string.find(buffer,expected) then
- test.fail("\n==Fail==: Did not expected to find :\n%s\nyet it was found in buffer:\n%s\n", expected,buffer)
+ test.fail("\n==Fail==: Did not expect to find :\n%s\nyet it was found in buffer:\n%s\n", expected,buffer)
end
end