# Build TAP-Win32 driver.
# Build Command: build -cef

MAJORCOMP=ntos
MINORCOMP=ndis

TARGETNAME=tap0801
TARGETTYPE=DRIVER
TARGETPATH=.
TARGETLIBS=$(DDK_LIB_PATH)\ndis.lib $(DDK_LIB_PATH)\ntstrsafe.lib
INCLUDES=$(DDK_INCLUDE_PATH)

# The TAP version numbers here must be >=
# TAP_WIN32_MIN_x values defined in
# config-win32.h
C_DEFINES=
C_DEFINES=$(C_DEFINES) -DTAP_DRIVER_MAJOR_VERSION=8
C_DEFINES=$(C_DEFINES) -DTAP_DRIVER_MINOR_VERSION=1

# Use 00:FF:XX:XX:XX:XX format MAC addresses where
# the Xs are random (like Linux tap driver).
#
# Don't allow TAP device to be opened by more than one process
# at a time.
C_DEFINES=$(C_DEFINES)

# Produce the same symbolic information for both free & checked builds.
# This will allow us to perform full source-level debugging on both
# builds without affecting the free build's performance.
!IF "$(DDKBUILDENV)" != "chk"
NTDEBUGTYPE=both
USE_PDB=1
!ELSE
NTDEBUGTYPE=both
USE_PDB=1
!ENDIF

# Set compiler optimizations:
# /Ox - Full optimization enabled
# /Os - favor speed over size when optimizing
# /Od - Disable all optimizations
# /Oi - Enable optimization for intrinsic functions
# /Fc - Generate mixed assembler/source code files
#
# For both checked and free builds, make sure that any intrinsic
# functions are compiled correctly. To do this, ensure that /Oi
# is selected for both free and checked builds. There is a bug in
# VC++ 6.0 (at least through SP4) where, if you specify any
# intrinsic functions in your code with "#pragma intrinsic" but
# you don't have the /Oi optimization enabled, neither a call
# to the function, nor the intrinsic inline version of the function
# will end up in your object code. This bug only applies to free
# builds, but just to be safe we'll make sure that the flag is
# enabled for all builds.

!IF "$(DDKBUILDENV)" != "chk"
MSC_OPTIMIZATION=/Ox /Oi /Fc
!ELSE
MSC_OPTIMIZATION=/Od /Oi /Fc
!ENDIF

# Generate a linker map file just in case we need one for debugging
LINKER_FLAGS=$(LINKER_FLAGS) /MAP /MAPINFO:EXPORTS /MAPINFO:LINES /MAPINFO:FIXUPS

# Generate a browser information file for use in IDE development
BROWSER_INFO=1
BROWSERFILE=$(TARGETNAME).BSC -n

# Abort compilation on warnings.
MSC_WARNING_LEVEL=/W3 /WX

SOURCES=tapdrvr.c resource.rc
