xref: /trunk/main/solenv/inc/wntmscx.mk (revision af7f2cbf3d6a5481a2f45e7fae5e85a32449c47d)
1#**************************************************************
2#
3#  Licensed to the Apache Software Foundation (ASF) under one
4#  or more contributor license agreements.  See the NOTICE file
5#  distributed with this work for additional information
6#  regarding copyright ownership.  The ASF licenses this file
7#  to you under the Apache License, Version 2.0 (the
8#  "License"); you may not use this file except in compliance
9#  with the License.  You may obtain a copy of the License at
10#
11#    http://www.apache.org/licenses/LICENSE-2.0
12#
13#  Unless required by applicable law or agreed to in writing,
14#  software distributed under the License is distributed on an
15#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16#  KIND, either express or implied.  See the License for the
17#  specific language governing permissions and limitations
18#  under the License.
19#
20#**************************************************************
21
22
23
24# mk file for $(OS)$(COM)$(CPU) == WNTMSCX
25
26SOLAR_JAVA*=TRUE
27FULL_DESK=TRUE
28JAVAFLAGSDEBUG=-g
29
30# SOLAR JAva Unterstuetzung nur fuer wntmscx
31
32ASM=ml
33AFLAGS=/c /Cp /coff
34
35# architecture dependent flags for the C and C++ compiler that can be changed by
36# exporting the variable ARCH_FLAGS="..." in the shell, which is used to start build
37ARCH_FLAGS*=
38
39CC*:=cl
40.IF "$(bndchk)" != ""
41CXX*=nmcl
42.ELSE
43.IF "$(truetime)" != ""
44CXX*=nmcl /NMttOn
45.ELSE
46CXX*:=cl
47.ENDIF
48.ENDIF # "$(bndchk)" != ""
49
50.IF "$(stoponerror)" != ""
51CXX+= /NMstoponerror
52.ENDIF
53
54.IF "$(nmpass)" != ""
55CXX+= /NMpass
56.ENDIF
57
58.IF "$(ttinlines)" != ""
59CXX+= /NMttInlines
60.ENDIF
61
62.IF "$(ttnolines)" != ""
63CXX+= /NMttNoLines
64.ENDIF
65
66.IF "$(VERBOSE)" != "TRUE"
67NOLOGO*=-nologo
68.ENDIF
69
70.IF "$(VERBOSE)" != "TRUE"
71COMPILE_ECHO_SWITCH=-n
72COMPILE_ECHO_FILE=
73.ENDIF
74
75# Flags for COMEX == 11
76
77# disable "warning C4675: resolved overload was found by argument-dependent
78# lookup":
79# -wd4251 -wd4275 -wd4290 -wd4675 -wd4786 -wd4800
80CFLAGS+=-Zm500 -Zc:wchar_t- -GR
81
82# main\sal\qa\OStringBuffer\rtl_OStringBuffer.cxx
83# "fatal error C1128: number of sections exceeded object file format limit : compile with /bigobj"
84CFLAGS+=-bigobj
85
86# Stack buffer overrun detection.
87CFLAGS+=-GS
88
89CFLAGS+=-c -nologo -Gs $(NOLOGO)
90
91CDEFS+= -D_AMD64_=1 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NON_CONFORMING_SWPRINTFS
92
93.IF "$(product)" != ""
94CFLAGS+= -Gy
95.ENDIF # "$(product)" != ""
96
97.IF "$(bndchk)" == ""
98.IF "$(VC_STANDARD)"==""
99CFLAGS+= -Ob1
100.ENDIF  # "$(VC_STANDARD)"==""
101.ENDIF
102
103# flags to enable build with symbols; required for crashdump feature
104#CFLAGSENABLESYMBOLS=-Zi -Fd$(MISC)/_ooo_st_$(TARGET).PDB
105CFLAGSENABLESYMBOLS=-Z7 -Yd
106
107.IF "$(bndchk)" != ""
108.IF "$(debug)" == ""
109CFLAGS+= -Z7
110.ENDIF
111.ENDIF
112
113.IF "$(truetime)" != ""
114.IF "$(debug)" == ""
115CFLAGS+= -Z7
116.ENDIF
117.ENDIF
118
119.IF "$(FULL_DESK)"!=""
120CDEFS+=-DFULL_DESK
121RSCDEFS+=-DFULL_DESK
122.ENDIF
123
124CFLAGSEXCEPTIONS=-EHa
125CFLAGS_NO_EXCEPTIONS=
126
127# boost support for __cdecl (SAL_CALL) C++-UNO interface methods
128# would normally be necessary, but on Windows/x64 that produces
129# errors, as cdecl is a no-op, so it produces duplicate functions/methods
130# that fail to compile. So NEVER EVER EVER set this flag:
131### CDEFS+=-DBOOST_MEM_FN_ENABLE_CDECL
132
133# with the current debug switches PCH won't work
134# anyway. so keep the existing .pch intact and don't
135# touch it
136.IF "$(debug)"!=""
137ENABLE_PCH:=
138.ENDIF "$(debug)"!=""
139
140CFLAGS_CREATE_PCH=-I$(INCPCH) -Fo$(SLO)/pchname.obj -Ycprecompiled_$(PRJNAME).hxx -DPRECOMPILED_HEADERS
141CFLAGS_USE_PCH=-I$(INCPCH) -Yuprecompiled_$(PRJNAME).hxx -Fp$(SLO)/pch/precompiled_$(PRJNAME).hxx$(PCHPOST) -DPRECOMPILED_HEADERS
142CFLAGS_USE_EXCEPTIONS_PCH=-I$(INCPCH) -Yuprecompiled_$(PRJNAME).hxx -Fp$(SLO)/pch_ex/precompiled_$(PRJNAME).hxx$(PCHPOST) -DPRECOMPILED_HEADERS
143.IF "$(CALL_CDECL)"=="TRUE"
144CFLAGSCALL=-Gd
145.ELSE           # "$(CALL_CDECL)"=="TRUE"
146CFLAGSCALL=-Gz
147.ENDIF          # "$(CALL_CDECL)"=="TRUE"
148
149CFLAGSCC=$(ARCH_FLAGS)
150.IF "$(DYNAMIC_CRT)"!=""
151CDEFSSLOMT+=-DWIN32 -D_MT -D_DLL
152CDEFSSLOMT+=-DWIN32 -D_MT -D_DLL
153.IF "$(NO_DYNAMIC_OBJ)"==""
154CDEFSOBJMT+=-DWIN32 -D_MT -D_DLL
155CDEFSOBJMT+=-DWIN32 -D_MT -D_DLL
156.ELSE
157CDEFSOBJMT+=-DWIN32 -D_MT
158CDEFSOBJMT+=-DWIN32 -D_MT
159.ENDIF # "$(NO_DYNAMIC_OBJ)"==""
160.ELSE
161CDEFSSLOMT+=-DWIN32 -D_MT
162CDEFSSLOMT+=-DWIN32 -D_MT
163CDEFSOBJMT+=-DWIN32 -D_MT
164CDEFSOBJMT+=-DWIN32 -D_MT
165.ENDIF # "$(DYNAMIC_CRT)"!=""
166
167CFLAGSPROF=-Gh -Fd$(MISC)/$(@:b).pdb
168CFLAGSDEBUG=-Zi -Fd$(MISC)/$(@:b).pdb
169CFLAGSDBGUTIL=
170.IF "$(VC_STANDARD)"==""
171CFLAGSOPT=-Oxs -Oy-
172CFLAGSNOOPT=-Od
173.ELSE           #  "$(VC_STANDARD)"==""
174CFLAGSOPT=
175CFLAGSNOOPT=
176.ENDIF          #  "$(VC_STANDARD)"==""
177CFLAGSOUTOBJ=-Fo
178
179# For C and C++, certain warnings are disabled globally, as they result in
180# spurious warnings and are hard or impossible to workaround:
181# - "warning C4061: enumerate in switch of enum is not explicitly handled by a
182#   case label",
183# - "warning C4127: conditional expression is constant",
184# - "warning C4191: unsafe conversion from function type to function type",
185# - "warning C4217: member template functions cannot be used for copy-assignment
186#   or copy-construction",
187# - "warning C4250: 'class1' : inherits 'class2::member' via dominance",
188# - "warning C4355: 'this' used in base member initializer list",
189# - "warning C4511: copy constructor could not be generated",
190# - "warning C4512: assignment operator could not be generated",
191# - "warning C4514: unreferenced inline function has been removed",
192# - "warning C4611: interaction between '_setjmp' and C++ object destruction is
193#   non-portable",
194# - "warning C4625: copy constructor could not be generated because a base class
195#   copy constructor is inaccessible",
196# - "warning C4626: assignment operator could not be generated because a base
197#   class assignment operator is inaccessible",
198# - "warning C4675: resolved overload was found by argument-dependent lookup",
199# - "warning C4710: function not inlined",
200# - "warning C4711: function selected for automatic inline expansion",
201# - "warning C4820: padding added after member".
202# - "warning C4503: 'identifier' : decorated name length exceeded, name was truncated"
203#   (http://msdn2.microsoft.com/en-us/library/074af4b6.aspx)
204# - "warning C4180: qualifier applied to function type has no meaning; ignored"
205#   (frequently seen with a recent boost)
206# For C, certain warnings from system headers (stdlib.h etc.) have to be
207# disabled globally (for C++, this is not necessary, as the system headers are
208# wrapped by STLport):
209# - "warning C4255: no function prototype given: converting
210#   '()' to '(void)'".
211# - "warning C4365: conversion from ... to ... signed/unsigned mismatch"
212
213CFLAGSWARNCXX=-Wall -wd4061 -wd4127 -wd4191 -wd4217 -wd4250 -wd4251 -wd4275 \
214    -wd4290 -wd4294 -wd4355 -wd4511 -wd4512 -wd4514 -wd4611 -wd4625 -wd4626 \
215    -wd4640 -wd4675 -wd4710 -wd4711 -wd4786 -wd4800 -wd4820 -wd4503 -wd4619 \
216    -wd4365 -wd4668 -wd4738 -wd4826 -wd4350 -wd4505 -wd4692 -wd4189 -wd4005 \
217    -wd4180
218CFLAGSWARNCC=$(CFLAGSWARNCXX) -wd4255
219CFLAGSWALLCC=$(CFLAGSWARNCC)
220CFLAGSWALLCXX=$(CFLAGSWARNCXX)
221CFLAGSWERRCC=-WX
222
223# Once all modules on this platform compile without warnings, set
224# COMPILER_WARN_ERRORS=TRUE here instead of setting MODULES_WITH_WARNINGS (see
225# settings.mk):
226MODULES_WITH_WARNINGS :=
227
228CDEFS+=-D_MT -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500
229.IF "$(COMEX)" == "11"
230_VC_MANIFEST_BASENAME=__VC80
231.ELSE
232_VC_MANIFEST_BASENAME=__VC90
233.ENDIF
234
235LINK=link /MACHINE:X64 /IGNORE:4102 /IGNORE:4197
236    # do *not* add $(NOLOGO) to LINK or LINKFLAGS. Strangely, the wntmsci12 linker links fine then, but exits with
237    # a return value 1, which makes dmake think it failed
238.IF "$(PRODUCT)"!="full"
239.ELSE
240LINKFLAGS=/MAP /OPT:NOREF
241.ENDIF
242
243# excetion handling protection isn't used on Win64
244
245# enable DEP
246LINKFLAGS+=-nxcompat
247
248# enable ASLR
249LINKFLAGS+=-dynamicbase
250
251.IF "$(linkinc)" != ""
252LINKFLAGS+=-NODEFAULTLIB -INCREMENTAL:YES -DEBUG
253MAPFILE=
254_VC_MANIFEST_INC=1
255.ELSE # "$(linkinc)" != ""
256_VC_MANIFEST_INC=0
257.IF "$(PRODUCT)"!="full"
258LINKFLAGS+= -NODEFAULTLIB -DEBUG
259.ELSE # "$(PRODUCT)"!="full"
260LINKFLAGS+= -NODEFAULTLIB -RELEASE -DEBUG -INCREMENTAL:NO
261.ENDIF # "$(PRODUCT)"!="full"
262MAPFILE=-out:$$@
263.ENDIF # "$(linkinc)" != ""
264
265.IF "$(bndchk)" != ""
266LINK=nmlink $(COMMENTFLAG) $(NOLOGO) /MACHINE:X64
267LINKFLAGS=-NODEFAULTLIB -DEBUG
268.ENDIF
269
270.IF "$(truetime)" != ""
271LINK=nmlink /NMttOn $(COMMENTFLAG) $(NOLOGO) /MACHINE:X64
272LINKFLAGS=-NODEFAULTLIB -DEBUG
273.ENDIF
274
275.IF "$(COMEX)" == "11"
276LINKFLAGSAPPGUI=/SUBSYSTEM:WINDOWS,4.0
277LINKFLAGSSHLGUI=/SUBSYSTEM:WINDOWS,4.0 /DLL
278.ELSE
279LINKFLAGSAPPGUI=/SUBSYSTEM:WINDOWS
280LINKFLAGSSHLGUI=/SUBSYSTEM:WINDOWS /DLL
281.ENDIF # "$(COMEX)" == "11"
282LINKFLAGSAPPCUI=/SUBSYSTEM:CONSOLE /BASE:0x1b000000
283LINKFLAGSSHLCUI=/SUBSYSTEM:CONSOLE /DLL
284LINKFLAGSTACK=/STACK:
285LINKFLAGSPROF=/DEBUG:mapped,partial /DEBUGTYPE:coff cap.lib
286LINKFLAGSWST=/DEBUG:mapped,partial /DEBUGTYPE:coff wst.lib /NODEFAULTLIB
287LINKFLAGSDEBUG=-DEBUG
288LINKFLAGSOPT=
289
290UWINAPILIB*=uwinapi.lib
291.IF "$(DYNAMIC_CRT)"!=""
292.IF "$(USE_STLP_DEBUG)" != ""
293LIBCMT=msvcrt.lib
294.ELSE  # "$(USE_STLP_DEBUG)" != ""
295LIBCMT=msvcrt.lib
296.ENDIF # "$(USE_STLP_DEBUG)" != ""
297.ELSE # "$(DYNAMIC_CRT)"!=""
298.IF "$(USE_STLP_DEBUG)" != ""
299LIBCMT=libcmt.lib
300.ELSE  # "$(USE_STLP_DEBUG)" != ""
301LIBCMT=libcmt.lib
302.ENDIF # "$(USE_STLP_DEBUG)" != ""
303.ENDIF # "$(DYNAMIC_CRT)"!=""
304
305STDOBJVCL=$(L)/salmain.obj
306STDOBJGUI=
307STDSLOGUI=
308STDOBJCUI=
309STDSLOCUI=
310
311STDLIBGUIMT=$(LIBCMT) $(UWINAPILIB) kernel32.lib user32.lib oldnames.lib
312STDLIBCUIMT=$(LIBCMT) $(UWINAPILIB) kernel32.lib user32.lib oldnames.lib
313STDSHLGUIMT=$(LIBCMT) $(UWINAPILIB) kernel32.lib user32.lib oldnames.lib
314STDSHLCUIMT=$(LIBCMT) $(UWINAPILIB) kernel32.lib user32.lib oldnames.lib
315
316.IF "$(USE_SYSTEM_STL)" == "YES"
317.IF "$(DYNAMIC_CRT)"!=""
318.IF "$(USE_STLP_DEBUG)" != ""
319LIBCMT+= msvcprt.lib
320.ELSE
321LIBCMT+= msvcprt.lib
322.ENDIF
323.ELSE # "$(DYNAMIC_CRT)"==""
324.IF "$(USE_STLP_DEBUG)" != ""
325LIBCMT+= libcpmt.lib
326.ELSE
327LIBCMT+= libcpmt.lib
328.ENDIF "$(USE_STLP_DEBUG)" == ""
329.ENDIF # "$(DYNAMIC_CRT)"!=""
330.ELSE # !USE_SYSTEM_STL
331.IF "$(USE_STLP_DEBUG)" != ""
332LIBSTLPORT=stlport_vc71_stldebug.lib
333LIBSTLPORTST=stlport_vc71_stldebug_static.lib
334.ELSE
335LIBSTLPORT=stlport_vc71.lib
336LIBSTLPORTST=stlport_vc71_static.lib
337.ENDIF
338.ENDIF
339
340.IF "$(PROF_EDITION)" == ""
341ATL_INCLUDE*=$(COMPATH)/PlatformSDK/include/atl
342ATL_LIB*=$(COMPATH)/atlmfc/lib
343MFC_INCLUDE*=$(COMPATH)/PlatformSDK/include/mfc
344MFC_LIB*=$(COMPATH)/atlmfc/lib
345.ELSE
346ATL_INCLUDE*=$(COMPATH)/atlmfc/include
347ATL_LIB*=$(COMPATH)/atlmfc/lib
348MFC_INCLUDE*=$(COMPATH)/atlmfc/include
349MFC_LIB*=$(COMPATH)/atlmfc/lib
350.ENDIF
351
352LIBMGR=lib $(NOLOGO)
353IMPLIB=lib
354LIBFLAGS=
355
356IMPLIBFLAGS=-machine:X64
357
358MAPSYM=
359MAPSYMFLAGS=
360
361RC=rc
362RCFLAGS=-r -DWIN32 -fo$@ $(RCFILES)
363RCLINK=rc
364RCLINKFLAGS=
365RCSETVERSION=
366
367MT=mt.exe
368MTFLAGS=$(NOLOGO)
369
370
371DLLPOSTFIX=
372PCHPOST=.pch
373
374CSC*=$(FLIPCMD) csc
375VBC*=vbc
376
377ADVAPI32LIB=advapi32.lib
378SHELL32LIB=shell32.lib
379GDI32LIB=gdi32.lib
380OLE32LIB=ole32.lib
381OLEAUT32LIB=oleaut32.lib
382UUIDLIB=uuid.lib
383WINSPOOLLIB=winspool.lib
384IMM32LIB=imm32.lib
385VERSIONLIB=version.lib
386WINMMLIB=winmm.lib
387WSOCK32LIB=wsock32.lib
388MPRLIB=mpr.lib
389WS2_32LIB=ws2_32.lib
390KERNEL32LIB=kernel32.lib
391USER32LIB=user32.lib
392COMDLG32LIB=comdlg32.lib
393COMCTL32LIB=comctl32.lib
394CRYPT32LIB=crypt32.lib
395GDIPLUSLIB=gdiplus.lib
396DBGHELPLIB=dbghelp.lib
397MSILIB=msi.lib
398DDRAWLIB=ddraw.lib
399SHLWAPILIB=shlwapi.lib
400URLMONLIB=urlmon.lib
401WININETLIB=wininet.lib
402OLDNAMESLIB=oldnames.lib
403MSIMG32LIB=msimg32.lib
404PROPSYSLIB=propsys.lib
405