# rules.mak # Copyright 1992 Microsoft Corp. # ## # Include file for make files # Provides a consistent definition of macros and Inference Rules ## ## Project Specific Flags # ################ ## ## Override these environment variable to make sure we are ## getting only our tools, libraries and include files ## ################ INIT= INCLUDE= LIB= PATH=$(PATH) ################ ## ## Set up global derived variables ## ################ !IFNDEF TargetEnvironment #If TargetEnvironment is not defined these line of text should make nmake error. #Define the target environment to be WINPROC, IFBGPROC, IFFGPROC or BOSS !ERROR -- Variable "TargetEnvironment" must be defined \ Use WINPROC, WINDRV, IFBGPROC, IFFGPROC, BOSS, WFW !ENDIF !IFNDEF OBJDIR #If Object Directory is not defined these line of text should make nmake error. #OBJDIR = . !ENDIF # Short Cut for win32 compatablity !IF "$(TargetEnvironment)" == "WIN32" WIN32=1 !endif ## # These are set to the default versions in use. They maybe overridden by # command line arguments !IFDEF MASM510 MASMver = MASM.510 ASM = $(TOOLS_PATH)\$(MASMver)\bin\masm.exe !ELSE MASMver = MASM.610 ASM = $(TOOLS_PATH)\$(MASMver)\bin\ml.exe !ENDIF ## CC compiler Modifiers ## Overrides for the default Compiler ## DEFINE C600 C700 !IFDEF WIN32 STDCver = MSVCNT.200 CCname = cl.exe !ELSE !IFDEF C600 STDCver = C.600 CCname = cl.exe !ELSE !IFDEF C700 STDCver = C.700 CCname = cl.exe !ELSE # The default Version of "C" !if "$(COUNTRY)" == "JAPAN" STDCver = MSVC.15J CCname = cl.exe !else STDCver = MSVC.150 CCname = cl.exe !endif !ENDIF !ENDIF !ENDIF !ifdef WIN4 WIN4VER=457 WINver = WIN4.100\$(WIN4VER)\SDK DDKver = WIN4.100\$(WIN4VER)\DDK WFWver = !else ifdef WINNT WINver = NT.100\SDK DDKver = NT.100\DDK WFWver = !else # Standard Win31 Stuff !if "$(COUNTRY)" == "JAPAN" WINver = WINDEV.31J DDKver = WINDDK.31 WFWver = WFWSDK.311 !else WINver = WINDEV.31 DDKver = WINDDK.31 WFWver = WFWSDK.311 !endif !endif WINTOOLS_PATH = $(TOOLS_PATH)\$(WINver) WFWTOOLS_PATH = $(TOOLS_PATH)\$(WFWver) STDCTOOLS_PATH = $(TOOLS_PATH)\$(STDCver) !ifdef WIN4 WINDDK_PATH = $(TOOLS_PATH)\$(DDKver) !else # Standard Win31 Stuff WINDDK_PATH = $(TOOLS_PATH)\$(DDKver)\286 !endif # # Independent Bin tools # the environment variable PROCESSOR_LEVEL is set in the NT # environment and not in other environments TOOLDOSbin = $(TOOLS_PATH)\bin !IF "$(PROCESSOR_LEVEL)" == "" # Standard DOS/WINDOWS environment TOOLbin = $(TOOLS_PATH)\bin !ELSE # For NT, the tools live elsewhere... # TOOLbin = $(TOOLS_PATH)\bin.nt TOOLbin = $(SYSTEMROOT)\mstools !ENDIF # Library files MFClibpath = $(STDCTOOLS_PATH)\mfc\lib STDClibpath = $(STDCTOOLS_PATH)\lib # Windows Library Files !ifdef WIN32 !ifdef WIN4 WINlibpath = $(WINTOOLS_PATH)\lib32 !else ifdef WINNT WINlibpath = $(WINTOOLS_PATH)\lib !else WINlibpath = # No Default !endif !else !ifdef WIN4 WINlibpath = $(WINTOOLS_PATH)\lib16 !else !ifndef UseMSCVOnly WINlibpath = $(WINTOOLS_PATH)\lib;$(WFWTOOLS_PATH)\lib !endif !endif !endif !IFDEF WIN32 IFAXlibpath = $(RootPath)\ifaxdev\lib32 !ELSE IFAXlibpath = $(RootPath)\ifaxdev\lib !ENDIF DDKlibpath = $(WINDDK_PATH)\lib # "C" header files MFChpath = $(STDCTOOLS_PATH)\mfc\include STDChpath = $(STDCTOOLS_PATH)\include # Windows Include Files !IFDEF WIN32 !ifdef WIN4 WINhpath = $(WINTOOLS_PATH)\inc32;$(WINTOOLS_PATH)\inc16 !else ifdef WINNT WINhpath = $(WINTOOLS_PATH)\inc !else WINhpath = . ## avoid the stupid 32-bit RC bug !endif !ELSE !ifdef WIN4 WINhpath = $(WINTOOLS_PATH)\inc16 !else !ifndef UseMSCVOnly WINhpath = $(WINTOOLS_PATH)\include;$(WFWTOOLS_PATH)\include !endif !endif !ENDIF IFAXhpath = $(RootPath)\ifaxdev\h DDKhpath = $(WINDDK_PATH)\inc # masm include files STDCincpath = $(STDCTOOLS_PATH)\include WINincpath = $(WINTOOLS_PATH)\include;$(WFWTOOLS_PATH)\include;$(TOOLS_PATH)\$(MASMver)\include IFAXincpath = $(RootPath)\ifaxdev\h DDKincpath = $(WINDDK_PATH)\inc ## Standard Names ## SGS Tools -- Found in the Compiler Version Directory ASM = $(TOOLS_PATH)\$(MASMver)\bin\ml.exe !if "$(COVERAGE)" == "1" CC = $(CCname) !else CC = $(STDCTOOLS_PATH)\bin\$(CCname) !endif RC = $(STDCTOOLS_PATH)\bin\rc.exe !ifdef WIN4 !ifndef WIN32 RC = $(WINTOOLS_PATH)\binw16\rc.exe !endif !endif LIBUTIL = $(STDCTOOLS_PATH)\bin\lib.exe IMPLIB = $(STDCTOOLS_PATH)\bin\implib.exe LINK = $(STDCTOOLS_PATH)\bin\link.exe MARKEXE = $(STDCTOOLS_PATH)\bin\mark.exe CVPACK = $(STDCTOOLS_PATH)\bin\cvpack.exe MAPSYM = $(STDCTOOLS_PATH)\bin\mapsym.exe ## Rom Tools ROMLINK = $(TOOLS_PATH)\ll386\bin\xlink386.exe ROMLIB = $(TOOLS_PATH)\ll386\bin\xlib386.exe ## Independent Tools MAKE =$(TOOLbin)\nmake /NOLOGO MV =$(TOOLbin)\mv AWK =$(TOOLbin)\awk CHMODE =$(TOOLbin)\chmode COPY =$(TOOLbin)\cp CP =$(COPY) OUT =$(TOOLbin)\out IN =$(TOOLbin)\in DELNODE =$(TOOLbin)\delnode GREP =$(TOOLbin)\grep TOUCH =$(TOOLbin)\touch WALK =$(TOOLbin)\walk CAT =$(TOOLbin)\cat CHMOD =$(TOOLbin)\chmod RM =$(TOOLbin)\rm EXP =$(SystemRoot)\idw\exp.exe # exception to our rule... # Dos Only Tools CTAGS =$(TOOLDOSbin)\ctags BIND =$(TOOLDOSbin)\bind SED =$(SystemRoot)\idw\sed INCLUDES =$(TOOLDOSbin)\mkdep ################ ## ## Turn on compiler,masm and Linker debug flags if ## macro DEBUG is defined ## ################ # Gobal Variables Explained for Compiler, Asm, and Linker # CFLAGS !ifdef C_OptFlag C_OptimizationFlags=C_OptFlag !endif ## CFLAG switches -- Define or undefine to control option generation # CC_Zopt_NoPackStruct -- define to Not Pack Struct # CC_Zopt_NoSuppressLibSrch -- Define to allow Default Lib search # CC_WarningLevel -- set to warning level desired level 0, 1, 2, 3 # CC_StackCheck -- Define to insert Stack Check Code # CC_NoInlineCode -- If Defined do not Allow Inline Optimizations # C_OptimizationFlags -- Optimation flags -0 # C_DebugFlag -- Options when DEBUG is defined # x86Instruction -- Refer to the -G option 0=8083, 1=186, 2=286, 3=386, 4=486 # MemoryModel -- Memory Model see -A options S,M,C or L # Prolog -- Type of prolog to use -G options types # A_DebugFlag -- Debug flags defined when DEBUG is defined # AFLAGS -- Standard AFLAGS # L_DebugFlag # C_TargetIncludepath -- Environ Format Include Path xxx;xxx/yyy # A_TargetIncludepath -- Same as above # WINlibpath -- Windows Library Path # STDClibpath -- Standard "C" Library Path # LIBRARIES -- Environment Variable for Library Paths # OBJDIR -- Where the objects are placed # LibType -- ################################################# WINPROC !IF "$(TargetEnvironment)" == "WINPROC" !IF "$(MemModel)" == "" MemModel=S !ENDIF !IF "$(LibType)" == "dll" Prolog= -GD -GEf MemoryModel=$(MemModel)w STARTUPOBJ = libentry.obj !ELSE !ifdef WIN4 Prolog= -GA # Protect mode Prolog !else Prolog= -Gw # Real Mode Prolog !endif MemoryModel=$(MemModel) STARTUPOBJ = !ENDIF !IF "$(DEBUG)" == "ON" C_DebugFlag=-Zi -Od -DDEBUG A_DebugFlag=-Zi -DDEBUG L_DebugFlag=/CO ## DEBUGUTILOBJ=$(RootPath)\ifaxdev\lib\wintimer.obj !ENDIF !ifdef WIN4 !ifdef DEBUG x86Instruction = 2 !else x86Instruction = 3 !endif !else x86Instruction = 2 !endif !ifdef WINhpath C_TargetIncludepath=$(WINhpath);$(STDChpath) !else C_TargetIncludepath=$(STDChpath) !endif A_TargetIncludepath=$(WINincpath) LIBRULES=. !ifdef LocalLibPath LIBRULES=$(LIBRULES);$(LocalLibPath) !endif !ifdef OBJDIR LIBRULES=$(OBJDIR);$(LIBRULES) !endif !ifdef IFAXlibpath LIBRULES=$(IFAXlibpath);$(LIBRULES) !endif !ifdef STDClibpath LIBRULES=$(STDClibpath);$(LIBRULES) !endif !ifdef WINlibpath LIBRULES=$(WINlibpath);$(LIBRULES) !endif #LIBRULES=$(LocalLibPath);$(OBJDIR);$(IFAXlibpath);$(STDClibpath);$(WINlibpath) !ifndef NoLIBRARIES LIBRARIES=$(MemModel)$(LibType)cew libw !endif !ifdef UseMFC # add MFC to path C_TargetIncludepath=$(C_TargetIncludepath);$(MFChpath) LIBRULES=$(LIBRULES);$(MFClibpath) !endif ################################################# DOS !ELSE IF "$(TargetEnvironment)" == "DOS" !IF "$(MemModel)" == "" MemModel=L !ENDIF Prolog= MemoryModel=$(MemModel) STARTUPOBJ = !IF "$(DEBUG)" == "ON" C_DebugFlag=-Zi -Od -DDEBUG A_DebugFlag=-Zi -DDEBUG L_DebugFlag=/CO /map !ENDIF x86Instruction = 2 C_TargetIncludepath=$(STDChpath) A_TargetIncludepath= LIBRULES=$(LocalLibPath);$(OBJDIR);$(STDClibpath) !ifndef NoLIBRARIES LIBRARIES=$(MemModel)$(LibType)ce !endif ################################################# WINKERN section !ELSE IF "$(TargetEnvironment)" == "WINKERN" !IF "$(DEBUG)" == "ON" C_DebugFlag=-Zd -DDEBUG A_DebugFlag=-Zd -DDEBUG !ENDIF C_OptimizationFlags=b1cgilnot MemoryModel = snw x86Instruction = 2 C_TargetIncludepath=$(STDChpath) A_TargetIncludepath= ################################################# -- BOSS Section !ELSE IF "$(TargetEnvironment)" == "BOSS" !IF "$(DEBUG)" == "ON" C_DebugFlag=-Zd -DDEBUG A_DebugFlag=-Zd -DDEBUG !ENDIF C_OptimizationFlags=b1cgilnot MemoryModel = lnw x86Instruction = 2 C_TargetIncludepath=$(STDChpath) A_TargetIncludepath= LIBRULES = $(LocalLibPath);$(OBJDIR);$(STDClibpath) LIBRARIES = ################################################# -- WFWDRV Section !ELSE IF "$(TargetEnvironment)" == "WFWDRV" ! IF "$(DEBUG)" == "ON" C_DebugFlag=-Od -Zi -DDEBUG A_DebugFlag=-Zi -DDEBUG L_DebugFlag=/CO /map #DEBUGUTILOBJ=$(RootPath)\ifaxdev\lib\wintimer.obj ! ENDIF C_TargetIncludepath=$(DDKhpath);$(STDChpath);$(IFAXhpath);$(WINhpath) A_TargetIncludepath=$(DDKincpath) x86Instruction = 2 Prolog = -GD -GEf MemoryModel = Sw LIBRULES = $(LocalLibPath);$(OBJDIR);$(DDKlibpath);$(STDClibpath);$(IFAXlibpath);$(WINlibpath) LIBRARIES = ifwfw sdllcew libw STARTUPOBJ = libentry.obj ################################################# -- WINDRV Section !ELSE IF "$(TargetEnvironment)" == "WINDRV" ! IF "$(DEBUG)" == "ON" C_DebugFlag=-Od -Zi -DDEBUG A_DebugFlag=-Zi -DDEBUG L_DebugFlag=/CO /map #DEBUGUTILOBJ=$(RootPath)\ifaxdev\lib\wintimer.obj ! ENDIF C_TargetIncludepath=$(DDKhpath);$(STDChpath);$(IFAXhpath);$(WINhpath) A_TargetIncludepath=$(DDKincpath) x86Instruction = 2 Prolog = -GD -GEf MemoryModel = Sw LIBRULES = $(LocalLibPath);$(OBJDIR);$(DDKlibpath);$(STDClibpath);$(IFAXlibpath);$(WINlibpath) LIBRARIES = iffgproc sdllcew libw STARTUPOBJ = libentry.obj ################################################# -- WIN 32 Sections !ELSE IF "$(TargetEnvironment)" == "WIN32" WIN32=1 RCDEFINES=/DWIN32=1 x86Instruction=3 CC_Zopt_NoDebug=1 # No -Zd option TargetDefines=/D_X86_ /DNO_STRICT /DNULL=0 /D_MT /D_DLL /YX !IF "$(DEBUG)" == "ON" RCDEFINES=$(RCDEFINES) -DDEBUG CC_Zopt_CodeView=1 C_OptimizationFlags=d # No Optimize C_DebugFlag=-DDEBUG A_DebugFlag=-Zd -DDEBUG L_DebugFlag=/DEBUG:FULL /DEBUGTYPE:CV /PDB:NONE !ELSE !ifndef C_OptimizationFlags # Retail C_OptimizationFlags=s # Max Optimizations !endif CC_Zopt_NoDebug=1 !ENDIF C_TargetIncludepath=$(IFAXhpath);$(WINhpath);$(STDChpath) A_TargetIncludepath=$(IFAXincpath) !if "$(COUNTRY)" == "JAPAN" AFLAGS = -c -W2 -Zd $(A_DebugFlag) $(LocalAFLAGS) -DJAPAN !else AFLAGS = -c -W2 -Zd $(A_DebugFlag) $(LocalAFLAGS) !endif LIBRULES = $(LocalLibPath);$(OBJDIR);$(IFAXlibpath);$(WINlibpath);$(STDClibpath); LIBRARIES = kernel32.lib user32.lib gdi32.lib !ifndef MSVCRT MSVCRT=msvcrt.lib !endif !ifdef UseMFC # add MFC to path C_TargetIncludepath=$(C_TargetIncludepath);$(MFChpath) LIBRULES=$(LIBRULES);$(MFClibpath) !endif # Build up the Libraries List !ifdef UseIFKERNELlib LIBRARIES = $(LIBRARIES) awkrnl32.lib !endif # STARTUPOBJ = libentry.obj ################################################# -- WFW BG DLLs Section !ELSE IF "$(TargetEnvironment)" == "WFWBG" ! IF "$(DEBUG)" == "ON" C_DebugFlag=-Od -Zi -DDEBUG A_DebugFlag=-Zi -DDEBUG L_DebugFlag=/CO /map ! ELSE !IFNDEF C_OptimizationFlags C_OptimizationFlags=b1cgilnot !ENDIF ! ENDIF C_TargetIncludepath=$(IFAXhpath);$(WINhpath);$(STDChpath) A_TargetIncludepath=$(IFAXincpath) x86Instruction = 2 !IF "$(LibType)" == "dll" Prolog = -GD -GEf MemoryModel = Sw !ELSE Prolog = ERROR MemoryModel = ERROR !ENDIF LIBRULES = $(LocalLibPath);$(OBJDIR);$(IFAXlibpath);$(STDClibpath);$(WINlibpath) ! IF "$(LibType)" == "dll" LIBRARIES = wfwbg snocrtdw STARTUPOBJ = libentry.obj ! ELSE LIBRARIES = ERROR STARTUPOBJ = ERROR ! ENDIF ################################################# -- WFW Section !ELSE IF "$(TargetEnvironment)" == "WFW" ! IF "$(DEBUG)" == "ON" C_DebugFlag=-Od -Zi -DDEBUG A_DebugFlag=-Zi -DDEBUG L_DebugFlag=/CO /map ! ENDIF C_TargetIncludepath=$(IFAXhpath);$(WINhpath);$(STDChpath) A_TargetIncludepath=$(IFAXincpath) x86Instruction = 2 !if "$(MemModel)" == "" MemModel = S !endif !IF "$(LibType)" == "dll" Prolog = -GD -GEf MemoryModel = $(MemModel)w !ELSE Prolog = -Gw MemoryModel = $(MemModel) !ENDIF LIBRULES = $(LocalLibPath);$(OBJDIR);$(IFAXlibpath);$(STDClibpath);$(WINlibpath) ! IF "$(LibType)" == "dll" LIBRARIES = ifwfw $(MemModel)dllcew STARTUPOBJ = libentry.obj ! ELSE LIBRARIES = slibcew ifwfw STARTUPOBJ = ! ENDIF ################################################# -- IF?? Section !ELSE # Do not redefine if someone already defined it !IFNDEF IFAX IFAX=1 !ENDIF !IF "$(DEBUG)" == "ON" C_DebugFlag=-Od -Zi -DDEBUG A_DebugFlag=-Zi -DDEBUG L_DebugFlag=/CO !ELSE !IFNDEF C_OptimizationFlags C_OptimizationFlags=b1cgilnot !ENDIF !ENDIF C_TargetIncludepath=$(IFAXhpath);$(WINhpath);$(STDChpath) A_TargetIncludepath=$(IFAXincpath);$(WINincpath) !IFNDEF x86Instruction x86Instruction = 2 !ENDIF !IFNDEF MemModel MemModel=S !ENDIF !IF "$(LibType)" == "dll" Prolog = -GD -GEf MemoryModel=$(MemModel)w !ELSE Prolog = -Gw MemoryModel=$(MemModel) !ENDIF ! IF "$(TargetEnvironment)" == "IFBGPROC" LIBRULES=$(LocalLibPath);$(OBJDIR);$(IFAXlibpath);$(STDClibpath);$(WINlibpath) ! IF "$(LibType)" == "dll" LIBRARIES = ifbgproc $(MemModel)nocrtdw STARTUPOBJ = libentry.obj ! ELSE LIBRARIES = $(MemModel)nocrtw ifbgproc STARTUPOBJ = ! ENDIF ! ELSE IF "$(TargetEnvironment)" == "IFFGPROC" LIBRULES=$(LocalLibPath);$(OBJDIR);$(IFAXlibpath);$(STDClibpath);$(WINlibpath) ! IF "$(LibType)" == "dll" LIBRARIES = iffgproc $(MemModel)nocrtdw STARTUPOBJ = libentry.obj ! ELSE LIBRARIES = $(MemModel)libcew iffgproc STARTUPOBJ = ! ENDIF ! ENDIF !ENDIF !if "$(COVERAGE)" == "1" LIBRARIES = $(LIBRARIES) \COVER\COVWIN$(MemModel).LIB \COVER\atexit$(MemModel).LIB !endif ## ML flags !IF "$(COUNTRY)" == "JAPAN" AFLAGS = -c -W2 -Zd $(A_DebugFlag) -Fo$(OBJDIR)\ $(LocalAFLAGS) -DJAPAN !ELSE AFLAGS = -c -W2 -Zd $(A_DebugFlag) -Fo$(OBJDIR)\ $(LocalAFLAGS) !ENDIF !IFNDEF CC_WarningLevel CC_WarningLevel=3 !ENDIF !IFNDEF CC_StackCheck CC_StackCheck=s !ENDIF ## In Line Code Optimization -- Generate Intrinsic Functions !IFNDEF CC_NoInlineCode CC_InlineOpt=i !ENDIF # use -Oi so that we can use inline versions of memcpy etc without having C_OptimizationFlags1=/O$(C_OptimizationFlags)$(CC_InlineOpt) G_OptFlags=/Gf$(x86Instruction)$(CC_StackCheck) $(Prolog) # -Gf pools string constants. !IFDEF IFAX CC_IFAXDefine=-DIFAX=$(IFAX) !ELSE CC_IFAXDefine= !ENDIF !IFDEF WIN4 CC_WIN4Define=-DWIN4 !ELSE CC_WIN4Define= !ENDIF !IF "$(COUNTRY)" == "JAPAN" CC_Defines=/D$(TargetEnvironment) $(TargetDefines) $(CC_IFAXDefine) $(CC_WIN4Define) /DJAPAN RC=$(RC) /DJAPAN !ELSE CC_Defines=/D$(TargetEnvironment) $(TargetDefines) $(CC_IFAXDefine) $(CC_WIN4Define) !ENDIF ######################################################## # CC Option flags # CC_Zopt_NoPackStruct -- define to Not Pack Struct # CC_Zopt_NoSuppressLibSrch -- Define to allow Default Lib search # CC_WarningLevel -- set to warning level desired level 0, 1, 2, 3 # CC_StackCheck -- Define to insert Stack Check Code # CC_Zopt_NoDebug -- define Add debug !IF "$(SHIP_BUILD)" == "ON" CC_Zopt_NoDebug = 1 !ENDIF !IFNDEF CC_Zopt_NoPackStruct CC_Zopt_p = p !ENDIF !IFNDEF CC_Zopt_NoDebug # On By default CC_Zopt_d=d !ENDIF !IFNDEF CC_Zopt_NoSuppressLibSrch # On by Default CC_Zopt_l = l !ENDIF !IFDEF CC_Zopt_CodeView # Off By default CC_Zopt_i=i !ENDIF !IFNDEF CC_Zopt_NoEnableExtensions # On By default CC_Zopt_e=e !ENDIF CC_Zopt = $(CC_Zopt_l)$(CC_Zopt_p)$(CC_Zopt_d)$(CC_Zopt_i)$(CC_Zopt_e) # d = line numbers # e = enable extensions # i = codeview info # l = library search # p = pack structures # !IF "$(SHIP_BUILD)" == "ON" # CFLAGS = $(CFLAGS) /WX # !ENDIF !IFNDEF WIN32 MemoryFlag=/A$(MemoryModel) !ENDIF CFLAGS = $(C_DebugFlag) $(C_OptimizationFlags1) /Z$(CC_Zopt) /W$(CC_WarningLevel) \ $(MemoryFlag) $(CC_Defines) /Fo$(OBJDIR)\ /Fd$(OBJDIR)\ $(G_OptFlags) !if "$(COVERAGE)" == "1" COVPREP=\cover\covprep CFLAGS = $(CFLAGS) -DCOVERAGE !else COVPREP= !endif CIncludePaths = .;$(LocalCIncludePaths);$(C_TargetIncludepath) AIncludePaths = $(LocalAIncludePaths);.;$(A_TargetIncludepath) !ifdef NoLibMain LibMain= !else !ifndef LibMain LibMain=/ENTRY:LibMain !endif !endif #### Link options used in targets.mak: # /BA suppresses prompts for library files and objects # /LI generates line numbers in map falls. !ifndef LFLAG_NoLineNumbers LFLAG_LineNumbers=/LI !endif !ifndef LFLAG_NoFARCALL LFLAG_FARCALL = /FARCALL !endif !IFDEF WIN32 LFLAGS = /NODEFAULTLIB $(L_DebugFlag) !IF "$(LibType)" == "dll" LFLAGS = $(LFLAGS) /DLL $(LibMain) !ENDIF !ELSE ## !WIN32 LFLAGS = /BA /NOD /NOE /ONERR:NOEXE # add new /PACKC, PACKD, FARCALL options which compact & speed up # any large/medium model modules. ALIGN saves tons of disk space # but linker croaks if we have /LI and /MAP:FULL with /ALIGN !IF ("$(TargetEnvironment)"=="IFBGPROC") || ("$(TargetEnvironment)"=="IFFGPROC") ### LFLAGS = $(LFLAGS) /PACKC /PACKD $(LFLAG_FARCALL) ## used by SHIP & non-SHIP LFLAGS = $(LFLAGS) $(LFLAG_FARCALL) ## used by SHIP & non-SHIP LinkOptFlags = /ALIGN:16 ## used by SHIP build only !ENDIF !IF "$(SHIP_BUILD)" == "ON" LFLAGS = $(LFLAGS) $(LinkOptFlags) !ELSE ## not SHIP_BUILD LFLAGS = $(LFLAGS) /MAP:FULL $(LFLAG_LineNumbers) $(L_DebugFlag) !ENDIF ## end of SHIP_BUILD !ENDIF ## end of !IFDEF WIN32 # if Linking A windows 4 object mark it as so, this amoung other # things allow the correct page color to be used. !IFDEF WIN4 !IFDEF WIN32 # BUT NOT IF WIN 16 LFLAGS=-subsystem:windows,4.0 -merge:.bss=.data -merge:.rdata=.text $(LFLAGS) !ENDIF !ENDIF ## Ctags options - vi and emacs only, oh well CTAGS_options = ## include program options for macros in a dependency string INCLUDES_options = -n -s.obj $(LocalCCmdIncPaths) -I$(IFAXhpath) ## h2inc file options # -c Leave comments in place # -d Create typedef macrosasm # -m Create struct macros H2INC_options = -d -m ############################################################################## # Inference Rules ############################################################################## .SUFFIXES: .SUFFIXES: .obj .c .cpp .asm .res .rc .sym .map !IFDEF MASM510 .asm.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $<; .asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $<,$(@D)\; {$(SRCDIR1)}.asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $<,$(@D)\; {$(SRCDIR2)}.asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $<,$(@D)\; {$(SRCDIR3)}.asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $<,$(@D)\; {$(SRCDIR4)}.asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $<,$(@D)\; .asm.lst: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) -L $<,,$*.lst,, !ELSE .asm.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set ML=$(AFLAGS) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $< .asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set ML=$(AFLAGS) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $< {$(SRCDIR1)}.asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set ML=$(AFLAGS) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $< {$(SRCDIR2)}.asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set ML=$(AFLAGS) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $< {$(SRCDIR3)}.asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set ML=$(AFLAGS) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $< {$(SRCDIR4)}.asm{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set ML=$(AFLAGS) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $< .asm.lst: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(AIncludePaths) set ML=$(AFLAGS) set PATH=$(PATH) $(ASM) $(LocalAFLAGS) $< !ENDIF #### C Rules .c.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set PATH=$(PATH) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) $(COVPREP) $(CC) $(LocalCFLAGS) $< .c{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set PATH=$(PATH) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) $(COVPREP) $(CC) $(LocalCFLAGS) $< {$(SRCDIR1)}.c{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set PATH=$(PATH) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) $(COVPREP) $(CC) $(LocalCFLAGS) $< {$(SRCDIR2)}.c{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set PATH=$(PATH) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) $(COVPREP) $(CC) $(LocalCFLAGS) $< {$(SRCDIR3)}.c{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) set PATH=$(PATH) $(COVPREP) $(CC) $(LocalCFLAGS) $< {$(SRCDIR4)}.c{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) set PATH=$(PATH) $(COVPREP) $(CC) $(LocalCFLAGS) $< .c.cod: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) set PATH=$(PATH) $(COVPREP) $(CC) $(LocalCFLAGS) -Fc$(OBJDIR)\ $< .c.i: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(CIncludePaths) set CL=$(CFLAGS) $(LocalCFLAGS) set PATH=$(PATH) $(COVPREP) $(CC) -C -P $< .c.p: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(CIncludePaths) set CL=$(CFLAGS) $(LocalCFLAGS) set PATH=$(PATH) $(COVPREP) $(CC) -Zg $< > $*.p #### C++ Rules .cpp.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) set PATH=$(PATH) $(COVPREP) $(CC) $(LocalCFLAGS) $< .cpp{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set PATH=$(PATH) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) $(COVPREP) $(CC) $(LocalCFLAGS) $< {$(SRCDIR1)}.cpp{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set PATH=$(PATH) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) $(COVPREP) $(CC) $(LocalCFLAGS) $< {$(SRCDIR2)}.cpp{$(OBJDIR)}.obj: @if not exist $(OBJDIR) mkdir $(OBJDIR) set PATH=$(PATH) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) $(COVPREP) $(CC) $(LocalCFLAGS) $< .cpp.cod: @if not exist $(OBJDIR) mkdir $(OBJDIR) set INCLUDE=$(CIncludePaths) set CL=-c $(CFLAGS) set PATH=$(PATH) $(COVPREP) $(CC) $(LocalCFLAGS) -Fc$(OBJDIR)\ $< #### Miscellaneous .obj.exe: @echo Attempting link from inference rules $< .obj.dll: @echo Attempting link from inference rules $< .map.sym: $(MAPSYM) $< {$(OBJDIR)}.map{$(OBJDIR)}.sym: cd $(OBJDIR) $(MAPSYM) $(