Annotation of mstools/mfc/src/makefile, revision 1.1.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.