Merge topic 'vs-intel-compiler'
d14898b
Intel: Fix detection of MSVC version simulated by pre-11.0 Fortrana85e17e
Intel: When simulating MSVC, re-use Windows-MSVC (#14476)af40e8c
VS: Detect Intel Fortran compiler id and versionb8522a8
VS: Expose Intel Fortran .vfproj format version to CMake language2d36c9a
CMakeDetermineCompilerId: Fix Intel Fortran compiler id detectiona6fd17c
VS: Fix CMAKE_<LANG>_COMPILER detection with Intel toolset (#14471)
This commit is contained in:
commit
f6cc3b0744
|
@ -61,6 +61,7 @@ Variables that Provide Information
|
||||||
/variable/CMAKE_TWEAK_VERSION
|
/variable/CMAKE_TWEAK_VERSION
|
||||||
/variable/CMAKE_VERBOSE_MAKEFILE
|
/variable/CMAKE_VERBOSE_MAKEFILE
|
||||||
/variable/CMAKE_VERSION
|
/variable/CMAKE_VERSION
|
||||||
|
/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
|
||||||
/variable/CMAKE_VS_PLATFORM_TOOLSET
|
/variable/CMAKE_VS_PLATFORM_TOOLSET
|
||||||
/variable/CMAKE_XCODE_PLATFORM_TOOLSET
|
/variable/CMAKE_XCODE_PLATFORM_TOOLSET
|
||||||
/variable/PROJECT_BINARY_DIR
|
/variable/PROJECT_BINARY_DIR
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
When generating for Visual Studio 7 or greater with the Intel Fortran
|
||||||
|
plugin installed, this specifies the .vfproj project file format
|
||||||
|
version. This is intended for internal use by CMake and should not be
|
||||||
|
used by project code.
|
|
@ -19,6 +19,12 @@
|
||||||
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
|
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
|
||||||
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
||||||
# endif
|
# endif
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# endif
|
||||||
|
|
||||||
#elif defined(__PATHCC__)
|
#elif defined(__PATHCC__)
|
||||||
# define COMPILER_ID "PathScale"
|
# define COMPILER_ID "PathScale"
|
||||||
|
|
|
@ -24,6 +24,12 @@
|
||||||
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
|
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
|
||||||
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
||||||
# endif
|
# endif
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# endif
|
||||||
|
|
||||||
#elif defined(__PATHCC__)
|
#elif defined(__PATHCC__)
|
||||||
# define COMPILER_ID "PathScale"
|
# define COMPILER_ID "PathScale"
|
||||||
|
|
|
@ -114,7 +114,11 @@ Id flags: ${testflags}
|
||||||
set(id_platform ${CMAKE_VS_PLATFORM_NAME})
|
set(id_platform ${CMAKE_VS_PLATFORM_NAME})
|
||||||
set(id_lang "${lang}")
|
set(id_lang "${lang}")
|
||||||
set(id_cl cl.exe)
|
set(id_cl cl.exe)
|
||||||
if(NOT "${vs_version}" VERSION_LESS 10)
|
if(lang STREQUAL Fortran)
|
||||||
|
set(v Intel)
|
||||||
|
set(ext vfproj)
|
||||||
|
set(id_cl ifort.exe)
|
||||||
|
elseif(NOT "${vs_version}" VERSION_LESS 10)
|
||||||
set(v 10)
|
set(v 10)
|
||||||
set(ext vcxproj)
|
set(ext vcxproj)
|
||||||
elseif(NOT "${vs_version}" VERSION_LESS 7)
|
elseif(NOT "${vs_version}" VERSION_LESS 7)
|
||||||
|
@ -130,6 +134,9 @@ Id flags: ${testflags}
|
||||||
endif()
|
endif()
|
||||||
if(CMAKE_VS_PLATFORM_TOOLSET)
|
if(CMAKE_VS_PLATFORM_TOOLSET)
|
||||||
set(id_toolset "<PlatformToolset>${CMAKE_VS_PLATFORM_TOOLSET}</PlatformToolset>")
|
set(id_toolset "<PlatformToolset>${CMAKE_VS_PLATFORM_TOOLSET}</PlatformToolset>")
|
||||||
|
if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "Intel")
|
||||||
|
set(id_cl icl.exe)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
set(id_toolset "")
|
set(id_toolset "")
|
||||||
endif()
|
endif()
|
||||||
|
@ -245,7 +252,10 @@ Id flags: ${testflags}
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Check the result of compilation.
|
# Check the result of compilation.
|
||||||
if(CMAKE_${lang}_COMPILER_ID_RESULT)
|
if(CMAKE_${lang}_COMPILER_ID_RESULT
|
||||||
|
# Intel Fortran warns and ignores preprocessor lines without /fpp
|
||||||
|
OR CMAKE_${lang}_COMPILER_ID_OUTPUT MATCHES "Bad # preprocessor line"
|
||||||
|
)
|
||||||
# Compilation failed.
|
# Compilation failed.
|
||||||
set(MSG
|
set(MSG
|
||||||
"Compiling the ${lang} compiler identification source file \"${src}\" failed.
|
"Compiling the ${lang} compiler identification source file \"${src}\" failed.
|
||||||
|
|
|
@ -26,10 +26,6 @@ if(NOT CMAKE_Fortran_COMPILER_NAMES)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
|
if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
|
||||||
set(CMAKE_Fortran_COMPILER_ID_RUN 1)
|
|
||||||
set(CMAKE_Fortran_PLATFORM_ID "Windows")
|
|
||||||
set(CMAKE_Fortran_COMPILER_ID "Intel")
|
|
||||||
set(CMAKE_Fortran_COMPILER "${CMAKE_GENERATOR_FC}")
|
|
||||||
elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
|
elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
|
||||||
set(CMAKE_Fortran_COMPILER_XCODE_TYPE sourcecode.fortran.f90)
|
set(CMAKE_Fortran_COMPILER_XCODE_TYPE sourcecode.fortran.f90)
|
||||||
else()
|
else()
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
# if it's the MS C/CXX compiler, search for link
|
# if it's the MS C/CXX compiler, search for link
|
||||||
if("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC"
|
if("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC"
|
||||||
OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC"
|
OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC"
|
||||||
|
OR "${CMAKE_Fortran_SIMULATE_ID}" STREQUAL "MSVC"
|
||||||
OR "${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC"
|
OR "${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC"
|
||||||
OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC"
|
OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC"
|
||||||
OR "${CMAKE_GENERATOR}" MATCHES "Visual Studio")
|
OR "${CMAKE_GENERATOR}" MATCHES "Visual Studio")
|
||||||
|
|
|
@ -2,6 +2,8 @@ set(CMAKE_Fortran_COMPILER "@CMAKE_Fortran_COMPILER@")
|
||||||
set(CMAKE_Fortran_COMPILER_ARG1 "@CMAKE_Fortran_COMPILER_ARG1@")
|
set(CMAKE_Fortran_COMPILER_ARG1 "@CMAKE_Fortran_COMPILER_ARG1@")
|
||||||
set(CMAKE_Fortran_COMPILER_ID "@CMAKE_Fortran_COMPILER_ID@")
|
set(CMAKE_Fortran_COMPILER_ID "@CMAKE_Fortran_COMPILER_ID@")
|
||||||
set(CMAKE_Fortran_PLATFORM_ID "@CMAKE_Fortran_PLATFORM_ID@")
|
set(CMAKE_Fortran_PLATFORM_ID "@CMAKE_Fortran_PLATFORM_ID@")
|
||||||
|
set(CMAKE_Fortran_SIMULATE_ID "@CMAKE_Fortran_SIMULATE_ID@")
|
||||||
|
set(CMAKE_Fortran_SIMULATE_VERSION "@CMAKE_Fortran_SIMULATE_VERSION@")
|
||||||
@SET_MSVC_Fortran_ARCHITECTURE_ID@
|
@SET_MSVC_Fortran_ARCHITECTURE_ID@
|
||||||
set(CMAKE_AR "@CMAKE_AR@")
|
set(CMAKE_AR "@CMAKE_AR@")
|
||||||
set(CMAKE_RANLIB "@CMAKE_RANLIB@")
|
set(CMAKE_RANLIB "@CMAKE_RANLIB@")
|
||||||
|
|
|
@ -4,6 +4,24 @@
|
||||||
#endif
|
#endif
|
||||||
#if defined(__INTEL_COMPILER) || defined(__ICC)
|
#if defined(__INTEL_COMPILER) || defined(__ICC)
|
||||||
PRINT *, 'INFO:compiler[Intel]'
|
PRINT *, 'INFO:compiler[Intel]'
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
PRINT *, 'INFO:simulate[MSVC]'
|
||||||
|
# if _MSC_VER >= 1800
|
||||||
|
PRINT *, 'INFO:simulate_version[018.00]'
|
||||||
|
# elif _MSC_VER >= 1700
|
||||||
|
PRINT *, 'INFO:simulate_version[017.00]'
|
||||||
|
# elif _MSC_VER >= 1600
|
||||||
|
PRINT *, 'INFO:simulate_version[016.00]'
|
||||||
|
# elif _MSC_VER >= 1500
|
||||||
|
PRINT *, 'INFO:simulate_version[015.00]'
|
||||||
|
# elif _MSC_VER >= 1400
|
||||||
|
PRINT *, 'INFO:simulate_version[014.00]'
|
||||||
|
# elif _MSC_VER >= 1310
|
||||||
|
PRINT *, 'INFO:simulate_version[013.01]'
|
||||||
|
# else
|
||||||
|
PRINT *, 'INFO:simulate_version[013.00]'
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95)
|
#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95)
|
||||||
PRINT *, 'INFO:compiler[SunPro]'
|
PRINT *, 'INFO:compiler[SunPro]'
|
||||||
#elif defined(_CRAYFTN)
|
#elif defined(_CRAYFTN)
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectCreator="Intel Fortran"
|
||||||
|
Keyword="Console Application"
|
||||||
|
Version="@CMAKE_VS_INTEL_Fortran_PROJECT_VERSION@"
|
||||||
|
ProjectIdGuid="{AB67BAB7-D7AE-4E97-B492-FE5420447509}"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform Name="@id_platform@"/>
|
||||||
|
</Platforms>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|@id_platform@"
|
||||||
|
OutputDirectory="."
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VFFortranCompilerTool"
|
||||||
|
DebugInformationFormat="debugEnabled"
|
||||||
|
Optimization="optimizeDisabled"
|
||||||
|
Preprocess="preprocessYes"
|
||||||
|
RuntimeLibrary="rtMultiThreadedDebugDLL"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VFLinkerTool"
|
||||||
|
LinkIncremental="linkIncrementalNo"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="subSystemConsole"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VFPostBuildEventTool"
|
||||||
|
CommandLine="for %%i in (@id_cl@) do @echo CMAKE_@id_lang@_COMPILER=%%~$PATH:i"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<Files>
|
||||||
|
<Filter Name="Source Files" Filter="F">
|
||||||
|
<File RelativePath="@id_src@"/>
|
||||||
|
</Filter>
|
||||||
|
</Files>
|
||||||
|
<Globals/>
|
||||||
|
</VisualStudioProject>
|
|
@ -1,4 +1,3 @@
|
||||||
include(Platform/Windows-Intel)
|
include(Platform/Windows-Intel)
|
||||||
set(_COMPILE_CXX " /TP")
|
set(_COMPILE_CXX " /TP")
|
||||||
set(_FLAGS_CXX " /EHsc /GR")
|
|
||||||
__windows_compiler_intel(CXX)
|
__windows_compiler_intel(CXX)
|
||||||
|
|
|
@ -18,92 +18,11 @@ if(__WINDOWS_INTEL)
|
||||||
endif()
|
endif()
|
||||||
set(__WINDOWS_INTEL 1)
|
set(__WINDOWS_INTEL 1)
|
||||||
|
|
||||||
# make sure to enable languages after setting configuration types
|
include(Platform/Windows-MSVC)
|
||||||
enable_language(RC)
|
|
||||||
set(CMAKE_COMPILE_RESOURCE "rc <FLAGS> /fo<OBJECT> <SOURCE>")
|
|
||||||
|
|
||||||
set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:")
|
|
||||||
set(CMAKE_LINK_LIBRARY_FLAG "")
|
|
||||||
set(WIN32 1)
|
|
||||||
if(CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
set(CMAKE_CL_NOLOGO)
|
|
||||||
else()
|
|
||||||
set(CMAKE_CL_NOLOGO "/nologo")
|
|
||||||
endif()
|
|
||||||
set(CMAKE_COMPILE_RESOURCE "rc <FLAGS> /fo<OBJECT> <SOURCE>")
|
|
||||||
set(CMAKE_CREATE_WIN32_EXE /subsystem:windows)
|
|
||||||
set(CMAKE_CREATE_CONSOLE_EXE /subsystem:console)
|
|
||||||
|
|
||||||
# default to Debug builds
|
|
||||||
#set(CMAKE_BUILD_TYPE_INIT Debug)
|
|
||||||
set(CMAKE_BUILD_TYPE_INIT Release)
|
|
||||||
|
|
||||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib")
|
|
||||||
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
|
|
||||||
|
|
||||||
# executable linker flags
|
|
||||||
set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
|
|
||||||
if(MSVC_C_ARCHITECTURE_ID)
|
|
||||||
set(_MACHINE_ARCH_FLAG "/machine:${MSVC_C_ARCHITECTURE_ID}")
|
|
||||||
elseif(MSVC_CXX_ARCHITECTURE_ID)
|
|
||||||
set(_MACHINE_ARCH_FLAG "/machine:${MSVC_CXX_ARCHITECTURE_ID}")
|
|
||||||
elseif(MSVC_Fortran_ARCHITECTURE_ID)
|
|
||||||
set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}")
|
|
||||||
endif()
|
|
||||||
set (CMAKE_EXE_LINKER_FLAGS_INIT "/INCREMENTAL:YES ${_MACHINE_ARCH_FLAG}")
|
|
||||||
set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug")
|
|
||||||
set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug")
|
|
||||||
|
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
|
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
|
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
|
|
||||||
set (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
|
|
||||||
set (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
|
|
||||||
set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
|
||||||
|
|
||||||
include("${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake" OPTIONAL)
|
|
||||||
|
|
||||||
if(NOT _INTEL_XILINK_TEST_RUN)
|
|
||||||
execute_process(COMMAND xilink /?
|
|
||||||
ERROR_VARIABLE _XILINK_ERR
|
|
||||||
OUTPUT_VARIABLE _XILINK_HELP)
|
|
||||||
if(_XILINK_HELP MATCHES MANIFEST)
|
|
||||||
set(_INTEL_COMPILER_SUPPORTS_MANIFEST 1)
|
|
||||||
endif()
|
|
||||||
if(NOT EXISTS "${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake")
|
|
||||||
file(WRITE ${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake
|
|
||||||
"
|
|
||||||
set(_INTEL_XILINK_TEST_RUN 1)
|
|
||||||
set(_INTEL_COMPILER_SUPPORTS_MANIFEST ${_INTEL_COMPILER_SUPPORTS_MANIFEST})
|
|
||||||
")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
macro(__windows_compiler_intel lang)
|
macro(__windows_compiler_intel lang)
|
||||||
set(CMAKE_${lang}_COMPILE_OBJECT
|
__windows_compiler_msvc(${lang})
|
||||||
"<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} /Fo<OBJECT> /Fd<OBJECT_DIR>/ <DEFINES> <FLAGS> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
string(REPLACE "<CMAKE_LINKER> /lib" "lib" CMAKE_${lang}_CREATE_STATIC_LIBRARY "${CMAKE_${lang}_CREATE_STATIC_LIBRARY}")
|
||||||
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
|
foreach(rule CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE)
|
||||||
"<CMAKE_${lang}_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <DEFINES> <FLAGS> -E <SOURCE>${CMAKE_END_TEMP_FILE}")
|
string(REPLACE "<CMAKE_LINKER>" "xilink" CMAKE_${lang}_${rule} "${CMAKE_${lang}_${rule}}")
|
||||||
set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)
|
endforeach()
|
||||||
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
|
|
||||||
set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
|
|
||||||
"xilink ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
|
|
||||||
set(CMAKE_${lang}_CREATE_SHARED_MODULE "${CMAKE_${lang}_CREATE_SHARED_LIBRARY}")
|
|
||||||
set(CMAKE_${lang}_COMPILER_LINKER_OPTION_FLAG_EXECUTABLE "/link")
|
|
||||||
set(CMAKE_${lang}_LINK_EXECUTABLE
|
|
||||||
"<CMAKE_${lang}_COMPILER> ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} <FLAGS> /Fe<TARGET> <OBJECTS> /link /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
|
|
||||||
set(CMAKE_${lang}_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000${_FLAGS_${lang}}")
|
|
||||||
set(CMAKE_${lang}_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Od /RTC1")
|
|
||||||
set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/DNDEBUG /MD /O1")
|
|
||||||
set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/DNDEBUG /MD /O2")
|
|
||||||
set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/DNDEBUG /MD /Zi /O2")
|
|
||||||
|
|
||||||
if(_INTEL_COMPILER_SUPPORTS_MANIFEST)
|
|
||||||
set(CMAKE_${lang}_LINK_EXECUTABLE
|
|
||||||
"<CMAKE_COMMAND> -E vs_link_exe ${CMAKE_${lang}_LINK_EXECUTABLE}")
|
|
||||||
set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
|
|
||||||
"<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_${lang}_CREATE_SHARED_LIBRARY}")
|
|
||||||
set(CMAKE_${lang}_CREATE_SHARED_MODULE
|
|
||||||
"<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_${lang}_CREATE_SHARED_MODULE}")
|
|
||||||
endif()
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
|
@ -69,6 +69,8 @@ if(NOT MSVC_VERSION)
|
||||||
set(_compiler_version ${CMAKE_C_SIMULATE_VERSION})
|
set(_compiler_version ${CMAKE_C_SIMULATE_VERSION})
|
||||||
elseif(CMAKE_CXX_SIMULATE_VERSION)
|
elseif(CMAKE_CXX_SIMULATE_VERSION)
|
||||||
set(_compiler_version ${CMAKE_CXX_SIMULATE_VERSION})
|
set(_compiler_version ${CMAKE_CXX_SIMULATE_VERSION})
|
||||||
|
elseif(CMAKE_Fortran_SIMULATE_VERSION)
|
||||||
|
set(_compiler_version ${CMAKE_Fortran_SIMULATE_VERSION})
|
||||||
elseif(CMAKE_C_COMPILER_VERSION)
|
elseif(CMAKE_C_COMPILER_VERSION)
|
||||||
set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
|
set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
|
||||||
else()
|
else()
|
||||||
|
@ -182,12 +184,15 @@ set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
|
||||||
# executable linker flags
|
# executable linker flags
|
||||||
set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
|
set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
|
||||||
# set the machine type
|
# set the machine type
|
||||||
set(_MACHINE_ARCH_FLAG ${MSVC_C_ARCHITECTURE_ID})
|
if(MSVC_C_ARCHITECTURE_ID)
|
||||||
if(NOT _MACHINE_ARCH_FLAG)
|
set(_MACHINE_ARCH_FLAG "/machine:${MSVC_C_ARCHITECTURE_ID}")
|
||||||
set(_MACHINE_ARCH_FLAG ${MSVC_CXX_ARCHITECTURE_ID})
|
elseif(MSVC_CXX_ARCHITECTURE_ID)
|
||||||
|
set(_MACHINE_ARCH_FLAG "/machine:${MSVC_CXX_ARCHITECTURE_ID}")
|
||||||
|
elseif(MSVC_Fortran_ARCHITECTURE_ID)
|
||||||
|
set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}")
|
||||||
endif()
|
endif()
|
||||||
set (CMAKE_EXE_LINKER_FLAGS_INIT
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}")
|
||||||
"${CMAKE_EXE_LINKER_FLAGS_INIT} /machine:${_MACHINE_ARCH_FLAG}")
|
unset(_MACHINE_ARCH_FLAG)
|
||||||
|
|
||||||
# add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype
|
# add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype
|
||||||
# on versions that support it
|
# on versions that support it
|
||||||
|
|
|
@ -21,6 +21,7 @@ cmGlobalVisualStudio7Generator::cmGlobalVisualStudio7Generator(
|
||||||
const char* platformName)
|
const char* platformName)
|
||||||
{
|
{
|
||||||
this->FindMakeProgramFile = "CMakeVS7FindMake.cmake";
|
this->FindMakeProgramFile = "CMakeVS7FindMake.cmake";
|
||||||
|
this->IntelProjectVersion = 0;
|
||||||
|
|
||||||
if (!platformName)
|
if (!platformName)
|
||||||
{
|
{
|
||||||
|
@ -29,6 +30,45 @@ cmGlobalVisualStudio7Generator::cmGlobalVisualStudio7Generator(
|
||||||
this->PlatformName = platformName;
|
this->PlatformName = platformName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmGlobalVisualStudio7Generator::~cmGlobalVisualStudio7Generator()
|
||||||
|
{
|
||||||
|
free(this->IntelProjectVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Package GUID of Intel Visual Fortran plugin to VS IDE
|
||||||
|
#define CM_INTEL_PLUGIN_GUID "{B68A201D-CB9B-47AF-A52F-7EEC72E217E4}"
|
||||||
|
|
||||||
|
const char* cmGlobalVisualStudio7Generator::GetIntelProjectVersion()
|
||||||
|
{
|
||||||
|
if(!this->IntelProjectVersion)
|
||||||
|
{
|
||||||
|
// Compute the version of the Intel plugin to the VS IDE.
|
||||||
|
// If the key does not exist then use a default guess.
|
||||||
|
std::string intelVersion;
|
||||||
|
std::string vskey = this->GetRegistryBase();
|
||||||
|
vskey += "\\Packages\\" CM_INTEL_PLUGIN_GUID ";ProductVersion";
|
||||||
|
cmSystemTools::ReadRegistryValue(vskey.c_str(), intelVersion,
|
||||||
|
cmSystemTools::KeyWOW64_32);
|
||||||
|
unsigned int intelVersionNumber = ~0u;
|
||||||
|
sscanf(intelVersion.c_str(), "%u", &intelVersionNumber);
|
||||||
|
if(intelVersionNumber >= 11)
|
||||||
|
{
|
||||||
|
// Default to latest known project file version.
|
||||||
|
intelVersion = "11.0";
|
||||||
|
}
|
||||||
|
else if(intelVersionNumber == 10)
|
||||||
|
{
|
||||||
|
// Version 10.x actually uses 9.10 in project files!
|
||||||
|
intelVersion = "9.10";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Version <= 9: use ProductVersion from registry.
|
||||||
|
}
|
||||||
|
this->IntelProjectVersion = strdup(intelVersion.c_str());
|
||||||
|
}
|
||||||
|
return this->IntelProjectVersion;
|
||||||
|
}
|
||||||
|
|
||||||
void cmGlobalVisualStudio7Generator
|
void cmGlobalVisualStudio7Generator
|
||||||
::EnableLanguage(std::vector<std::string>const & lang,
|
::EnableLanguage(std::vector<std::string>const & lang,
|
||||||
|
@ -36,7 +76,6 @@ void cmGlobalVisualStudio7Generator
|
||||||
{
|
{
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_RC", "rc");
|
mf->AddDefinition("CMAKE_GENERATOR_RC", "rc");
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1");
|
mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1");
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_FC", "ifort");
|
|
||||||
this->AddPlatformDefinitions(mf);
|
this->AddPlatformDefinitions(mf);
|
||||||
if(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES"))
|
if(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES"))
|
||||||
{
|
{
|
||||||
|
@ -156,6 +195,8 @@ void cmGlobalVisualStudio7Generator::AddPlatformDefinitions(cmMakefile* mf)
|
||||||
{
|
{
|
||||||
cmGlobalVisualStudioGenerator::AddPlatformDefinitions(mf);
|
cmGlobalVisualStudioGenerator::AddPlatformDefinitions(mf);
|
||||||
mf->AddDefinition("CMAKE_VS_PLATFORM_NAME", this->GetPlatformName());
|
mf->AddDefinition("CMAKE_VS_PLATFORM_NAME", this->GetPlatformName());
|
||||||
|
mf->AddDefinition("CMAKE_VS_INTEL_Fortran_PROJECT_VERSION",
|
||||||
|
this->GetIntelProjectVersion());
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmGlobalVisualStudio7Generator::GenerateConfigurations(cmMakefile* mf)
|
void cmGlobalVisualStudio7Generator::GenerateConfigurations(cmMakefile* mf)
|
||||||
|
|
|
@ -27,6 +27,8 @@ class cmGlobalVisualStudio7Generator : public cmGlobalVisualStudioGenerator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
cmGlobalVisualStudio7Generator(const char* platformName = NULL);
|
cmGlobalVisualStudio7Generator(const char* platformName = NULL);
|
||||||
|
~cmGlobalVisualStudio7Generator();
|
||||||
|
|
||||||
static cmGlobalGeneratorFactory* NewFactory() {
|
static cmGlobalGeneratorFactory* NewFactory() {
|
||||||
return new cmGlobalGeneratorSimpleFactory
|
return new cmGlobalGeneratorSimpleFactory
|
||||||
<cmGlobalVisualStudio7Generator>(); }
|
<cmGlobalVisualStudio7Generator>(); }
|
||||||
|
@ -101,6 +103,8 @@ public:
|
||||||
LinkLibraryDependencies and link to .sln dependencies. */
|
LinkLibraryDependencies and link to .sln dependencies. */
|
||||||
virtual bool NeedLinkLibraryDependencies(cmTarget&) { return false; }
|
virtual bool NeedLinkLibraryDependencies(cmTarget&) { return false; }
|
||||||
|
|
||||||
|
const char* GetIntelProjectVersion();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual const char* GetIDEVersion() { return "7.0"; }
|
virtual const char* GetIDEVersion() { return "7.0"; }
|
||||||
|
|
||||||
|
@ -159,6 +163,9 @@ protected:
|
||||||
// There is one SLN file per project.
|
// There is one SLN file per project.
|
||||||
std::string CurrentProject;
|
std::string CurrentProject;
|
||||||
std::string PlatformName;
|
std::string PlatformName;
|
||||||
|
|
||||||
|
private:
|
||||||
|
char* IntelProjectVersion;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CMAKE_CHECK_BUILD_SYSTEM_TARGET "ZERO_CHECK"
|
#define CMAKE_CHECK_BUILD_SYSTEM_TARGET "ZERO_CHECK"
|
||||||
|
|
|
@ -27,9 +27,6 @@
|
||||||
|
|
||||||
#include <ctype.h> // for isspace
|
#include <ctype.h> // for isspace
|
||||||
|
|
||||||
// Package GUID of Intel Visual Fortran plugin to VS IDE
|
|
||||||
#define CM_INTEL_PLUGIN_GUID "{B68A201D-CB9B-47AF-A52F-7EEC72E217E4}"
|
|
||||||
|
|
||||||
static bool cmLVS6G_IsFAT(const char* dir);
|
static bool cmLVS6G_IsFAT(const char* dir);
|
||||||
|
|
||||||
class cmLocalVisualStudio7GeneratorInternals
|
class cmLocalVisualStudio7GeneratorInternals
|
||||||
|
@ -1961,35 +1958,10 @@ cmLocalVisualStudio7Generator
|
||||||
|
|
||||||
cmGlobalVisualStudio7Generator* gg =
|
cmGlobalVisualStudio7Generator* gg =
|
||||||
static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
|
static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
|
||||||
|
|
||||||
// Compute the version of the Intel plugin to the VS IDE.
|
|
||||||
// If the key does not exist then use a default guess.
|
|
||||||
std::string intelVersion;
|
|
||||||
std::string vskey = gg->GetRegistryBase();
|
|
||||||
vskey += "\\Packages\\" CM_INTEL_PLUGIN_GUID ";ProductVersion";
|
|
||||||
cmSystemTools::ReadRegistryValue(vskey.c_str(), intelVersion,
|
|
||||||
cmSystemTools::KeyWOW64_32);
|
|
||||||
unsigned int intelVersionNumber = ~0u;
|
|
||||||
sscanf(intelVersion.c_str(), "%u", &intelVersionNumber);
|
|
||||||
if(intelVersionNumber >= 11)
|
|
||||||
{
|
|
||||||
// Default to latest known project file version.
|
|
||||||
intelVersion = "11.0";
|
|
||||||
}
|
|
||||||
else if(intelVersionNumber == 10)
|
|
||||||
{
|
|
||||||
// Version 10.x actually uses 9.10 in project files!
|
|
||||||
intelVersion = "9.10";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Version <= 9: use ProductVersion from registry.
|
|
||||||
}
|
|
||||||
|
|
||||||
fout << "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n"
|
fout << "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n"
|
||||||
<< "<VisualStudioProject\n"
|
<< "<VisualStudioProject\n"
|
||||||
<< "\tProjectCreator=\"Intel Fortran\"\n"
|
<< "\tProjectCreator=\"Intel Fortran\"\n"
|
||||||
<< "\tVersion=\"" << intelVersion << "\"\n";
|
<< "\tVersion=\"" << gg->GetIntelProjectVersion() << "\"\n";
|
||||||
const char* keyword = target.GetProperty("VS_KEYWORD");
|
const char* keyword = target.GetProperty("VS_KEYWORD");
|
||||||
if(!keyword)
|
if(!keyword)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue