- #----------------------------------------------------------------------------
- #
- # Descriptions:
- # Generic Make File Header for EDK
- #
- # Copyright:
- # Copyright (C) Microsoft Corp. 1993-1999. All Rights Reserved.
- #
- #----------------------------------------------------------------------------
- #*********************************************
- # Check Component Name
- #*********************************************
- !ifndef COMP
- ! ERROR Component name (COMP) has not been defined.
- !endif
- #*********************************************
- # Parameter Defaults
- #*********************************************
- !ifndef BKOFFICE
- BKOFFICE=c:BkOffice
- !endif
- !if [DIR $(BKOFFICE) >NUL] != 0
- ! ERROR Cannot find project root at $(BKOFFICE), set BKOFFICE variable
- !endif
- !ifndef INCLUDE
- ! ERROR INCLUDE variable is empty; must include at least system include directory
- !endif
- !ifndef LIB
- ! ERROR LIB variable is empty; must include at least system lib directory
- !endif
- !ifndef BLDTYPE
- BLDTYPE=DBG
- !endif
- !ifndef CALL
- CALL=C
- !endif
- !ifndef PACK
- PACK=YES
- !endif
- !ifndef OUTERR
- OUTERR=NO
- !endif
- !ifndef WARNING_LEVEL
- WARNING_LEVEL=3
- !endif
- OSTARG=NTx86
- OSTAG=WIN32
- WINTAG=32
- CPUTARG=IX86
- #*********************************************
- # Tools
- #*********************************************
- MAKEEXE = nmake
- IMPLIB = implib
- CC = cl
- LIBU = lib
- LINK = link
- RC = rc
- MC = mc
- HC = hc
- #*********************************************
- #
- # Directories
- #
- # DIRINC - project level include
- # DIRBIN - project level executables
- # DIRLIB - project level libraries
- # DIRMAKE - project makefiles
- #
- # DIRSRC - component source directory
- # DIRH - component headers
- # DIRRES - component resources
- # DIRBLD - component build directory
- # DIRPCHSRC- Pre-compiled header source directory
- # DIRPCH - Pre-compiled header output directory
- #
- #*********************************************
- # Project directories
- DIRINC=$(BKOFFICE)include
- DIRLIB=$(BKOFFICE)lib
- DIRBIN=$(BKOFFICE)bin
- DIRMAKE=$(BKOFFICE)include
- # Component directories
- DIRBLD=.
- DIRSRC=.
- DIRH=.;$(DIRBLD)
- DIRRES=.
- # Pre-compiled header directories
- DIRPCHSRC=$(BKOFFICE)SamplesExchangeToolsPreCompH
- DIRPCH=$(BKOFFICE)SamplesExchangeToolsPreCompH
- #*********************************************
- # Paths
- #*********************************************
- PATH = $(DIRBIN);$(PATH)
- LIB = $(DIRLIB);$(LIB)
- INCLUDE = $(DIRH);$(DIRINC);$(INCLUDE)
- #*********************************************
- # Output Redirection
- #*********************************************
- !if "$(OUTERR)" == "NO"
- ERRFILE=
- OSYM=
- !else
- ERRFILE=$(DIRBLD)$(COMP).err
- OSYM= >>
- !endif
- #*********************************************
- # Basic Compile Flags
- #*********************************************
- # CL is for all C and C++ files
- CL= -I. -c -G3s -MT -W$(WARNING_LEVEL) -WX -J -Zp -Fo$(DIRBLD)^ -nologo $(CL)
- # NT/CPU specific flags
- CL= -DWIN32 -D_X86_ $(CL)
- # CFLAGS is for C files
- #CFLAGS=$(CFLAGS)
- # CPPFLAGS is for C++ files
- #CPPFLAGS=$(CPPFLAGS)
- # LFLAGS is for linking
- LFLAGS=/NOD /NOLOGO -machine:$(CPUTARG) -out:$@ $(LFLAGS)
- # DLLFLAGS is for linking DLLs
- DLLFLAGS=$(LFLAGS) -dll -def:$(@B).def -map:$(DIRBLD)$(COMP).map $(DLLFLAGS)
- # LIBFLAGS is for building libraries
- LIBFLAGS=-nologo -machine:$(CPUTARG) -out:$@ $(LIBFLAGS)
- # RFLAGS is for Windows resources
- RFLAGS=/r -I$(DIRRES) -fo$@ $(RFLAGS)
- # MFLAGS is for the message compiler
- MFLAGS=-v -s -h $(DIRBLD) -r $(DIRBLD) -x $(DIRBLD) $(MFLAGS)
- # MRFLAGS is for the resource compiler when used after the message compiler
- MRFLAGS=-l 409 -r -x -i$(DIRBLD) $(MRFLAGS)
- #*********************************************
- # Pre-compiled header macros
- # NOPCH - Define this to disable use and creation of precompiled headers.
- # PCHUSE - The default pre-compiled header for .C source files.
- # PCUSECPP - The default pre-compiled header for .CPP source files.
- #
- # PCHCR1 - To create the PCH file most .C sources depend upon. (edk.h)
- # PCHUSE1 - To use the PCH file most .C sources depend upon. (edk.h)
- # PCHCR2 - To create the PCH file most .CPP sources depend upon. (edk.h)
- # PCHUSE2 - To use the PCH file most .CPP sources depend upon. (edk.h)
- # PCHCR3 - To create MFC PCH. (edkafx.h)
- # PCHUSE3 - To use MFC PCH. (edkafx.h)
- # PCHCR4 - To create the UNICODE PCH file for .C sources. (edk.h)
- # PCHUSE4 - To use the UNICODE PCH file for .C sources. (edk.h)
- #*********************************************
- !ifndef NOPCH
- # We are using precompiled headers.
- PCHCR1 = /Fp$(DIRPCH)edk.pch /Yc"edk.h" -Fo$(DIRPCH) /Yd
- PCHUSE1 = /Fp$(DIRPCH)edk.pch /Yu"edk.h"
- PCHCR2 = /Fp$(DIRPCH)edkx.pch /Yc"edk.h" -Fo$(DIRPCH) /Yd
- PCHUSE2 = /Fp$(DIRPCH)edkx.pch /Yu"edk.h"
- PCHCR3 = /Fp$(DIRPCH)edkafx.pch /Yc"edkafx.h" -Fo$(DIRPCH) /Yd
- PCHUSE3 = /Fp$(DIRPCH)edkafx.pch /Yu"edkafx.h"
- PCHCR4 = /Fp$(DIRPCH)edku.pch /Yc"edk.h" -Fo$(DIRPCH) /Yd
- PCHUSE4 = /Fp$(DIRPCH)edku.pch /Yu"edk.h"
- # Overide this to change the default pre-compiled header.
- # You can also blank this if not using pre-compiled headers.
- !ifndef PCHUSE
- PCHUSE=$(PCHUSE1)
- !endif
- !ifndef PCHUSECPP
- PCHUSECPP=$(PCHUSE2)
- !endif
- PCHOBJ1 = $(DIRPCH)edk.obj
- PCHOBJ2 = $(DIRPCH)edkx.obj
- PCHOBJ3 = $(DIRPCH)edkafx.obj
- PCHOBJ4 = $(DIRPCH)edku.obj
- !else
- # NOT using precompiled headers.
- !include "nopch.inc"
- !endif
- #*********************************************
- # Calling convention Flag
- #*********************************************
- # Pascal Calling convention
- !if "$(CALL)"=="PASCAL"
- CL=-Gc $(CL)
- !endif
- #*********************************************
- # Function Packaging Flag
- #*********************************************
- # Function packaging flag
- !if "$(PACK)" == "YES"
- CL=-Gy $(CL)
- !endif
- #*********************************************
- # Optimization Flags
- #*********************************************
- !if "$(BLDTYPE)"=="SHP"
- CL=-Ob1 -Og -Os $(CL)
- !endif
- !if "$(BLDTYPE)"=="DBG"
- CL=-Od -Z7 $(CL)
- !endif
- !if "$(BLDTYPE)"=="TST"
- CL=-Ob1 -Og -Os $(CL)
- !endif
- #*********************************************
- # Build Type Flags
- #*********************************************
- !if "$(BLDTYPE)"=="SHP"
- CL=-DSHIP $(CL)
- LFLAGS=-debug:none -nodefaultlib:libc $(LFLAGS)
- !endif
- !if "$(BLDTYPE)"=="DBG"
- CL=-DDEBUG -DTEST $(CL)
- LFLAGS=-debug:full -debugtype:cv -nodefaultlib:libc -incremental:no -pdb:none $(LFLAGS)
- !endif
- !if "$(BLDTYPE)"=="TST"
- CL=-DTEST $(CL)
- LFLAGS=-debug:none -nodefaultlib:libc $(LFLAGS)
- !endif
- #*********************************************
- # Default Libraries
- #*********************************************
- # C Libraries
- CLIBS = libcmt.lib
- oldnames.lib
- # NT Libraries
- NTLIBS = kernel32.lib
- user32.lib
- shell32.lib
- gdi32.lib
- ole32.lib
- uuid.lib
- winspool.lib
- comdlg32.lib
- advapi32.lib
- netapi32.lib
- imagehlp.lib
- wsock32.lib
- rpcdce4.lib
- rpcndr.lib
- rpcns4.lib
- rpcrt4.lib
- # MAPI Libraries
- MAPILIBS = MAPI32.LIB
- # Library List
- # Components should either add to this list with a line like:
- # LIBLIST = $(LIBLIST) mylibs
- # or, if they don't need all the default libs, (e.g. if don't need MAPI):
- # LIBLIST = $(CLIBS) $(NTLIBS) mylibs
- LIBLIST = $(LIBLIST) $(CLIBS) $(NTLIBS) $(MAPILIBS)
- # Objects
- # This is just a default setting, expect most make files to
- # overide this (i.e. if they have more than one object or their
- # one object is not named $(COMP).obj
- !ifndef OBJLIST
- OBJLIST=$(DIRBLD)$(@B).OBJ
- !endif
- #*********************************************
- # Inference Rules
- #*********************************************
- # C Targets
- {$(DIRSRC)}.c{$(DIRBLD)}.obj:
- !if "$(OUTERR)"=="YES"
- @echo $(CC) $(CL) $(PCHUSE) $(CFLAGS) $< $(OSYM) $(ERRFILE)
- !endif
- $(CC) $(CL) $(PCHUSE) $(CFLAGS) $< $(OSYM) $(ERRFILE)
- # C++ Targets
- {$(DIRSRC)}.cpp{$(DIRBLD)}.obj:
- !if "$(OUTERR)"=="YES"
- @echo $(CC) $(CL) $(PCHUSECPP) $(CPPFLAGS) $< $(OSYM) $(ERRFILE)
- !endif
- $(CC) $(CL) $(PCHUSECPP) $(CPPFLAGS) $< $(OSYM) $(ERRFILE)
- # Resource Targets from .RC files
- {$(DIRRES)}.rc{$(DIRBLD)}.res:
- !if "$(OUTERR)"=="YES"
- @echo $(RC) $(RFLAGS) $(DIRRES)$(@B).rc $(OSYM) $(ERRFILE)
- !endif
- $(RC) $(RFLAGS) $(DIRRES)$(@B).rc $(OSYM) $(ERRFILE)
- # Resource Targets from .MC files
- .SUFFIXES: .mc
- {$(DIRSRC)}.mc{$(DIRBLD)}.res:
- !if "$(OUTERR)"=="YES"
- @echo $(MC) $(MFLAGS) $< $(OSYM) $(ERRFILE)
- !endif
- $(MC) $(MFLAGS) $< $(OSYM) $(ERRFILE)
- !if "$(OUTERR)"=="YES"
- @echo $(RC) $(MRFLAGS) -fo$(DIRBLD)$(@B).res $(DIRBLD)$(@B).rc $(OSYM) $(ERRFILE)
- !endif
- $(RC) $(MRFLAGS) -fo$(DIRBLD)$(@B).res $(DIRBLD)$(@B).rc $(OSYM) $(ERRFILE)
- !if "$(OUTERR)"=="YES"
- @echo del $(DIRBLD)$(@B).rc $(OSYM) $(ERRFILE)
- !endif
- del $(DIRBLD)$(@B).rc $(OSYM) $(ERRFILE)
- # Import Libraries
- {$(DIRSRC)}.def{$(DIRBLD)}.lib:
- !if "$(OUTERR)"=="YES"
- @echo $(IMPLIB) -DEF:$(@B).DEF -OUT:$@ $(OSYM) $(ERRFILE)
- !endif
- @echo $(IMPLIB) -DEF:$(@B).DEF -OUT:$@ $(OSYM) $(ERRFILE)
- xcopy $@ $(DIRLIB) $(OSYM) $(ERRFILE)
- # Static Libraries
- {$(DIRBLD)}.obj{$(DIRBLD)}.lib:
- !if "$(OUTERR)"=="YES"
- @echo $(LIBU) $(LIBFLAGS) $** $(OSYM) $(ERRFILE)
- !endif
- $(LIBU) $(LIBFLAGS) $** $(OSYM) $(ERRFILE)
- xcopy $@ $(DIRLIB) $(OSYM) $(ERRFILE)
- # DLLs
- {$(DIRBLD)}.obj{$(DIRBLD)}.dll:
- @echo $** > $(DIRBLD)objfiles.lst
- @echo $(LIBLIST) > $(DIRBLD)libfiles.lst
- !if "$(OUTERR)"=="YES"
- @echo $(LINK) $(DLLFLAGS) @$(DIRBLD)objfiles.lst @$(DIRBLD)libfiles.lst $(OSYM) $(ERRFILE)
- !endif
- $(LINK) $(DLLFLAGS) @$(DIRBLD)objfiles.lst @$(DIRBLD)libfiles.lst $(OSYM) $(ERRFILE)
- !if "$(OUTERR)"=="YES"
- @echo xcopy $(DIRBLD)$(@B).lib $(DIRLIB) $(OSYM) $(ERRFILE)
- !endif
- -xcopy $(DIRBLD)$(@B).lib $(DIRLIB) $(OSYM) $(ERRFILE)
- # EXEs
- {$(DIRBLD)}.obj{$(DIRBLD)}.exe:
- @echo $(OBJLIST) > $(DIRBLD)objfiles.lst
- @echo $(LIBLIST) > $(DIRBLD)libfiles.lst
- !if "$(OUTERR)"=="YES"
- @echo $(LINK) $(LFLAGS) @$(DIRBLD)objfiles.lst @$(DIRBLD)libfiles.lst $(OSYM) $(ERRFILE)
- !endif
- $(LINK) $(LFLAGS) @$(DIRBLD)objfiles.lst @$(DIRBLD)libfiles.lst $(OSYM) $(ERRFILE)
- #*********************************************
- # Define the post-include file
- #*********************************************
- #ifndef POSTINCL
- POSTINCL=$(BKOFFICE)Includepostmake.inc
- #endif