]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Sample/Tools/Source/VfrCompile/makefile
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Tools / Source / VfrCompile / makefile
1 #/*++
2 #
3 # Copyright (c) 2004 - 2007, Intel Corporation
4 # All rights reserved. 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 # makefile
15 #
16 # Abstract:
17 #
18 # Makefile for building the EFI VFR compiler
19 #
20 #--*/
21
22
23 !IFNDEF EDK_SOURCE
24 !ERROR EDK_SOURCE environmental variable not set
25 !ENDIF
26
27 #
28 # Do this if you want to compile from this directory
29 #
30 !IFNDEF TOOLCHAIN
31 TOOLCHAIN = TOOLCHAIN_MSVC
32 !ENDIF
33
34 !INCLUDE $(BUILD_DIR)\PlatformTools.env
35
36 .SUFFIXES :
37
38 TARGET_NAME = VfrCompile
39 ANTLR_H = $(PCCTS_DIR)\h
40 C_FLAGS_PCCTS = -I. -I$(ANTLR_H) /Zi /Fd$(EDK_TOOLS_OUTPUT)\$(TARGET_NAME)Obj /WX /Od /D _CRT_SECURE_NO_DEPRECATE $(VERSION_FLAGS)
41 C_FLAGS_PCCTS = $(C_FLAGS_PCCTS)
42
43 LINK_FLAGS_PCCTS =
44 LIBS = "$(EDK_TOOLS_OUTPUT)\Common.lib"
45
46 #
47 # Define the EFI output and source directories.
48 #
49 ETO = $(EDK_TOOLS_OUTPUT)
50 SRC = $(EDK_TOOLS_SOURCE)\$(TARGET_NAME)
51 TARGET_EXE = $(ETO)\$(TARGET_NAME).exe
52
53 #
54 # Add deeper lookahead with -ck 3
55 #
56 ANTLR_FLAGS = -CC -e3 -ck 3
57 DLG_FLAGS = -C2 -i -CC
58
59 #
60 # Define paths for include files
61 #
62 INC = -I $(SRC)
63 INC = $(INC) -I $(EDK_SOURCE)\Foundation\Include\Ia32
64 INC = $(INC) -I $(EDK_SOURCE)\Foundation\Efi\Include
65 INC = $(INC) -I $(EDK_SOURCE)\Foundation\Framework\Include
66 INC = $(INC) -I $(EDK_SOURCE)\Foundation\Include\IndustryStandard
67 INC = $(INC) -I $(EDK_SOURCE)\Foundation\ \
68 -I $(EDK_SOURCE)\Foundation\Core\Dxe \
69 -I $(EDK_SOURCE)\Foundation\Efi \
70 -I $(EDK_SOURCE)\Foundation\Framework
71 INC = $(INC) -I $(EDK_TOOLS_SOURCE)\Common
72 INC = $(INC) -I $(EDK_SOURCE)\Foundation\Include
73
74 DLG_FILE = Parser.dlg
75 SCAN_FILE = DLGLexer
76 PARSER_FILE = EfiVfrParser
77
78 #
79 # Create a list of include dependencies
80 #
81 INC_DEPS = $(INC_DEPS) $(SRC)\EfiVfr.h
82 INC_DEPS = $(INC_DEPS) $(EDK_SOURCE)\Foundation\Framework\Include\EfiInternalFormRepresentation.h
83
84 #
85 # This is the grammer file for our project
86 #
87 GRAMMER_FILE = $(SRC)\$(TARGET_NAME).g
88
89 #
90 # If we utilize a separate token file, define it here.
91 #
92 #TOKEN_FILE =
93
94
95 OBJECTS = $(ETO)\$(TARGET_NAME).obj \
96 $(ETO)\$(PARSER_FILE).obj \
97 $(ETO)\AParser.obj \
98 $(ETO)\DLexerBase.obj \
99 $(ETO)\ATokenBuffer.obj \
100 $(ETO)\$(SCAN_FILE).obj \
101 $(ETO)\VfrServices.obj
102
103 #
104 # Per the Language Translation Using PCCTS and C++ Reference Guide, page 109,
105 # these are the outputs of ANTLR and DLG
106 #
107 ANTLR_SPAWN = $(ETO)\$(TARGET_NAME).cpp \
108 $(ETO)\$(PARSER_FILE).cpp \
109 $(ETO)\$(PARSER_FILE).h \
110 $(ETO)\$(DLG_FILE) \
111 $(ETO)\tokens.h
112
113 DLG_SPAWN = $(ETO)\$(SCAN_FILE).cpp \
114 $(ETO)\$(SCAN_FILE).h
115
116
117 #
118 # Default target
119 #
120 all : $(TARGET_EXE)
121
122 #
123 # All antlr-generated files depend on the .g grammer file. Use the -o
124 # option to emit them to the appropriate output directory.
125 #
126 $(ANTLR_SPAWN) : $(GRAMMER_FILE) $(INC_DEPS)
127 $(ANTLR) $(ANTLR_FLAGS) -o $(ETO) $(GRAMMER_FILE)
128
129 $(ETO)\$(TARGET_NAME).obj : $(ETO)\$(TARGET_NAME).cpp $(DLG_SPAWN) $(INC_DEPS)
130 $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(INC) $(ETO)\$(TARGET_NAME).cpp
131
132 $(ETO)\$(SCAN_FILE).obj : $(ETO)\$(SCAN_FILE).cpp $(DLG_SPAWN) $(INC_DEPS)
133 $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(INC) $(ETO)\$(SCAN_FILE).cpp
134
135 $(ETO)\$(PARSER_FILE).obj : $(ETO)\$(PARSER_FILE).cpp $(ETO)\$(PARSER_FILE).h $(DLG_SPAWN) $(INC_DEPS)
136 $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(INC) $(ETO)\$(PARSER_FILE).cpp
137
138 $(DLG_SPAWN) : $(ETO)\$(DLG_FILE) $(INC_DEPS)
139 $(DLG) $(DLG_FLAGS) -o $(ETO) $(ETO)\$(DLG_FILE)
140
141 $(ETO)\AParser.obj : $(ANTLR_H)/AParser.cpp
142 $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(ANTLR_H)/AParser.cpp
143
144 $(ETO)\ATokenBuffer.obj : $(ANTLR_H)/ATokenBuffer.cpp
145 $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(ANTLR_H)/ATokenBuffer.cpp
146
147 $(ETO)\DLexerBase.obj : $(ANTLR_H)/DLexerBase.cpp
148 $(CC) -c $(C_FLAGS_PCCTS) /Fo$@ $(ANTLR_H)/DLexerBase.cpp
149
150 $(ETO)\VfrServices.obj : $(SRC)\VfrServices.cpp $(SRC)\VfrServices.h $(INC_DEPS)
151 $(CC) -c $(C_FLAGS_PCCTS) $(INC) /Fo$@ $(SRC)\VfrServices.cpp
152
153 #
154 # Add Binary Build description for this tools.
155 #
156
157 !IF (("$(EFI_BINARY_TOOLS)" == "YES") && EXIST($(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).exe))
158 $(TARGET_EXE): $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).exe
159 copy $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).exe $(TARGET_EXE) /Y
160 if exist $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).pdb \
161 copy $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).pdb $(EDK_TOOLS_OUTPUT)\$(TARGET_NAME).pdb /Y
162 !ELSE
163 $(TARGET_EXE) : $(OBJECTS) $(LIBS)
164 $(LINK) $(MSVS_LINK_LIBPATHS) $(LIBS) /DEBUG /OUT:$(TARGET_EXE) $(LINK_FLAGS_PCCTS) $(OBJECTS) /PDB:$*.pdb
165 if not exist $(EFI_PLATFORM_BIN)\Tools mkdir $(EFI_PLATFORM_BIN)\Tools
166 if exist $(TARGET_EXE) copy $(TARGET_EXE) $(EFI_PLATFORM_BIN)\tools\$(TARGET_NAME).exe /Y
167 if exist $(EDK_TOOLS_OUTPUT)\$(TARGET_NAME).pdb \
168 copy $(EDK_TOOLS_OUTPUT)\$(TARGET_NAME).pdb $(EFI_PLATFORM_BIN)\Tools\$(TARGET_NAME).pdb /Y
169 !ENDIF
170
171 clean:
172