#/*++ # # Copyright (c) 2004 - 2007, Intel Corporation # All rights reserved. This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at # http://opensource.org/licenses/bsd-license.php # # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # # Module Name: # # makefile # # Abstract: # # Makefile for building the EFI VFR compiler # #--*/ !IFNDEF EDK_SOURCE !ERROR EDK_SOURCE environmental variable not set !ENDIF # # Do this if you want to compile from this directory # !IFNDEF TOOLCHAIN TOOLCHAIN = TOOLCHAIN_MSVC !ENDIF !INCLUDE $(BUILD_DIR)\PlatformTools.env .SUFFIXES : TARGET_NAME = VfrCompile ANTLR_H = $(PCCTS_DIR)\h C_FLAGS_PCCTS = -I. -I$(ANTLR_H) /Zi /Fd$(EDK_TOOLS_OUTPUT)\$(TARGET_NAME)Obj /WX /Od /D _CRT_SECURE_NO_DEPRECATE $(VERSION_FLAGS) C_FLAGS_PCCTS = $(C_FLAGS_PCCTS) LINK_FLAGS_PCCTS = LIBS = "$(EDK_TOOLS_OUTPUT)\Common.lib" # # Define the EFI output and source directories. # ETO = $(EDK_TOOLS_OUTPUT) SRC = $(EDK_TOOLS_SOURCE)\$(TARGET_NAME) TARGET_EXE = $(ETO)\$(TARGET_NAME).exe # # Add deeper lookahead with -ck 3 # ANTLR_FLAGS = -CC -e3 -ck 3 DLG_FLAGS = -C2 -i -CC # # Define paths for include files # INC = -I $(SRC) INC = $(INC) -I $(EDK_SOURCE)\Foundation\Include\Ia32 INC = $(INC) -I $(EDK_SOURCE)\Foundation\Efi\Include INC = $(INC) -I $(EDK_SOURCE)\Foundation\Framework\Include INC = $(INC) -I $(EDK_SOURCE)\Foundation\Include\IndustryStandard INC = $(INC) -I $(EDK_SOURCE)\Foundation\ \ -I $(EDK_SOURCE)\Foundation\Core\Dxe \ -I $(EDK_SOURCE)\Foundation\Efi \ -I $(EDK_SOURCE)\Foundation\Framework INC = $(INC) -I $(EDK_TOOLS_SOURCE)\Common INC = $(INC) -I $(EDK_SOURCE)\Foundation\Include DLG_FILE = Parser.dlg SCAN_FILE = DLGLexer PARSER_FILE = EfiVfrParser # # Create a list of include dependencies # INC_DEPS = $(INC_DEPS) $(SRC)\EfiVfr.h INC_DEPS = $(INC_DEPS) $(EDK_SOURCE)\Foundation\Framework\Include\EfiInternalFormRepresentation.h # # This is the grammer file for our project # GRAMMER_FILE = $(SRC)\$(TARGET_NAME).g # # If we utilize a separate token file, define it here. # #TOKEN_FILE = OBJECTS = $(ETO)\$(TARGET_NAME).obj \ $(ETO)\$(PARSER_FILE).obj \ $(ETO)\AParser.obj \ $(ETO)\DLexerBase.obj \ $(ETO)\ATokenBuffer.obj \ $(ETO)\$(SCAN_FILE).obj \ $(ETO)\VfrServices.obj # # Per the Language Translation Using PCCTS and C++ Reference Guide, page 109, # these are the outputs of ANTLR and DLG # ANTLR_SPAWN = $(ETO)\$(TARGET_NAME).cpp \ $(ETO)\$(PARSER_FILE).cpp \ $(ETO)\$(PARSER_FILE).h \ $(ETO)\$(DLG_FILE) \ $(ETO)\tokens.h DLG_SPAWN = $(ETO)\$(SCAN_FILE).cpp \ $(ETO)\$(SCAN_FILE).h # # Default target # all : $(TARGET_EXE) # # All antlr-generated files depend on the .g grammer file. Use the -o # option to emit them to the appropriate output directory. # $(ANTLR_SPAWN) : $(GRAMMER_FILE) $(INC_DEPS) $(ANTLR) $(ANTLR_FLAGS) -o $(ETO) $(GRAMMER_FILE) $(ETO)\$(TARGET_NAME).obj : $(ETO)\$(TARGET_NAME).cpp $(DLG_SPAWN) $(INC_DEPS) $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(INC) $(ETO)\$(TARGET_NAME).cpp $(ETO)\$(SCAN_FILE).obj : $(ETO)\$(SCAN_FILE).cpp $(DLG_SPAWN) $(INC_DEPS) $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(INC) $(ETO)\$(SCAN_FILE).cpp $(ETO)\$(PARSER_FILE).obj : $(ETO)\$(PARSER_FILE).cpp $(ETO)\$(PARSER_FILE).h $(DLG_SPAWN) $(INC_DEPS) $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(INC) $(ETO)\$(PARSER_FILE).cpp $(DLG_SPAWN) : $(ETO)\$(DLG_FILE) $(INC_DEPS) $(DLG) $(DLG_FLAGS) -o $(ETO) $(ETO)\$(DLG_FILE) $(ETO)\AParser.obj : $(ANTLR_H)/AParser.cpp $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(ANTLR_H)/AParser.cpp $(ETO)\ATokenBuffer.obj : $(ANTLR_H)/ATokenBuffer.cpp $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(ANTLR_H)/ATokenBuffer.cpp $(ETO)\DLexerBase.obj : $(ANTLR_H)/DLexerBase.cpp $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(ANTLR_H)/DLexerBase.cpp $(ETO)\VfrServices.obj : $(SRC)\VfrServices.cpp $(SRC)\VfrServices.h $(INC_DEPS) $(CC) -c $(C_FLAGS_PCCTS) $(INC) /Fo$@ $(SRC)\VfrServices.cpp # # Add Binary Build description for this tools. # !IF (("$(EFI_BINARY_TOOLS)" == "YES") && EXIST($(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).exe)) $(TARGET_EXE): $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).exe copy $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).exe $(TARGET_EXE) /Y if exist $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).pdb \ copy $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).pdb $(EDK_TOOLS_OUTPUT)\$(TARGET_NAME).pdb /Y !ELSE $(TARGET_EXE) : $(OBJECTS) $(LIBS) $(LINK) $(MSVS_LINK_LIBPATHS) $(LIBS) /DEBUG /OUT:$(TARGET_EXE) $(LINK_FLAGS_PCCTS) $(OBJECTS) /PDB:$*.pdb if not exist $(EFI_PLATFORM_BIN)\Tools mkdir $(EFI_PLATFORM_BIN)\Tools if exist $(TARGET_EXE) copy $(TARGET_EXE) $(EFI_PLATFORM_BIN)\tools\$(TARGET_NAME).exe /Y if exist $(EDK_TOOLS_OUTPUT)\$(TARGET_NAME).pdb \ copy $(EDK_TOOLS_OUTPUT)\$(TARGET_NAME).pdb $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).pdb /Y !ENDIF clean: