xpmgr/BuildTools/Include/Make.Inc

407 lines
10 KiB
PHP

#----------------------------------------------------------------------------
#
# 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)\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