Imported Upstream version 2.8.12.2
[platform/upstream/cmake.git] / Modules / Platform / Windows-Intel.cmake
1
2 #=============================================================================
3 # Copyright 2002-2010 Kitware, Inc.
4 #
5 # Distributed under the OSI-approved BSD License (the "License");
6 # see accompanying file Copyright.txt for details.
7 #
8 # This software is distributed WITHOUT ANY WARRANTY; without even the
9 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 # See the License for more information.
11 #=============================================================================
12 # (To distribute this file outside of CMake, substitute the full
13 #  License text for the above reference.)
14
15 # This module is shared by multiple languages; use include blocker.
16 if(__WINDOWS_INTEL)
17   return()
18 endif()
19 set(__WINDOWS_INTEL 1)
20
21 # make sure to enable languages after setting configuration types
22 enable_language(RC)
23 set(CMAKE_COMPILE_RESOURCE "rc <FLAGS> /fo<OBJECT> <SOURCE>")
24
25 set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:")
26 set(CMAKE_LINK_LIBRARY_FLAG "")
27 set(WIN32 1)
28 if(CMAKE_VERBOSE_MAKEFILE)
29   set(CMAKE_CL_NOLOGO)
30 else()
31   set(CMAKE_CL_NOLOGO "/nologo")
32 endif()
33 set(CMAKE_COMPILE_RESOURCE "rc <FLAGS> /fo<OBJECT> <SOURCE>")
34 set(CMAKE_CREATE_WIN32_EXE /subsystem:windows)
35 set(CMAKE_CREATE_CONSOLE_EXE /subsystem:console)
36
37 # default to Debug builds
38 #set(CMAKE_BUILD_TYPE_INIT Debug)
39 set(CMAKE_BUILD_TYPE_INIT Release)
40
41 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")
42 set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
43
44 # executable linker flags
45 set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
46 if(MSVC_C_ARCHITECTURE_ID)
47   set(_MACHINE_ARCH_FLAG "/machine:${MSVC_C_ARCHITECTURE_ID}")
48 elseif(MSVC_CXX_ARCHITECTURE_ID)
49   set(_MACHINE_ARCH_FLAG "/machine:${MSVC_CXX_ARCHITECTURE_ID}")
50 elseif(MSVC_Fortran_ARCHITECTURE_ID)
51   set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}")
52 endif()
53 set (CMAKE_EXE_LINKER_FLAGS_INIT "/INCREMENTAL:YES ${_MACHINE_ARCH_FLAG}")
54 set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug")
55 set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug")
56
57 set (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
58 set (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
59 set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
60 set (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
61 set (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
62 set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
63
64 include("${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake" OPTIONAL)
65
66 if(NOT _INTEL_XILINK_TEST_RUN)
67   execute_process(COMMAND xilink /?
68     ERROR_VARIABLE _XILINK_ERR
69     OUTPUT_VARIABLE _XILINK_HELP)
70   if(_XILINK_HELP MATCHES MANIFEST)
71     set(_INTEL_COMPILER_SUPPORTS_MANIFEST 1)
72   endif()
73   if(NOT  EXISTS "${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake")
74     file(WRITE ${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake
75       "
76 set(_INTEL_XILINK_TEST_RUN 1)
77 set(_INTEL_COMPILER_SUPPORTS_MANIFEST ${_INTEL_COMPILER_SUPPORTS_MANIFEST})
78 ")
79   endif()
80 endif()
81
82 macro(__windows_compiler_intel lang)
83   set(CMAKE_${lang}_COMPILE_OBJECT
84     "<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}")
85   set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
86     "<CMAKE_${lang}_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <DEFINES> <FLAGS> -E <SOURCE>${CMAKE_END_TEMP_FILE}")
87   set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)
88   set(CMAKE_${lang}_CREATE_STATIC_LIBRARY  "lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
89   set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
90     "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}")
91   set(CMAKE_${lang}_CREATE_SHARED_MODULE "${CMAKE_${lang}_CREATE_SHARED_LIBRARY}")
92   set(CMAKE_${lang}_COMPILER_LINKER_OPTION_FLAG_EXECUTABLE "/link")
93   set(CMAKE_${lang}_LINK_EXECUTABLE
94     "<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}")
95   set(CMAKE_${lang}_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000${_FLAGS_${lang}}")
96   set(CMAKE_${lang}_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Od /RTC1")
97   set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/DNDEBUG /MD /O1")
98   set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/DNDEBUG /MD /O2")
99   set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/DNDEBUG /MD /Zi /O2")
100
101   if(_INTEL_COMPILER_SUPPORTS_MANIFEST)
102     set(CMAKE_${lang}_LINK_EXECUTABLE
103       "<CMAKE_COMMAND> -E vs_link_exe ${CMAKE_${lang}_LINK_EXECUTABLE}")
104     set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
105       "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_${lang}_CREATE_SHARED_LIBRARY}")
106     set(CMAKE_${lang}_CREATE_SHARED_MODULE
107       "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_${lang}_CREATE_SHARED_MODULE}")
108   endif()
109 endmacro()