mirror of https://github.com/acidanthera/audk.git
1467 lines
50 KiB
XML
1467 lines
50 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright (c) 2006, 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.
|
|
-->
|
|
<project name="common">
|
|
<!-- for user extended tasks or macros -->
|
|
<import file="UserExtension.xml" optional="true"/>
|
|
|
|
<!--
|
|
Macro for intialize some properties. This Macro build will be called before source file build.
|
|
-->
|
|
<macrodef name="Build_Init">
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<var name="OBJECTS" value="" />
|
|
<var name="SDB_FILES" value="" />
|
|
|
|
<mkdir dir="${DEST_DIR_DEBUG}"/>
|
|
<mkdir dir="${DEST_DIR_OUTPUT}"/>
|
|
|
|
<if>
|
|
<and>
|
|
<isset property="PCH"/>
|
|
<not>
|
|
<equals arg1="${PCH}" arg2=""/>
|
|
</not>
|
|
</and>
|
|
<then>
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/AutoGen.h.gch">
|
|
<input file="${DEST_DIR_DEBUG}/AutoGen.h"/>
|
|
<EXTRA.INC/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file Name="${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<!-- Generate pre-compiled header -->
|
|
<cc userdefine="on">
|
|
<command type="CC" cmd="${PCH}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"
|
|
outputFile="${DEST_DIR_OUTPUT}/AutoGen.h.obj" dpath="${CC_DPATH}" libpath="${CC_LIBPATH}"
|
|
include="${CC_INCLUDEPATH}">
|
|
<EXTRA.INC/>
|
|
<argument value="${PCH_FLAGS}"/>
|
|
<EXTRA.ARG/>
|
|
<fileset casesensitive="on" file="${DEST_DIR_DEBUG}/AutoGen.h"/>
|
|
</command>
|
|
</cc>
|
|
|
|
<if>
|
|
<equals arg1="${CC_FAMILY}" arg2="GCC"/>
|
|
<then>
|
|
<move file="${DEST_DIR_OUTPUT}/AutoGen.h.obj" tofile="${DEST_DIR_DEBUG}/AutoGen.h.gch" overwrite="true"/>
|
|
</then>
|
|
</if>
|
|
</sequential>
|
|
</OnDependency>
|
|
|
|
<if>
|
|
<not>
|
|
<equals arg1="${CC_FAMILY}" arg2="GCC"/>
|
|
</not>
|
|
<then>
|
|
<var name="OBJECTS" value="${OBJECTS} AutoGen.h.obj"/>
|
|
</then>
|
|
</if>
|
|
</then>
|
|
<else>
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep">
|
|
<input file="${DEST_DIR_DEBUG}/AutoGen.h"/>
|
|
<EXTRA.INC/>
|
|
</makedeps>
|
|
</else>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
|
|
<!--
|
|
macro definitions for building files with different types
|
|
-->
|
|
<!--
|
|
C Code
|
|
-->
|
|
<macrodef name="Build_CCode">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="c"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<var name="FILE_BASENAME" value="@{FILENAME}" />
|
|
<var name="FILE_PATH" value="@{FILEPATH}" />
|
|
<mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
|
|
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
|
|
<input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
<EXTRA.INC/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${CC_DPATH}"
|
|
libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">
|
|
<EXTRA.INC/>
|
|
<argument value="${CC_FLAGS}"/>
|
|
<EXTRA.ARG/>
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</OnDependency>
|
|
<!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
|
|
<if>
|
|
<equals arg1="@{FILEPATH}" arg2="." />
|
|
<then>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />
|
|
</then>
|
|
<else>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
|
|
</else>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
|
|
<macrodef name="Build_AUTOGEN">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="c"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<var name="FILE_BASENAME" value="@{FILENAME}" />
|
|
<var name="FILE_PATH" value="@{FILEPATH}" />
|
|
<mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
|
|
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
|
|
<input file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
<EXTRA.INC/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${CC_DPATH}"
|
|
libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">
|
|
<EXTRA.INC/>
|
|
<argument value="${CC_FLAGS}"/>
|
|
<EXTRA.ARG/>
|
|
<fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</OnDependency>
|
|
<!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
|
|
<if>
|
|
<equals arg1="@{FILEPATH}" arg2="." />
|
|
<then>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />
|
|
</then>
|
|
<else>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
|
|
</else>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="Build_DPX">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="dxs"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
|
|
<sequential>
|
|
<var name="FILE_BASENAME" value="@{FILENAME}" />
|
|
<var name="FILE_PATH" value="@{FILEPATH}" />
|
|
<mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
|
|
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex">
|
|
<input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
<EXTRA.INC/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<!--file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/-->
|
|
<file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${CC_FAMILY}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" dpath="${CC_DPATH}"
|
|
libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">
|
|
<EXTRA.INC/>
|
|
<argument value="${PP_FLAGS}"/>
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
|
|
<gendepex inputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="Build_ASM">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="asm"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<!-- Dispath ASM file, there are three type.
|
|
asm - Build_Assembly
|
|
S - Build_Gcc_Assembly
|
|
s - Build_Ipf_Assembly -->
|
|
<sequential>
|
|
<if>
|
|
<equals arg1="@{FILEEXT}" arg2="asm" />
|
|
<then>
|
|
<Build_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">
|
|
<EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>
|
|
<EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>
|
|
</Build_Assembly>
|
|
</then>
|
|
<elseif>
|
|
<equals arg1="@{FILEEXT}" arg2="S" />
|
|
<then>
|
|
<Build_Gcc_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">
|
|
<EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>
|
|
<EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>
|
|
</Build_Gcc_Assembly>
|
|
</then>
|
|
</elseif>
|
|
<elseif>
|
|
<equals arg1="@{FILEEXT}" arg2="s" />
|
|
<then>
|
|
<Build_IPF_Assembly_Code FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">
|
|
<EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>
|
|
<EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>
|
|
</Build_IPF_Assembly_Code>
|
|
</then>
|
|
</elseif>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
IA32/x64 Assembly
|
|
-->
|
|
<macrodef name="Build_Assembly">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="asm"/>
|
|
|
|
<element name="EXTRA.INC.1" optional="yes"/>
|
|
<element name="EXTRA.ARG.1" optional="yes"/>
|
|
|
|
<sequential>
|
|
<var name="FILE_BASENAME" value="@{FILENAME}" />
|
|
<var name="FILE_PATH" value="@{FILEPATH}" />
|
|
<mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
|
|
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
|
|
<input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
<EXTRA.INC.1/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file Listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}"
|
|
dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">
|
|
<EXTRA.INC.1/>
|
|
<argument value="${PP_FLAGS}"/>
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
|
|
<replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
|
|
match="^(#line +1 +.*@{FILEPATH}/@{FILENAME}\.@{FILEEXT}").+\1"
|
|
replace=";"
|
|
flags="gs"/>
|
|
<replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
|
|
match="^(#line .*)$"
|
|
replace="; \1"
|
|
byline="true"/>
|
|
<replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
|
|
match="([^_a-zA-Z])0x([0-9a-fA-F]+)"
|
|
replace="\10\2h"
|
|
flags="g"
|
|
byline="true"/>
|
|
|
|
<cc userdefine="on">
|
|
<command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${ASM_DPATH}"
|
|
libpath="${ASM_LIBPATH}" include="${ASM_INCLUDEPATH}">
|
|
<EXTRA.INC.1/>
|
|
|
|
<argument value="${ASM_FLAGS}"/>
|
|
<EXTRA.ARG.1/>
|
|
|
|
<fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</OnDependency>
|
|
<!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
|
|
<if>
|
|
<equals arg1="@{FILEPATH}" arg2="." />
|
|
<then>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />
|
|
</then>
|
|
<else>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
|
|
</else>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Build GCC assembly code
|
|
-->
|
|
<macrodef name="Build_Gcc_Assembly">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="asm"/>
|
|
|
|
<element name="EXTRA.INC.1" optional="yes"/>
|
|
<element name="EXTRA.ARG.1" optional="yes"/>
|
|
|
|
<sequential>
|
|
<var name="FILE_BASENAME" value="@{FILENAME}" />
|
|
<var name="FILE_PATH" value="@{FILEPATH}" />
|
|
<mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
|
|
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
|
|
<input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
<EXTRA.INC.1/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file Listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${ASM_DPATH}"
|
|
libpath="${ASM_LIBPATH}" include="${ASM_INCLUDEPATH}">
|
|
<EXTRA.INC.1/>
|
|
|
|
<argument value="${ASM_FLAGS}"/>
|
|
<EXTRA.ARG.1/>
|
|
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</OnDependency>
|
|
<!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
|
|
<if>
|
|
<equals arg1="@{FILEPATH}" arg2="." />
|
|
<then>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />
|
|
</then>
|
|
<else>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
|
|
</else>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
IPF Assembly
|
|
-->
|
|
<macrodef name="Build_IPF_Assembly_Code">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="s"/>
|
|
|
|
<element name="EXTRA.INC.1" optional="yes"/>
|
|
<element name="EXTRA.ARG.1" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
|
|
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
|
|
<input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
<EXTRA.INC.1/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="PP" cmd="${APP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${APP_FAMILY}"
|
|
dpath="${APP_DPATH}" libpath="${APP_LIBPATH}" include="${APP_INCLUDEPATH}">
|
|
<EXTRA.INC.1/>
|
|
<argument value="${APP_FLAGS}"/>
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
|
|
<cc userdefine="on">
|
|
<command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"
|
|
includepathDelimiter="-I" outputDelimiter="-o" dpath="${ASM_DPATH}"
|
|
libpath="${ASM_LIBPATH}" include="${ASM_INCLUDEPATH}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
|
|
<EXTRA.INC.1/>
|
|
<argument value="${ASM_FLAGS}"/>
|
|
<EXTRA.ARG.1/>
|
|
<fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</OnDependency>
|
|
<!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
|
|
<if>
|
|
<equals arg1="@{FILEPATH}" arg2="." />
|
|
<then>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />
|
|
</then>
|
|
<else>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
|
|
</else>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
|
|
<!--
|
|
Assembly the preprocessed IPF assembly code
|
|
-->
|
|
<macrodef name="Build_IPF_PP_Code">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="i"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
|
|
|
|
<cc userdefine="on">
|
|
<command type="ASM" includepathDelimiter="-I" dpath="${ASM_DPATH}"
|
|
libpath="${ASM_LIBPATH}" include="${ASM_INCLUDEPATH}">
|
|
<includepath path="${WORKSPACE_DIR}"/>
|
|
<includepath path="${MODULE_DIR}"/>
|
|
<includepath path="${MODULE_DIR}/${ARCH}"/>
|
|
<EXTRA.INC/>
|
|
|
|
<argument value="${ASM_FLAGS}"/>
|
|
<EXTRA.ARG/>
|
|
<OutputFile File="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
|
|
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
|
|
<!--
|
|
Library
|
|
-->
|
|
<macrodef name="Build_Library">
|
|
<attribute name="FILENAME" />
|
|
<attribute name="FILEEXT" default="obj"/>
|
|
|
|
<sequential>
|
|
<var name="FILE_BASENAME" value="@{FILENAME}" />
|
|
<var name="FILE_PATH" value="." />
|
|
<mkdir dir="${BIN_DIR}"/>
|
|
|
|
<if>
|
|
<equals arg1="${OBJECTS}" arg2="" trim="true"/>
|
|
<then>
|
|
<fail message="No object files"/>
|
|
</then>
|
|
</if>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${BIN_DIR}/@{FILENAME}.lib"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"
|
|
outputFile="${BIN_DIR}/@{FILENAME}.lib" dpath="${SLINK_DPATH}"
|
|
libpath="${SLINK_LIBPATH}" include="${SLINK_INCLUDEPATH}">
|
|
<argument value="${SLINK_FLAGS}"/>
|
|
|
|
<fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Unicode -> .sdb
|
|
-->
|
|
<macrodef name="Build_UNI">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="uni"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb">
|
|
<input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
<EXTRA.INC/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<strgather commandtype="parse" newdatabase="true">
|
|
<database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
|
|
<EXTRA.INC/>
|
|
<EXTRA.ARG/>
|
|
<inputfile name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</strgather>
|
|
</sequential>
|
|
</OnDependency>
|
|
|
|
<var name="SDB_FILES" value="${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
.sdb(s) -> .c, .h -> .obj
|
|
-->
|
|
<macrodef name="Build_Unicode_Database">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="sdb"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<var name="FILE_BASENAME" value="@{FILENAME}" />
|
|
<var name="FILE_PATH" value="@{FILEPATH}" />
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file list="${SDB_FILES}"/>
|
|
<file list="${SOURCE_FILES}"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<strgather commandtype="scan" outputdatabase="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose="read">
|
|
<skipext name=".uni"/>
|
|
<skipext name=".h"/>
|
|
<database list="${SDB_FILES}"/>
|
|
<inputfile name="${SOURCE_FILES}"/>
|
|
</strgather>
|
|
</sequential>
|
|
</OnDependency>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"/>
|
|
<file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"/>
|
|
<file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<strgather basename="@{FILENAME}Strings" commandtype="dump"
|
|
outputdefines="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"
|
|
outputhpk="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"
|
|
outputstring="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c">
|
|
<database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
|
|
</strgather>
|
|
</sequential>
|
|
</OnDependency>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"
|
|
includepathDelimiter="-I" dpath="${CC_DPATH}"
|
|
libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">
|
|
<argument value="${CC_FLAGS}"/>
|
|
<EXTRA.INC />
|
|
<fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</OnDependency>
|
|
|
|
<!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
|
|
<if>
|
|
<equals arg1="@{FILEPATH}" arg2="." />
|
|
<then>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILENAME}Strings.obj" />
|
|
</then>
|
|
<else>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}Strings.obj" />
|
|
</else>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Vfr
|
|
-->
|
|
<macrodef name="Build_VFR">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="vfr"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${DEST_DIR_DEBUG}/@{FILEPATH}"/>
|
|
|
|
<makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"
|
|
TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
|
|
<input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
<EXTRA.INC/>
|
|
</makedeps>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
|
|
<file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<!-- if "TOOLCHIAN FAMILY" is "GCC", it should point the ouput file for preprocess compiler -->
|
|
<if>
|
|
<equals arg1="${CC_FAMILY}" arg2="GCC"/>
|
|
<then>
|
|
<cc userdefine="on">
|
|
<command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}"
|
|
dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">
|
|
<argument value="${VFRPP_FLAGS} -o ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>
|
|
<!-- Output file of the preprocess -->
|
|
<EXTRA.INC/>
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
</then>
|
|
<else>
|
|
<cc userdefine="on">
|
|
<command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}"
|
|
dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">
|
|
<argument value="${VFRPP_FLAGS}"/>
|
|
<!-- Output file of the preprocess -->
|
|
<EXTRA.INC/>
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
</else>
|
|
</if>
|
|
|
|
<vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">
|
|
<EXTRA.INC/>
|
|
</vfrcompile>
|
|
|
|
<cc userdefine="on">
|
|
<command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}"
|
|
includepathDelimiter="-I" family="${CC_FAMILY}" dpath="${CC_DPATH}"
|
|
libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >
|
|
<argument value="${CC_FLAGS}"/>
|
|
<EXTRA.INC/>
|
|
<EXTRA.ARG/>
|
|
<fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>
|
|
</command>
|
|
</cc>
|
|
</sequential>
|
|
</OnDependency>
|
|
<!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
|
|
<if>
|
|
<equals arg1="@{FILEPATH}" arg2="." />
|
|
<then>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />
|
|
</then>
|
|
<else>
|
|
<var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
|
|
</else>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Build the real mode ASM file
|
|
-->
|
|
<macrodef name="Build_RealAsm">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="asm"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.cat"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<exec dir="${DEST_DIR_OUTPUT}" executable="${ASM}" failonerror="true">
|
|
<arg line="/nologo /omf ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT} /Bl${ASMLINK} ${ASMLINK_FLAGS}"/>
|
|
</exec>
|
|
<concat destfile="${DEST_DIR_OUTPUT}/@{FILENAME}.cat" binary="yes">
|
|
<filelist dir="${MODULE_DIR}" files="Blank2.pad"/>
|
|
<filelist dir="${DEST_DIR_OUTPUT}" files="@{FILENAME}.com"/>
|
|
</concat>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Build Asl table file
|
|
-->
|
|
<macrodef name="Build_ASL">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="asl"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${DEST_DIR_OUTPUT}"/>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<cc userdefine="on">
|
|
<command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}" family="${PP_FAMILY}"
|
|
dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">
|
|
<argument value="${APP_FLAGS}"/>
|
|
<EXTRA.INC/>
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
|
|
<exec dir="${DEST_DIR_OUTPUT}" executable="${ASL}" failonerror="true" outputproperty="ASL_OUTPUT">
|
|
<arg line="${DEST_DIR_OUTPUT}/@{FILENAME}.i"/>
|
|
</exec>
|
|
|
|
<if>
|
|
<or>
|
|
<contains string="${ASL_OUTPUT}" substring="Supports ACPI Specification Revision 2.0"/>
|
|
<contains string="${ASL_OUTPUT}" substring="Supports ACPI Specification Revision 1.0"/>
|
|
</or>
|
|
<then>
|
|
<fail message="Current Asl tool not support Acpi Spec 3.0. Pls update your Asl compiler."/>
|
|
</then>
|
|
</if>
|
|
|
|
<EFI_SECTION_RAW FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="aml"/>
|
|
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Build Asl table c file
|
|
-->
|
|
<macrodef name="Build_CCASL">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="c"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${DEST_DIR_OUTPUT}"/>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
|
|
<cc userdefine="on">
|
|
<command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.obj" dpath="${CC_DPATH}"
|
|
libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">
|
|
<EXTRA.INC/>
|
|
<argument value="${CC_FLAGS}"/>
|
|
<EXTRA.ARG/>
|
|
<fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</command>
|
|
</cc>
|
|
|
|
<cc userdefine="on">
|
|
<command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.exe" dpath="${DLINK_DPATH}" >
|
|
<argument value="${SLINK_FLAGS}"/>
|
|
<fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILENAME}.obj"/>
|
|
</command>
|
|
</cc>
|
|
|
|
<genacpitable inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.exe" outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.acpi" />
|
|
|
|
<EFI_SECTION_RAW FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="acpi"/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
<!--
|
|
Build ACPI Bin File
|
|
-->
|
|
<macrodef name="Build_ACPIBIN">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="bin"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${DEST_DIR_OUTPUT}"/>
|
|
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" tofile="${DEST_DIR_OUTPUT}/@{FILENAME}.acpi" />
|
|
|
|
<exec executable="attrib">
|
|
<arg line="-r ${DEST_DIR_OUTPUT}/@{FILENAME}.acpi"/>
|
|
</exec>
|
|
|
|
<EFI_SECTION_RAW FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="acpi"/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
DUMMY - for skipping the source file which should not be built
|
|
-->
|
|
<macrodef name="Build_DUMMY">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<!--echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" level="info" /-->
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Generate efi file
|
|
-->
|
|
<macrodef name="GenEfi">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="efi"/>
|
|
|
|
<element name="LIB.ARG" optional="yes"/>
|
|
<element name="LINK.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<var name="FILE_BASENAME" value="@{FILENAME}" />
|
|
<var name="FILE_PATH" value="@{FILEPATH}" />
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file list="${LIBS}"/>
|
|
<fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_DEBUG}/@{FILENAME}.efi"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<!-- Generate a temporary lib file for object files -->
|
|
<cc userdefine="on">
|
|
<command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}" dpath="${SLINK_DPATH}"
|
|
outputFile="${DEST_DIR_OUTPUT}/@{FILENAME}Local.lib"
|
|
libpath="${SLINKLIBPATH}" include="${SLINK_INCLUDEPATH}">
|
|
<argument value="${SLINK_FLAGS}"/>
|
|
|
|
<fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>
|
|
</command>
|
|
</cc>
|
|
|
|
<!-- Link the temporary lib file with dependent libraries -->
|
|
<cc userdefine="on">
|
|
<command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"
|
|
outputFile="${DEST_DIR_DEBUG}/@{FILENAME}.dll" dpath="${DLINK_DPATH}"
|
|
libpath="${DLINK_LIBPATH}" include="${DLINK_INCLUDEPATH}">
|
|
<argument value="${DLINK_FLAGS}"/>
|
|
<libset libs="${DEST_DIR_OUTPUT}/@{FILENAME}Local.lib ${LIBS} ${DLINK_SPATH}"/>
|
|
<LINK.ARG/>
|
|
</command>
|
|
</cc>
|
|
|
|
<!-- Convert the dll file to efi file -->
|
|
<fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"
|
|
peImage="${DEST_DIR_DEBUG}/@{FILENAME}.dll" time="0"/>
|
|
|
|
<!-- Copy the efi file to BIN and OUTPUT directory -->
|
|
<copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />
|
|
<copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />
|
|
<if>
|
|
<available file="${DEST_DIR_DEBUG}/@{FILENAME}.map" />
|
|
<then>
|
|
<copy file="${DEST_DIR_DEBUG}/@{FILENAME}.map" tofile="${BIN_DIR}/@{FILENAME}.map" />
|
|
</then>
|
|
</if>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Binary
|
|
-->
|
|
<macrodef name="Build_Binary">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="bin"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
|
|
tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Microcode
|
|
-->
|
|
<macrodef name="Build_MICROCODE">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="TXT"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${TARGET_DIR}/Microcode"/>
|
|
<flashmap MCIFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" MCOFILE="${TARGET_DIR}/Microcode/@{FILENAME}.bin"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Graphics (bmp, ...)
|
|
-->
|
|
<macrodef name="Build_BMP">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="bmp"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
|
|
tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
build EFI file
|
|
-->
|
|
<macrodef name="Build_EFI">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="efi"/>
|
|
|
|
<element name="EXTRA.INC" optional="yes"/>
|
|
<element name="EXTRA.ARG" optional="yes"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${MODULE_DIR}/@{FILEPATH}" />
|
|
<copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
|
|
tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Build macro for Apriori
|
|
-->
|
|
<macrodef name="Build_Apriori">
|
|
<attribute name="FILEPATH" default="."/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="apr"/>
|
|
<attribute name="GUID"/>
|
|
|
|
<sequential>
|
|
<mkdir dir="${FV_DIR}/Apriori" />
|
|
<gensection inputfile="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
|
|
outputfile="${FV_DIR}/Apriori/@{FILENAME}.sec"
|
|
sectiontype="EFI_SECTION_RAW"/>
|
|
|
|
<genffsfile BaseName="@{FILENAME}" ffsATTRIBCHECKSUM="TRUE" ffsFILETYPE="EFI_FV_FILETYPE_FREEFORM"
|
|
fileGuid="@{GUID}" moduleType="BASE" outputDir="${FV_DIR}">
|
|
<sectFile fileName="${FV_DIR}/Apriori/@{FILENAME}.sec"/>
|
|
</genffsfile>
|
|
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--############################################################################
|
|
Build Sections
|
|
#############################################################################-->
|
|
<!--
|
|
EFI_SECTION_TE
|
|
-->
|
|
|
|
<macrodef name="EFI_SECTION_TE">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="efi" />
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
|
|
<sequential>
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<PRE.PROCESS/>
|
|
|
|
<genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
|
|
<gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes"
|
|
sectiontype="EFI_SECTION_TE"/>
|
|
|
|
<POST.PROCESS/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
EFI_SECTION_PE32
|
|
-->
|
|
<macrodef name="EFI_SECTION_PE32">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="efi"/>
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
|
|
<sequential>
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<PRE.PROCESS/>
|
|
|
|
<gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"
|
|
sectiontype="EFI_SECTION_PE32"/>
|
|
|
|
<POST.PROCESS/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
EFI_SECTION_VERSION
|
|
-->
|
|
<macrodef name="EFI_SECTION_VERSION">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="" />
|
|
<attribute name="VERSION" default="0000"/>
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
|
|
<sequential>
|
|
<if>
|
|
<not>
|
|
<available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>
|
|
</not>
|
|
|
|
<then>
|
|
<PRE.PROCESS/>
|
|
<gensection outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"
|
|
versionnum="@{VERSION}"
|
|
sectiontype="EFI_SECTION_VERSION"/>
|
|
<POST.PROCESS/>
|
|
</then>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
EFI_SECTION_USER_INTERFACE
|
|
-->
|
|
<macrodef name="EFI_SECTION_USER_INTERFACE">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="" />
|
|
<attribute name="UI" default="${BASE_NAME}"/>
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
|
|
<sequential>
|
|
<if>
|
|
<not>
|
|
<available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>
|
|
</not>
|
|
|
|
<then>
|
|
<PRE.PROCESS/>
|
|
<gensection interfacestring="@{UI}"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"
|
|
sectiontype="EFI_SECTION_USER_INTERFACE"/>
|
|
<POST.PROCESS/>
|
|
</then>
|
|
</if>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
EFI_SECTION_DXE_DEPEX
|
|
-->
|
|
<macrodef name="EFI_SECTION_DXE_DEPEX">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="dxs"/>
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
|
|
<sequential>
|
|
<PRE.PROCESS/>
|
|
|
|
<if>
|
|
<available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
|
|
<then>
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
|
|
</targetfiles>
|
|
<sequential>
|
|
<gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"
|
|
sectiontype="EFI_SECTION_DXE_DEPEX"/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</then>
|
|
<else>
|
|
<if>
|
|
<not>
|
|
<available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
|
|
</not>
|
|
<then>
|
|
<touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
|
|
</then>
|
|
</if>
|
|
</else>
|
|
</if>
|
|
|
|
<POST.PROCESS/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
EFI_SECTION_PEI_DEPEX
|
|
-->
|
|
<macrodef name="EFI_SECTION_PEI_DEPEX">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="dxs"/>
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
<sequential>
|
|
<PRE.PROCESS/>
|
|
<if>
|
|
<available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
|
|
<then>
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"
|
|
sectiontype="EFI_SECTION_PEI_DEPEX"/>
|
|
</sequential>
|
|
</OnDependency>
|
|
|
|
</then>
|
|
<else>
|
|
<if>
|
|
<not>
|
|
<available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
|
|
</not>
|
|
<then>
|
|
<touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
|
|
</then>
|
|
</if>
|
|
</else>
|
|
</if>
|
|
<POST.PROCESS/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
|
|
<!--
|
|
EFI_SECTION_RAW
|
|
-->
|
|
<macrodef name="EFI_SECTION_RAW">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="bin"/>
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
|
|
<sequential>
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<PRE.PROCESS/>
|
|
<gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"
|
|
sectiontype="EFI_SECTION_RAW"/>
|
|
<POST.PROCESS/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
EFI_SECTION_RAW_SEC
|
|
-->
|
|
<macrodef name="EFI_SECTION_RAW_SEC">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="cat"/>
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
|
|
<sequential>
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${DEST_DIR_OUTPUT}/ResetVec.@{FILEEXT}"/>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.te"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<PRE.PROCESS/>
|
|
<secfixup secexefile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" resetvectorDatafile="${DEST_DIR_OUTPUT}/ResetVec.@{FILEEXT}"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.bin"/>
|
|
|
|
<gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.bin"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"
|
|
sectiontype="EFI_SECTION_RAW"/>
|
|
<POST.PROCESS/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
EFI_SECTION_FIRMWARE_VOLUME_IMAGE
|
|
-->
|
|
<macrodef name="EFI_SECTION_FIRMWARE_VOLUME_IMAGE">
|
|
<attribute name="FILEPATH"/>
|
|
<attribute name="FILENAME"/>
|
|
<attribute name="FILEEXT" default="fv"/>
|
|
|
|
<element name="PRE.PROCESS" optional="yes"/>
|
|
<element name="POST.PROCESS" optional="yes"/>
|
|
|
|
<sequential>
|
|
<OnDependency>
|
|
<sourcefiles>
|
|
<file name="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
|
|
</sourcefiles>
|
|
<targetfiles>
|
|
<file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>
|
|
</targetfiles>
|
|
|
|
<sequential>
|
|
<PRE.PROCESS/>
|
|
|
|
<copy file="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
|
|
tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
|
|
overwrite="true"/>
|
|
<gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
|
|
outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"
|
|
sectiontype="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>
|
|
|
|
<POST.PROCESS/>
|
|
</sequential>
|
|
</OnDependency>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
</project>
|