summaryrefslogtreecommitdiff
path: root/EdkCompatibilityPkg/Sample/Platform/X64/Build/build.bat
diff options
context:
space:
mode:
Diffstat (limited to 'EdkCompatibilityPkg/Sample/Platform/X64/Build/build.bat')
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/X64/Build/build.bat304
1 files changed, 304 insertions, 0 deletions
diff --git a/EdkCompatibilityPkg/Sample/Platform/X64/Build/build.bat b/EdkCompatibilityPkg/Sample/Platform/X64/Build/build.bat
new file mode 100644
index 0000000..c224c2e
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/X64/Build/build.bat
@@ -0,0 +1,304 @@
+@rem #/*++
+@rem #
+@rem # Copyright (c) 2007, Intel Corporation
+@rem # All rights reserved. This program and the accompanying materials
+@rem # are licensed and made available under the terms and conditions of the BSD License
+@rem # which accompanies this distribution. The full text of the license may be found at
+@rem # http://opensource.org/licenses/bsd-license.php
+@rem #
+@rem # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+@rem # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+@rem #
+@rem # Module Name:
+@rem #
+@rem # build.bat
+@rem #
+@rem # Abstract:
+@rem #
+@rem # This script provides single module build, clean and find function
+@rem # based on module name.
+@rem #
+@rem # The auto-generated module.list file records all module names
+@rem # described in the current platform.dsc.
+@rem #
+@rem #--*/
+
+@echo off
+
+setlocal
+@rem initilize local variable
+set FUNCTION=build
+set MODULE=
+set UPDATE=
+set VERBOSE=
+
+:parse
+if /I "%1"=="/c" (
+ set FUNCTION=clean
+ shift
+ goto parse
+)
+if /I "%1"=="clean" (
+ set FUNCTION=clean
+ shift
+ goto parse
+)
+if /I "%1"=="/r" (
+ set FUNCTION=rebuild
+ shift
+ goto parse
+)
+if /I "%1"=="/h" (
+ set FUNCTION=usage
+ shift
+ goto parse
+)
+if /I "%1"=="/?" (
+ set FUNCTION=usage
+ shift
+ goto parse
+)
+if /I "%1"=="/f" (
+ set FUNCTION=find
+ shift
+ goto parse
+)
+if /I "%1"=="/a" (
+ set UPDATE=TRUE
+ shift
+ goto parse
+)
+if /I "%1"=="/v" (
+ set VERBOSE=TRUE
+ shift
+ goto parse
+)
+if not "%1"=="" (
+ set MODULE=%1
+ shift
+ goto parse
+) else (
+ @rem no other paramters
+ if "%FUNCTION%"=="rebuild" goto build
+ goto %FUNCTION%
+)
+
+:build
+set StartTime=%time%
+@rem if no input, build all
+if "%MODULE%"=="" (
+ if "%FUNCTION%"=="rebuild" (
+ nmake -nologo -f Makefile clean
+ )
+ nmake -nologo -f Makefile all
+ goto endtime
+)
+@rem then try to build special targets: all, fast, tools.
+if /I "%MODULE%"=="all" (
+ @rem build all modules and tools.
+ if "%FUNCTION%"=="rebuild" (
+ nmake -nologo -f Makefile cleanall
+ )
+ nmake -nologo -f Makefile all
+ goto endtime
+)
+if /I "%MODULE%"=="fast" (
+ @rem build fast target to skip FV=NULL modules.
+ if "%FUNCTION%"=="rebuild" (
+ nmake -nologo -f Makefile clean
+ )
+ nmake -nologo -f Makefile fast
+ goto endtime
+)
+if /I "%MODULE%"=="tools" (
+ @rem build all tools.
+ if "%FUNCTION%"=="rebuild" (
+ nmake -nologo -f Makefile cleantools
+ )
+ nmake -nologo -f Makefile build_tools
+ echo.
+ echo All tools are built.
+ goto endtime
+)
+@rem build single module, update build makefiles
+if "%FUNCTION%"=="rebuild" (
+ nmake -nologo -f module.mak %MODULE%Clean 2>NUL
+)
+nmake -nologo -f Makefile flashmap > NUL 2>&1
+nmake -nologo -f Makefile makefiles
+if errorlevel 1 goto builderror
+@rem check whether input module name is described in current dsc file.
+findstr /I /C:" %MODULE% " module.list > NUL
+if errorlevel 1 (
+ echo.
+ echo.
+ findstr /I /C:"%MODULE%" module.list > NUL
+ if errorlevel 1 goto finderror
+ for /F %%A in ('findstr /I /C:"%MODULE%" module.list') do echo %%A
+ echo.
+ echo Warning!!! Your specified module name can't be found.
+ echo One of the above modules may be what you want to build.
+ goto end
+)
+@rem build this module
+nmake -nologo -f module.mak %MODULE%Build
+echo.
+if "%FUNCTION%"=="rebuild" (
+ echo Module %MODULE% is rebuilt.
+) else (
+ echo Module %MODULE% is built.
+)
+:endtime
+@rem output build time.
+set EndTime=%time%
+echo.
+echo Start time %StartTime%
+echo End time %EndTime%
+goto end
+
+:clean
+@rem if no input, default clean all build directories.
+if "%MODULE%"=="" (
+ nmake -nologo -f Makefile clean
+ goto end
+)
+@rem first try to clean special tasks: all, modules and tools
+if /I "%MODULE%"=="all" (
+ nmake -nologo -f Makefile cleanall
+ goto end
+)
+if /I "%MODULE%"=="modules" (
+ nmake -nologo -f Makefile cleanbuilds
+ goto end
+)
+if /I "%MODULE%"=="tools" (
+ nmake -nologo -f Makefile cleantools
+ goto end
+)
+@rem clean single module
+@rem check whether input module name is in module.list file.
+if not exist module.list (
+ echo Module list info doesn't exist.
+ echo Processing dsc file to generate module list info.
+ nmake -nologo -f Makefile flashmap > NUL 2>&1
+ nmake -nologo -f Makefile makefiles > error.log 2>&1
+ if errorlevel 1 goto builderror
+)
+findstr /I /C:" %MODULE% " module.list > NUL
+if errorlevel 1 (
+ echo.
+ findstr /I /C:"%MODULE%" module.list > NUL
+ if errorlevel 1 goto finderror
+ for /F %%A in ('findstr /I /C:"%MODULE%" module.list') do echo %%A
+ echo.
+ echo Warning!!! Your specified module name can't be found.
+ echo One of the above modules may be what you want to clean.
+ goto end
+)
+@rem clean this module
+nmake -nologo -f module.mak %MODULE%Clean 2>NUL
+echo.
+echo Module %MODULE% is cleaned.
+goto end
+
+:find
+@rem find match module name by subname.
+if "%UPDATE%"=="TRUE" (
+ echo Processing dsc file to update module list info.
+ nmake -nologo -f Makefile flashmap > NUL 2>&1
+ nmake -nologo -f Makefile makefiles > error.log 2>&1
+ if errorlevel 1 goto builderror
+)
+if not exist module.list (
+ echo Module list info doesn't exist.
+ echo Processing dsc file to generate module list info.
+ nmake -nologo -f Makefile flashmap > NUL 2>&1
+ nmake -nologo -f Makefile makefiles > error.log 2>&1
+ if errorlevel 1 goto builderror
+)
+if "%MODULE%"=="" (
+ @rem display all
+ echo.
+ if "%VERBOSE%"=="TRUE" (
+ type module.list
+ ) else (
+ @rem only output module name without module.inf file name
+ for /F %%A in (module.list) do echo %%A
+ )
+) else (
+ @rem display match module name
+ echo.
+ if "%VERBOSE%"=="TRUE" (
+ findstr /I /C:"%MODULE%" module.list
+ if errorlevel 1 goto notfind
+ ) else (
+ findstr /I /C:"%MODULE%" module.list > NUL
+ if errorlevel 1 goto notfind
+ for /F %%A in ('findstr /I /C:"%MODULE%" module.list') do echo %%A
+ )
+)
+goto end
+
+:usage
+echo build or clean single module based on module name after tools are built.
+echo.
+echo build [/r] [/c] [/f] [/h] [modulename]
+echo.
+echo build [/r] [modulename]
+echo build single module, such as build DxeMain.
+echo If /r is specified, the target will be rebuit after cleaned first.
+echo if no input modulename or modulename is all, then build all
+echo Specail build targets: all, fast, tools.
+echo These special targets may not exist in your tip main makefile.
+echo build - build all tools and modules
+echo build all - build all tools and modules
+echo build fast - build all without FV=NULL modules
+echo build tools - build all tools.
+echo.
+echo build /c [modulename]
+echo build clean [modulename]
+echo remove the temp generated files for single module
+echo if no input modulename, then clean all
+echo Specail clean targets: all, modules, tools.
+echo These special targets may not exist in your tip main makefile.
+echo build /c - clean up all build directories
+echo build /c all - clean up all build directories and binary dirs.
+echo build /c modules - clean up all build directories except for tools.
+echo build /c tools - clean up only tools directory.
+echo.
+echo build /f [/a] [/v] [subname]
+echo find all matched modulename with the sub string of module name.
+echo option /a re-processes dsc files to update module name list.
+echo option /v outputs module name and module.inf file name both.
+echo.
+echo build /h
+echo build /?
+echo display help information.
+echo.
+goto end
+
+:notfind
+echo Warning!!! Your specified module name can't be found.
+echo Try to use /f /a options to update module name list.
+goto end
+
+:finderror
+echo Warning!!! Your specified module name can't be found.
+echo Try to use /f to find modules that you want to build.
+echo Or use /h to get the helpinfo of this script.
+goto end
+
+:builderror
+if exist error.log type error.log
+echo.
+if not exist Tools\ProcessDsc.exe (
+ echo.
+ echo Error!!! Build tools may not be ready. Try to build tools first.
+ echo.
+)
+del module.* > NUL 2>&1
+goto end
+
+:end
+if exist error.log del error.log
+echo on