summaryrefslogtreecommitdiff
path: root/msvcbuild.bat
diff options
context:
space:
mode:
Diffstat (limited to 'msvcbuild.bat')
-rw-r--r--msvcbuild.bat108
1 files changed, 104 insertions, 4 deletions
diff --git a/msvcbuild.bat b/msvcbuild.bat
index 5284e64..2a5ee3d 100644
--- a/msvcbuild.bat
+++ b/msvcbuild.bat
@@ -1,15 +1,52 @@
-@rem Script to build libnet under "Visual Studio .NET Command Prompt".
+@echo off
+
+@rem Script to build libnet with MSVC.
@rem Dependencies are:
-@rem winpcap, specifically, the winpcap developer pack
+@rem winpcap, specifically, the winpcap developer pack
+@rem We assume WpdPack\ and libnet-master\ to have the same path,
+@rem and that this script is executed from either a VS2015 Developer Command Prompt
+@rem or an elevated Command Prompt.
+:start
+@if "%1" == "" goto x86
@setlocal
-@set MYCOMPILE=cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE
+@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 x64
+@if "%1"=="x86_x64" goto x86_x64
+@endlocal
+
+:x86
+if not exist "%VCINSTALLDIR%bin\vcvars32.bat" goto path
+call "%VCINSTALLDIR%bin\vcvars32.bat"
+goto msvcbuild32
+
+:x64
+if not exist "%VCINSTALLDIR%bin\amd64\vcvars64.bat" goto path
+call "%VCINSTALLDIR%bin\amd64\vcvars64.bat"
+goto msvcbuild64
+
+:x86_x64
+if not exist "%VCINSTALLDIR%vcvarsall.bat" goto path
+call "%VCINSTALLDIR%vcvarsall.bat" x86_amd64
+goto msvcbuild64
+
+:msvcbuild32
+@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 VERSION=1.2
@rem relative to C code in src/
@set WINPCAP=..\..\..\WpdPack
+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\
@@ -17,10 +54,73 @@ copy win32\getopt.h include\
cd src
%MYCOMPILE% /I..\include /I%WINPCAP%\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:%WINPCAP%\Lib /out:libnet.dll *.obj Advapi32.lib
+%MYLINK% /DLL /libpath:%WINPCAP%\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 WINPCAP=..\..\..\WpdPack
+
+if not exist "src\win64\" mkdir "src\win64\"
+
+if not exist "lib\x64\" mkdir "lib\x64\"
+
+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%WINPCAP%\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:%WINPCAP%\Lib\x64 /out:..\lib\x64\libnet%VERSION%.dll win64\*.obj Advapi32.lib
+if exist libnet.dll.manifest^
+ %MYMT% -manifest libnet.dll.manifest -outputresource:libnet.dll;2
+cd ..
+
+exit /b %errorlevel%
+
+:usage
+echo Invalid option "%*". The correct usage is:
+echo %0 [option]
+echo :
+echo where [option] is: x86 ^| x64 ^| x86_x64
+echo :
+echo The script will verify and set the appropriate environment variables.
+echo If no options are provided, x86 is assumed.
+echo :
+echo Usage examples:
+echo %0 x86
+echo %0 x64
+echo %0 x86_x64
+echo :
+echo If your build computer is 32-bit and you want to build for 64-bit
+echo (aka Cross), choose "x86_x64"
+echo :
+echo Please make sure Visual Studio or the C++ Build SKU is installed,
+echo and that this script is executed from a Developer Command Prompt.
+echo :
+goto end
+
+:path
+call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"
+if not exist "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat" goto fail
+goto start
+
+:fail
+echo Visual Studio or the C++ Build SKU do not seem to be installed.
+echo Please Install either of them or try to executed this script
+echo from a Developer Command Prompt.
+goto end
+
+:end \ No newline at end of file