comparison make/windows/makefiles/compile.make @ 6587:7ec6629578ac

8043492: ad_x86_64_misc.obj : error LNK2011: precompiled object not linked in; image may not run Summary: Added _build_pch_file.obj to LD_FLAGS and cleaned up support for older Visual Studio versions Reviewed-by: twisti, lfoltan, sla, kvn
author ctornqvi
date Fri, 06 Jun 2014 14:46:42 +0200
parents 1a93f2c5945a
children 092a9eddf58d
comparison
equal deleted inserted replaced
23:b550bbb7b0b7 24:26d3118c213f
1 # 1 #
2 # Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. 2 # Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 # 4 #
5 # This code is free software; you can redistribute it and/or modify it 5 # This code is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License version 2 only, as 6 # under the terms of the GNU General Public License version 2 only, as
7 # published by the Free Software Foundation. 7 # published by the Free Software Foundation.
61 !endif 61 !endif
62 62
63 # Based on BUILDARCH we add some flags and select the default compiler name 63 # Based on BUILDARCH we add some flags and select the default compiler name
64 !if "$(BUILDARCH)" == "ia64" 64 !if "$(BUILDARCH)" == "ia64"
65 MACHINE=IA64 65 MACHINE=IA64
66 DEFAULT_COMPILER_NAME=VS2003
67 CXX_FLAGS=$(CXX_FLAGS) /D "CC_INTERP" /D "_LP64" /D "IA64" 66 CXX_FLAGS=$(CXX_FLAGS) /D "CC_INTERP" /D "_LP64" /D "IA64"
68 !endif 67 !endif
69 68
70 !if "$(BUILDARCH)" == "amd64" 69 !if "$(BUILDARCH)" == "amd64"
71 MACHINE=AMD64 70 MACHINE=AMD64
72 DEFAULT_COMPILER_NAME=VS2005
73 CXX_FLAGS=$(CXX_FLAGS) /D "_LP64" /D "AMD64" 71 CXX_FLAGS=$(CXX_FLAGS) /D "_LP64" /D "AMD64"
74 LP64=1 72 LP64=1
75 !endif 73 !endif
76 74
77 !if "$(BUILDARCH)" == "i486" 75 !if "$(BUILDARCH)" == "i486"
78 MACHINE=I386 76 MACHINE=I386
79 DEFAULT_COMPILER_NAME=VS2003
80 CXX_FLAGS=$(CXX_FLAGS) /D "IA32" 77 CXX_FLAGS=$(CXX_FLAGS) /D "IA32"
81 !endif
82
83 # Sanity check, this is the default if not amd64, ia64, or i486
84 !ifndef DEFAULT_COMPILER_NAME
85 CXX=ARCH_ERROR
86 !endif 78 !endif
87 79
88 CXX_FLAGS=$(CXX_FLAGS) /D "WIN32" /D "_WINDOWS" 80 CXX_FLAGS=$(CXX_FLAGS) /D "WIN32" /D "_WINDOWS"
89 # Must specify this for sharedRuntimeTrig.cpp 81 # Must specify this for sharedRuntimeTrig.cpp
90 CXX_FLAGS=$(CXX_FLAGS) /D "VM_LITTLE_ENDIAN" 82 CXX_FLAGS=$(CXX_FLAGS) /D "VM_LITTLE_ENDIAN"
110 # 1399 is our fake number for the VS2005 compiler that really isn't 1400 102 # 1399 is our fake number for the VS2005 compiler that really isn't 1400
111 # 1400 is for VS2005 103 # 1400 is for VS2005
112 # 1500 is for VS2008 104 # 1500 is for VS2008
113 # 1600 is for VS2010 105 # 1600 is for VS2010
114 # 1700 is for VS2012 106 # 1700 is for VS2012
107 # 1800 is for VS2013
115 # Do not confuse this MSC_VER with the predefined macro _MSC_VER that the 108 # Do not confuse this MSC_VER with the predefined macro _MSC_VER that the
116 # compiler provides, when MSC_VER==1399, _MSC_VER will be 1400. 109 # compiler provides, when MSC_VER==1399, _MSC_VER will be 1400.
117 # Normally they are the same, but a pre-release of the VS2005 compilers 110 # Normally they are the same, but a pre-release of the VS2005 compilers
118 # in the Windows 64bit Platform SDK said it was 1400 when it was really 111 # in the Windows 64bit Platform SDK said it was 1400 when it was really
119 # closer to VS2003 in terms of option spellings, so we use 1399 for that 112 # closer to VS2003 in terms of option spellings, so we use 1399 for that
120 # 1400 version that really isn't 1400. 113 # 1400 version that really isn't 1400.
121 # See the file get_msc_ver.sh for more info. 114 # See the file get_msc_ver.sh for more info.
122 !if "x$(MSC_VER)" == "x"
123 COMPILER_NAME=$(DEFAULT_COMPILER_NAME)
124 !else
125 !if "$(MSC_VER)" == "1200"
126 COMPILER_NAME=VC6
127 !endif
128 !if "$(MSC_VER)" == "1300"
129 COMPILER_NAME=VS2003
130 !endif
131 !if "$(MSC_VER)" == "1310"
132 COMPILER_NAME=VS2003
133 !endif
134 !if "$(MSC_VER)" == "1399"
135 # Compiler might say 1400, but if it's 14.00.30701, it isn't really VS2005
136 COMPILER_NAME=VS2003
137 !endif
138 !if "$(MSC_VER)" == "1400"
139 COMPILER_NAME=VS2005
140 !endif
141 !if "$(MSC_VER)" == "1500"
142 COMPILER_NAME=VS2008
143 !endif
144 !if "$(MSC_VER)" == "1600"
145 COMPILER_NAME=VS2010
146 !endif
147 !if "$(MSC_VER)" == "1700"
148 COMPILER_NAME=VS2012
149 !endif
150 !endif
151 115
152 # By default, we do not want to use the debug version of the msvcrt.dll file 116 # By default, we do not want to use the debug version of the msvcrt.dll file
153 # but if MFC_DEBUG is defined in the environment it will be used. 117 # but if MFC_DEBUG is defined in the environment it will be used.
154 MS_RUNTIME_OPTION = /MD 118 MS_RUNTIME_OPTION = /MD
155 !if "$(MFC_DEBUG)" == "true" 119 !if "$(MFC_DEBUG)" == "true"
163 STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB /D _DISABLE_DEPRECATE_STATIC_CPPLIB 127 STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB /D _DISABLE_DEPRECATE_STATIC_CPPLIB
164 MS_RUNTIME_OPTION = $(MS_RUNTIME_OPTION) $(STATIC_CPPLIB_OPTION) 128 MS_RUNTIME_OPTION = $(MS_RUNTIME_OPTION) $(STATIC_CPPLIB_OPTION)
165 !endif 129 !endif
166 CXX_FLAGS=$(CXX_FLAGS) $(MS_RUNTIME_OPTION) 130 CXX_FLAGS=$(CXX_FLAGS) $(MS_RUNTIME_OPTION)
167 131
168 # How /GX option is spelled
169 GX_OPTION = /GX
170
171 # Optimization settings for various versions of the compilers and types of
172 # builds. Three basic sets of settings: product, fastdebug, and debug.
173 # These get added into CXX_FLAGS as needed by other makefiles.
174 !if "$(COMPILER_NAME)" == "VC6"
175 PRODUCT_OPT_OPTION = /Ox /Os /Gy /GF
176 FASTDEBUG_OPT_OPTION = /Ox /Os /Gy /GF
177 DEBUG_OPT_OPTION = /Od
178 !endif
179
180 !if "$(COMPILER_NAME)" == "VS2003"
181 PRODUCT_OPT_OPTION = /O2 /Oy-
182 FASTDEBUG_OPT_OPTION = /O2 /Oy-
183 DEBUG_OPT_OPTION = /Od
184 SAFESEH_FLAG = /SAFESEH
185 !endif
186
187 !if "$(COMPILER_NAME)" == "VS2005"
188 PRODUCT_OPT_OPTION = /O2 /Oy-
189 FASTDEBUG_OPT_OPTION = /O2 /Oy-
190 DEBUG_OPT_OPTION = /Od
191 GX_OPTION = /EHsc
192 # This VS2005 compiler has /GS as a default and requires bufferoverflowU.lib
193 # on the link command line, otherwise we get missing __security_check_cookie
194 # externals at link time. Even with /GS-, you need bufferoverflowU.lib.
195 # NOTE: Currently we decided to not use /GS-
196 BUFFEROVERFLOWLIB = bufferoverflowU.lib
197 LD_FLAGS = /manifest $(LD_FLAGS) $(BUFFEROVERFLOWLIB)
198 # Manifest Tool - used in VS2005 and later to adjust manifests stored
199 # as resources inside build artifacts.
200 !if "x$(MT)" == "x"
201 MT=mt.exe
202 !endif
203 SAFESEH_FLAG = /SAFESEH
204 !endif
205
206 !if "$(COMPILER_NAME)" == "VS2008"
207 PRODUCT_OPT_OPTION = /O2 /Oy-
208 FASTDEBUG_OPT_OPTION = /O2 /Oy-
209 DEBUG_OPT_OPTION = /Od
210 GX_OPTION = /EHsc
211 LD_FLAGS = /manifest $(LD_FLAGS)
212 MP_FLAG = /MP
213 # Manifest Tool - used in VS2005 and later to adjust manifests stored
214 # as resources inside build artifacts.
215 !if "x$(MT)" == "x"
216 MT=mt.exe
217 !endif
218 SAFESEH_FLAG = /SAFESEH
219 !endif
220
221 !if "$(COMPILER_NAME)" == "VS2010"
222 PRODUCT_OPT_OPTION = /O2 /Oy- 132 PRODUCT_OPT_OPTION = /O2 /Oy-
223 FASTDEBUG_OPT_OPTION = /O2 /Oy- 133 FASTDEBUG_OPT_OPTION = /O2 /Oy-
224 DEBUG_OPT_OPTION = /Od 134 DEBUG_OPT_OPTION = /Od
225 GX_OPTION = /EHsc 135 GX_OPTION = /EHsc
226 LD_FLAGS = /manifest $(LD_FLAGS) 136 LD_FLAGS = /manifest $(LD_FLAGS)
230 !if "x$(MT)" == "x" 140 !if "x$(MT)" == "x"
231 MT=mt.exe 141 MT=mt.exe
232 !endif 142 !endif
233 !if "$(BUILDARCH)" == "i486" 143 !if "$(BUILDARCH)" == "i486"
234 LD_FLAGS = /SAFESEH $(LD_FLAGS) 144 LD_FLAGS = /SAFESEH $(LD_FLAGS)
235 !endif
236 !endif
237
238 !if "$(COMPILER_NAME)" == "VS2012"
239 PRODUCT_OPT_OPTION = /O2 /Oy-
240 FASTDEBUG_OPT_OPTION = /O2 /Oy-
241 DEBUG_OPT_OPTION = /Od
242 GX_OPTION = /EHsc
243 LD_FLAGS = /manifest $(LD_FLAGS)
244 MP_FLAG = /MP
245 # Manifest Tool - used in VS2005 and later to adjust manifests stored
246 # as resources inside build artifacts.
247 !if "x$(MT)" == "x"
248 MT=mt.exe
249 !endif
250 SAFESEH_FLAG = /SAFESEH
251 !endif
252
253 !if "$(BUILDARCH)" == "i486"
254 LD_FLAGS = $(SAFESEH_FLAG) $(LD_FLAGS)
255 !endif 145 !endif
256 146
257 CXX_FLAGS = $(CXX_FLAGS) $(MP_FLAG) 147 CXX_FLAGS = $(CXX_FLAGS) $(MP_FLAG)
258 148
259 # If NO_OPTIMIZATIONS is defined in the environment, turn everything off 149 # If NO_OPTIMIZATIONS is defined in the environment, turn everything off