Appendix K Third Party Tool Flags

The following tables provide a summary of these "Best Known" options.


Note: A reserved keyword, MDEPKG_NDEBUG, can be used for code size reduction purposes.


Table 24 Standard C File Compiler Options
Microsoft Intel GCC Description
/nologo /nologo Do not display compiler version information
/c /c -c Compile C files to object (.obj) files only, do not link
/WX /WX -Werror Force warnings to be reported as errors.
/GS- /GS- Disable security checks
-Wno-missing-braces Warn if an aggregate or union initializer is not fully bracketed. In the following example, the initializer for 'a' is not fully bracketed, but that for 'b' is fully bracketed.
-Wno-array-bounds Disables warnings if subscripts to arrays are out of bounds.
/W4 /W4 -Wall Warning level 4 - print errors, warnings and remarks (or enable most warning messages)
/Gs32768 Control stack (32768 bytes) checking calls
/Gy /Gy Separate functions for linker.
/O1ib2 /O1 Optimize for minimum space, enable intrinsic functions, enable in-line expansion.
/Oi Enable Intrinsic functions
/Ob2 -default-inline In-line any function, at the compiler's discretion (same as /Qip)
-O Optimize output file
/GL Enable link-time code generation
/EHs-c- Combine /EHs- and /EHc-
/EHs- Disable C++ EH (no SHE exceptions)
/EHc- Disable extern C defaults to no throw
/GF GF Enable read-only string pooling
/GR- Disable C++ RTTI
EDK II Specific Flags
/D UNICODE /D UNICODE -DUNICODE define macro UNICODE
/FIAutoGen.h /FIAutoGen.h --include AutoGen.h Always include AutoGen.h file
Debug Specific Flags
/Zi /Zi -g Enable debugging information
/Gm /Gm Enable minimum rebuild
-fshort-wchar Force the underlying type for "wchar_t" to be "unsigned short"
-fno-stack-protector
-fno-strict-aliasing
-ffunction-sections
-fdata-sections
IPF Specific Flags
/Ox Maximum Optimization (/Ogityb2 /Gs)
/X ignore standard places
/QIPF_fr32 Do not use upper 96 Floating Point Registers
/Zx Generates debug-able optimized code. Only available in the IPF cross compiler or IPF native compiler.
Table 25 Assembly Flags
Microsoft GCC Description
/nologo Do not display assembler version information
/c -c Generate object (.obj) files, do not link
/WX Treat warnings as errors
/W3 Warning level 3
/Cx Preserve case in publics and externs
/coff Generate COFF format object files
/Zd Add line number debug info
/Zi Add symbolic debug info (DEBUG target)
-x assembler Input files are in assembly language
-imacros AutoGen.h Accept definition of macros in AutoGen.h
Table 26 C Compiler's Preprocessor Options
Microsoft Intel GCC Description
/nologo /nologo Do not display compiler version information
/E /E -E Preprocess only; do not compile, assemble or link
/TC /TC -x assembler-with-cpp Compile as .c files
/FIAutoGen.h /FIAutoGen.h --include AutoGen.h Always include AutoGen.h file
Table 27 C Compiler's Preprocessor Options for VFR files ONLY
Microsoft Intel GCC Description
/nologo /nologo Do not display compiler version information
/E /E -E Preprocess only; do not compile, assemble or link
/TC /TC -x c Compile as .c files
/D VFRCOMPILE /D VFRCOMPILE -DVFRCOMPILE Used only for Preprocessing VFR files
-P Used only for Preprocessing VFR files - do not generate #line directives
/FI$(MOD_NAME)StrDefs.h Force include of the module's StrDefs.h file.
Table 28 Pre-compiled Header (PCH) Creation Flags
Microsoft Intel GCC Description
/nologo /nologo Do not display compiler version information
/c /c -c Compile C files to object (.obj) files only, do not link
/W4 /W4 -Wall Warning level 4 - print errors, warnings and remarks (or enable most warning messages)
/WX /WX -Werror Force warnings to be reported as errors.
/Gy /Gy Separate functions for linker.
/GS- /GS- Disable security checks
/O1 /O1 Optimize for Maximum Speed
/Oi /Oi Enable Intrinsic functions
/Ob2 /Ob2 -default-inline In-line any function, at the compiler's discretion (same as /Qip)
/GL Enable link-time code generation
/EHs- /EHs- Disable C++ EH (no SHE exceptions)
/EHc- /EHc- Disable extern C defaults to no throw
/GF /GF Enable read-only string pooling
/Gs8192 /Gs8192 Control stack (8192 bytes) checking calls
/TC /TC Compile as .c files
/Yc Create the .pch file
/Gm Enable minimal rebuilds
/FpAutoGen.h.gch
/X /X Ignore standard places
/Zi /Zi Produce debugging information
Table 29 Static Linker Flags
Microsoft GCC Description
/nologo Do not display compiler version information
/LTCG Use link-time code generation
Table 30 Dynamic Linker Flags
Microsoft GCC Description
/NOLOGO Do not display compiler version information
/NODEFAULTLIB -nostdlib Disable using default libraries
/IGNORE:4086 N/A Use /Gz option instead
/OPT:ICF=10 Perform identical COMDAT folding (10 iterations) to remove duplicates.
/MAP -Map filename.map Create a map file.
/ALIGN:32 --section-alignment 0x20 Use 32-byte alignment instead of the default 4K
--file-alignment 0x20
/MACHINE:$$ N/A Where $$ is one of: I386, AMD64 or IA64
/DLL --dll The output is a DLL
/LTCG Use link-time code generation
/ENTRY:$(ENTRYPOINT) --entry _$(ENTRYPOINT) The function that specifies a starting address.
/SUBSYSTEM:CONSOLE --subsystem console Do not use the EFI_* subsystem interface, as this is EFI 1.0 compliant, not UEFI compliant.
/SAFESEH:NO Do not produce an image with a table of safe exception handles
/BASE:0 --image-base 0x0 Base address is always 0, and will be adjusted later by the build tools when creating images.
/DRIVER Specify Kernel mode
/DEBUG Create debugging information
-O2 Optimize
--gc-sections Enable garbage collection of unused input sections
--export-all-symbols All global symbols in the objects used to build a DLL will be exported by the DLL.