43 lines
1.0 KiB
Batchfile
43 lines
1.0 KiB
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
rem === Input files ===
|
|
set cfiles=
|
|
set afiles=
|
|
|
|
rem === Flags ===
|
|
set cflags=/c /GS- /GR- /Oi /EHs-c- /nologo /Zc:threadSafeInit- /I include /Fo:obj\
|
|
set lflags=/NODEFAULTLIB /ENTRY:efi_main /NOLOGO /SUBSYSTEM:EFI_APPLICATION /LIBPATH:obj /OUT:BootX64.efi efilib.lib
|
|
|
|
rem === Ensure obj\ directory exists ===
|
|
if not exist "obj\" (
|
|
mkdir "obj"
|
|
)
|
|
|
|
rem === Dynamically generate object list ===
|
|
set objects=
|
|
|
|
for %%f in (%cfiles%) do (
|
|
set "base=%%~nf"
|
|
set "objects=!objects!!base!.obj "
|
|
)
|
|
|
|
for %%f in (%afiles%) do (
|
|
set "base=%%~nf"
|
|
set "objects=!objects!!base!.obj "
|
|
)
|
|
|
|
rem === Assemble all .asm files ===
|
|
for %%f in (%afiles%) do (
|
|
ml64 /c /nologo /Foobj\%%~nf.obj %%f || pause && exit /b
|
|
)
|
|
|
|
rem === Compile all .cpp files ===
|
|
cl %cflags% %cfiles% || pause && exit /b
|
|
|
|
rem === Link all objects ===
|
|
link %lflags% !objects! || pause && exit /b
|
|
|
|
rem === Copy output to EFI folder ===
|
|
copy /B /Y BootX64.efi fatroot\EFI\Boot\
|