diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100644 new mode 100755 index e63da585..cd151bf3 --- a/CMakeLists.txt +++ b/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) - - if(EXISTS ${VS110_VCVARSALL_BAT}) - message(STATUS "Found vsvarsall.bat") - set(MEGA_MSVC_VCVARSALL_BAT ${VS110_VCVARSALL_BAT}) - - if(MEGA_X86) - set(MEGA_MSVC_VCVARSALL_BAT_ARG "x86") - else() - set(MEGA_MSVC_VCVARSALL_BAT_ARG "x86_amd64") - endif() - else() - message(WARNING "Could not find vsvarsall.bat") - endif() - + message(WARNING "Cannot determine Visual Studio version!") endif() -elseif(MSVC12) - set(VS120COMNTOOLS "$ENV{VS120COMNTOOLS}") - if(${VS120COMNTOOLS} STREQUAL "") - message(WARNING "Environment variable VS120COMNTOOLS not defined. Is VS12 properly installed?") + + set(VSCOMNTOOLSSTRING "VS${VSVERSION}COMNTOOLS") + set(VSCOMNTOOLS "$ENV{${VSCOMNTOOLSSTRING}}") + + if(VSCOMNTOOLS STREQUAL "") + message(WARNING "Environment variable VSCOMNTOOLS not defined. Is Visual Studio 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}) + 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 msvcp120.dll, msvcr120.dll") + 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() + + 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 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")