Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
411 lines
12 KiB
Makefile
411 lines
12 KiB
Makefile
|
|
#==============================================================================
|
|
# 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 <ntwin32.mak>
|
|
|
|
#==============================================================================
|
|
# 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
|