# This is a part of the Microsoft Foundation Classes C++ library. # Copyright (C) 1996 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. # Default PLATFORM depending on host environment !ifndef PLATFORM !ifndef PROCESSOR_ARCHITECTURE !error PLATFORM must be set to intended target !endif !if "$(PROCESSOR_ARCHITECTURE)" == "x86" PLATFORM=INTEL !endif !if "$(PROCESSOR_ARCHITECTURE)" == "MIPS" PLATFORM=MIPS !endif !if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA" PLATFORM=ALPHA !endif !if "$(PROCESSOR_ARCHITECTURE)" == "PPC" PLATFORM=PPC !endif !endif # Default to DEBUG mode !ifndef DEBUG DEBUG=1 !endif # Default to NOT DLL !ifndef DLL DLL=0 !endif # Default Codeview Info !ifndef CODEVIEW !if "$(DEBUG)" == "1" CODEVIEW=1 !else CODEVIEW=0 !endif !endif # BROWSEONLY is default 0 and implies BROWSE=1 if BROWSEONLY=1 !ifndef BROWSEONLY BROWSEONLY=0 !endif !if "$(BROWSEONLY)" != "0" !undef BROWSE BROWSE=1 !endif # Default to no BROWSE info !ifndef BROWSE BROWSE=0 !endif # Default to _MBCS build !ifndef MBCS MBCS=1 !endif # Default to multithreading support !ifndef MT MT=1 !endif !if "$(MT)" != "1" !error This library must be built with threadding enabled. !endif # TYPE = Library Type Designator # N = normal C library # D = for use with MFC USRDLL library # E = for use with MFC Extension DLL library !if "$(DLL)" == "0" TYPE=N !if "$(DEBUG)" == "1" TARGOPTS=$(TARGOPTS) /MTd !else TARGOPTS=$(TARGOPTS) /MT !endif !endif !if "$(DLL)" == "1" !error The _USRDLL configuration is not supported by this library. !endif !if "$(DLL)" == "2" !if "$(DEBUG)" == "1" TARGOPTS=$(TARGOPTS) /MDd !else TARGOPTS=$(TARGOPTS) /MD !endif TARGDEFS=$(TARGDEFS) /D_WINDLL /D_AFXDLL /D_DLL /D_AFX_CORE_IMPL TYPE=E !endif ############################################################################# # normalize cases of parameters, or error check !if "$(CPU)" == "MIPS" !if "$(PLATFORM)" != "MIPS" !error Must set PLATFORM=MIPS for MIPS builds !endif !endif !if "$(CPU)" == "ALPHA" !if "$(PLATFORM)" != "ALPHA" !error Must set PLATFORM=ALPHA for ALPHA builds !endif !endif ############################################################################# # Parse options # # DEBUG OPTIONS # !if "$(DEBUG)" != "0" DEBUGSUF=D DEBDEFS=/D_DEBUG DEBOPTS=/Od !endif # # NON-DEBUG OPTIONS # !if "$(DEBUG)" == "0" DEBUGSUF= DEBDEFS= !if "$(PLATFORM)" == "INTEL" DEBOPTS=/O1 /Gy !endif !if "$(PLATFORM)" == "MIPS" DEBOPTS=/O1 /Gy !endif !if "$(PLATFORM)" == "ALPHA" DEBOPTS=/O1 /Gy !endif !if "$(PLATFORM)" == "PPC" DEBOPTS=/O1 /Gy !endif !endif # # PLATFORM options # CPP=cl LIB32=lib LINK32=link !if "$(PLATFORM)" == "INTEL" CL_MODEL=/D_X86_ !endif !if "$(PLATFORM)" == "MIPS" CL_MODEL=/D_MIPS_ !endif !if "$(PLATFORM)" == "ALPHA" CL_MODEL=/D_ALPHA_ !endif !if "$(PLATFORM)" == "PPC" CL_MODEL=/D_PPC_ !if "$(PROCESSOR_ARCHITECTURE)" == "x86" CPP=mcl !endif !endif !if "$(CPP)" == "" !error PLATFORM must be one of INTEL, MIPS, ALPHA, PPC !endif #REVIEW: does ISAPI support UNICODE? !if "$(UNICODE)" == "1" MODEL=ISU TARGDEFS=$(TARGDEFS) /D_UNICODE !else MODEL=IS !if "$(MBCS)" != "0" TARGDEFS=$(TARGDEFS) /D_MBCS !endif !endif # # Object File Directory # !if "$(OBJ)" == "" D=$$$(TYPE)$(MODEL)$(DEBUGSUF) # subdirectory specific to variant !else D=$(OBJ) # User specified directory !endif GOAL=$(TYPE)AFX$(MODEL)$(DEBUGSUF) # # CODEVIEW options # !if "$(CODEVIEW)" == "1" !if "$(NO_PDB)" == "1" CVOPTS=/Z7 !else CVOPTS=/Zi /Fd..\lib\$(GOAL).pdb !endif !endif # # COMPILER OPTIONS # !if "$(PLATFORM)" == "INTEL" CL_OPT=/W4 /WX /Zl /GX $(DEBOPTS) $(CVOPTS) $(TARGOPTS) !endif !if "$(PLATFORM)" == "MIPS" CL_OPT=/W4 /WX /Zl /GX $(DEBOPTS) $(CVOPTS) $(TARGOPTS) !endif !if "$(PLATFORM)" == "ALPHA" CL_OPT=/W4 /WX /Zl /GX $(DEBOPTS) $(CVOPTS) $(TARGOPTS) !endif !if "$(PLATFORM)" == "PPC" CL_OPT=/W4 /Zl $(DEBOPTS) $(CVOPTS) $(TARGOPTS) !endif !if "$(BROWSE)" != "0" CL_OPT=/FR$D\ $(CL_OPT) !endif !if "$(BROWSEONLY)" != "0" CL_OPT=/Zs $(CL_OPT) !else CL_OPT=/Fo$D\ $(CL_OPT) !endif DEFS=$(DEFS) $(DEBDEFS) $(TARGDEFS) ############################################################################# # Library Components OBJS=$D\isapi.obj $D\inetcall.obj ############################################################################# # Standard tools ############################################################################# # Set CPPFLAGS for use with .cpp.obj and .c.obj rules # Define rule for use with OBJ directory # C++ uses a PCH file CPPFLAGS=$(CPPFLAGS) $(CL_MODEL) $(CL_OPT) $(DEFS) $(OPT) PCH_FILE= .SUFFIXES: .cpp .cpp{$D}.obj: $(CPP) @<< $(CPPFLAGS) /c $< << !if "$(BROWSE)" != "0" copy /b $*.sbr+pchmark.bin $*.sbr >NUL !endif .cpp{$D}.sbr: $(CPP) @<< $(CPPFLAGS) /c $< << copy /b $*.sbr+pchmark.bin $*.sbr >NUL ############################################################################# # Goals to build GOALS=create.dir !if "$(BROWSEONLY)" == "0" GOALS=$(GOALS) ..\lib\$(GOAL).lib !endif !if "$(BROWSE)" != "0" GOALS=$(GOALS) $(GOAL).bsc !endif goal: $(GOALS) create.dir: @-if not exist $D\*.* mkdir $D clean: -if exist $D\*.obj erase $D\*.obj -if exist $D\*.pch erase $D\*.pch -if exist $D\*.res erase $D\*.res -if exist $D\*.rsc erase $D\*.rsc -if exist $D\*.map erase $D\*.map -if exist $D\*.* rmdir $D -if exist ..\lib\$(GOAL).pdb del ..\lib\$(GOAL).pdb ############################################################################# # Build the library from the up-to-date objs SBRS=$(CPP_OBJS:.obj=.sbr) !if "$(BROWSEONLY)" != "0" # Build final browse database $(GOAL).bsc: $(SBRS) bscmake /n /Iu /El /o$@ @<< $(SBRS) << !else #BROWSEONLY # Build final library ..\lib\$(GOAL).lib: $(OBJS) @-if exist $@ erase $@ @$(LIB32) /out:$@ @<< $(OBJS) << # Recurse to build browse database $(GOAL).bsc: $(SBRS) $(MAKE) /f makefile. @<< BROWSEONLY=1 PLATFORM=$(PLATFORM) DEBUG=$(DEBUG) CODEVIEW=$(CODEVIEW) \ DLL=$(DLL) OBJ=$(OBJ) OPT=$(OPT) << !endif #!BROWSEONLY #############################################################################