From 1bcff6cffa30c2fdcf0eac80ef9551429b38f25d Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Fri, 6 Sep 2013 17:05:46 +0000 Subject: [PATCH] msbuild integration: provide separate files for VS2010 and VS2012 The previous msbuild integration only worked if VS2010 was installed. This patch renames the current integration to LLVM-vs2010 and adds LLVM-vs2012. Differential Revision: http://llvm-reviews.chandlerc.com/D1614 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190173 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/msbuild/CMakeLists.txt | 18 +++++++--- ...> Microsoft.Cpp.Win32.LLVM-vs2010.targets} | 0 .../Microsoft.Cpp.Win32.LLVM-vs2012.targets | 3 ++ .../msbuild/Microsoft.Cpp.Win32.llvm.props.in | 2 +- tools/msbuild/install.bat | 34 +++++++++++++----- tools/msbuild/uninstall.bat | 36 ++++++++----------- 6 files changed, 58 insertions(+), 35 deletions(-) rename tools/msbuild/{Microsoft.Cpp.Win32.llvm.targets => Microsoft.Cpp.Win32.LLVM-vs2010.targets} (100%) create mode 100644 tools/msbuild/Microsoft.Cpp.Win32.LLVM-vs2012.targets diff --git a/tools/msbuild/CMakeLists.txt b/tools/msbuild/CMakeLists.txt index 393b22a72cc..860ed22526c 100644 --- a/tools/msbuild/CMakeLists.txt +++ b/tools/msbuild/CMakeLists.txt @@ -1,10 +1,20 @@ if (WIN32) - set(prop_file "Microsoft.Cpp.Win32.llvm.props") + set(prop_file_in "Microsoft.Cpp.Win32.llvm.props.in") + set(prop_file_v100 "Microsoft.Cpp.Win32.LLVM-vs2010.props") + set(prop_file_v110 "Microsoft.Cpp.Win32.LLVM-vs2012.props") # CPack will install a registry key in this format that we wish to reference. set(REG_KEY "${CMAKE_PROJECT_NAME} ${CPACK_PACKAGE_VERSION}") - configure_file(${prop_file}.in ${prop_file}) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${prop_file}" DESTINATION tools/msbuild) + + set(VS_VERSION "v100") + configure_file(${prop_file_in} ${prop_file_v100}) + set(VS_VERSION "v110") + configure_file(${prop_file_in} ${prop_file_v110}) + + set(REG_KEY) + set(VS_VERSION) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${prop_file_v100}" DESTINATION tools/msbuild) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${prop_file_v110}" DESTINATION tools/msbuild) install(DIRECTORY . DESTINATION tools/msbuild @@ -13,4 +23,4 @@ if (WIN32) PATTERN "*.bat" PATTERN ".svn" EXCLUDE ) -endif() +endif() diff --git a/tools/msbuild/Microsoft.Cpp.Win32.llvm.targets b/tools/msbuild/Microsoft.Cpp.Win32.LLVM-vs2010.targets similarity index 100% rename from tools/msbuild/Microsoft.Cpp.Win32.llvm.targets rename to tools/msbuild/Microsoft.Cpp.Win32.LLVM-vs2010.targets diff --git a/tools/msbuild/Microsoft.Cpp.Win32.LLVM-vs2012.targets b/tools/msbuild/Microsoft.Cpp.Win32.LLVM-vs2012.targets new file mode 100644 index 00000000000..f7432f2fe5d --- /dev/null +++ b/tools/msbuild/Microsoft.Cpp.Win32.LLVM-vs2012.targets @@ -0,0 +1,3 @@ + + + diff --git a/tools/msbuild/Microsoft.Cpp.Win32.llvm.props.in b/tools/msbuild/Microsoft.Cpp.Win32.llvm.props.in index 3020d793f92..07e931f95fa 100644 --- a/tools/msbuild/Microsoft.Cpp.Win32.llvm.props.in +++ b/tools/msbuild/Microsoft.Cpp.Win32.llvm.props.in @@ -1,5 +1,5 @@  - + $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\LLVM\@REG_KEY@) diff --git a/tools/msbuild/install.bat b/tools/msbuild/install.bat index db11c863538..2d5af629aff 100644 --- a/tools/msbuild/install.bat +++ b/tools/msbuild/install.bat @@ -1,28 +1,44 @@ @echo off echo Installing MSVC integration... +set SUCCESS=0 REM Change to the directory of this batch file. cd /d %~dp0 REM Search for the MSBuild toolsets directory. SET D="%ProgramFiles%\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets" -IF EXIST %D% GOTO FOUND_MSBUILD +IF EXIST %D% GOTO FOUND_V100 SET D="%ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets" -IF EXIST %D% GOTO FOUND_MSBUILD +IF EXIST %D% GOTO FOUND_V100 -echo Failed to find MSBuild toolsets directory. -goto FAILED +:TRY_V110 +SET D="%ProgramFiles%\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\Win32\PlatformToolsets" +IF EXIST %D% GOTO FOUND_V110 +SET D="%ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\Win32\PlatformToolsets" +IF EXIST %D% GOTO FOUND_V110 + +IF NOT SUCCESS == 1 echo Failed to find MSBuild toolsets directory. +IF NOT SUCCESS == 1 goto FAILED -:FOUND_MSBUILD -IF NOT EXIST %D%\llvm mkdir %D%\llvm -IF NOT %ERRORLEVEL% == 0 GOTO FAILED -copy Microsoft.Cpp.Win32.llvm.props %D%\llvm +:FOUND_V100 +IF NOT EXIST %D%\LLVM-vs2010 mkdir %D%\LLVM-vs2010 +IF NOT %ERRORLEVEL% == 0 GOTO FAILED +copy Microsoft.Cpp.Win32.LLVM-vs2010.props %D%\LLVM-vs2010 IF NOT %ERRORLEVEL% == 0 GOTO FAILED -copy Microsoft.Cpp.Win32.llvm.targets %D%\llvm +copy Microsoft.Cpp.Win32.LLVM-vs2010.targets %D%\LLVM-vs2010 IF NOT %ERRORLEVEL% == 0 GOTO FAILED +set SUCCESS=1 +GOTO TRY_V110 +:FOUND_V110 +IF NOT EXIST %D%\LLVM-vs2012 mkdir %D%\LLVM-vs2012 +IF NOT %ERRORLEVEL% == 0 GOTO FAILED +copy Microsoft.Cpp.Win32.LLVM-vs2012.props %D%\LLVM-vs2012 +IF NOT %ERRORLEVEL% == 0 GOTO FAILED +copy Microsoft.Cpp.Win32.LLVM-vs2012.targets %D%\LLVM-vs2012 +IF NOT %ERRORLEVEL% == 0 GOTO FAILED echo Done! goto END diff --git a/tools/msbuild/uninstall.bat b/tools/msbuild/uninstall.bat index 8bc304e0b82..c6972397e73 100644 --- a/tools/msbuild/uninstall.bat +++ b/tools/msbuild/uninstall.bat @@ -5,30 +5,24 @@ echo Uninstalling MSVC integration... REM CD to the directory of this batch file. cd /d %~dp0 -REM Search for the MSBuild toolsets directory. SET D="%ProgramFiles%\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets" -IF EXIST %D% GOTO FOUND_MSBUILD -SET D="%ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets" -IF EXIST %D% GOTO FOUND_MSBUILD +IF EXIST %D%\LLVM-vs2010 del %D%\LLVM-vs2010\Microsoft.Cpp.Win32.LLVM-vs2010.props +IF EXIST %D%\LLVM-vs2010 del %D%\LLVM-vs2010\Microsoft.Cpp.Win32.LLVM-vs2010.targets +IF EXIST %D%\LLVM-vs2010 rmdir %D%\LLVM-vs2010 -echo Failed to find MSBuild toolsets directory. -goto FAILED +SET D="%ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets" +IF EXIST %D%\LLVM-vs2010 del %D%\LLVM-vs2010\Microsoft.Cpp.Win32.LLVM-vs2010.props +IF EXIST %D%\LLVM-vs2010 del %D%\LLVM-vs2010\Microsoft.Cpp.Win32.LLVM-vs2010.targets +IF EXIST %D%\LLVM-vs2010 rmdir %D%\LLVM-vs2010 -:FOUND_MSBUILD +SET D="%ProgramFiles%\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\Win32\PlatformToolsets" +IF EXIST %D%\LLVM-vs2012 del %D%\LLVM-vs2012\Microsoft.Cpp.Win32.LLVM-vs2012.props +IF EXIST %D%\LLVM-vs2012 del %D%\LLVM-vs2012\Microsoft.Cpp.Win32.LLVM-vs2012.targets +IF EXIST %D%\LLVM-vs2012 rmdir %D%\LLVM-vs2012 -del %D%\llvm\Microsoft.Cpp.Win32.llvm.props -IF NOT %ERRORLEVEL% == 0 GOTO FAILED -del %D%\llvm\Microsoft.Cpp.Win32.llvm.targets -IF NOT %ERRORLEVEL% == 0 GOTO FAILED -rmdir %D%\llvm -IF NOT %ERRORLEVEL% == 0 GOTO FAILED +SET D="%ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\Win32\PlatformToolsets" +IF EXIST %D%\LLVM-vs2012 del %D%\LLVM-vs2012\Microsoft.Cpp.Win32.LLVM-vs2012.props +IF EXIST %D%\LLVM-vs2012 del %D%\LLVM-vs2012\Microsoft.Cpp.Win32.LLVM-vs2012.targets +IF EXIST %D%\LLVM-vs2012 rmdir %D%\LLVM-vs2012 echo Done! -goto END - -:FAILED -echo MSVC integration uninstall failed. -pause -goto END - -:END -- 2.34.1