Home | History | Annotate | Download | only in Sample
      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)
    732