Fix development database user creation
[ryzomcore.git] / CMakeModules / FindMSVC.cmake
blob3e777a1f2ff8a515d6f52b17458dd5cc34f8f21d
1 # - Find MS Visual C++\r
2 #\r
3 #  VC_DIR          - where to find Visual C++\r
4 #  VC_INCLUDE_DIR  - where to find headers\r
5 #  VC_INCLUDE_DIRS - where to find headers\r
6 #  VC_LIBRARY_DIR  - where to find libraries\r
7 #  VC_FOUND        - True if MSVC found\r
8 \r
9 IF(CMAKE_CXX_COMPILER)\r
10   SET(_COMPILER ${CMAKE_CXX_COMPILER})\r
11   SET(_VERSION ${CMAKE_CXX_COMPILER_VERSION})\r
12 ELSEIF(CMAKE_C_COMPILER)\r
13   SET(_COMPILER ${CMAKE_C_COMPILER})\r
14   SET(_VERSION ${CMAKE_C_COMPILER_VERSION})\r
15 ELSE()\r
16   MESSAGE(FATAL_ERROR "No way to determine Visual C++ location")\r
17 ENDIF()\r
19 IF(MSVC_VERSION LESS 1910)    \r
20   IF(MSVC_VERSION LESS 1500)\r
21     MESSAGE(FATAL_ERROR "Unsupported version of Visual C++ (minimum version is 2008)")\r
22   ELSEIF(MSVC_VERSION LESS 1600)\r
23     SET(MSVC_TOOLSET "90")\r
24     SET(_NAME "2008")\r
25   ELSEIF(MSVC_VERSION LESS 1700)\r
26     SET(MSVC_TOOLSET "100")\r
27     SET(_NAME "2010")\r
28   ELSEIF(MSVC_VERSION LESS 1800)\r
29     SET(MSVC_TOOLSET "110")\r
30     SET(_NAME "2012")\r
31   ELSEIF(MSVC_VERSION LESS 1900)\r
32     SET(MSVC_TOOLSET "120")\r
33     SET(_NAME "2013")\r
34   ELSE()\r
35     SET(MSVC_TOOLSET "140")\r
36     SET(_NAME "2015")\r
37   ENDIF()\r
39   STRING(REGEX REPLACE "/bin/.+" "" VC_DIR ${_COMPILER})\r
41   MESSAGE(STATUS "Found Visual C++ ${_NAME} (${_VERSION}) in ${VC_DIR}")\r
42 ELSE()\r
43   # Toolset = version of runtime DLLs\r
44   SET(MSVC_TOOLSET "140")\r
46   IF(MSVC_VERSION LESS 1920)\r
47     SET(_NAME "2017")\r
48   ELSEIF(MSVC_VERSION LESS 1930)\r
49     SET(_NAME "2019")\r
50   ELSE()\r
51     SET(_NAME "2022")\r
52   ENDIF()\r
54   STRING(REGEX REPLACE "/MSVC/.+" "/MSVC" VC_DIR ${_COMPILER})\r
56   IF(DEFINED ENV{VCToolsVersion})\r
57   \r
58     SET(MSVC_TOOLCHAIN_VERSION $ENV{VCToolsVersion})\r
59   \r
60   ELSE()\r
62     FILE(GLOB MSVC_TOOLCHAIN_VERSIONS RELATIVE ${VC_DIR} "${VC_DIR}/*")\r
64     IF(MSVC_TOOLCHAIN_VERSIONS)\r
65       LIST(SORT MSVC_TOOLCHAIN_VERSIONS)\r
66       LIST(REVERSE MSVC_TOOLCHAIN_VERSIONS)\r
67     ENDIF()\r
69     IF(MSVC_TOOLCHAIN_VERSIONS)\r
70       LIST(GET MSVC_TOOLCHAIN_VERSIONS 0 MSVC_TOOLCHAIN_VERSION)\r
71     ENDIF()\r
73   ENDIF()\r
75   IF (MSVC_TOOLCHAIN_VERSION)\r
76     SET(VC_DIR "${VC_DIR}/${MSVC_TOOLCHAIN_VERSION}")\r
77     MESSAGE(STATUS "Found Visual C++ ${_NAME} (${_VERSION} with toolchain ${MSVC_TOOLCHAIN_VERSION}) in ${VC_DIR}")\r
78   ELSE()\r
79     MESSAGE(FATAL_ERROR "Unable to find Visual C++ in ${VC_DIR}")\r
80   ENDIF()\r
81 ENDIF()\r
83 IF(NOT VC_INCLUDE_DIR AND VC_DIR AND EXISTS "${VC_DIR}")\r
84   SET(VC_INCLUDE_DIR "${VC_DIR}/include")\r
85   IF(EXISTS "${VC_INCLUDE_DIR}")\r
86     SET(VC_FOUND ON)\r
87   ENDIF()\r
88 ENDIF()\r
90 SET(MSVC_REDIST_DIR "${EXTERNAL_PATH}/redist")\r
92 IF(NOT EXISTS "${MSVC_REDIST_DIR}")\r
93   SET(MSVC_REDIST_DIR "${VC_DIR}/redist")\r
95   IF(NOT EXISTS "${MSVC_REDIST_DIR}")\r
96     SET(MSVC_REDIST_DIR)\r
97   ENDIF()\r
98 ENDIF()\r
100 IF(MSVC_REDIST_DIR)\r
101   IF(MSVC_VERSION GREATER 1909)\r
102     # If you have VC++ 2017 Express, put x64/Microsoft.VC141.CRT/*.dll in ${EXTERNAL_PATH}/redist\r
103     # original files whould be in ${VC_DIR}/Redist/MSVC/14.11.25325/x64/Microsoft.VC141.CRT\r
104     SET(MSVC14_REDIST_DIR "${MSVC_REDIST_DIR}")\r
105   ELSEIF(MSVC14)\r
106     SET(MSVC14_REDIST_DIR "${MSVC_REDIST_DIR}")\r
107   ELSEIF(MSVC12)\r
108     # If you have VC++ 2013 Express, put x64/Microsoft.VC120.CRT/*.dll in ${EXTERNAL_PATH}/redist\r
109     SET(MSVC12_REDIST_DIR "${MSVC_REDIST_DIR}")\r
110   ELSEIF(MSVC11)\r
111     # If you have VC++ 2012 Express, put x64/Microsoft.VC110.CRT/*.dll in ${EXTERNAL_PATH}/redist\r
112     SET(MSVC11_REDIST_DIR "${MSVC_REDIST_DIR}")\r
113   ELSEIF(MSVC10)\r
114     # If you have VC++ 2010 Express, put x64/Microsoft.VC100.CRT/*.dll in ${EXTERNAL_PATH}/redist\r
115     SET(MSVC10_REDIST_DIR "${MSVC_REDIST_DIR}")\r
116   ELSEIF(MSVC90)\r
117     SET(MSVC90_REDIST_DIR "${MSVC_REDIST_DIR}")\r
118   ELSEIF(MSVC80)\r
119     SET(MSVC80_REDIST_DIR "${MSVC_REDIST_DIR}")\r
120   ENDIF()\r
121 ENDIF()\r
123 IF(VC_INCLUDE_DIR)\r
124   MESSAGE(STATUS "Using VC++ headers from ${VC_INCLUDE_DIR}")\r
125 ELSE()\r
126   MESSAGE(FATAL_ERROR "Unable to find VC++ headers")\r
127 ENDIF()\r
129 SET(VC_INCLUDE_DIRS ${VC_INCLUDE_DIR})\r
130 INCLUDE_DIRECTORIES(${VC_INCLUDE_DIR})\r