summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoachim Wiberg <troglobit@gmail.com>2022-12-31 15:06:41 +0100
committerJoachim Wiberg <troglobit@gmail.com>2022-12-31 19:50:53 +0100
commit038e9d778d15d96613db19d419ffcc74ca189cdc (patch)
treeb9d8c7e6f19ecd447b54f5233579c93c000ec9a9
parentefa162cc8938ded5718f81167a73b0bea6ac278e (diff)
downloadlibnet-038e9d778d15d96613db19d419ffcc74ca189cdc.tar.gz
win32: generalize and clean up batch file a bit
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
-rw-r--r--.github/workflows/build-windows.yml6
-rw-r--r--win32/msvcbuild.bat87
2 files changed, 37 insertions, 56 deletions
diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml
index c0c09a4..616c67c 100644
--- a/.github/workflows/build-windows.yml
+++ b/.github/workflows/build-windows.yml
@@ -14,7 +14,11 @@ jobs:
run: |
Invoke-WebRequest https://npcap.com/dist/npcap-sdk-1.13.zip -OutFile ../npcap-sdk.zip
Expand-Archive ../npcap-sdk.zip -DestinationPath ../npcap-sdk
+ - name: Build 32-bit
+ shell: cmd
+ run: |
+ .\win32\msvcbuild.bat x86
- name: Build 64-bit
shell: cmd
run: |
- .\win32\msvcbuild.bat x64
+ .\win32\msvcbuild.bat x86_64
diff --git a/win32/msvcbuild.bat b/win32/msvcbuild.bat
index 9f8b1b7..b953ea0 100644
--- a/win32/msvcbuild.bat
+++ b/win32/msvcbuild.bat
@@ -15,83 +15,60 @@ for /f "usebackq tokens=*" %%i in (`vswhere -latest -products * -requires Micros
)
if not exist "%InstallDir%\Common7\Tools\VsDevCmd.bat" (goto fail)
+@rem Set up common files, paths, and envs
+@rem relative to C code in src/
+@set NPCAP=..\..\npcap-sdk
+mkdir src\win64 src\win32 lib\x64 lib\x86
+copy win32\*.h include\
+
@if "%1" == "" goto x86
@setlocal
@set userinput=%1
@if not "%1"=="x86" @if not "%1"=="x64" @if not "%1"=="x86_x64" goto usage
@if "%1"=="x86" goto x86
-@if "%1"=="x64" goto x86_x64
-@if "%1"=="x86_x64" goto x86_x64
+@if "%1"=="x64" goto x64
+@if "%1"=="x86_64" goto x86_64
+@if "%1"=="x86_x64" goto x86_64
@endlocal
:x86
call "%InstallDir%\Common7\Tools\VsDevCmd.bat" -arch=x86
-goto msvcbuild32
+set PCAPLIB=%NPCAP%\Lib
+set PCAPINC=%NPCAP%\Include
+set BUILDDIR=win32
+set LIBDIR=..\lib\x86
+goto msvcbuild
:x64
call "%InstallDir%\Common7\Tools\VsDevCmd.bat" -arch=x64
-goto msvcbuild64
+set PCAPLIB=%NPCAP%\Lib\x64
+set PCAPINC=%NPCAP%\Include
+set BUILDDIR=win64
+set LIBDIR=..\lib\x64
+goto msvcbuild
-:x86_x64
+:x86_64
call "%InstallDir%\Common7\Tools\VsDevCmd.bat" -arch=amd64
-goto msvcbuild64
+set PCAPLIB=%NPCAP%\Lib\x64
+set PCAPINC=%NPCAP%\Include
+set BUILDDIR=win64
+set LIBDIR=..\lib\x64
+goto msvcbuild
-:msvcbuild32
+:msvcbuild
@echo on
@setlocal
-@set MYCOMPILE=cl /nologo /MD /O2 /W4 /c /D_CRT_SECURE_NO_DEPRECATE /Fowin32\
-@set MYLINK=link /nologo
-@set MYMT=mt /nologo
+@set CC=cl /nologo /MD /O2 /W4 /c /D_CRT_SECURE_NO_DEPRECATE /Fo%BUILDDIR%\
+@set LD=link /nologo
+@set MT=mt /nologo
@set VERSION=1.2
-@rem relative to C code in src/
-@set NPCAP=..\..\npcap-sdk
-
-if not exist "src\win32\" mkdir "src\win32\"
-
-if not exist "lib\x86\" mkdir "lib\x86\"
-
-copy win32\libnet.h include\
-copy win32\stdint.h include\libnet\
-copy win32\config.h include\
-copy win32\getopt.h include\
-
cd src
-%MYCOMPILE% /I..\include /I%NPCAP%\Include libnet_a*.c libnet_build_*.c libnet_c*.c libnet_dll.c libnet_error.c libnet_i*.c libnet_link_win32.c libnet_p*.c libnet_raw.c libnet_resolve.c libnet_version.c libnet_write.c
-%MYLINK% /DLL /libpath:%NPCAP%\Lib /out:..\lib\x86\libnet%VERSION%.dll win32\*.obj Advapi32.lib
-if exist libnet.dll.manifest^
- %MYMT% -manifest libnet.dll.manifest -outputresource:libnet.dll;2
-cd ..
-
-exit /b %errorlevel%
-
-:msvcbuild64
-@echo on
-@setlocal
-@set MYCOMPILE=cl /nologo /MD /O2 /W4 /c /D_CRT_SECURE_NO_DEPRECATE /Fowin64\
-@set MYLINK=link /nologo
-@set MYMT=mt /nologo
-@set VERSION=1.2
-
-@rem relative to C code in src/
-@set NPCAP=..\..\npcap-sdk
-
-if not exist "src\win64\" mkdir "src\win64\"
+%CC% /I..\include /I%PCAPINC% libnet_a*.c libnet_build_*.c libnet_c*.c libnet_dll.c libnet_error.c libnet_i*.c libnet_link_win32.c libnet_p*.c libnet_raw.c libnet_resolve.c libnet_version.c libnet_write.c
+%LD% /DLL /libpath:%PCAPLIB% /out:%LIBDIR%\libnet%VERSION%.dll %BUILDDIR%\*.obj Advapi32.lib
-if not exist "lib\x64\" mkdir "lib\x64\"
-
-copy win32\libnet.h include\
-@rem copy win32\stdint.h include\libnet\
-copy win32\config.h include\
-copy win32\getopt.h include\
-
-cd src
-%MYCOMPILE% /I..\include /I%NPCAP%\Include libnet_a*.c libnet_build_*.c libnet_c*.c libnet_dll.c libnet_error.c libnet_i*.c libnet_link_win32.c libnet_p*.c libnet_raw.c libnet_resolve.c libnet_version.c libnet_write.c
-dir .\win64\
-%MYLINK% /DLL /libpath:%NPCAP%\Lib\x64 /out:..\lib\x64\libnet%VERSION%.dll win64\*.obj Advapi32.lib
-dir ..\lib\x64\
if exist libnet.dll.manifest^
- %MYMT% -manifest libnet.dll.manifest -outputresource:libnet.dll;2
+ %MT% -manifest libnet.dll.manifest -outputresource:libnet.dll;2
cd ..
exit /b %errorlevel%