3 # Copyright (c) 2006 - 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
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.
22 BIN_DIR
= $(BUILD_DIR
)\
$(PROCESSOR
)
23 TOOLCHAIN
= TOOLCHAIN_
$(PROCESSOR
)
25 TOOLBIN_DIR
= $(BUILD_DIR
)\Tools
28 # Include CommonTools.env enviroment
31 !INCLUDE
$(BUILD_DIR
)\PlatformTools.env
36 INC
= -I
$(SOURCE_DIR
)\.
-I
$(SOURCE_DIR
)\.\
$(PROCESSOR
) $(INC
)
37 INC
= -I
$(EDK_SOURCE
)\Foundation\ \
38 -I
$(EDK_SOURCE
)\Foundation\Include \
39 -I
$(EDK_SOURCE
)\Foundation\Include\
$(PROCESSOR
) \
40 -I
$(EDK_SOURCE
)\Foundation\Efi \
41 -I
$(EDK_SOURCE
)\Foundation\Efi\Include \
42 -I
$(EDK_SOURCE
)\Foundation\Framework \
43 -I
$(EDK_SOURCE
)\Foundation\Framework\Include \
44 -I
$(EDK_SOURCE
)\Foundation\Library\Dxe\Include \
45 -I
$(EDK_SOURCE
)\Foundation\Library\Pei\Include \
46 -I
$(EDK_SOURCE
)\Foundation\Include\Pei \
49 LDRDEP
= $(BUILD_DIR
)\..\Loader\EfiLdr\Efildr.c \
50 $(BUILD_DIR
)\..\Loader\EfiLdr\EfiLdrHandoff.h \
51 $(BUILD_DIR
)\..\Loader\EfiLdr\EfiLoader.c \
52 $(BUILD_DIR
)\..\Loader\EfiLdr\Debug.c \
53 $(BUILD_DIR
)\..\Loader\EfiLdr\Debug.h \
54 $(BUILD_DIR
)\..\Loader\EfiLdr\PeLoader.c \
55 $(BUILD_DIR
)\..\Loader\EfiLdr\PeLoader.h \
56 $(BUILD_DIR
)\..\Loader\EfiLdr\Support.c \
57 $(BUILD_DIR
)\..\Loader\EfiLdr\Support.h
60 $(BIN_DIR
)\BootSect.com \
65 $(BIN_DIR
)\Start64.com \
66 $(BIN_DIR
)\St16_64.com \
67 $(BIN_DIR
)\St32_64.com \
68 $(BIN_DIR
)\Efi64.com2 \
69 $(BIN_DIR
)\Efildr.efi \
79 # Generate loader object
81 $(BIN_DIR
)\BootSect.obj
: $(BUILD_DIR
)\..\Loader\BootSector\BootSect.asm
82 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\BootSect.obj
$(BUILD_DIR
)\..\Loader\BootSector\BootSect.asm
84 $(BIN_DIR
)\BootSect.com
: $(BIN_DIR
)\BootSect.obj
86 $(ASMLINK16
) /tiny BootSect.obj
,BootSect.com
,BootSect.map
,,,
88 $(BIN_DIR
)\Bs16.obj
: $(BUILD_DIR
)\..\Loader\BootSector\Bs16.asm
89 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\Bs16.obj
$(BUILD_DIR
)\..\Loader\BootSector\Bs16.asm
91 $(BIN_DIR
)\Bs16.com
: $(BIN_DIR
)\Bs16.obj
93 $(ASMLINK16
) /tiny Bs16.obj
,Bs16.com
,Bs16.map
,,,
95 $(BIN_DIR
)\Bs32.obj
: $(BUILD_DIR
)\..\Loader\BootSector\Bs32.asm
96 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\Bs32.obj
$(BUILD_DIR
)\..\Loader\BootSector\Bs32.asm
98 $(BIN_DIR
)\Bs32.com
: $(BIN_DIR
)\Bs32.obj
100 $(ASMLINK16
) /tiny Bs32.obj
,Bs32.com
,Bs32.map
,,,
102 $(BIN_DIR
)\Gpt.obj
: $(BUILD_DIR
)\..\Loader\BootSector\Gpt.asm
103 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\Gpt.obj
$(BUILD_DIR
)\..\Loader\BootSector\Gpt.asm
105 $(BIN_DIR
)\Gpt.com
: $(BIN_DIR
)\Gpt.obj
107 $(ASMLINK16
) /tiny Gpt.obj
,Gpt.com
,Gpt.map
,,,
109 $(BIN_DIR
)\Mbr.obj
: $(BUILD_DIR
)\..\Loader\BootSector\Mbr.asm
110 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\Mbr.obj
$(BUILD_DIR
)\..\Loader\BootSector\Mbr.asm
112 $(BIN_DIR
)\Mbr.com
: $(BIN_DIR
)\Mbr.obj
114 $(ASMLINK16
) /tiny Mbr.obj
,Mbr.com
,Mbr.map
,,,
116 $(BIN_DIR
)\Start64.obj
: $(BUILD_DIR
)\..\Loader\BootSector\Start64.asm
117 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\Start64.obj
$(BUILD_DIR
)\..\Loader\BootSector\Start64.asm
119 $(BIN_DIR
)\Start64.com
: $(BIN_DIR
)\Start64.obj
121 $(ASMLINK16
) /tiny Start64.obj
,Start64.com
,Start64.map
,,,
123 $(BIN_DIR
)\St16_64.obj
: $(BUILD_DIR
)\..\Loader\BootSector\St16_64.asm
124 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\St16_64.obj
$(BUILD_DIR
)\..\Loader\BootSector\St16_64.asm
126 $(BIN_DIR
)\St16_64.com
: $(BIN_DIR
)\St16_64.obj
128 $(ASMLINK16
) /tiny St16_64.obj
,St16_64.com
,St16_64.map
,,,
130 $(BIN_DIR
)\St32_64.obj
: $(BUILD_DIR
)\..\Loader\BootSector\St32_64.asm
131 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\St32_64.obj
$(BUILD_DIR
)\..\Loader\BootSector\St32_64.asm
133 $(BIN_DIR
)\St32_64.com
: $(BIN_DIR
)\St32_64.obj
135 $(ASMLINK16
) /tiny St32_64.obj
,St32_64.com
,St32_64.map
,,,
137 $(BIN_DIR
)\Efi64.obj
: $(BUILD_DIR
)\..\Loader\BootSector\Efi64.asm
138 $(ASM16
) /c
/omf
/Fo
$(BIN_DIR
)\Efi64.obj
$(BUILD_DIR
)\..\Loader\BootSector\Efi64.asm
140 $(BIN_DIR
)\Efi64.com
: $(BIN_DIR
)\Efi64.obj
142 $(ASMLINK16
) /tiny Efi64.obj
,Efi64.com
,Efi64.map
,,,
144 $(BIN_DIR
)\Efi64.com2
: $(BIN_DIR
)\Efi64.com
145 $(TOOLBIN_DIR
)\Splitfile
$(BIN_DIR
)\Efi64.com
135168
147 $(BIN_DIR
)\Efildr.obj
: $(LDRDEP
)
148 $(CC
) $(C_FLAGS
) $(BUILD_DIR
)\..\Loader\EfiLdr\Efildr.c
150 $(BIN_DIR
)\Efildr.dll
: $(BIN_DIR
)\Efildr.obj
151 $(LINK
) /nologo
/MACHINE
:AMD64
/SUBSYSTEM
:CONSOLE
/NODEFAULTLIB
/INCREMENTAL
:NO \
152 /MAP
/FIXED
/BASE
:0x00010000 /OPT
:REF
/ALIGN
:32 /MERGE
:.data
=.text \
153 /MERGE
:.rdata
=.text
/DRIVER
/ENTRY
:EfiLoader
$(BIN_DIR
)\Efildr.obj \
154 $(BIN_DIR
)\CompilerStub.lib
$(BIN_DIR
)\EfiCommonLib.lib
$(BIN_DIR
)\PeiLib.lib \
155 /OUT
:$(BIN_DIR
)\Efildr.dll
/IGNORE
:4078,4096
157 $(BIN_DIR
)\Efildr.efi
: $(BIN_DIR
)\Efildr.dll
158 $(TOOLBIN_DIR
)\FwImage app
$(BIN_DIR
)\Efildr.dll
$(BIN_DIR
)\Efildr.efi
161 # Generate loader binary
163 Fv\EfiMain.z
: Fv\EfiMain.fv
164 $(TOOLBIN_DIR
)\Eficompress
-tTiano Fv\EfiMain.fv Fv\EfiMain.z
166 Fv\DxeMain.z
: $(BIN_DIR
)\DxeMain.efi
167 $(TOOLBIN_DIR
)\Eficompress
-tTiano
$(BIN_DIR
)\DxeMain.efi Fv\DxeMain.z
169 Fv\DxeIpl.z
: $(BIN_DIR
)\DxeIpl.efi
170 $(TOOLBIN_DIR
)\Eficompress
-tTiano
$(BIN_DIR
)\DxeIpl.efi Fv\DxeIpl.z
172 Fv\Efildr64
: $(BIN_DIR
)\Efildr.efi Fv\DxeIpl.z Fv\DxeMain.z Fv\EfiMain.z
173 $(TOOLBIN_DIR
)\Efildrimage Fv\Efildr64
$(BIN_DIR
)\Efildr.efi Fv\DxeIpl.z Fv\DxeMain.z Fv\EfiMain.z
175 Fv\Efildr
: $(BIN_DIR
)\Start64.com
$(BIN_DIR
)\Efi64.com2 Fv\Efildr64
176 copy
/b
$(BIN_DIR
)\Start64.com
+$(BIN_DIR
)\Efi64.com2
+Fv\Efildr64 Fv\EfildrPure
177 $(TOOLBIN_DIR
)\GenPage Fv\EfildrPure Fv\Efildr
179 Fv\Efildr16
: $(BIN_DIR
)\St16_64.com
$(BIN_DIR
)\Efi64.com2 Fv\Efildr64
180 copy
/b
$(BIN_DIR
)\St16_64.com
+$(BIN_DIR
)\Efi64.com2
+Fv\Efildr64 Fv\Efildr16Pure
181 $(TOOLBIN_DIR
)\GenPage Fv\Efildr16Pure Fv\Efildr16
183 Fv\Efildr20
: $(BIN_DIR
)\St32_64.com
$(BIN_DIR
)\Efi64.com2 Fv\Efildr64
184 copy
/b
$(BIN_DIR
)\St32_64.com
+$(BIN_DIR
)\Efi64.com2
+Fv\Efildr64 Fv\Efildr20Pure
185 $(TOOLBIN_DIR
)\GenPage Fv\Efildr20Pure Fv\Efildr20