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