remove the DEBUG_CODE_BEGIN and DEBUG_CODE_END due to the logic between them are...
[edk2.git] / EdkCompatibilityPkg / Sample / CommonTools.env
blob2ad41fdd77cc99f8b7d66859b53f212f8342942c
1 #/*++\r
2 #  \r
3 #  Copyright (c) 2004 - 2007, Intel Corporation                                                         \r
4 #  All rights reserved. This program and the accompanying materials                          \r
5 #  are licensed and made available under the terms and conditions of the BSD License         \r
6 #  which accompanies this distribution.  The full text of the license may be found at        \r
7 #  http://opensource.org/licenses/bsd-license.php                                            \r
8 #                                                                                            \r
9 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
10 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
11 #  \r
12 #  Module Name:\r
13 #  \r
14 #    CommonTools.env \r
15 #  \r
16 #  Abstract:\r
17 #  \r
18 #    This file should not need to be customized. Customizations should\r
19 #    be done in LocalTools.env if at all possible.\r
20 #\r
21 #    This file can be included by other makefiles. \r
22 #   \r
23 #    It defines variables used by the different toolchains. It first includes\r
24 #    the user-customized LocalTools.env, and then uses those defines to \r
25 #    define other variables.\r
26 #\r
27 #    It basically has sections for different toolchains which define variables\r
28 #    used to build.\r
29 #   \r
30 #--*/\r
32 #\r
33 # Everything depends on EDK_SOURCE. Make sure it's defined\r
34 #\r
35 !IFNDEF EDK_SOURCE\r
36 !ERROR EDK_SOURCE environmental variable not set \r
37 !ENDIF\r
39 #\r
40 # Tools depend on BUILD_DIR. Make sure it's defined\r
41 #\r
42 !IFNDEF BUILD_DIR\r
43 !ERROR BUILD_DIR environmental variable not set.  Should be set in PlatformTools.env\r
44 !ENDIF\r
46 #\r
47 # This include file gets customized by the developer. Get the customizations.\r
48 #\r
49 !INCLUDE $(EDK_SOURCE)\Sample\LocalTools.env\r
51 ################################################################################\r
52 #\r
53 # Define paths for EFI build tools\r
54 #\r
55 ################################################################################\r
56 !IFNDEF EDK_TOOLS_PATH\r
57 EDK_TOOLS_BIN     = $(EDK_SOURCE)\Tools\Bin\r
58 !ELSE\r
59 EDK_TOOLS_BIN     = $(EDK_TOOLS_PATH)\Bin\r
60 !ENDIF\r
61 EDK_TOOLS_DIR     = $(EDK_SOURCE)\Sample\Tools\r
62 EDK_TOOLS_SOURCE  = $(EDK_TOOLS_DIR)\Source\r
63 EDK_TOOLS_COMMON  = $(EDK_TOOLS_DIR)\Source\Common\r
64 EDK_TOOLS_OUTPUT  = $(BUILD_DIR)\Tools\r
65 PCCTS_DIR         = $(EDK_SOURCE)\Other\Maintained\Tools\Pccts\r
67 #\r
68 # This include file gets some version info.\r
69 #\r
70 !INCLUDE $(EDK_SOURCE)\Sample\Version.env\r
72 #\r
73 # Macros to define the build tools\r
74 #\r
75 ANTLR           = $(PCCTS_DIR)\bin\antlr\r
76 DLG             = $(PCCTS_DIR)\bin\dlg\r
77 EXE2BIN         = $(EDK_TOOLS_OUTPUT)\Strip\r
78 FWIMAGE         = $(EDK_TOOLS_OUTPUT)\FwImage\r
79 GENDEPEX        = $(EDK_TOOLS_OUTPUT)\GenDepex\r
80 GENFDIMAGE      = $(EDK_TOOLS_OUTPUT)\GenFdImage\r
81 GENFFSFILE      = $(EDK_TOOLS_OUTPUT)\GenFfsFile\r
82 GENFVIMAGE      = $(EDK_TOOLS_OUTPUT)\GenFvImage\r
83 GENSECTION      = $(EDK_TOOLS_OUTPUT)\GenSection\r
84 GENTEIMAGE      = $(EDK_TOOLS_OUTPUT)\GenTEImage\r
85 GUIDCHK         = $(EDK_TOOLS_OUTPUT)\GuidChk\r
86 MAKEDEPS        = $(EDK_TOOLS_OUTPUT)\MakeDeps\r
87 PROCESSDSC      = $(EDK_TOOLS_OUTPUT)\ProcessDsc\r
88 STRGATHER       = $(EDK_TOOLS_OUTPUT)\StrGather\r
89 SETSTAMP        = $(EDK_TOOLS_OUTPUT)\SetStamp\r
90 VFRCOMPILE      = $(EDK_TOOLS_OUTPUT)\VfrCompile\r
91 GENAPRIORI      = $(EDK_TOOLS_OUTPUT)\GenAprioriFile\r
92 MODIFYINF       = $(EDK_TOOLS_OUTPUT)\ModifyInf\r
94 MAKE            = nmake -nologo\r
96 #\r
97 # Everything else requires that TOOLCHAIN be defined. This should be defined\r
98 # by the calling makefile. \r
99 #\r
100 !IFNDEF TOOLCHAIN\r
101 !ERROR TOOLCHAIN not defined for $(EDK_SOURCE)\Sample\CommonTools.env\r
102 !ENDIF\r
104 ###############################################################################\r
106 # Specify the path and macros for ASL tools\r
108 ###############################################################################\r
109 !IF "$(EFI_ASL_LOCAL)" == "YES"\r
110 ASL               = $(ASLPATH)\Iasl\r
111 !ELSE\r
112 ASL               = $(EDK_TOOLS_BIN)\Iasl\r
113 !ENDIF\r
115 ASL_FLAGS         =\r
116 C_FLAGS_ASL       = /nologo /EP /C\r
118 ###############################################################################\r
120 # Specify the path and macros for IA32 tools\r
122 ###############################################################################\r
124 !IF "$(TOOLCHAIN)" == "TOOLCHAIN_IA32"\r
127 # Globally relevant flags. Options not appropriate for all builds may be \r
128 # appropriate in the processor architecture specific macros (xxx_ARCH_FLAGS) or\r
129 # in the platform specific macros (xxx_PROJ_FLAGS)\r
131 C_STD_INCLUDE       = /X\r
133 !IF "$(EFI_GENERATE_INTERMEDIATE_FILE)" == "YES"\r
135 !IF "$(USE_VC8)" == "YES"\r
136 C_STD_FLAGS         = /nologo /W4 /WX /EHs-c- /GR- /Gy /GS- /D USE_VC8 /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)\r
137 !ELSE\r
138 C_STD_FLAGS         = /nologo /W4 /WX /GX- /GR- /Gy /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)\r
139 !ENDIF\r
140 ASM_STD_FLAGS       = /nologo /Fl$*.lst $(INC)\r
142 !ELSE\r
144 !IF "$(USE_VC8)" == "YES"\r
145 C_STD_FLAGS         = /nologo /W4 /WX /EHs-c- /GR- /Gy /GS- /D USE_VC8 /c /Fo$@ $(INC)\r
146 !ELSE\r
147 C_STD_FLAGS         = /nologo /W4 /WX /GX- /GR- /Gy /c /Fo$@ $(INC)\r
148 !ENDIF\r
149 ASM_STD_FLAGS       = /nologo $(INC) \r
151 !ENDIF\r
153 LINK_STD_FLAGS      = /nologo /SUBSYSTEM:CONSOLE /NODEFAULTLIB /MAP /OPT:REF /BASE:0 /IGNORE:4001,4078,4086,4096,4108 $(BUILD_DIR)\IA32\CompilerStub.lib\r
154 LIB_STD_FLAGS       = /nologo \r
157 # Build type specific flags.  Globally relevant flags belong in the standard \r
158 # macros, xxx_STD_FLAGS defined above.  Platform specific macros belong in the\r
159 # PlatformTools.env file in macros named xxx_PROJ_FLAGS.\r
161 C_ARCH_FLAGS          = /D EFI32\r
162 ASM_ARCH_FLAGS        = /W3 /WX /c /coff /Fo$@ /DEFI32\r
163 LINK_ARCH_FLAGS       = /MACHINE:I386\r
164 LIB_ARCH_FLAGS        =\r
166 ASM16_FLAGS           = /nologo /c /omf /Fo$@\r
167 ASMLINK16_FLAGS       =\r
170 # Build tools\r
172 CC                = cl\r
173 LINK              = link\r
174 LIB               = lib\r
176 # When using VS ml to compile 16bit code, please add /omf compiler option \r
178 ASM               = ml\r
180 !IF "$(EFI_ASSEMBLER_NAME)" == ""\r
181 ASM16             = $(MASMPATH)\bin\ml\r
182 ASMLINK16         = $(MASMPATH)\binr\link\r
183 ASMLINK           = $(MASMPATH)\binr\link\r
184 !ELSE\r
185 ASM16             = $(EDK_TOOLS_BIN)\Ia32\$(EFI_ASSEMBLER_NAME)\bin\ml\r
186 ASMLINK16         = $(EDK_TOOLS_BIN)\Ia32\$(EFI_ASSEMBLER_NAME)\binr\link\r
187 ASMLINK           = $(EDK_TOOLS_BIN)\Ia32\$(EFI_ASSEMBLER_NAME)\binr\link\r
188 !ENDIF\r
190 BSCMAKE           = bscmake\r
192 !IF "$(EFI_SYMBOLIC_DEBUG)" == "YES"\r
193 ASM_ARCH_FLAGS      = $(ASM_ARCH_FLAGS) /Zi /DDEBUG\r
194 C_STD_FLAGS         = $(C_STD_FLAGS) /Zi /Gm /Fd$(DEST_DIR)\$(BASE_NAME)Obj\r
195 LINK_STD_FLAGS      = $(LINK_STD_FLAGS) /DEBUG\r
196 !ENDIF\r
198 # END OF TOOLCHAIN_IA32\r
199 ###############################################################################\r
201 ###############################################################################\r
203 # Specify the path and macros for the X64 (also called x86-64, EM64T, AMD64) tools\r
205 ###############################################################################\r
207 !ELSEIF "$(TOOLCHAIN)" == "TOOLCHAIN_X64"\r
210 # Globally relevant flags. Options not appropriate for all builds may be \r
211 # appropriate in the processor architecture specific macros (xxx_ARCH_FLAGS) or\r
212 # in the platform specific macros (xxx_PROJ_FLAGS)\r
214 C_STD_INCLUDE       = /X\r
215 !IF "$(EFI_GENERATE_INTERMEDIATE_FILE)" == "YES"\r
216 C_STD_FLAGS         = /nologo /W4 /WX /EHs-c- /GR- /Gy /c /GS- /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC) \r
217 ASM_STD_FLAGS       = /nologo /Fl$*.lst $(INC)\r
218 !ELSE\r
219 C_STD_FLAGS         = /nologo /W4 /WX /EHs-c- /GR- /Gy /c /GS- /Fo$@ $(INC) \r
220 ASM_STD_FLAGS       = /nologo $(INC)\r
221 !ENDIF\r
222 LINK_STD_FLAGS      = /nologo /SUBSYSTEM:CONSOLE /NODEFAULTLIB /MAP /OPT:REF /BASE:0 /IGNORE:4001,4078,4086,4096,4108 $(BUILD_DIR)\X64\CompilerStub.lib\r
223 LIB_STD_FLAGS       = /nologo \r
226 # Build type specific flags.  Globally relevant flags belong in the standard \r
227 # macros, xxx_STD_FLAGS defined above.  Platform specific macros belong in the\r
228 # PlatformTools.env file in macros named xxx_PROJ_FLAGS.\r
230 C_ARCH_FLAGS          = /D EFIX64\r
231 ASM_ARCH_FLAGS        = /W3 /WX /c /Fo$@ /DEFIX64\r
232 LINK_ARCH_FLAGS       = /Machine:AMD64\r
233 LIB_ARCH_FLAGS        =\r
235 ASM16_FLAGS           = /nologo /c /omf /Fo$@\r
236 ASMLINK16_FLAGS       =\r
239 # Build tools\r
241 !IF "$(EFI_COMPILER_X64_NAME)" == ""\r
242 !IF "$(USE_VC8_X64)" == "YES"\r
244 # Use VC8 as X64 compiler\r
246 CC                = "$(VC8_X64_PATH)\cl"\r
247 LINK              = "$(VC8_X64_PATH)\link"\r
248 LIB               = "$(VC8_X64_PATH)\lib"\r
249 ASM               = "$(VC8_X64_PATH)\ml64"\r
250 !ELSE\r
252 # Use DDK as X64 compiler\r
254 CC                = $(WIN_DDK_X64_PATH)\cl\r
255 LINK              = $(WIN_DDK_X64_PATH)\link\r
256 LIB               = $(WIN_DDK_X64_PATH)\lib\r
257 ASM               = $(WIN_DDK_X64_PATH)\ml64\r
258 !ENDIF\r
259 !ELSE\r
260 CC                = $(EDK_TOOLS_BIN)\X64\$(EFI_COMPILER_X64_NAME)\cl\r
261 LINK              = $(EDK_TOOLS_BIN)\X64\$(EFI_COMPILER_X64_NAME)\link\r
262 LIB               = $(EDK_TOOLS_BIN)\X64\$(EFI_COMPILER_X64_NAME)\lib\r
263 ASM               = $(EDK_TOOLS_BIN)\X64\$(EFI_COMPILER_X64_NAME)\ml64\r
264 !ENDIF\r
266 !IF "$(EFI_ASSEMBLER_NAME)" == ""\r
267 ASM16             = $(MASMPATH)\bin\ml\r
268 ASMLINK16         = $(MASMPATH)\binr\link\r
269 ASMLINK           = $(MASMPATH)\binr\link\r
270 !ELSE\r
271 ASM16             = $(EDK_TOOLS_BIN)\Ia32\$(EFI_ASSEMBLER_NAME)\bin\ml\r
272 ASMLINK16         = $(EDK_TOOLS_BIN)\Ia32\$(EFI_ASSEMBLER_NAME)\binr\link\r
273 ASMLINK           = $(EDK_TOOLS_BIN)\Ia32\$(EFI_ASSEMBLER_NAME)\binr\link\r
274 !ENDIF\r
276 BSCMAKE           = bscmake\r
278 !IF "$(EFI_SYMBOLIC_DEBUG)" == "YES"\r
279 ASM_ARCH_FLAGS      = $(ASM_ARCH_FLAGS) /Zi /DDEBUG\r
280 C_STD_FLAGS         = $(C_STD_FLAGS) /Zi /Gm /Fd$(DEST_DIR)\$(BASE_NAME)Obj\r
281 LINK_STD_FLAGS      = $(LINK_STD_FLAGS) /DEBUG\r
282 !ENDIF\r
284 # END OF TOOLCHAIN_X64\r
285 ###############################################################################\r
287 ###############################################################################\r
289 # Specify the path and macros for the IPF tools\r
291 ###############################################################################\r
293 !ELSEIF "$(TOOLCHAIN)" == "TOOLCHAIN_IPF"\r
296 # Globally relevant flags. Options not appropriate for all builds may be \r
297 # appropriate in the processor architecture specific macros (xxx_ARCH_FLAGS) or\r
298 # in the platform specific macros (xxx_PROJ_FLAGS)\r
300 C_STD_INCLUDE       = /X\r
302 !IF "$(EFI_GENERATE_INTERMEDIATE_FILE)" == "YES"\r
304 !IF "$(USE_VC8_IPF)" == "YES"\r
305 C_STD_FLAGS         = /nologo /W4 /WX /EHs-c- /GR- /Gy /GS- /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)\r
306 !ELSE\r
307 !IF "$(USE_NEWDDK)" == "YES"\r
308 C_STD_FLAGS         = /nologo /W4 /WX /EHs-c- /GR- /Gy /GS- /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)\r
309 !ELSE\r
310 C_STD_FLAGS         = /nologo /W4 /WX /GX- /GR- /Gy /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)\r
311 !ENDIF\r
312 !ENDIF\r
314 !ELSE\r
316 !IF "$(USE_VC8_IPF)" == "YES"\r
317 C_STD_FLAGS         = /nologo /W4 /WX /EHs-c- /GR- /Gy /GS- /c /Fo$@ $(INC)\r
318 !ELSE\r
319 !IF "$(USE_NEWDDK)" == "YES"\r
320 C_STD_FLAGS         = /nologo /W4 /WX /EHs-c- /GR- /Gy /GS- /c /Fo$@ $(INC)\r
321 !ELSE\r
322 C_STD_FLAGS         = /nologo /W4 /WX /GX- /GR- /Gy /c /Fo$@ $(INC)\r
323 !ENDIF\r
324 !ENDIF\r
326 !ENDIF\r
328 ASM_STD_FLAGS       = $(INC) \r
329 LINK_STD_FLAGS      = /nologo /SUBSYSTEM:CONSOLE /NODEFAULTLIB /MAP /OPT:REF /BASE:0 /IGNORE:4001,4078,4086,4096,4108\r
330 LIB_STD_FLAGS       = /nologo \r
333 # Build type specific flags.  Globally relevant flags belong in the standard \r
334 # macros, xxx_STD_FLAGS defined above.  Platform specific macros belong in the\r
335 # PlatformTools.env file in macros named xxx_PROJ_FLAGS.\r
337 C_ARCH_FLAGS          = /D EFI64\r
338 ASM_ARCH_FLAGS        = -N us -X explicit -M ilp64 -N so -W4 -o $@\r
339 LINK_ARCH_FLAGS       = /MACHINE:IA64\r
340 LIB_ARCH_FLAGS        =\r
343 # This is used for preprocessing IPF Assembly files\r
345 C_FLAGS_PRO       = /nologo /EP /C $(C_STD_FLAGS) $(C_ARCH_FLAGS) $(C_PROJ_FLAGS) $(C_STD_INCLUDE)\r
347 !IF "$(EFI_DEBUG)" == "YES"\r
348 ASM_ARCH_FLAGS   = $(ASM_ARCH_FLAGS) -d debug\r
349 !ENDIF\r
352 # Build tools\r
354 !IF "$(EFI_COMPILER_NAME)" == ""\r
355 !IF "$(USE_VC8_IPF)" == "YES"\r
356 CC                = "$(VC8_IPF_PATH)\cl"\r
357 LINK              = "$(VC8_IPF_PATH)\link"\r
358 LIB               = "$(VC8_IPF_PATH)\lib"\r
359 !ELSE\r
360 CC                = $(EFI_IA64TOOLPATH)\cl\r
361 LINK              = $(EFI_IA64TOOLPATH)\link\r
362 LIB               = $(EFI_IA64TOOLPATH)\lib\r
363 !ENDIF\r
364 !ELSE\r
365 CC                = $(EDK_TOOLS_BIN)\Ipf\$(EFI_COMPILER_NAME)\cl\r
366 LINK              = $(EDK_TOOLS_BIN)\Ipf\$(EFI_COMPILER_NAME)\link\r
367 LIB               = $(EDK_TOOLS_BIN)\Ipf\$(EFI_COMPILER_NAME)\lib\r
368 !ENDIF\r
370 !IF "$(EFI_ASSEMBLER_NAME)" == ""\r
371 !IF "$(USE_VC8_IPF)" == "YES"\r
372 ASM               = "$(VC8_IPF_PATH)\ias"\r
373 ASMLINK           = "$(VC8_IPF_PATH)\link"\r
374 !ELSE\r
375 ASM               = $(EFI_IA64ASMPATH)\ias\r
376 ASMLINK           = $(EFI_IA64ASMPATH)\link\r
377 !ENDIF\r
378 !ELSE\r
379 ASM               = $(EDK_TOOLS_BIN)\Ipf\$(EFI_ASSEMBLER_NAME)\ias\r
380 ASMLINK           = $(EDK_TOOLS_BIN)\Ipf\$(EFI_ASSEMBLER_NAME)\link\r
381 !ENDIF\r
383 BSCMAKE           = bscmake\r
385 !IF "$(EFI_SYMBOLIC_DEBUG)" == "YES"\r
386 C_STD_FLAGS         = $(C_STD_FLAGS) /Zi /Gm /Fd$(DEST_DIR)\$(BASE_NAME)Obj\r
387 LINK_STD_FLAGS      = $(LINK_STD_FLAGS) /DEBUG\r
388 !ENDIF\r
390 # END TOOLCHAIN_IPF\r
391 ###############################################################################\r
393 ###############################################################################\r
395 # Define toolchain for building the EFI tools on an IA32 system.\r
397 ###############################################################################\r
399 !ELSEIF "$(TOOLCHAIN)" == "TOOLCHAIN_MSVC"\r
402 # Globally relevant flags. Options not appropriate for all builds may be \r
403 # appropriate in the processor architecture specific macros (xxx_ARCH_FLAGS) or\r
404 # in the platform specific macros (xxx_PROJ_FLAGS)\r
406 !IF "$(EFI_GENERATE_INTERMEDIATE_FILE)" == "YES"\r
408 !IF "$(USE_VC8)" == "YES"\r
409 C_STD_FLAGS         = /nologo /W4 /WX /EHsc /Gy /D _CRT_SECURE_NO_DEPRECATE /D USE_VC8 /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)\r
410 !ELSE\r
411 C_STD_FLAGS         = /nologo /W4 /WX /GX /Gy /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)\r
412 !ENDIF\r
413 ASM_STD_FLAGS       = /nologo /Fl$*.lst $(INC)\r
415 !ELSE\r
417 !IF "$(USE_VC8)" == "YES"\r
418 C_STD_FLAGS         = /nologo /W4 /WX /EHsc /Gy /D _CRT_SECURE_NO_DEPRECATE /D USE_VC8 /c /Fo$@ $(INC)\r
419 !ELSE\r
420 C_STD_FLAGS         = /nologo /W4 /WX /GX /Gy /c /Fo$@ $(INC)\r
421 !ENDIF\r
422 ASM_STD_FLAGS       = /nologo $(INC)\r
424 !ENDIF\r
426 LINK_STD_FLAGS      = /nologo /SUBSYSTEM:CONSOLE /NODEFAULTLIB /MAP /OPT:REF\r
427 LIB_STD_FLAGS       = /nologo \r
429 MSVS_LINK_LIBPATHS = \r
432 # Build type specific flags.  Globally relevant flags belong in the standard \r
433 # macros, xxx_STD_FLAGS defined above.  Platform specific macros belong in the\r
434 # PlatformTools.env file in macros named xxx_PROJ_FLAGS.\r
438 # Add a define to skip inclusion of Microsoft include file rpcasync.h, which\r
439 # results in a compile warning at W4.\r
441 C_ARCH_FLAGS          = /Od /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D __RPCASYNC_H__ \r
442 ASM_ARCH_FLAGS        =\r
443 LINK_ARCH_FLAGS       = /MACHINE:i386\r
444 LIB_ARCH_FLAGS        =\r
447 # Always turn on debug for the build tools so that we can debug problems \r
448 # quickly.\r
449 # NOTE: Ideally all the tools makefiles should be updated to use LINK_FLAGS_EXE\r
450 #       instead of L_FLAGS for linking. When this happens we can get rid of\r
451 #       the L_FLAGS definition here.\r
454 #!IF "$(EFI_SYMBOLIC_DEBUG)" == "YES"\r
455 C_STD_FLAGS       = $(C_STD_FLAGS) /Zi /Gm /Fd$(EDK_TOOLS_OUTPUT)\$(TARGET_NAME)Obj\r
456 LINK_ARCH_FLAGS   = $(LINK_ARCH_FLAGS) /DEBUG\r
457 L_FLAGS           = $(L_FLAGS) /DEBUG\r
458 #!ENDIF\r
461 # Clear any project flags when building tools\r
463 C_PROJ_FLAGS          =\r
464 ASM_PROJ_FLAGS        =\r
465 LINK_PROJ_FLAGS       =\r
466 LIB_PROJ_FLAGS        =\r
467 EBC_C_PROJ_FLAGS      =\r
468 EBC_LINK_PROJ_FLAGS   =\r
469 EBC_LIB_PROJ_FLAGS    =\r
472 # Build tools\r
474 CC                = cl\r
475 LINK              = link\r
476 BSCMAKE           = bscmake\r
477 ASM               = ml\r
478 ASMLINK           = link\r
480 # Use a different macro name for tools build to avoid conflict with environment\r
481 # variable LIB\r
483 LIB_EXE           = lib\r
485 INC = -I $(EDK_SOURCE)\Foundation                          \\r
486       -I $(EDK_SOURCE)\Foundation\Efi                      \\r
487       -I $(EDK_SOURCE)\Foundation\Framework                \\r
488       -I $(EDK_SOURCE)\Sample\Platform\Nt32                \\r
489       -I $(EDK_SOURCE)\Foundation\Core\Dxe                 \\r
490       -I $(EDK_SOURCE)\Foundation\Include                  \\r
491       -I $(EDK_SOURCE)\Foundation\Efi\Include              \\r
492       -I $(EDK_SOURCE)\Foundation\Framework\Include        \\r
493       -I $(EDK_SOURCE)\Foundation\Include\IndustryStandard \\r
494       -I $(EDK_SOURCE)\Foundation\Include\Ia32             \\r
495       -I $(EDK_SOURCE)\Foundation\Include\Pei              \\r
496       -I $(EDK_SOURCE)\Foundation\Library\Pei\Include      \\r
497       -I $(EDK_SOURCE)\Sample\Include                      \\r
498       -I "$(EDK_TOOLS_COMMON)"\r
500 # END TOOLCHAIN_MSVC\r
501 ###############################################################################\r
503 ###############################################################################\r
505 # Specify the path and macros for the EBC tools\r
507 ###############################################################################\r
509 !ELSEIF "$(TOOLCHAIN)" == "TOOLCHAIN_EBC"\r
511 !IF "$(EFI_GENERATE_INTERMEDIATE_FILE)" == "YES"\r
512 EBC_C_STD_FLAGS     = /nologo /W3 /WX /c /Fa$* /FAsc /Fo$@ $(INC) /X\r
513 !ELSE\r
514 EBC_C_STD_FLAGS     = /nologo /W3 /WX /c /Fo$@ $(INC) /X\r
515 !ENDIF\r
518 # All EBC entry point functions must be called EfiMain. Redefine it.\r
520 !IF "$(IMAGE_ENTRY_POINT)" == ""\r
521 IMAGE_ENTRY_POINT   = EfiMain\r
522 !ENDIF\r
523 EBC_C_STD_FLAGS     = $(EBC_C_STD_FLAGS) /D $(IMAGE_ENTRY_POINT)=EfiMain\r
524 EBC_LINK_STD_FLAGS  = /nologo /MACHINE:EBC /BASE:0 /OPT:REF /NODEFAULTLIB\r
525 EBC_LIB_STD_FLAGS   = /nologo /MACHINE:EBC \r
528 # EBC tools path should be defined in LocalTools.env.\r
530 EBC_CC            = $(EBC_TOOLS_PATH)\Bin\Iec\r
531 EBC_LINK          = $(EBC_TOOLS_PATH)\Bin\Link\r
532 EBC_LIB           = $(EBC_TOOLS_PATH)\Bin\Link /lib\r
534 !IF "$(EFI_SYMBOLIC_DEBUG)" == "YES"\r
535 EBC_C_STD_FLAGS     = $(EBC_C_STD_FLAGS) /Zd /Zi\r
536 EBC_LINK_STD_FLAGS  = $(EBC_LINK_STD_FLAGS) /DEBUG\r
537 !ENDIF\r
539 #  END TOOLCHAIN_EBC\r
541 ###############################################################################\r
543 # Let the caller define a NULL toolchain if they don't care. This way you can\r
544 # pick up at least some defines.\r
546 ###############################################################################\r
548 !ELSEIF "$(TOOLCHAIN)" == ""\r
550 ###############################################################################\r
552 # You get this if the calling makefile did not define TOOLCHAIN_xxx before\r
553 # including this file.\r
555 ###############################################################################\r
557 !ELSE\r
558 !ERROR Unknown toolchain $(TOOLCHAIN) defined for $(EDK_SOURCE)\Sample\CommonTools.env use\r
559 !ENDIF\r
562 ###############################################################################\r
564 # These are standard settings for all tool chains\r
566 ###############################################################################\r
569 # These are standard build options\r
571 VERSION_FLAGS       = /D EFI_SPECIFICATION_VERSION=$(EFI_SPECIFICATION_VERSION) \\r
572                       /D PI_SPECIFICATION_VERSION=$(PI_SPECIFICATION_VERSION) \\r
573                       /D TIANO_RELEASE_VERSION=$(TIANO_RELEASE_VERSION)\r
574 C_STD_FLAGS         = $(C_STD_FLAGS) $(VERSION_FLAGS)\r
575 EBC_C_STD_FLAGS     = $(EBC_C_STD_FLAGS) $(VERSION_FLAGS)\r
576 C_FLAGS_ASL         = $(C_FLAGS_ASL) $(VERSION_FLAGS)\r
577 VFRCOMPILE_FLAGS    = $(VFRCOMPILE_FLAGS) -ppflag "$(VERSION_FLAGS)"\r
578 !IF "$(TOOLCHAIN)" != "TOOLCHAIN_IPF"\r
579 ASM_STD_FLAGS       = $(ASM_STD_FLAGS) $(VERSION_FLAGS)\r
580 !ENDIF\r
582 !IF "$(EFI_DEBUG)" == "YES"\r
583 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_DEBUG\r
584 !ENDIF\r
586 !IF "$(EFI_DEBUG_CLEAR_MEMORY)" == "YES"\r
587 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_DEBUG_CLEAR_MEMORY\r
588 !ENDIF\r
590 !IF "$(EFI_PEI_PERFORMANCE)" == "YES"\r
591 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_PEI_PERFORMANCE /D EFI_DXE_PERFORMANCE\r
592 !ENDIF\r
594 !IF "$(EFI_ADDTIONAL_DRIVERS)" == "YES"\r
595 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_ADDTIONAL_DRIVERS\r
596 !ENDIF\r
598 !IF "$(EFI_USE_CUSTOM_COMPRESS)" == "YES"\r
599 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_USE_CUSTOM_COMPRESS\r
600 !ENDIF\r
602 !IF "$(EFI_UNLOCK_FWH)" == "YES"\r
603 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_UNLOCK_FWH\r
604 !ENDIF\r
606 !IF "$(EFI_DXE_PERFORMANCE)" == "YES"\r
607 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_DXE_PERFORMANCE\r
608 !ENDIF\r
610 !IF "$(EFI_S3_RESUME)" == "YES"\r
611 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_S3_RESUME\r
612 !ENDIF\r
614 !IF "$(EFI_SIZE_REDUCTION_APPLIED)" == "YES"\r
615 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_SIZE_REDUCTION_APPLIED\r
616 !ENDIF\r
618 !IF "$(EFI_PEI_REPORT_STATUS_CODE)" == "YES"\r
619 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D EFI_PEI_REPORT_STATUS_CODE_ON\r
620 !ENDIF\r
622 !IF "$(SIZE_REDUCTION_ISA_COMBINED)" == "YES"\r
623 FEATURE_FLAGS   = $(FEATURE_FLAGS) /D SIZE_REDUCTION_ISA_COMBINED\r
624 !ENDIF\r
626 C_STD_FLAGS       = $(C_STD_FLAGS) $(FEATURE_FLAGS)\r
627 EBC_C_STD_FLAGS   = $(EBC_C_STD_FLAGS) $(FEATURE_FLAGS)\r
628 C_FLAGS_ASL       = $(C_FLAGS_ASL) $(FEATURE_FLAGS)\r
629 VFRCOMPILE_FLAGS  = $(VFRCOMPILE_FLAGS) -ppflag "$(FEATURE_FLAGS)"\r
630 !IF "$(TOOLCHAIN)" != "TOOLCHAIN_IPF"\r
631 ASM_STD_FLAGS     = $(ASM_STD_FLAGS) $(FEATURE_FLAGS)\r
632 !ENDIF\r
635 # This is used for preprocessing dependency files\r
637 C_FLAGS_DPX       = /nologo /EP $(INC) $(VERSION_FLAGS) $(FEATURE_FLAGS)\r
639 ###############################################################################\r
641 ###############################################################################\r
643 # Collect final build flags for components.  These flags are used to build\r
644 # any standard component and some non-standard components.\r
646 ###############################################################################\r
647 C_FLAGS           = $(C_STD_FLAGS) $(C_ARCH_FLAGS) $(C_PROJ_FLAGS) $(C_STD_INCLUDE)\r
648 ASM_FLAGS         = $(ASM_STD_FLAGS) $(ASM_ARCH_FLAGS) $(ASM_PROJ_FLAGS)\r
649 LINK_FLAGS_DLL    = $(LINK_STD_FLAGS) $(LINK_ARCH_FLAGS) $(LINK_PROJ_FLAGS) /DLL \r
650 LINK_FLAGS_EXE    = $(LINK_STD_FLAGS) $(LINK_ARCH_FLAGS) $(LINK_PROJ_FLAGS) \r
651 LIB_FLAGS         = $(LIB_STD_FLAGS) $(LIB_ARCH_FLAGS) $(LIB_PROJ_FLAGS)\r
652 EBC_C_FLAGS       = $(EBC_C_STD_FLAGS) $(EBC_C_ARCH_FLAGS) $(EBC_C_PROJ_FLAGS)\r
653 EBC_LINK_FLAGS    = $(EBC_LINK_STD_FLAGS) $(EBC_LINK_ARCH_FLAGS) $(EBC_LINK_PROJ_FLAGS)\r
654 EBC_LIB_FLAGS     = $(EBC_LIB_STD_FLAGS) $(EBC_LIB_ARCH_FLAGS) $(EBC_LIB_PROJ_FLAGS)\r
656 ###############################################################################\r
658 # define X64 denpendant driver files\r
660 ###############################################################################\r
661 !IF "$(EFI_BUILD_TARGET_X64)" == "YES"\r
662 BUILD_TARGET_PROCESSOR = X64\r
663 DXE_IPL                = DxeIplX64\r
664 !ELSE\r
665 BUILD_TARGET_PROCESSOR = IA32\r
666 DXE_IPL                = DxeIpl\r
667 !ENDIF                                                                                        \r
668 ###############################################################################\r
670 # define EFI specification denpendant driver files\r
672 ###############################################################################\r
673 !IF "$(UEFI_MODE)" == "YES"\r
674 UEFI_PREFIX = Uefi\r
675 ATAPI_PASS_THRU_INF = Sample\Bus\Pci\AtapiExtPassThru\Dxe\AtapiExtPassThru.inf\r
676 !IF "$(CAPSULE_INF)" == ""\r
677 CAPSULE_INF = Sample\Universal\Capsule\RuntimeDxe\Capsule.inf \r
678 !ENDIF\r
679 DEVPATH_INF = Sample\Universal\DevicePath\Dxe\DevicePath.inf\r
680 !ELSE\r
681 UEFI_PREFIX =\r
682 CAPSULE_INF =\r
683 DEVPATH_INF =\r
684 ATAPI_PASS_THRU_INF = Sample\Bus\Pci\AtapiPassThru\Dxe\AtapiPassThru.inf\r
685 !ENDIF\r
686 ###############################################################################\r
688 # define PIWG specification denpendant driver files\r
690 ###############################################################################\r
691 !IF "$(PI_MODE)" == "YES"\r
692 PI_PREFIX = Pi\r
693 !ELSE\r
694 PI_PREFIX =\r
695 !ENDIF\r
696 ###############################################################################\r
698 # define customized compress makefile\r
700 ###############################################################################\r
701 CUSTOMIZEDCOMPRESS_MAKEFILE   = $(EDK_TOOLS_SOURCE)\CustomizedCompress\Makefile \r
702 COMPRESS_METHOD               = Dummy                                                 \r
703 ###############################################################################         \r
704 #                                                                                       \r
705 # define EFI_BINARY default path\r
706 #                                                                                       \r
707 ###############################################################################  \r
708 !IFNDEF EFI_BINARY\r
709 EFI_BINARY=$(EDK_SOURCE)\Bin\r
710 !ENDIF\r
712 EFI_PLATFORM_BIN=$(EFI_BINARY)\$(PROJECT_NAME)$(BUILD_TARGET_DIRECTORY)\r