Browse Source

Added support for Visual Studio 2015 (aka Visual Studio 14).

Alex Szpakowski 10 years ago
parent
commit
87a0848869
1 changed files with 44 additions and 44 deletions
  1. 44 44
      CMakeLists.txt

+ 44 - 44
CMakeLists.txt

@@ -60,59 +60,61 @@ function(disable_warnings ARG_TARGET)
 endfunction()
 
 # Look for dynamic runtime DLLs.
-if(MSVC11)
-	set(VS110COMNTOOLS "$ENV{VS110COMNTOOLS}")
-	if(${VS110COMNTOOLS} STREQUAL "")
-		message(WARNING "Environment variable VS110COMNTOOLS not defined. Is VS11 properly installed?")
+if(MSVC)
+	if(MSVC14)
+		set(VSVERSION "140")
+	elseif(MSVC12)
+		set(VSVERSION "120")
+	elseif(MSVC11 OR MSVC10)
+		message(WARNING "Visual Studio 2013 (VS12) or newer is required!")
 	else()
-		get_filename_component(VS110_REDIST_DIR ${VS110COMNTOOLS}/../../VC/redist/${MEGA_ARCH}/Microsoft.VC110.CRT ABSOLUTE)
-		set(MSVCP110_DLL ${VS110_REDIST_DIR}/msvcp110.dll)
-		set(MSVCR110_DLL ${VS110_REDIST_DIR}/msvcr110.dll)
-		if(EXISTS ${MSVCP110_DLL} AND EXISTS ${MSVCR110_DLL})
-			message(STATUS "Found msvcp110.dll, msvcr110.dll")
-			set(MEGA_MSVC_DLLS ${MSVCP110_DLL} ${MSVCR110_DLL})
-		else()
-			message(WARNING "Could not find msvcp110.dll, msvcr110.dll")
-		endif()
-
-		# Find vcvarsall.bat.
-		get_filename_component(VS110_VCVARSALL_BAT ${VS110COMNTOOLS}/../../VC/vcvarsall.bat ABSOLUTE)
+		message(WARNING "Cannot determine Visual Studio version!")
+	endif()
 
-		if(EXISTS ${VS110_VCVARSALL_BAT})
-			message(STATUS "Found vsvarsall.bat")
-			set(MEGA_MSVC_VCVARSALL_BAT ${VS110_VCVARSALL_BAT})
+	set(VSCOMNTOOLSSTRING "VS${VSVERSION}COMNTOOLS")
+	set(VSCOMNTOOLS "$ENV{${VSCOMNTOOLSSTRING}}")
 
-			if(MEGA_X86)
-				set(MEGA_MSVC_VCVARSALL_BAT_ARG "x86")
-			else()
-				set(MEGA_MSVC_VCVARSALL_BAT_ARG "x86_amd64")
-			endif()
+	if(VSCOMNTOOLS STREQUAL "")
+		message(WARNING "Environment variable VSCOMNTOOLS not defined. Is Visual Studio properly installed?")
+	else()
+		get_filename_component(VS_REDIST_DIR ${VSCOMNTOOLS}/../../VC/redist/${MEGA_ARCH}/Microsoft.VC${VSVERSION}.CRT ABSOLUTE)
+		set(MSVCP_DLL ${VS_REDIST_DIR}/msvcp${VSVERSION}.dll)
+		if(MSVC12)
+			set(MSVCR_DLL ${VS_REDIST_DIR}/msvcr${VSVERSION}.dll)
 		else()
-			message(WARNING "Could not find vsvarsall.bat")
+			set(MSVCR_DLL ${VS_REDIST_DIR}/vcruntime${VSVERSION}.dll)
+			# TODO: add ucrtbase.dll from Program Files (x86)\Windows Kits\10\Redist\ucrt\ ($(UniversalCRT_LibraryPath_${MEGA_ARCH}))
 		endif()
 
-	endif()
-elseif(MSVC12)
-	set(VS120COMNTOOLS "$ENV{VS120COMNTOOLS}")
-	if(${VS120COMNTOOLS} STREQUAL "")
-		message(WARNING "Environment variable VS120COMNTOOLS not defined. Is VS12 properly installed?")
-	else()
-		get_filename_component(VS120_REDIST_DIR ${VS120COMNTOOLS}/../../VC/redist/${MEGA_ARCH}/Microsoft.VC120.CRT ABSOLUTE)
-		set(MSVCP120_DLL ${VS120_REDIST_DIR}/msvcp120.dll)
-		set(MSVCR120_DLL ${VS120_REDIST_DIR}/msvcr120.dll)
-		if(EXISTS ${MSVCP120_DLL} AND EXISTS ${MSVCR120_DLL})
-			message(STATUS "Found msvcp120.dll, msvcr120.dll")
-			set(MEGA_MSVC_DLLS ${MSVCP120_DLL} ${MSVCR120_DLL})
+		if (EXISTS ${MSVCP_DLL} AND EXISTS ${MSVCR_DLL})
+			message(STATUS "Found Visual C and C++ runtime .dll files")
+			set(MEGA_MSVC_DLLS ${MSVCP_DLL} ${MSVCR_DLL})
 		else()
-			message(WARNING "Could not find msvcp120.dll, msvcr120.dll")
+			message(WARNING "Could not find Visual C and C++ runtime .dll files")
+		endif()
+
+		# FIXME: Find some way to avoid hard-coding the version and paths here...
+		if(MSVC14)
+			get_filename_component(UCRT_DIR "${VSCOMNTOOLS}/../../../Windows Kits/10" ABSOLUTE)
+			if(EXISTS ${UCRT_DIR})
+				set(UCRT_DLL ${UCRT_DIR}/Redist/ucrt/DLLs/${MEGA_ARCH}/ucrtbase.dll)
+				if(EXISTS ${UCRT_DLL})
+					set(MEGA_MSVC_DLLS ${MEGA_MSVC_DLLS} ${UCRT_DLL})
+					message(STATUS "Found universal C runtime .dll")
+				else()
+					message(STATUS "Could not find universal C runtime .dll")
+				endif()
+			else()
+				message(STATUS "Could not find universal C runtime folder")
+			endif()
 		endif()
 
 		# Find vcvarsall.bat.
-		get_filename_component(VS120_VCVARSALL_BAT ${VS120COMNTOOLS}/../../VC/vcvarsall.bat ABSOLUTE)
+		get_filename_component(VS_VCVARSALL_BAT ${VSCOMNTOOLS}/../../VC/vcvarsall.bat ABSOLUTE)
 
-		if(EXISTS ${VS120_VCVARSALL_BAT})
-			message(STATUS "Found vsvarsall.bat")
-			set(MEGA_MSVC_VCVARSALL_BAT ${VS120_VCVARSALL_BAT})
+		if(EXISTS ${VS_VCVARSALL_BAT})
+			message(STATUS "Found vcvarsall.bat")
+			set(MEGA_MSVC_VCVARSALL_BAT ${VS_VCVARSALL_BAT})
 
 			if(MEGA_X86)
 				set(MEGA_MSVC_VCVARSALL_BAT_ARG "x86")
@@ -122,12 +124,10 @@ elseif(MSVC12)
 		else()
 			message(WARNING "Could not find vsvarsall.bat")
 		endif()
-
 	endif()
 endif()
 
 
-
 set(MEGA_ZLIB_VER "1.2.8")
 set(MEGA_PHYSFS_VER "2.0.3")
 set(MEGA_LUA51_VER "5.1.5")