home *** CD-ROM | disk | FTP | other *** search
- #----------------------------------------------------------------------------
- #
- # Descriptions:
- # Generic Make File Header for EDK
- #
- # Copyright:
- # Copyright (C) Microsoft Corp. 1993-1995. 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)\Samples\Exchange\Tools\PreCompH
- DIRPCH=$(BKOFFICE)\Samples\Exchange\Tools\PreCompH
-
- #*********************************************
- # 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)\Include\postmake.inc
- #endif
-