blob: 18e946cd57b91bb1ad497b0de39f814005d4a3ee (
plain) (
tree)
|
|
# This is a part of the Microsoft Foundation Classes C++ library.
# Copyright (C) 1992-1995 Microsoft Corporation
# All rights reserved.
#
# This source code is only intended as a supplement to the
# Microsoft Foundation Classes Reference and related
# electronic documentation provided with the library.
# See these sources for detailed information regarding the
# Microsoft Foundation Classes product.
# Common include for building MFC Sample programs
#
# typical usage
# PROJ=foo
# OBJS=foo.obj bar.obj ...
# !INCLUDE ..\..\SAMPLE_.MAK
#
# ROOT specifies the location of the msdev\samples\mfc directory,
# relative to the project directory. Because the MFC tutorial samples
# have an intermediate STEP<n> subdirectory, they use
# ROOT=..\..\..
# instead of the default
# ROOT=..\..
#
# NOTE: do not include 'stdafx.obj' in the OBJS list - the correctly
# built version will be included for you
#
# Options to NMAKE:
# "PLATFORM=?"
# This option chooses the appropriate tools and sources for the
# different platforms support by Windows/NT. Currently INTEL,
# MIPS, ALPHA, PPC, M68K, and MPPC are supported; more will be
# added as they become available. The default is chosen based on
# the host environment. This option must be set for MAC_ builds.
# "DEBUG=0" use release (default debug)
# "CODEVIEW=1" include codeview info (even for release builds)
# "AFXDLL=1" to use shared DLL version of MFC
# "USRDLL=1" to build a DLL that uses static MFC
# "UNICODE=1" to build UNICODE enabled applications
# (not all samples support UNICODE)
# "NO_PCH=1" do not use precompiled headers (defaults to use pch)
# "COFF=1" include COFF symbols
!ifndef PROJ
!ERROR You forgot to define 'PROJ' symbol!!
!endif
ROOT=.
!ifndef ROOT
!endif
!ifndef OBJS
!ERROR You forgot to define 'OBJS' symbol!!
!endif
!ifndef DEBUG
DEBUG=1
!endif
!ifndef AFXDLL
AFXDLL=0
!endif
!ifndef UNICODE
UNICODE=0
!endif
!ifndef USRDLL
USRDLL=0
!endif
!if "$(USRDLL)" != "0"
AFXDLL=0
!endif
!ifndef PLATFORM
!ifndef PROCESSOR_ARCHITECTURE
PROCESSOR_ARCHITECTURE=x86
!endif
!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
PLATFORM=INTEL
!endif
!if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
PLATFORM=ALPHA
!endif
!if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
PLATFORM=MIPS
!endif
!if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
PLATFORM=PPC
!endif
!endif
!ifndef USES_OLE
USES_OLE=0
!endif
!ifndef USES_DB
USES_DB=0
!endif
!ifndef CONSOLE
CONSOLE=0
!endif
!ifndef NO_PCH
NO_PCH=0
!endif
#
# Set BASE=W, M, or P depending on platform
#
BASE=W
!if "$(PLATFORM)" == "M68K" || "$(PLATFORM)" == "MPPC"
MACOS=1
!undef BASE
!if "$(PLATFORM)" == "M68K"
BASE=M
!else
BASE=P
!endif
!endif
!if "$(UNICODE)" == "0"
!if "$(AFXDLL)" == "0"
!if "$(USRDLL)" != "1"
STDAFX=stdafx
!else
STDAFX=stdusr
!endif
!else
STDAFX=stddll
!endif
!endif
!if "$(UNICODE)" == "1"
!if "$(AFXDLL)" == "0"
!if "$(USRDLL)" != "1"
STDAFX=uniafx
!else
STDAFX=uniusr
!endif
!else
STDAFX=unidll
!endif
!endif
!if "$(DEBUG)" == "1"
STDAFX=$(STDAFX)d
!if "$(COFF)" != "1"
!ifndef CODEVIEW
CODEVIEW=1
!endif
!endif
!endif
!if "$(CODEVIEW)" == "1"
STDAFX=$(STDAFX)v
!endif
!if "$(DEBUG)" == "1"
DEBUG_SUFFIX=d
!endif
!if "$(DEBUG)" != "0"
DEBUGFLAGS=/Od
MFCDEFS=$(MFCDEFS) /D_DEBUG
!if "$(PLATFORM)" == "M68K"
DEBUGFLAGS=/Q68m
!endif
!endif
!if "$(DEBUG)" == "0"
!if "$(PLATFORM)" == "INTEL"
DEBUGFLAGS=/O1 /Gy
!endif
!if "$(PLATFORM)" == "MIPS"
DEBUGFLAGS=/O1 /Gy
!endif
!if "$(PLATFORM)" == "ALPHA"
DEBUGFLAGS=/O1 /Gy
!endif
!if "$(PLATFORM)" == "PPC"
DEBUGFLAGS=/O1 /Gy
!endif
!if "$(PLATFORM)" == "M68K"
DEBUGFLAGS=/O1 /Gy
!endif
!if "$(PLATFORM)" == "MPPC"
DEBUGFLAGS=/O1 /Gy
!endif
!endif # DEBUG == 0
!if "$(CODEVIEW)" == "1" || "$(COFF)" == "1"
DEBUGFLAGS=$(DEBUGFLAGS) /Z7
!endif
!if "$(UNICODE)" == "1"
DLL_SUFFIX=u
!endif
!if "$(AFXDLL)" == "1"
MFCFLAGS=$(MFCFLAGS) /MD$(DEBUG_SUFFIX)
MFCDEFS=$(MFCDEFS) /D_AFXDLL
!endif # AFXDLL == 1
!if "$(USRDLL)" == "1"
MFCDEFS=$(MFCDEFS) /D_USRDLL /D_WINDLL
!endif
!if "$(AFXDLL)" == "0"
!if "$(MACOS)" != "1"
MFCFLAGS=$(MFCFLAGS) /MT$(DEBUG_SUFFIX)
!elseif "$(PLATFORM)" != "M68K"
MFCFLAGS=$(MFCFLAGS) /ML$(DEBUG_SUFFIX)
!endif
!endif
!if "$(UNICODE)" == "1"
MFCDEFS=$(MFCDEFS) /D_UNICODE
!else
MFCDEFS=$(MFCDEFS) /D_MBCS
!endif
!if "$(MACOS)" == "1"
MFCDEFS=$(MFCDEFS) /D_MAC
!if "$(PLATFORM)" == "M68K"
ARCHITECTURE='m68k'
!else
ARCHITECTURE='pwpc'
!endif
!endif
!if "$(PLATFORM)" == "INTEL"
MFCDEFS=$(MFCDEFS) /D_X86_
CPP=cl
CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
!endif
!if "$(PLATFORM)" == "MIPS"
MFCDEFS=$(MFCDEFS) /D_MIPS_
CPP=cl
CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
!endif
!if "$(PLATFORM)" == "ALPHA"
MFCDEFS=$(MFCDEFS) /D_ALPHA_
CPP=cl
CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
!endif
!if "$(PLATFORM)" == "PPC"
MFCDEFS=$(MFCDEFS) /D_PPC_
!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
CPP=mcl
!else
CPP=cl
!endif
CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
!endif
!if "$(PLATFORM)" == "M68K"
MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_68K_
CPP=cl
CFLAGS=/GX /c /W3 /AL /Gt1 /Q68s $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
!endif
!if "$(PLATFORM)" == "MPPC"
MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_MPPC_
CPP=cl
CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
!endif
CPPMAIN_FLAGS=$(CFLAGS)
!if "$(NO_PCH)" == "1"
CPPFLAGS=$(CPPMAIN_FLAGS)
!else
PCHDIR=.
CPPFLAGS=$(CPPMAIN_FLAGS) /Yustdafx.h /Fp$(PCHDIR)\$(STDAFX).pch
!endif
!if "$(COFF)" == "1"
NO_PDB=1
!if "$(CODEVIEW)" != "1"
LINKDEBUG=/incremental:no /debug:full /debugtype:coff
!else
LINKDEBUG=/incremental:no /debug:full /debugtype:both
!endif
!endif
!if "$(COFF)" != "1"
!if "$(CODEVIEW)" == "1"
LINKDEBUG=/incremental:no /debug:full /debugtype:cv
!else
LINKDEBUG=/incremental:no /debug:none
!endif
!endif
!if "$(NO_PDB)" == "1"
LINKDEBUG=$(LINKDEBUG) /pdb:none
!endif
!if "$(PLATFORM)" == "INTEL"
LINKCMD=link $(LINKDEBUG)
!endif
!if "$(PLATFORM)" == "MIPS"
LINKCMD=link $(LINKDEBUG)
!endif
!if "$(PLATFORM)" == "ALPHA"
LINKCMD=link $(LINKDEBUG)
!endif
!if "$(PLATFORM)" == "PPC"
LINKCMD=link $(LINKDEBUG)
!endif
!if "$(PLATFORM)" == "M68K"
LINKCMD=link $(LINKDEBUG)
!endif
!if "$(PLATFORM)" == "MPPC"
LINKCMD=link $(LINKDEBUG)
!endif
# link flags - must be specified after $(LINKCMD)
#
# conflags : creating a character based console application
# guiflags : creating a GUI based "Windows" application
!if "$(MACOS)" != "1"
CONFLAGS=/subsystem:console
GUIFLAGS=/subsystem:windows
!else
!if defined(MACSIG)
GUIFLAGS=/mac:type=APPL /mac:creator=$(MACSIG)
!endif
!endif
!if "$(UNICODE)" == "1"
CONFLAGS=$(CONFLAGS) /entry:wmainCRTStartup
GUIFLAGS=$(GUIFLAGS) /entry:wWinMainCRTStartup
!endif
!if "$(MACOS)" != "1"
PROJRESFILE=$(PROJ).res
!else
PROJRESFILE=$(PROJ).rsc $(MACSIG)mac.rsc
!if "$(AFXDLL)" != "1"
BASERESFILE=
!endif
!endif
RESFILE=$(PROJRESFILE)
.SUFFIXES:
.SUFFIXES: .c .cpp .rcm .rc
.cpp.obj:
$(CPP) @<<
$(CPPFLAGS) $*.cpp
<<
.c.obj:
$(CPP) @<<
$(CFLAGS) $(CVARS) $*.c
<<
!if "$(MACOS)" != "1"
.rc.res:
rc /r $(MFCDEFS) $<
!else
.rc.rsc:
rc /r /m $(MFCDEFS) $<
!endif
#############################################################################
!if "$(NO_PCH)" == "0"
LINK_OBJS=$(OBJS) $(PCHDIR)\$(STDAFX).obj
!else
LINK_OBJS=$(OBJS)
!endif
#
# Build CONSOLE Win32 application
#
!if "$(CONSOLE)" == "1"
!if "$(MACOS)" == "1"
!error Macintosh targets do not support console applications
!endif
$(PROJ).exe: $(LINK_OBJS)
$(LINKCMD) @<<
$(CONFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
$(LINK_OBJS) $(EXTRA_LIBS)
<<
!endif # CONSOLE=1
#
# Build Win32 application
#
!if "$(CONSOLE)" == "0"
!if "$(MACOS)" == "1"
copy: $(PROJ).exe
!if defined(MACNAME)
mfile copy $(PROJ).exe ":$(MACNAME):$(PROJ)"
!endif
!endif
!if "$(MACOS)" == "1"
$(MACSIG)mac.rsc: $(MACSIG)mac.r
mrc $(MFCDEFS) /DARCHITECTURE=$(ARCHITECTURE) /o $(MACSIG)mac.rsc $(MACSIG)mac.r
!endif
!if "$(USRDLL)" == "1"
$(PROJ).dll: $(LINK_OBJS) $(PROJRESFILE)
$(LINKCMD) @<<
$(GUIFLAGS) /out:$(PROJ).dll /map:$(PROJ).map
/dll /def:$(PROJ).def
$(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
<<
$(PROJ).res: resource.h
$(PROJ).rsc: resource.h
!endif
!if "$(SIMPLE_APP)" != "1"
$(PROJ).exe: $(LINK_OBJS) $(PROJRESFILE)
$(LINKCMD) @<<
$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
$(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
<<
$(PROJ).res: resource.h
$(PROJ).rsc: resource.h
!endif
!if "$(SIMPLE_APP)" == "1"
!if "$(MACOS)" == "1"
$(PROJ).exe: $(LINK_OBJS) $(MACSIG)mac.rsc
$(LINKCMD) @<<
$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
$(LINK_OBJS) $(MACSIG)mac.rsc $(EXTRA_LIBS)
<<
!else
$(PROJ).exe: $(LINK_OBJS)
$(LINKCMD) @<<
$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
$(LINK_OBJS) $(EXTRA_LIBS)
<<
!endif
!endif
!if "$(NO_PCH)" == "0"
$(PCHDIR)\$(STDAFX).obj $(PCHDIR)\$(STDAFX).pch: stdafx.h stdafx.cpp
echo "BUILDING SHARED PCH and PCT files"
$(CPP) @<<
$(CPPMAIN_FLAGS) /Ycstdafx.h /Fp$(PCHDIR)\$(STDAFX).pch /Fo$(PCHDIR)\$(STDAFX).obj /c $(ROOT)\stdafx.cpp
<<
$(OBJS): $(PCHDIR)\$(STDAFX).pch
!endif
!endif # CONSOLE=0
clean::
if exist $(PROJ).exe erase $(PROJ).exe
if exist *.aps erase *.aps
if exist *.pch erase *.pch
if exist *.map erase *.map
if exist *.obj erase *.obj
if exist *.exp erase *.exp
if exist *.pdb erase *.pdb
if exist *.map erase *.map
if exist *.lib erase *.lib
if exist *.res erase *.res
if exist *.rsc erase *.rsc
if exist *.pef erase *.pef
#############################################################################
|