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
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
18 # This file should not need to be customized. Customizations should
\r
19 # be done in LocalTools.env if at all possible.
\r
21 # This file can be included by other makefiles.
\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
27 # It basically has sections for different toolchains which define variables
\r
33 # Everything depends on EDK_SOURCE. Make sure it's defined
\r
36 !ERROR EDK_SOURCE environmental variable not set
\r
40 # Tools depend on BUILD_DIR. Make sure it's defined
\r
43 !ERROR BUILD_DIR environmental variable not set. Should be set in PlatformTools.env
\r
47 # This include file gets customized by the developer. Get the customizations.
\r
49 !INCLUDE $(EDK_SOURCE)\Sample\LocalTools.env
\r
51 ################################################################################
\r
53 # Define paths for EFI build tools
\r
55 ################################################################################
\r
56 !IFNDEF EDK_TOOLS_PATH
\r
57 EDK_TOOLS_BIN = $(EDK_SOURCE)\Tools\Bin
\r
59 EDK_TOOLS_BIN = $(EDK_TOOLS_PATH)\Bin
\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
68 # This include file gets some version info.
\r
70 !INCLUDE $(EDK_SOURCE)\Sample\Version.env
\r
73 # Macros to define the build tools
\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
97 # Everything else requires that TOOLCHAIN be defined. This should be defined
\r
98 # by the calling makefile.
\r
101 !ERROR TOOLCHAIN not defined for $(EDK_SOURCE)\Sample\CommonTools.env
\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
112 ASL = $(EDK_TOOLS_BIN)\Iasl
\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
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
138 C_STD_FLAGS = /nologo /W4 /WX /GX- /GR- /Gy /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)
\r
140 ASM_STD_FLAGS = /nologo /Fl$*.lst $(INC)
\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
147 C_STD_FLAGS = /nologo /W4 /WX /GX- /GR- /Gy /c /Fo$@ $(INC)
\r
149 ASM_STD_FLAGS = /nologo $(INC)
\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
166 ASM16_FLAGS = /nologo /c /omf /Fo$@
\r
176 # When using VS ml to compile 16bit code, please add /omf compiler option
\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
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
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
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
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
219 C_STD_FLAGS = /nologo /W4 /WX /EHs-c- /GR- /Gy /c /GS- /Fo$@ $(INC)
\r
220 ASM_STD_FLAGS = /nologo $(INC)
\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
235 ASM16_FLAGS = /nologo /c /omf /Fo$@
\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
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
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
266 !IF "$(EFI_ASSEMBLER_NAME)" == ""
\r
267 ASM16 = $(MASMPATH)\bin\ml
\r
268 ASMLINK16 = $(MASMPATH)\binr\link
\r
269 ASMLINK = $(MASMPATH)\binr\link
\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
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
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
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
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
310 C_STD_FLAGS = /nologo /W4 /WX /GX- /GR- /Gy /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)
\r
316 !IF "$(USE_VC8_IPF)" == "YES"
\r
317 C_STD_FLAGS = /nologo /W4 /WX /EHs-c- /GR- /Gy /GS- /c /Fo$@ $(INC)
\r
319 !IF "$(USE_NEWDDK)" == "YES"
\r
320 C_STD_FLAGS = /nologo /W4 /WX /EHs-c- /GR- /Gy /GS- /c /Fo$@ $(INC)
\r
322 C_STD_FLAGS = /nologo /W4 /WX /GX- /GR- /Gy /c /Fo$@ $(INC)
\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
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
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
360 CC = $(EFI_IA64TOOLPATH)\cl
\r
361 LINK = $(EFI_IA64TOOLPATH)\link
\r
362 LIB = $(EFI_IA64TOOLPATH)\lib
\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
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
375 ASM = $(EFI_IA64ASMPATH)\ias
\r
376 ASMLINK = $(EFI_IA64ASMPATH)\link
\r
379 ASM = $(EDK_TOOLS_BIN)\Ipf\$(EFI_ASSEMBLER_NAME)\ias
\r
380 ASMLINK = $(EDK_TOOLS_BIN)\Ipf\$(EFI_ASSEMBLER_NAME)\link
\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
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
411 C_STD_FLAGS = /nologo /W4 /WX /GX /Gy /c /Fa$* /FAsc /Fo$@ /FR$(@R).SBR $(INC)
\r
413 ASM_STD_FLAGS = /nologo /Fl$*.lst $(INC)
\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
420 C_STD_FLAGS = /nologo /W4 /WX /GX /Gy /c /Fo$@ $(INC)
\r
422 ASM_STD_FLAGS = /nologo $(INC)
\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
443 LINK_ARCH_FLAGS = /MACHINE:i386
\r
447 # Always turn on debug for the build tools so that we can debug problems
\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
461 # Clear any project flags when building tools
\r
468 EBC_LINK_PROJ_FLAGS =
\r
469 EBC_LIB_PROJ_FLAGS =
\r
480 # Use a different macro name for tools build to avoid conflict with environment
\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
514 EBC_C_STD_FLAGS = /nologo /W3 /WX /c /Fo$@ $(INC) /X
\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
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
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
558 !ERROR Unknown toolchain $(TOOLCHAIN) defined for $(EDK_SOURCE)\Sample\CommonTools.env use
\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
582 !IF "$(EFI_DEBUG)" == "YES"
\r
583 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_DEBUG
\r
586 !IF "$(EFI_DEBUG_CLEAR_MEMORY)" == "YES"
\r
587 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_DEBUG_CLEAR_MEMORY
\r
590 !IF "$(EFI_PEI_PERFORMANCE)" == "YES"
\r
591 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_PEI_PERFORMANCE /D EFI_DXE_PERFORMANCE
\r
594 !IF "$(EFI_ADDTIONAL_DRIVERS)" == "YES"
\r
595 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_ADDTIONAL_DRIVERS
\r
598 !IF "$(EFI_USE_CUSTOM_COMPRESS)" == "YES"
\r
599 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_USE_CUSTOM_COMPRESS
\r
602 !IF "$(EFI_UNLOCK_FWH)" == "YES"
\r
603 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_UNLOCK_FWH
\r
606 !IF "$(EFI_DXE_PERFORMANCE)" == "YES"
\r
607 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_DXE_PERFORMANCE
\r
610 !IF "$(EFI_S3_RESUME)" == "YES"
\r
611 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_S3_RESUME
\r
614 !IF "$(EFI_SIZE_REDUCTION_APPLIED)" == "YES"
\r
615 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_SIZE_REDUCTION_APPLIED
\r
618 !IF "$(EFI_PEI_REPORT_STATUS_CODE)" == "YES"
\r
619 FEATURE_FLAGS = $(FEATURE_FLAGS) /D EFI_PEI_REPORT_STATUS_CODE_ON
\r
622 !IF "$(SIZE_REDUCTION_ISA_COMBINED)" == "YES"
\r
623 FEATURE_FLAGS = $(FEATURE_FLAGS) /D SIZE_REDUCTION_ISA_COMBINED
\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
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
665 BUILD_TARGET_PROCESSOR = IA32
\r
668 ###############################################################################
\r
670 # define EFI specification denpendant driver files
\r
672 ###############################################################################
\r
673 !IF "$(UEFI_MODE)" == "YES"
\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
679 DEVPATH_INF = Sample\Universal\DevicePath\Dxe\DevicePath.inf
\r
684 ATAPI_PASS_THRU_INF = Sample\Bus\Pci\AtapiPassThru\Dxe\AtapiPassThru.inf
\r
686 ###############################################################################
\r
688 # define PIWG specification denpendant driver files
\r
690 ###############################################################################
\r
691 !IF "$(PI_MODE)" == "YES"
\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
705 # define EFI_BINARY default path
\r
707 ###############################################################################
\r
709 EFI_BINARY=$(EDK_SOURCE)\Bin
\r
712 EFI_PLATFORM_BIN=$(EFI_BINARY)\$(PROJECT_NAME)$(BUILD_TARGET_DIRECTORY)
\r