Annotation of mstools/mfc/src/makefile, revision 1.1

1.1     ! root        1: # Makefile : Builds a Foundation class library variant.
        !             2: #
        !             3: # Usage: NMAKE CLEAN        (removes all intermediary files)
        !             4: #    or: NMAKE options      (builds one library variant (see below))
        !             5: # Note that an NMAKE CLEAN should be performed before building a new variant.
        !             6: #
        !             7: # 'Options' are one of each of:
        !             8: #   "MODEL=M"            (defaults to M)
        !             9: #           Any of the following models are accepted: S (small), M (medium),
        !            10: #           C (compact), or L (large).
        !            11: #   "TARGET=N"           (defaults to N)
        !            12: #           Any of the following platforms are accepted: R (real-mode DOS),
        !            13: #           W (windows), N (Windows NT).
        !            14: #   "DLL"              (defaults to 0)
        !            15: #           If this item is 1, a DLL version of the library is generated.
        !            16: #           If this item is 0, then a normal library is generated.
        !            17: #           Only Large model versions of DLLs are supported.
        !            18: #   "DEBUG"             (defaults to 1)
        !            19: #           If this item is 1, debugging support is compiled into
        !            20: #           the library.  If this item is 0, then debugging support
        !            21: #           is disabled.  Debug support does not include CodeView information.
        !            22: #   "CODEVIEW=0"           (defaults to 2, always)
        !            23: #           If this item is 1 CodeView information is compiled into
        !            24: #           the library.  You must use the /CODEVIEW link option
        !            25: #           in addition, when linking your executable.  If this item
        !            26: #           is 2, then only selected modules will be compiled with
        !            27: #           CodeView information.  You must use the link option /CODEVIEW.
        !            28: #           A value of 0 indicates that no CodeView information is to be
        !            29: #           generated.
        !            30: #   "OBJ=.\obj"          (defaults to '$$(MODEL)$(TARGET)$(DEBUG)'
        !            31: #           This optional specification specifies where temporary OBJ files
        !            32: #           are stored during the build process.  The directory is created or
        !            33: #           removed as necessary.
        !            34: #   "OPT="               (no default value)
        !            35: #           This allows additional compiler options to be added to the build.
        !            36: #           If more than one switch is desired, put double-quotes around the
        !            37: #           whole OPT= argument, e.g., "OPT=/J /W3".
        !            38: #   "NO_PCH=1" 
        !            39: #           Set this item to override the default use of precompiled headers
        !            40: #
        !            41: #   The default is to build MODEL=M TARGET=W DEBUG=1
        !            42: #
        !            43: #
        !            44: #############################################################################
        !            45: # Standard tools
        !            46: 
        !            47: !if "$(MODEL)"=="n" || "$(MODEL)"=="N"
        !            48: CPP=cl386 
        !            49: CC=cl386
        !            50: MKNT=1
        !            51: !else
        !            52: CPP=cl
        !            53: CC=cl
        !            54: !endif
        !            55: 
        !            56: #############################################################################
        !            57: # Parse these options:
        !            58: 
        !            59: !ifndef DEBUG
        !            60: DEBUG=1
        !            61: !endif
        !            62: 
        !            63: !ifndef DLL
        !            64: DLL=0
        !            65: !else
        !            66: # DLL must be large model
        !            67: MODEL=l
        !            68: !endif
        !            69: 
        !            70: !ifndef TARGET
        !            71: TARGET=W
        !            72: !endif
        !            73: 
        !            74: !ifndef MODEL
        !            75: MODEL=M
        !            76: !endif
        !            77: 
        !            78: !ifndef CODEVIEW
        !            79: CODEVIEW=2
        !            80: !endif
        !            81: 
        !            82: !if "$(DEBUG)" != "0"
        !            83: DEBUGSUF=D
        !            84: DEBDEFS=/D_DEBUG
        !            85: !ifdef MKNT
        !            86: DEBOPTS=/Od /Zd
        !            87: CVTOPTS=-g
        !            88: !else
        !            89: DEBOPTS=/Odr /f
        !            90: CVTOPTS=
        !            91: !endif
        !            92: !else
        !            93: DEBUGSUF=
        !            94: DEBDEFS=
        !            95: !ifdef MKNT
        !            96: DEBOPTS=/Os /Zd
        !            97: !else
        !            98: DEBOPTS=/Oxt
        !            99: !endif
        !           100: !endif
        !           101: 
        !           102: !if "$(CODEVIEW)" == "1"
        !           103: !ifdef MKNT
        !           104: DEBOPTS=$(DEBOPTS) /Zd
        !           105: !else
        !           106: DEBOPTS=$(DEBOPTS) /Zi
        !           107: !endif
        !           108: !endif
        !           109: 
        !           110: # CVEXTRA used for select CodeView information (main files only)
        !           111: !if "$(CODEVIEW)" == "2"
        !           112: !ifdef MKNT
        !           113: CVEXTRA=/Zd
        !           114: !else
        !           115: CVEXTRA=/Zi
        !           116: !endif
        !           117: !endif
        !           118: 
        !           119: !if "$(MODEL)"=="s" || "$(MODEL)"=="S"
        !           120: CL_MODEL=/AS
        !           121: !else
        !           122: !if "$(MODEL)"=="m" || "$(MODEL)"=="M"
        !           123: CL_MODEL=/AM
        !           124: !else
        !           125: !if "$(MODEL)"=="c" || "$(MODEL)"=="C"
        !           126: CL_MODEL=/AC
        !           127: !else
        !           128: !if "$(MODEL)"=="l" || "$(MODEL)"=="L"
        !           129: CL_MODEL=/AL
        !           130: !else
        !           131: !if "$(MODEL)"=="n" || "$(MODEL)"=="N"
        !           132: # Windows NT
        !           133: CL_MODEL=/D_NTWIN /Di386
        !           134: MKNT=1
        !           135: !else
        !           136: !error MODEL must be one of S, M, L, or N
        !           137: 
        !           138: !endif
        !           139: !endif
        !           140: !endif
        !           141: !endif
        !           142: !endif
        !           143: 
        !           144: !if "$(TARGET)"=="r" || "$(TARGET)"=="R"
        !           145: !ifdef MKNT
        !           146: TARGDEFS=
        !           147: TARGOPTS=
        !           148: EXPFLAG=
        !           149: !else
        !           150: TARGDEFS=/D_DOS
        !           151: TARGOPTS=
        !           152: EXPFLAG=
        !           153: !endif
        !           154: !else
        !           155: 
        !           156: !if "$(TARGET)"=="w" || "$(TARGET)"=="W"
        !           157: MKWIN=1
        !           158: !ifdef MKNT
        !           159: TARGDEFS=/D_WINDOWS /DWINVER=0x030a
        !           160: EXPFLAG=
        !           161: !else
        !           162: TARGDEFS=/D_WINDOWS
        !           163: TARGOPTS=/GA /GEs /G2
        !           164: EXPFLAG=/GEe
        !           165: !endif
        !           166: 
        !           167: !else
        !           168: 
        !           169: !error TARGET must be one of W, R
        !           170: 
        !           171: !endif
        !           172: !endif
        !           173: 
        !           174: 
        !           175: !if "$(OBJ)" == ""
        !           176: D=$$$(MODEL)$(TARGET)$(DEBUGSUF)
        !           177: !if "$(DLL)" != "0"
        !           178: D=$D.dll
        !           179: !endif
        !           180: !else
        !           181: D=$(OBJ)
        !           182: !endif
        !           183: 
        !           184: DEFS=$(DEBDEFS) $(TARGDEFS)
        !           185: CL_OPT=/W3 $(DEBOPTS) $(TARGOPTS) $(OPT)
        !           186: 
        !           187: !if "$(DLL)" == "0"
        !           188: # Normal library
        !           189: GOAL=$(MODEL)afxc$(TARGET)$(DEBUGSUF)
        !           190: !else
        !           191: # DLL library (SS!=DS) - only Large model supported (compact model is possible)
        !           192: GOAL=$(MODEL)afxd$(TARGET)$(DEBUGSUF)
        !           193: CL_MODEL=$(CL_MODEL)w
        !           194: TARGOPTS=/GD /G2
        !           195: # /GD will define _WINDLL
        !           196: !endif
        !           197: 
        !           198: #############################################################################
        !           199: # Library Components
        !           200: 
        !           201: OBJECT=$D\object.obj $D\except.obj $D\dumpcont.obj $D\abort.obj \
        !           202:        $D\assert.obj $D\archive.obj $D\archivex.obj $D\memory.obj \
        !           203:        $D\validadd.obj $D\dumpinit.obj $D\version.obj
        !           204: 
        !           205: FILES=$D\file.obj $D\filetxt.obj $D\filemem.obj $D\filex.obj
        !           206: 
        !           207: COLLECTIONS=$D\array_b.obj $D\array_d.obj $D\array_o.obj $D\array_p.obj \
        !           208:        $D\array_s.obj $D\array_w.obj $D\list_o.obj $D\list_p.obj \
        !           209:        $D\list_s.obj $D\map_pp.obj $D\map_pw.obj $D\map_so.obj \
        !           210:        $D\map_sp.obj $D\map_ss.obj $D\map_wo.obj $D\map_wp.obj $D\plex.obj
        !           211: 
        !           212: MISC=$D\string.obj $D\stringex.obj $D\time.obj
        !           213: 
        !           214: WINDOWS=$D\window.obj $D\wingdi.obj $D\winctrl.obj $D\winstr.obj \
        !           215:        $D\winapp.obj $D\winmain.obj $D\winmenu.obj $D\winmdi.obj $D\trace.obj
        !           216: 
        !           217: !ifdef MKNT
        !           218: WINEXTRAS=$D\winbtn.obj $D\windlgs.obj
        !           219: !else
        !           220: WINEXTRAS=$D\penctrl.obj $D\winbtn.obj $D\windlgs.obj
        !           221: !endif
        !           222: 
        !           223: !if "$(DLL)" == "0"
        !           224: OLE= $D\olemisc.obj $D\olefile.obj $D\olecli.obj $D\oleui.obj $D\oleui2.obj \
        !           225:        $D\olesvr.obj
        !           226: !else
        !           227: OLE= # OLE not supported for DLLs
        !           228: !endif
        !           229: 
        !           230: OBJS=$(OBJS) $(OBJECT) $(FILES) $(COLLECTIONS) $(MISC)
        !           231: 
        !           232: !ifdef MKWIN
        !           233: OBJS=$(OBJS) $(WINDOWS) $(WINEXTRAS) $(OLE)
        !           234: !endif
        !           235: 
        !           236: 
        !           237: 
        !           238: 
        !           239: #############################################################################
        !           240: # Set CPPFLAGS for use with .cpp.obj and .c.obj rules
        !           241: # Define rule for use with OBJ directory
        !           242: # C++ uses a PCH file
        !           243: 
        !           244: CPPFLAGS=$(CPPFLAGS) $(CL_STANDARD) $(CL_MODEL) $(CL_OPT) $(DEFS) 
        !           245: 
        !           246: !ifndef NO_PCH
        !           247: PCH_FILE=$D\afxpch.pch
        !           248: CPPFLAGS=$(CPPFLAGS) /Yu /Fp$(PCH_FILE)
        !           249: !else
        !           250: PCH_FILE=
        !           251: !endif
        !           252: 
        !           253: CFLAGS=$(CFLAGS) $(CL_STANDARD) $(CL_MODEL) $(CL_OPT) $(DEFS) 
        !           254: 
        !           255: .SUFFIXES : .cpp
        !           256: 
        !           257: .cpp{$D}.obj:
        !           258: !ifdef MKNT
        !           259:        $(CPP) $(CPPFLAGS) /c /Fo$@ $<
        !           260: !else
        !           261:        $(CPP) @<<
        !           262:                $(CPPFLAGS) /c /Fo$@ $<
        !           263: <<
        !           264: !endif
        !           265: 
        !           266: .c{$D}.obj:
        !           267: !ifdef MKNT
        !           268:        $(CC) $(CFLAGS) /c /Fo$@ $<
        !           269: !else
        !           270:        $(CC) @<< 
        !           271:                $(CFLAGS) /c /Fo$@ $<
        !           272: <<
        !           273: !endif
        !           274: 
        !           275: #############################################################################
        !           276: # Goal to build
        !           277: 
        !           278: goal: $D ..\lib\$(GOAL).lib
        !           279: 
        !           280: $D:
        !           281:        IF NOT EXIST $D mkdir $D
        !           282: 
        !           283: clean:
        !           284:        -erase $D\*.obj
        !           285:        -erase $D\*.pch
        !           286:        -rmdir $D
        !           287: 
        !           288: 
        !           289: #############################################################################
        !           290: # Precompiled header file
        !           291: 
        !           292: !ifndef NO_PCH
        !           293: INC_DIR=..\include
        !           294: HDRS=$(INC_DIR)\afx.h $(INC_DIR)\afx.inl $(INC_DIR)\afxcoll.h \
        !           295:                $(INC_DIR)\afxwin.h $(INC_DIR)\afxwin.inl $(INC_DIR)\afxmsg.h \
        !           296:                $(INC_DIR)\afxres.h \
        !           297:                $(INC_DIR)\afxole.h $(INC_DIR)\afxoleui.h
        !           298: 
        !           299: $D\object.obj $(PCH_FILE): object.cpp $(HDRS)
        !           300:        $(CPP) /c /Yc /Fp$(PCH_FILE) $(CL_STANDARD) $(CL_MODEL) $(CL_OPT) $(DEFS) $(CVEXTRA) /c /Fo$D\object.obj object.cpp
        !           301: !endif
        !           302: 
        !           303: ############################################################################
        !           304: # CodeView for select files
        !           305: !if "$(CODEVIEW)"=="2"
        !           306: $D\memory.obj : memory.cpp
        !           307:        $(CPP) $(CPPFLAGS) $(CVEXTRA) /c /Fo$D\memory.obj memory.cpp
        !           308: 
        !           309: !ifdef MKWIN
        !           310: $D\winmain.obj : winmain.cpp
        !           311:        $(CPP) $(CPPFLAGS) $(CVEXTRA) /c /Fo$D\winmain.obj winmain.cpp
        !           312: 
        !           313: $D\window.obj : window.cpp
        !           314:        $(CPP) $(CPPFLAGS) $(CVEXTRA) /c /Fo$D\window.obj window.cpp
        !           315: 
        !           316: $D\winapp.obj : winapp.cpp
        !           317:        $(CPP) $(CPPFLAGS) $(CVEXTRA) /c /Fo$D\winapp.obj winapp.cpp
        !           318: !endif
        !           319: !endif
        !           320: 
        !           321: #############################################################################
        !           322: # Windows 3.0 loader export/version number
        !           323: $D\version.obj : version.cpp
        !           324: !ifdef MKNT
        !           325:        $(CPP) $(CPPFLAGS) $(EXPFLAG) /c /Fo$D\version.obj version.cpp
        !           326: !else
        !           327:        $(CPP) @<<
        !           328: $(CPPFLAGS) $(EXPFLAG) /c /Fo$D\version.obj version.cpp
        !           329: <<
        !           330: !endif
        !           331: 
        !           332: 
        !           333: #############################################################################
        !           334: # Library results
        !           335: 
        !           336: ..\lib\$(GOAL).lib: $D $(OBJS)
        !           337:        -erase $@
        !           338: !ifdef MKNT
        !           339:        coff -lib -out:..\lib\$(GOAL).lib $(OBJS)
        !           340: !else
        !           341:        lib /PAGESIZE:128 @<<
        !           342: ..\lib\$(GOAL).lib
        !           343: y
        !           344: $(OBJS)
        !           345: nul
        !           346: ;
        !           347: <<
        !           348: !endif
        !           349: 
        !           350: #############################################################################

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.