#============================================================================== # Microsoft (R) Bloodhound (tm). # # MODULE: bh.mak # # Modification History # # raypa 11/17/92 Created for Win32. # Tom MCConnell 02/04/93 Made it based on ntwin32.mak for portibility # raypa 02/12/93 Added BHDLL_LIBS macro. # Tom Laird-McConnell 11/15/93 Changed to use subsystem:native # Tom Laird-McConnell 11/17/93 Added Splitsym stuff # raypa 12/06/93 Partially rewrote for MIPS and ALPHA. # raypa 12/06/93 No longer include WIN32.MAK. # Tom Laird-McConnell 07/25/94 Rewrote to base it on ntwin32.mak for portibility #============================================================================== !include #============================================================================== # This section verifies Bloodhound Build environment variables #============================================================================== !IFNDEF BH_ROOT !ERROR BH_ROOT must be set to the root of the Bloodhound tree !ENDIF !IFNDEF BASEDIR !ERROR BASEDIR must be set to the root of the DDK tree !ENDIF !IFNDEF CPU !ERROR CPU must be set to a valid cpu (such as i386, MIPS, ALPHA) !ENDIF !IFNDEF BHVER !ERROR BHVER must be set to the name of the build !ENDIF !IF "$(CPU)" == "i386" !IFNDEF WIN4DDK !ERROR WIN4DDK must be set to the root of the Win4 (Chicago) DDK directory !ENDIF !ENDIF !IFNDEF TOOLS_TYPE !ERROR TOOLS_TYPE must be set to MSTOOLS or MSVC as appropriate !ENDIF #============================================================================== # The following macros makes it easier to get at files in the tree. #============================================================================== BH_BUILD = $(BH_ROOT)\build BH_INCL = $(BH_ROOT)\include BH_BIN = $(BH_ROOT)\bin BH_LIB = $(BH_ROOT)\lib !IFDEF NT_528 BH_NTDDK = $(BASEDIR) !ELSE BH_NTDDK = $(BH_BASEDIR) !ENDIF #============================================================================== # The following are macros around the actual build tools. #============================================================================== library = lib implib = lib mapsym = $(BH_BIN)\i386\mapsympe LODCTR = $(BH_BIN)\$(CPU)\lodctr.exe UNLODCTR = $(BH_BIN)\$(CPU)\unlodctr.exe # these should be defined in ntwin32.mak #link = link #rc = rc #cvtres = cvtres #hc = hc #mc = mc #============================================================================== # Our build environment dependent stuff #============================================================================== !IF "$(TOOLS_TYPE)" == "MSTOOLS" CRTDLL_LIB = msvcrt.lib !ELSE #CRTDLL_LIB = MSVCRT.LIB #stevehi: for 10a, force it to be crtdll.lib CRTDLL_LIB = msvcrt.lib !ENDIF !IF DEFINED(LEGO) || DEFINED(FULLEGO) !IF "$(TOOLS_TYPE)" == "MSTOOLS" !ERROR You must use MSVC 2.0 for LEGO !ENDIF !IFNDEF NODEBUG !ERROR You must define NODEBUG for LEGO !ENDIF !ENDIF #============================================================================== # NDIS 3.0 driver for Windows NT #============================================================================== DRIVER_INCLUDES = -I$(BH_ROOT)\include \ -I$(BH_NTDDK)\inc \ -I$(BH_NTDDK)\src\network\inc \ -I$(BH_NTDDK)\private\ntos\inc \ -I$(BH_NTDDK)\public\sdk\inc DRIVER_COMMON_DEFINES = -DNDIS_NT \ -DCONDITION_HANDLING=1 \ -DWIN32_LEAN_AND_MEAN=1 \ -DNT_UP=1 \ -DNT_INST=0 \ -D_IDWBUILD \ !IFNDEF NODEBUG -DDBG=1 \ !ELSE -DDBG=0 \ !ENDIF -DDEVL=1 \ -DNOFIREWALLS !IFNDEF NODEBUG DRIVER_DEBUG = -DDEBUG !ELSE DRIVER_DEBUG = !ENDIF DRIVER_PAGE_FLAG = -DPAGED_CODE_ENABLED DRIVER_COMMON_CFLAGS = -DMSINTERNAL -D_NTSDK $(DRIVER_PAGE_FLAG) #============================================================================== # The following section handles Intel processor-dependent definitions. #============================================================================== !IF "$(CPU)" == "i386" # we always want symbols on i386 builds BUILD_SYMBOLS = YES BH_CPU = -D_X86_=1 # Optional CFLAG overides for this platform !IF "$(TOOLS_TYPE)" == "MSTOOLS" # BUGBUG: With cl386 Version 8.0.3190a the optimizations in the compiler have bugs # which break our code...we should try turning optimizations back on with a new compiler # We assume that MSTOOLS is old compiler and VC20 is new compiler, and so override the # optimization flags given us by NTWIN32.MAK BH_OPTCFLAGS = -Od -Z7 !ELSE BH_OPTCFLAGS = -Od -Z7 !ENDIF # # Platform dependent Driver defines # !IFDEF NT_528 NTDDK_LIBPATH = $(BH_NTDDK)\lib\i386\free !ELSE NTDDK_LIBPATH = $(BH_NTDDK)\lib\i386 !ENDIF !IFDEF NTBUILD_TREE NTDDK_LIBPATH = $(BH_NTDDK)\public\sdk\lib\i386 !ENDIF DRIVER_ENTRY = DriverEntry@8 DRIVER_DEFINES = $(DRIVER_COMMON_DEFINES) $(DRIVER_DEBUG) -D_X86_=1 -Di386=1 -DSTD_CALL DRIVER_CFLAGS = $(DRIVER_COMMON_CFLAGS) $(DRIVER_INCLUDES) $(DRIVER_DEFINES) -nologo -c -Zel -Zp8 -W3 -Gz -H63 -G4 -Ogitb1 DRIVER_LIBS = $(NTDDK_LIBPATH)\ntoskrnl.lib \ $(NTDDK_LIBPATH)\libcntpr.lib \ $(NTDDK_LIBPATH)\hal.lib \ $(NTDDK_LIBPATH)\ndis.lib # # LEGO STUFF # !IF DEFINED(LEGO) || DEFINED(FULLLEGO) path=$(BH_ROOT)\lego\tools\x86;$(PATH) !ENDIF !IF DEFINED(FULLEGO) Lib=$(BH_ROOT)\lego\msvc20.lib\x86;$(LIB) !ENDIF !ENDIF #============================================================================== # The following section handles Mips processor-dependent definitions. #============================================================================== !IF "$(CPU)" == "MIPS" BH_CPU = -D_MIPS_=1 # Optional CFLAG overides for this platform BH_OPTCFLAGS = -Z7 # # Platform dependent Driver defines # !IFDEF NT_528 NTDDK_LIBPATH = $(BH_NTDDK)\lib\mips\free !ELSE NTDDK_LIBPATH = $(BH_NTDDK)\lib\mips !ENDIF DRIVER_ENTRY = DriverEntry DRIVER_DEFINES = $(DRIVER_COMMON_DEFINES) $(DRIVER_DEBUG) -DMIPS=1 -D_MIPS_=1 -DNO_EXT_KEYS -DMIPSEL -DR4000 -D_M_MRX000=4000 -DBETA=0 -D__stdcall= -D__cdecl= DRIVER_CFLAGS = $(DRIVER_COMMON_CFLAGS) $(DRIVER_INCLUDES) $(DRIVER_DEFINES) -nologo -c -W3 -Ox -QmipsOb2000 -Gt0 DRIVER_LIBS = $(NTDDK_LIBPATH)\ntoskrnl.lib $(NTDDK_LIBPATH)\hal.lib $(NTDDK_LIBPATH)\ndis.lib # # LEGO STUFF # !IF DEFINED(LEGO) || DEFINED(FULLLEGO) !ERROR Lego is only valid for x86 !ENDIF !ENDIF #============================================================================== # The following section handles Mips processor-dependent definitions. #============================================================================== !IF "$(CPU)" == "PPC" BH_CPU = -D_PPC_=1 # Optional CFLAG overides for this platform BH_OPTCFLAGS = -Z7 # # Platform dependent Driver defines # !IFDEF NT_528 NTDDK_LIBPATH = $(BH_NTDDK)\lib\ppc\free !ELSE NTDDK_LIBPATH = $(BH_NTDDK)\lib\ppc !ENDIF !IFDEF NTBUILD_TREE NTDDK_LIBPATH = $(BH_NTDDK)\public\sdk\lib\ppc !ENDIF DRIVER_ENTRY = DriverEntry DRIVER_DEFINES = $(DRIVER_COMMON_DEFINES) $(DRIVER_DEBUG) -DPPC=1 -D_PPC_=1 -DNO_EXT_KEYS -DBETA=0 -D__stdcall= -D__cdecl= DRIVER_CFLAGS = $(DRIVER_COMMON_CFLAGS) $(DRIVER_INCLUDES) $(DRIVER_DEFINES) -nologo -c -W3 -Ox DRIVER_LIBS = $(NTDDK_LIBPATH)\ntoskrnl.lib $(NTDDK_LIBPATH)\hal.lib $(NTDDK_LIBPATH)\ndis.lib # # LEGO STUFF # !IF DEFINED(LEGO) || DEFINED(FULLLEGO) !ERROR Lego is only valid for x86 !ENDIF !ENDIF #============================================================================== # The following section handles ALPHA processor-dependent definitions. #============================================================================== !IF "$(CPU)" == "ALPHA" BH_CPU = -D_ALPHA_=1 # Optional CFLAG overides for this platform BH_OPTCFLAGS = -Z7 # # Platform dependent Driver defines # !IFDEF NT_528 NTDDK_LIBPATH = $(BH_NTDDK)\lib\alpha\free !ELSE NTDDK_LIBPATH = $(BH_NTDDK)\lib\alpha !ENDIF DRIVER_ENTRY = DriverEntry DRIVER_DEFINES = $(DRIVER_DEBUG) -DALPHA=1 -D_ALPHA_=1 -DNO_EXT_KEYS -DWIN32_LEAN_AND_MEAN=1 \ -DCONDITION_HANDLING=1 -DNT_INST=0 -DNT_UP=1 -DDBG=0 -DDEVL=1 -DBETA=0 \ -DNOFIREWALLS -D__stdcall= -D_cdecl= -D__cdecl= -Dcdecl= DRIVER_CFLAGS = $(DRIVER_COMMON_CFLAGS) $(DRIVER_INCLUDES) $(DRIVER_DEFINES) -nologo /c /W3 /Ox -d2"switch no*check*" -d2"switch mscdev" DRIVER_LIBS = $(NTDDK_LIBPATH)\ntoskrnl.lib \ $(NTDDK_LIBPATH)\libcntpr.lib \ $(NTDDK_LIBPATH)\hal.lib \ $(NTDDK_LIBPATH)\ndis.lib # # LEGO STUFF # !IF DEFINED(LEGO) || DEFINED(FULLLEGO) !ERROR Lego is only valid for x86 !ENDIF !ENDIF #============================================================================== # No processor type has been defined. #============================================================================== !IFNDEF CPU !ERROR Must specify CPU environment variable (CPU=i386 or CPU=MIPS)! !ENDIF #============================================================================== # Common macros for Bloodhound projects. #============================================================================== !IFNDEF NODEBUG CHECKMEM = 1 DOCHECKMEM = -DCHECKMEM BH_CDEBUG = $(cdebug) -DDEBUG !ELSE CHECKMEM = DOCHECKMEM = BH_CDEBUG = $(cdebug) !ENDIF # # optional debug flags, particularly for LEGO # !IF !DEFINED(LEGO) && !DEFINED(FULLLEGO) # this is the normal ntwin32.mak debug flags, with symbol generation # always turned on BH_LDEBUG = $(ldebug) -debug:full -debugtype:both !ELSE # these are the LEGO flags BH_LDEBUG = -debug -debugtype:both,fixup /opt:ref BH_CDEBUG = $(BH_CDEBUG) -Gy !ENDIF BH_SUBSYSTEM = WINDOWS # # Compiler FLAGS # # Note we override to always generate symbolic information, as we always use splitsym # and we optional override with BH_OPFLAGS for optimization bugs in compilers # BH_CFLAGS = $(cflags) $(cvarsdll) $(BH_CDEBUG) $(BH_OPTCFLAGS) \ !IFNDEF SMS -DNTAS_ONLY \ !ENDIF -D_NTSDK -nologo -WX -I$(BH_INCL) # -D_NTSDK -nologo -I$(BH_INCL) # # LINK FLAGS # BH_LFLAGS = $(lflags) $(BH_LDEBUG) -machine:$(CPU) -MAP:$*.map # # Lib Flags # BH_LIBFLAGS = -machine:$(CPU) # # DLL Link Flags # BHDLL_LFLAGS = $(BH_LFLAGS) -entry:DLLEntry$(DLLENTRY) -dll # # Executable Libraries # BH_LIBS = $(CRTDLL_LIB) $(winlibs) #stevehi force crtdll instead of msvcrt.dll #BH_LIBS = $(guilibsdll) # # DLL Libraries # #BHDLL_LIBS = $(guilibsdll) # stevehi force crtdll instead of msvcrt.dll BHDLL_LIBS = $(CRTDLL_LIB) $(winlibs) BH_LIBS = $(BH_LIBS) $(BH_BUILD)\dbcs.lib BHDLL_LIBS = $(BHDLL_LIBS) $(BH_BUILD)\dbcs.lib DRIVER_LFLAGS = -out:nt\bhnt.sys \ -debug:MINIMAL \ -debugtype:coff \ -machine:$(CPU) \ -align:0x200 \ -subsystem:native \ -debug:notmapped \ -debugtype:coff \ -base:0x10000 \ -entry:$(DRIVER_ENTRY) BH_COMMON = $(BH_INCL)\nal.h \ $(BH_INCL)\bh.h \ $(BH_INCL)\bhtypes.h \ $(BH_INCL)\buffer.h \ $(BH_INCL)\frame.h \ $(BH_INCL)\parser.h \ $(BH_INCL)\bherr.h