- Complete build-system revamp.

* Updated sources files to target install\WDDK
  * Remove wdfinstaller.h dependency from dll/divert.dll
  * Fix passthru error in newer compilers.
This commit is contained in:
basil00
2012-03-27 17:39:46 +08:00
parent 47e2764c20
commit 53b45c4e8c
10 changed files with 155 additions and 62 deletions
+3 -5
View File
@@ -28,8 +28,9 @@
#include <stdlib.h>
#include <string.h>
#ifdef __MINGW32__
// Mingw does not have wdfinstaller.h
/*
* From wdfinstaller.h
*/
typedef struct _WDF_COINSTALLER_INSTALL_OPTIONS
{
ULONG Size;
@@ -59,9 +60,6 @@ typedef ULONG (WINAPI *PFN_WDFPOSTDEVICEREMOVE)(
LPCWSTR inf_path,
LPCWSTR inf_sec_name
);
#else /* __MINGW32__ */
#include <wdfinstaller.h>
#endif /* __MINGW32__ */
// #define DIVERT_DEBUG
+1 -1
View File
@@ -16,7 +16,7 @@
TARGETNAME=WinDivert
TARGETTYPE=DYNLINK
TARGETPATH=..\install
TARGETPATH=..\install\WDDK
TARGETLIBS=\
$(SDK_LIB_PATH)\advapi32.lib \
$(SDK_LIB_PATH)\setupapi.lib \
+1 -1
View File
@@ -22,7 +22,7 @@ CPU=$(_BUILDARCH)
TARGETNAME=netdump
TARGETTYPE=PROGRAM
TARGETPATH=..\..\install
TARGETPATH=..\..\install\WDDK
TARGETLIBS=\
$(SDK_LIB_PATH)\setupapi.lib \
$(SDK_LIB_PATH)\user32.lib \
+1 -1
View File
@@ -22,7 +22,7 @@ CPU=$(_BUILDARCH)
TARGETNAME=netfilter
TARGETTYPE=PROGRAM
TARGETPATH=..\..\install
TARGETPATH=..\..\install\WDDK
TARGETLIBS=\
$(SDK_LIB_PATH)\setupapi.lib \
$(SDK_LIB_PATH)\user32.lib \
+2 -2
View File
@@ -33,7 +33,7 @@
#define MAXBUF 0xFFFF
static DWORD passthru(LPVOID arg);
static __stdcall DWORD passthru(LPVOID arg);
/*
* Entry.
@@ -88,7 +88,7 @@ int __cdecl main(int argc, char **argv)
}
// Passthru thread.
static DWORD passthru(LPVOID arg)
static __stdcall DWORD passthru(LPVOID arg)
{
char packet[MAXBUF];
UINT packet_len;
+1 -1
View File
@@ -22,7 +22,7 @@ CPU=$(_BUILDARCH)
TARGETNAME=passthru
TARGETTYPE=PROGRAM
TARGETPATH=..\..\install
TARGETPATH=..\..\install\WDDK
TARGETLIBS=\
$(SDK_LIB_PATH)\setupapi.lib \
$(SDK_LIB_PATH)\user32.lib \
+1 -1
View File
@@ -22,7 +22,7 @@ CPU=$(_BUILDARCH)
TARGETNAME=webfilter
TARGETTYPE=PROGRAM
TARGETPATH=..\..\install
TARGETPATH=..\..\install\WDDK
TARGETLIBS=\
$(SDK_LIB_PATH)\setupapi.lib \
$(SDK_LIB_PATH)\user32.lib \
+44 -7
View File
@@ -17,22 +17,59 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Script for MinGW/Linux cross compilation.
# NOTE: This script only builds divert.dll, not the driver divert.sys
# NOTE: run wddk-build.bat before this script.
set -e
ENVS="i586-mingw32msvc amd64-mingw32msvc"
for ENV in $ENVS
do
if [ $ENV = "i586-mingw32msvc" ]
then
CPU=i386
else
CPU=amd64
fi
if [ ! -d install/WDDK/$CPU ]
then
echo "WARNING: missing WDDK build; run wddk-build.bat first"
echo "SKIP WDDK-$CPU"
continue
fi
echo "BUILD WDDK-$CPU"
CC="$ENV-gcc"
if [ -x "`which $CC`" ]
then
mkdir -p "install/$ENV"
echo "$CC -Wall -O2 -Iinclude/ -c dll/divert.c"
$CC -Wall -O2 -Iinclude/ -c dll/divert.c
echo "$CC -Wall -shared -o install/$ENV/WinDivert.dll divert.o"
$CC -Wall -shared -o "install/$ENV/WinDivert.dll" divert.o
echo "\tmake install/MINGW/$CPU..."
mkdir -p "install/MINGW/$CPU"
echo "\tbuild install/MINGW/$CPU/WinDivert.dll..."
$CC -Wall -O2 -Iinclude/ -c dll/divert.c -o dll/divert.o
$CC -Wall -shared -o "install/MINGW/$CPU/WinDivert.dll" dll/divert.o
echo "\tbuild install/MINGW/$CPU/netdump.exe..."
$CC -O2 -Iinclude/ examples/netdump/netdump.c \
-o "install/MINGW/$CPU/netdump.exe" -lWinDivert -lws2_32 \
-L"install/MINGW/$CPU/"
echo "\tbuild install/MINGW/$CPU/netfilter.exe..."
$CC -O2 -Iinclude/ examples/netfilter/netfilter.c \
-o "install/MINGW/$CPU/netfilter.exe" -lWinDivert -lws2_32 \
-L"install/MINGW/$CPU/"
echo "\tbuild install/MINGW/$CPU/passthru.exe..."
$CC -O2 -Iinclude/ examples/passthru/passthru.c \
-o "install/MINGW/$CPU/passthru.exe" -lWinDivert -lws2_32 \
-L"install/MINGW/$CPU/"
echo "\tbuild install/MINGW/$CPU/webfilter.exe..."
$CC -O2 -Iinclude/ examples/webfilter/webfilter.c \
-o "install/MINGW/$CPU/webfilter.exe" -lWinDivert -lws2_32 \
-L"install/MINGW/$CPU/"
echo "\tcopy install/MINGW/$CPU/WinDivert.inf..."
cp install/WDDK/$CPU/WinDivert.inf install/MINGW/$CPU
echo "\tcopy install/MINGW/$CPU/WinDivert.sys..."
cp install/WDDK/$CPU/WinDivert.sys install/MINGW/$CPU
echo "\tcopy install/MINGW/$CPU/WdfCoInstaller01009.dll..."
cp install/WDDK/$CPU/WdfCoInstaller01009.dll install/MINGW/$CPU
else
echo "$CC: not found"
echo "WARNING: $CC not found"
fi
done
+100 -42
View File
@@ -23,46 +23,104 @@ set -e
VERSION=1.0
NAME=WinDivert-$VERSION
echo -n "COPYING FILES..."
INSTALL=install/$NAME
mkdir -p $INSTALL
cp README $INSTALL
cp LICENSE $INSTALL
cp sys/divert.inf $INSTALL/WinDivert.inf
cp include/divert.h $INSTALL
mkdir -p $INSTALL/x86
cp install/i386/WinDivert.sys $INSTALL/x86
cp install/i386/WdfCoInstaller01009.dll $INSTALL/x86
mkdir -p $INSTALL/amd64
cp install/amd64/WinDivert.sys $INSTALL/amd64
cp install/amd64/WdfCoInstaller01009.dll $INSTALL/amd64
echo "DONE"
PACKAGE=$NAME-MSVC.tar.gz
echo -n "BUILDING $PACKAGE..."
cp install/i386/WinDivert.dll $INSTALL/x86
cp install/amd64/WinDivert.dll $INSTALL/amd64
(cd install; tar cvz --owner root --group root -f $PACKAGE $NAME > /dev/null)
echo "DONE"
PACKAGE=$NAME-MSVC.zip
echo -n "BUILDING $PACKAGE..."
(cd install; zip -r $PACKAGE $NAME > /dev/null)
echo "DONE"
PACKAGE=$NAME-MinGW.tar.gz
echo -n "BUILDING $PACKAGE..."
cp install/i586-mingw32msvc/WinDivert.dll $INSTALL/x86
cp install/amd64-mingw32msvc/WinDivert.dll $INSTALL/amd64
(cd install; tar cvz --owner root --group root -f $PACKAGE $NAME > /dev/null)
echo "DONE"
PACKAGE=$NAME-MinGW.zip
echo -n "BUILDING $PACKAGE..."
(cd install; zip -r $PACKAGE $NAME > /dev/null)
echo "DONE"
echo -n "CLEANING UP..."
rm -rf $INSTALL
echo "DONE"
for TARGET in WDDK MSVC MINGW
do
if [ ! -d "install/$TARGET" ]
then
echo "SKIP $NAME-$TARGET"
continue
fi
echo "BUILD $NAME-$TARGET"
INSTALL=install/$NAME-$TARGET
echo "\tmake $INSTALL..."
mkdir -p $INSTALL
echo "\tcopy $INSTALL/README..."
cp README $INSTALL
echo "\tcopy $INSTALL/LICENSE..."
cp LICENSE $INSTALL
echo "\tmake $INSTALL/include..."
mkdir -p $INSTALL/include
echo "\tcopy $INSTALL/include/divert.h..."
cp include/divert.h $INSTALL/include
echo "\tmake $INSTALL/doc..."
mkdir -p $INSTALL/doc
echo "\tcopy $INSTALL/doc/WinDivert.html..."
cp doc/divert.html $INSTALL/doc/WinDivert.html
echo "\tmake $INSTALL/x86..."
mkdir -p $INSTALL/x86
echo "\tcopy $INSTALL/x86/WinDivert.inf..."
cp sys/divert.inf $INSTALL/x86/WinDivert.inf
echo "\tcopy $INSTALL/x86/WinDivert.sys..."
cp install/$TARGET/i386/WinDivert.sys $INSTALL/x86
if [ $TARGET != MINGW ]
then
echo "\tcopy $INSTALL/x86/WinDivert.lib..."
cp install/$TARGET/i386/WinDivert.lib $INSTALL/x86
fi
echo "\tcopy $INSTALL/x86/WinDivert.dll..."
cp install/$TARGET/i386/WinDivert.dll $INSTALL/x86
echo "\tcopy $INSTALL/x86/WdfCoInstaller01009.dll..."
cp install/$TARGET/i386/WdfCoInstaller01009.dll $INSTALL/x86
COINST_SIZE=`stat --printf="%s" $INSTALL/x86/WdfCoInstaller01009.dll`
if [ $COINST_SIZE -gt 1000000 ]
then
echo "\tWARNING: using fat WdfCoInstaller01009.dll..."
fi
echo "\tcopy $INSTALL/x86/netdump.exe..."
cp install/$TARGET/i386/netdump.exe $INSTALL/x86
echo "\tcopy $INSTALL/x86/netfilter.exe..."
cp install/$TARGET/i386/netfilter.exe $INSTALL/x86
echo "\tcopy $INSTALL/x86/passtru.exe..."
cp install/$TARGET/i386/passthru.exe $INSTALL/x86
echo "\tcopy $INSTALL/x86/webfilter.exe..."
cp install/$TARGET/i386/webfilter.exe $INSTALL/x86
if [ -d "install/$TARGET/amd64" ]
then
echo "\tmake $INSTALL/amd64..."
mkdir -p $INSTALL/amd64
echo "\tcopy $INSTALL/amd64/WinDivert.inf..."
cp sys/divert.inf $INSTALL/amd64/WinDivert.inf
echo "\tcopy $INSTALL/amd64/WinDivert.sys..."
cp install/$TARGET/amd64/WinDivert.sys $INSTALL/amd64
if [ $TARGET != MINGW ]
then
echo "\tcopy $INSTALL/amd64/WinDivert.lib..."
cp install/$TARGET/amd64/WinDivert.lib $INSTALL/amd64
fi
echo "\tcopy $INSTALL/amd64/WinDivert.dll..."
cp install/$TARGET/amd64/WinDivert.dll $INSTALL/amd64
echo "\tcopy $INSTALL/amd64/WdfCoInstaller01009.dll..."
cp install/$TARGET/amd64/WdfCoInstaller01009.dll $INSTALL/amd64
COINST_SIZE=`stat --printf="%s" $INSTALL/amd64/WdfCoInstaller01009.dll`
if [ $COINST_SIZE -gt 1000000 ]
then
echo "\tWARNING: using fat WdfCoInstaller01009.dll..."
fi
echo "\tcopy $INSTALL/amd64/netdump.exe..."
cp install/$TARGET/amd64/netdump.exe $INSTALL/amd64
echo "\tcopy $INSTALL/amd64/netfilter.exe..."
cp install/$TARGET/amd64/netfilter.exe $INSTALL/amd64
echo "\tcopy $INSTALL/amd64/passtru.exe..."
cp install/$TARGET/amd64/passthru.exe $INSTALL/amd64
echo "\tcopy $INSTALL/amd64/webfilter.exe..."
cp install/$TARGET/amd64/webfilter.exe $INSTALL/amd64
else
echo "\tWARNING: skipping missing AMD64 build..."
fi
PACKAGE=$NAME-$TARGET.tar.gz
echo "\tbuilding $PACKAGE..."
(
cd install;
tar cvz --owner root --group root -f $PACKAGE $NAME-$TARGET > /dev/null
)
PACKAGE=$NAME-$TARGET.zip
echo "\tbuilding $PACKAGE..."
(
cd install;
zip -r $PACKAGE $NAME-$TARGET > /dev/null
)
echo -n "\tclean $INSTALL..."
rm -rf $INSTALL
echo "DONE"
done
+1 -1
View File
@@ -22,7 +22,7 @@ CPU=$(_BUILDARCH)
TARGETNAME=WinDivert
TARGETTYPE=DRIVER
TARGETPATH=..\install
TARGETPATH=..\install\WDDK
TARGETLIBS=\
$(DDK_LIB_PATH)\wdmsec.lib \
$(DDK_LIB_PATH)\ndis.lib \