singrdk/base/Kernel/abi2def.cmd

71 lines
1.4 KiB
Batchfile

@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
if .==.%1 goto usage
if .%1==./? goto usage
REM
REM Process arguments.
REM
set _OBJS=
set _DEFS=singularity.V999.def
set _SRCH="@Struct_Microsoft_Singularity_V[0-9]*_"
:parse
if .==.%1 goto good
if /I ./?==./1 (
shift /1
goto usage
)
if /I .%1==.-? (
shift /1
goto usage
)
if /I .%1==./help (
shift /1
goto usage
)
if /I .%1==./version (
set _SRCH="@Struct_Microsoft_Singularity_V%2_"
shift /1
shift /1
goto parse
)
if /I .%1==./def (
set _DEFS=%2
shift /1
shift /1
goto parse
)
set _OBJS=%_OBJS% %1
shift /1
goto parse
:good
rem echo _OBJS=%_OBJS%
rem echo _DEFS=%_DEFS%
rem echo _SRCH=%_SRCH%
rem goto exit
echo EXPORTS > %_DEFS%
set FindStr=%SYSTEMROOT%\system32\findstr
dumpbin /symbols %_OBJS% | %FindStr% "External" | %FindStr% -v "\$" | %FindStr% "\?g_[A-z]" | %FindStr% %_SRCH% | substitute.exe ".*(?<x>\?g_[^ ]*).*" " ${x}" >> %_DEFS%
goto exit
:usage
echo.Usage:
echo. ABI2DEF.CMD [/VERSION number] [/DEF output] {objs}
echo.
echo.Summary:
echo. Creates the .DEF for the specified version of the Singularity ABI by
echo. parsing the symbols exported from the named .obj and .lib files.
echo. If version isn't specified, create a file for all versions.
echo.
echo.Options:
echo. /VERSION number ABI version number.
echo. /DEF output Output .def file.
echo.
:exit