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
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.
12 # Module Name: makefile
16 # This file is used to build the EFI utility.
21 # Do this if you want to compile from this directory
24 TOOLCHAIN
= TOOLCHAIN_MSVC
27 !INCLUDE
$(BUILD_DIR
)\PlatformTools.env
30 # Define some macros we use here. Should get rid of them someday and
31 # get rid of the extra level of indirection.
34 TARGET_SRC_DIR
= $(EDK_TOOLS_SOURCE
)\
$(TARGET_NAME
)
35 COMMON_SOURCE
= $(EDK_TOOLS_COMMON
)
41 TARGET_LIB
= $(EDK_TOOLS_OUTPUT
)\Common.lib
42 TARGET_SOURCE_DIR
= $(COMMON_SOURCE
)
44 OBJECTS
= "$(EDK_TOOLS_OUTPUT)\ParseInf.obj" \
45 "$(EDK_TOOLS_OUTPUT)\EfiCompress.obj" \
46 "$(EDK_TOOLS_OUTPUT)\TianoCompress.obj" \
47 "$(EDK_TOOLS_OUTPUT)\Decompress.obj" \
48 "$(EDK_TOOLS_OUTPUT)\crc32.obj" \
49 "$(EDK_TOOLS_OUTPUT)\CommonLib.obj" \
50 "$(EDK_TOOLS_OUTPUT)\PeCoffLoader.obj" \
51 "$(EDK_TOOLS_OUTPUT)\PeCoffLoaderEx.obj" \
52 "$(EDK_TOOLS_OUTPUT)\FvLib.obj" \
53 "$(EDK_TOOLS_OUTPUT)\EfiUtilityMsgs.obj" \
54 "$(EDK_TOOLS_OUTPUT)\SimpleFileParsing.obj" \
55 "$(EDK_TOOLS_OUTPUT)\MyAlloc.obj"
67 "$(EDK_TOOLS_OUTPUT)\ParseInf.obj": "$(TARGET_SOURCE_DIR)\ParseInf.c" "$(TARGET_SOURCE_DIR)\ParseInf.h" $(EDK_SOURCE
)\Foundation\Include\TianoCommon.h
68 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\ParseInf.c" /Fo
"$(EDK_TOOLS_OUTPUT)\ParseInf.obj"
70 "$(EDK_TOOLS_OUTPUT)\MyAlloc.obj": "$(TARGET_SOURCE_DIR)\MyAlloc.c" "$(TARGET_SOURCE_DIR)\MyAlloc.h" $(EDK_SOURCE
)\Foundation\Include\TianoCommon.h
71 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\MyAlloc.c" /Fo
"$(EDK_TOOLS_OUTPUT)\MyAlloc.obj"
73 "$(EDK_TOOLS_OUTPUT)\EfiCompress.obj": "$(TARGET_SOURCE_DIR)\EfiCompress.c" "$(TARGET_SOURCE_DIR)\Compress.h" $(EDK_SOURCE
)\Foundation\Include\TianoCommon.h
74 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\EfiCompress.c" /Fo
"$(EDK_TOOLS_OUTPUT)\EfiCompress.obj"
76 "$(EDK_TOOLS_OUTPUT)\TianoCompress.obj": "$(TARGET_SOURCE_DIR)\TianoCompress.c" "$(TARGET_SOURCE_DIR)\Compress.h" $(EDK_SOURCE
)\Foundation\Include\TianoCommon.h
77 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\TianoCompress.c" /Fo
"$(EDK_TOOLS_OUTPUT)\TianoCompress.obj"
79 "$(EDK_TOOLS_OUTPUT)\Decompress.obj": "$(TARGET_SOURCE_DIR)\Decompress.c" "$(TARGET_SOURCE_DIR)\Decompress.h" $(EDK_SOURCE
)\Foundation\Include\TianoCommon.h
80 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\Decompress.c" /Fo
"$(EDK_TOOLS_OUTPUT)\Decompress.obj"
82 "$(EDK_TOOLS_OUTPUT)\crc32.obj": "$(TARGET_SOURCE_DIR)\crc32.c" "$(TARGET_SOURCE_DIR)\crc32.h" $(EDK_SOURCE
)\Foundation\Include\TianoCommon.h
83 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\crc32.c" /Fo
"$(EDK_TOOLS_OUTPUT)\crc32.obj"
85 "$(EDK_TOOLS_OUTPUT)\CommonLib.obj": "$(TARGET_SOURCE_DIR)\CommonLib.c" "$(TARGET_SOURCE_DIR)\CommonLib.h" $(EDK_SOURCE
)\Foundation\Include\TianoCommon.h
86 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\CommonLib.c" /Fo
"$(EDK_TOOLS_OUTPUT)\CommonLib.obj"
88 "$(EDK_TOOLS_OUTPUT)\PeCoffLoader.obj": "$(EDK_SOURCE)\Foundation\Include\TianoCommon.h" "$(EDK_SOURCE)\Foundation\Library\Pei\PeiLib\$(PROCESSOR)\PeCoffLoaderEx.h" "$(EDK_SOURCE)\Foundation\Library\Pei\PeiLib\PeCoffLoader.c"
90 # This tool is built differently based on the target processor architecture.
91 # PE32/PE32+ headers are different for IA32 and IPF, so copy the correct file
92 # to the tools directory and include it in the build.
93 # Also copy PeCoffLoaderEx.h because it contains the checks for valid image
96 @copy
"$(EDK_SOURCE)\Foundation\Include\$(PROCESSOR)\EfiPeOptionalHeader.h" $(EDK_TOOLS_OUTPUT
)
97 @copy
"$(EDK_SOURCE)\Foundation\Library\Pei\PeiLib\$(PROCESSOR)\PeCoffLoaderEx.h" $(EDK_TOOLS_OUTPUT
)
98 $(CC
) -I
$(EDK_TOOLS_OUTPUT
) $(C_FLAGS
) -I
"$(EDK_SOURCE)\Foundation\Library\Pei\PeiLib\$(PROCESSOR)" "$(EDK_SOURCE)\Foundation\Library\Pei\PeiLib\PeCoffLoader.c" /Fo
"$(EDK_TOOLS_OUTPUT)\PeCoffLoader.obj"
100 "$(EDK_TOOLS_OUTPUT)\PeCoffLoaderEx.obj": "$(EDK_SOURCE)\Foundation\Library\Pei\PeiLib\$(PROCESSOR)\PeCoffLoaderEx.c"
101 $(CC
) $(C_FLAGS
) "$(EDK_SOURCE)\Foundation\Library\Pei\PeiLib\$(PROCESSOR)\PeCoffLoaderEx.c" /Fo
"$(EDK_TOOLS_OUTPUT)\PeCoffLoaderEx.obj"
103 "$(EDK_TOOLS_OUTPUT)\FvLib.obj": "$(TARGET_SOURCE_DIR)\FvLib.c" "$(TARGET_SOURCE_DIR)\FvLib.h" $(EDK_SOURCE
)\Foundation\Framework\Include\EfiFirmwareFileSystem.h
"$(EDK_SOURCE)\Foundation\Framework\Include\EfiFirmwareVolumeHeader.h"
104 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\FvLib.c" /Fo
"$(EDK_TOOLS_OUTPUT)\FvLib.obj"
106 "$(EDK_TOOLS_OUTPUT)\EfiUtilityMsgs.obj": "$(TARGET_SOURCE_DIR)\EfiUtilityMsgs.c" "$(TARGET_SOURCE_DIR)\EfiUtilityMsgs.h"
107 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\EfiUtilityMsgs.c" /Fo
"$(EDK_TOOLS_OUTPUT)\EfiUtilityMsgs.obj"
109 "$(EDK_TOOLS_OUTPUT)\SimpleFileParsing.obj" : "$(TARGET_SOURCE_DIR)\SimpleFileParsing.c" "$(TARGET_SOURCE_DIR)\SimpleFileParsing.h"
110 $(CC
) $(C_FLAGS
) "$(TARGET_SOURCE_DIR)\SimpleFileParsing.c" /Fo
"$(EDK_TOOLS_OUTPUT)\SimpleFileParsing.obj"
117 # Add Binary Build description for this lib.
120 !IF
(("$(EFI_BINARY_TOOLS)" == "YES") && EXIST
($(EFI_PLATFORM_BIN
)\Tools\
$(TARGET_NAME
).lib
))
121 $(TARGET_LIB
): $(EFI_PLATFORM_BIN
)\Tools\
$(TARGET_NAME
).lib
122 copy
$(EFI_PLATFORM_BIN
)\Tools\
$(TARGET_NAME
).lib
$(TARGET_LIB
) /Y
123 if exist
$(EFI_PLATFORM_BIN
)\Tools\
$(TARGET_NAME
)Obj.pdb \
124 copy
$(EFI_PLATFORM_BIN
)\Tools\
$(TARGET_NAME
)Obj.pdb
$(EDK_TOOLS_OUTPUT
)\
$(TARGET_NAME
)Obj.pdb
/Y
126 $(TARGET_LIB
): $(OBJECTS
)
127 $(LIB_EXE
) $(LIB_FLAGS
) $(OBJECTS
) /OUT
:$(TARGET_LIB
)
128 !IF
("$(EFI_BINARY_BUILD)" == "YES")
129 if not exist
$(EFI_PLATFORM_BIN
)\Tools mkdir
$(EFI_PLATFORM_BIN
)\Tools
130 if exist
$(TARGET_LIB
) copy
$(TARGET_LIB
) $(EFI_PLATFORM_BIN
)\tools\
$(TARGET_NAME
).lib
/Y
131 if exist
$(EDK_TOOLS_OUTPUT
)\
$(TARGET_NAME
)Obj.pdb \
132 copy
$(EDK_TOOLS_OUTPUT
)\
$(TARGET_NAME
)Obj.pdb
$(EFI_PLATFORM_BIN
)\Tools\
$(TARGET_NAME
)Obj.pdb
/Y
137 @if exist
$(EDK_TOOLS_OUTPUT
)\ParseInf.
* del
/q
$(EDK_TOOLS_OUTPUT
)\ParseInf.
* > NUL
138 @if exist
$(EDK_TOOLS_OUTPUT
)\ParsePeim.
* del
/q
$(EDK_TOOLS_OUTPUT
)\ParsePeim.
* > NUL
139 @if exist
$(EDK_TOOLS_OUTPUT
)\EfiCompress.
* del
/q
$(EDK_TOOLS_OUTPUT
)\EfiCompress.
* > NUL
140 @if exist
$(EDK_TOOLS_OUTPUT
)\TianoCompress.
* del
/q
$(EDK_TOOLS_OUTPUT
)\TianoCompress.
* > NUL
141 @if exist
$(EDK_TOOLS_OUTPUT
)\Decompress.
* del
/q
$(EDK_TOOLS_OUTPUT
)\Decompress.
* > NUL
142 @if exist
$(EDK_TOOLS_OUTPUT
)\crc32.
* del
/q
$(EDK_TOOLS_OUTPUT
)\crc32.
* > NUL
143 @if exist
$(EDK_TOOLS_OUTPUT
)\CommonLib.
* del
/q
$(EDK_TOOLS_OUTPUT
)\CommonLib.
* > NUL
144 @if exist
$(EDK_TOOLS_OUTPUT
)\PeCoffLoader.
* del
/q
$(EDK_TOOLS_OUTPUT
)\PeCoffLoader.
* > NUL
145 @if exist
$(EDK_TOOLS_OUTPUT
)\PeCoffLoaderEx.
* del
/q
$(EDK_TOOLS_OUTPUT
)\PeCoffLoaderEx.
* > NUL
146 @if exist
$(EDK_TOOLS_OUTPUT
)\FvLib.
* del
/q
$(EDK_TOOLS_OUTPUT
)\FvLib.
* > NUL
147 @if exist
$(TARGET_LIB
) del
$(TARGET_LIB
)