!ifdef NTMAKEENV !include $(NTMAKEENV)\makefile.def !else ############################################################################## # # Makefile : Builds COMSUPP.LIB, the runtime support routines for native COM # compiler support in Visual C++ # #----------------------------------------------------------------------------- # # Usage: NMAKE CLEAN (removes all intermediate files) # or: NMAKE options (builds library) # # 'Options' are one each of: # # "DEBUG" (defaults to 0) # If this item is 1, then an unoptimized library with debugging # support is generated. If this item is 0, then an optimized # library without debugging support is generated. Debug support # does not include CodeView information (though it does change the # CodeView default). # # "CODEVIEW" (defaults to $(DEBUG)) # If this item is 0, no CodeView debug info is generated. If 1, # then compile switch /Z7 is used to generate CodeView info in the # objects. # # "BROWSE" (defaults to $(DEBUG)) # If this item is 1, then the browse database is built. # # "PLATFORM" (defaults depend on host) # This option chooses the appropriate tools and sources for the # different platforms supported by Visual C++. Currently INTEL, # MIPS, ALPHA, PPC, M68K, and MPPC are supported. # # "OPT" (no default value) # This allows additional compiler options to be added to the build. # If more than one switch is desired, put double-quotes around the # whole OPT argument, e.g., "OPT=/FAsc /Fm". # ############################################################################## ############################################################################## # Set up defaults # Default PLATFORM depending on host environment !ifndef PLATFORM ! ifndef PROCESSOR_ARCHITECTURE PROCESSOR_ARCHITECTURE=x86 ! endif ! if "$(PROCESSOR_ARCHITECTURE)" == "x86" PLATFORM = INTEL ! else if "$(PROCESSOR_ARCHITECTURE)" == "MIPS" PLATFORM = MIPS ! else if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA" PLATFORM = ALPHA ! else if "$(PROCESSOR_ARCHITECTURE)" == "PPC" PLATFORM = PPC ! else ! error Unknown PROCESSOR_ARCHITECTURE: $(PROCESSOR_ARCHITECTURE) ! endif !endif # Default to DEBUG=0 !ifndef DEBUG DEBUG = 0 !endif # Default to CODEVIEW=$(DEBUG) !ifndef CODEVIEW CODEVIEW = $(DEBUG) !endif # Default to BROWSE=$(DEBUG) !ifndef BROWSE BROWSE = $(DEBUG) !endif ############################################################################## # Parse options # DEBUG options !if "$(DEBUG)" != "0" LIBSUFX = d DBFLAGS = /Od /MLd DBDEFS = /D_DEBUG OUTDIR = Debug !else LIBSUFX = DBFLAGS = /O1 /ML DBDEFS = OUTDIR = Release !endif # CODEVIEW options !if "$(CODEVIEW)" != "0" DBFLAGS = $(DBFLAGS) /Z7 !endif # BROWSE options !if "$(BROWSE)" != "0" BRFLAGS = /FR$O\ # space after backslash !else BRFLAGS = !endif # PLATFORM options !if "$(PLATFORM)" == "INTEL" PDEFS = /D_X86_ !else if "$(PLATFORM)" == "MIPS" PDEFS = /D_MIPS_ !else if "$(PLATFORM)" == "ALPHA" PDEFS = /D_ALPHA_ !else if "$(PLATFORM)" == "PPC" PDEFS = /D_PPC_ !else if "$(PLATFORM)" == "M68K" PDEFS = /D_68K_ /D_MAC !else if "$(PLATFORM)" == "MPPC" PDEFS = /D_MPPC_ /D_MAC !else ! error PLATFORM must be one of INTEL, MIPS, ALPHA, PPC, M68K, or MPPC !endif # short macros for source/object directories H = include O = $(OUTDIR) ############################################################################## # Compile options PROJNAME = comsupp LIBNAME = $O\$(PROJNAME)$(LIBSUFX).lib CFLAGS = /nologo /W3 /WX /GXRFy /Zl /YX /Fp$O\$(PROJNAME).pch INCS = /I$H DEFS = $(PDEFS) $(DBDEFS) CFLAGS = $(CFLAGS) $(DBFLAGS) $(BRFLAGS) $(DEFS) $(INCS) $(OPT) ############################################################################## # Build rules .SUFFIXES: .SUFFIXES: .c .cpp .obj .lib .c{$O}.obj: $(CC) $(CFLAGS) /Fo$O\ /c $< .cpp{$O}.obj: $(CC) $(CFLAGS) /Fo$O\ /c $< ############################################################################## # Library components OBJS = $O\comsupp.obj $O\comraise.obj $O\comutil.obj SBRS = $(OBJS:.obj=.sbr) ############################################################################## # Targets GOALS = create.dir $(LIBNAME) all: $(GOALS) create.dir: @-if not exist $O\*.* mkdir $O clean: -if exist $O\*.obj del $O\*.obj -if exist $O\*.sbr del $O\*.sbr -if exist $O\*.lib del $O\*.lib -if exist $O\*.bsc del $O\*.bsc -if exist $O\*.pch del $O\*.pch -if exist $O\*.* rmdir $O $(LIBNAME): $(OBJS) link /lib /nologo /out:$(LIBNAME) $(OBJS) !if "$(BROWSE)" != "0" bscmake /nologo /o $O\$(PROJNAME).bsc $(SBRS) !endif ############################################################################## # Dependencies and individual build rules $O\comsupp.obj: $H\comdef.h $H\comip.h $O\comraise.obj: $H\comdef.h $H\comip.h $O\comutil.obj: $H\comdef.h $H\comutil.h $H\comip.h !endif