# # Command & Conquer(tm) # Copyright 2025 Electronic Arts Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # #* $Header$ #*********************************************************************************************** #*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *** #*********************************************************************************************** #* * #* Project Name : Command & Conquer * #* * #* File Name : MAKEFILE * #* * #* Programmer : Joe L. Bostic * #* * #* Start Date : 03/02/95 * #* * #* Last Update : March 2, 1995 [JLB] * #* * #*---------------------------------------------------------------------------------------------* #* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * .SILENT .OPTIMIZE .ERASE #--------------------------------------------------------------------------- # Verify user's environment #--------------------------------------------------------------------------- !ifndef %WWFLAT WWFLAT=c:\wwflat32 #!error WWFLAT must be set to the root of the library directory. !else WWFLAT=$(%WWFLAT) !endif !ifndef %WATCOM WATCOM=c:\projects\c&c\code\watcom #!error WATCOM must be set to the Watcom root directory. !else WATCOM=$(%WATCOM) !endif #--------------------------------------------------------------------------- # Path macros: one path for each file type. # These paths are used to tell make where to find/put each file type. #--------------------------------------------------------------------------- .asm: . .c: . .cpp: . .h: . #.obj: obj .obj: r: .lib: $(WWFLAT)\lib .exe: ..\run #=========================================================================== # Flags for the different project assembly tools. #=========================================================================== CC_CFG = /i=..\vq\include # Includes player (VQ) directory. CC_CFG += /i=$(WWFLAT)\INCLUDE # Normal library include directory. CC_CFG += /i=watcom\H # Normal Watcom include directory. CC_CFG += /i=..\gcl510\H # Includes Greenleaf headers. CC_CFG += /d2 # Debugging information. CC_CFG += /of+ # Generate tracable stack frames. CC_CFG += /zp1 # Pack structures on byte boundary. CC_CFG += /5s # Pentium optimized stack calling conventions. CC_CFG += /xs # Exception handling enabled. CC_CFG += /s # Remove stack check calls. CC_CFG += /j # char is now signed. CC_CFG += /fh=conquer.pch # Use precompiled headers. CC_CFG += /we # Treat all warnings as errors. CC_CFG += /w8 # Most warnings enabled. CC_CFG += /ri # char and shorts are returned as int. CC_CFG += /zq # Operate quietly. CC_CFG += /zm # Each routine to be in its own segment. CC_CFG += /zld # Disable autodependency information in object file. CC_CFG += /od # *** Disable all optimizations *** CC_CFG += /DDOS4G # Must be defined for Greenleaf CC_CFG += /DGF_WATCOM_S # Must be defined for Greenleaf with /3s CC_CFG += /ol # Loop optimizations enabled. CC_CFG += /or # Reorder instructions for best pipeline usage. CC_CFG += /oe # Inline is enabled. CC_CFG += /oi # Expand intrisic functions inline. CC_CFG += /on # Allow numerically unstable operations. CC_CFG += /oo # Compile even if low on memory (i.e. less than 64meg). CC_CFG += /oa # Relax aliasing constraints. #CC_CFG += /ot # Speed is more important than space optimizations. #CC_CFG += /fi=watcom.h # Special Watcom control file. ASM_CFG = /i$(WWFLAT)\INCLUDE # Include directory. ASM_CFG += /zd # Debugging information line numbers. ASM_CFG += /t # Quiet operation. ASM_CFG += /m # Allow multiple passes. ASM_CFG += /w+ # Enable maximum warnings. ASM_CFG += /jJUMPS # Enable jump optimizations. ASM_CFG += /ml # Case sensitivity on code. #ASM_CFG += /zi # Full debugging information. #--------------------------------------------------------------------------- # Implicit rules # Compiler: # ($< = full dependent with path) # Assembler: # output obj's are constructed from .obj: & the $& macro # ($< = full dependent with path) # tasm's cfg file is not invoked as a response file. #--------------------------------------------------------------------------- .c.obj:#.AUTODEPEND echo Compiling $< *watcom\wcc $(C_CFG) -foobj\$^. $< .cpp.obj: #.AUTODEPEND echo Compiling $< !ifdef %NETWORK f:\projects\c&c\slaves\NETEXEC /v $(%NETWHO)c $^& if exist $(%CCNETDIR)\code\netmake.err %abort !else *watcom\wpp386 $(CC_CFG) -foobj\$^. $< !endif .asm.obj: echo Assembling $< !ifdef %NETWORK f:\projects\c&c\slaves\NETEXEC /v $(%NETWHO)a $^& !else watcom\tasm32 $(ASM_CFG) $<, obj\$^. !endif #--------------------------------------------------------------------------- # Project-dependent variables #--------------------------------------------------------------------------- OBJECTS = & AADATA.OBJ & ABSTRACT.OBJ & ADATA.OBJ & AIRCRAFT.OBJ & ANIM.OBJ & AUDIO.OBJ & BASE.OBJ & BBDATA.OBJ & BDATA.OBJ & BUILDING.OBJ & BULLET.OBJ & CARGO.OBJ & CCFILE.OBJ & CDATA.OBJ & CDFILE.OBJ & CELL.OBJ & CHEKLIST.OBJ & COLRLIST.OBJ & COMBAT.OBJ & COMBUF.OBJ & CONFDLG.OBJ & CONNECT.OBJ & CONQUER.OBJ & CONST.OBJ & CONTROL.OBJ & COORD.OBJ & COORDA.OBJ & CREDITS.OBJ & CREW.OBJ & DEBUG.OBJ & DESCDLG.OBJ & DIAL8.OBJ & DIALOG.OBJ & DISPLAY.OBJ & DPMI.OBJ & DRIVE.OBJ & EDIT.OBJ & EVENT.OBJ & FACING.OBJ & FACTORY.OBJ & FINDPATH.OBJ & FLASHER.OBJ & FLY.OBJ & FOOT.OBJ & FUSE.OBJ & GADGET.OBJ & GAMEDLG.OBJ & GAUGE.OBJ & GLOBALS.OBJ & GOPTIONS.OBJ & GSCREEN.OBJ & HDATA.OBJ & HEAP.OBJ & HELP.OBJ & HOUSE.OBJ & IDATA.OBJ & INFANTRY.OBJ & INI.OBJ & INIT.OBJ & INTRO.OBJ & IOMAP.OBJ & IOOBJ.OBJ & IPX.OBJ & IPXADDR.OBJ & IPXCONN.OBJ & IPXGCONN.OBJ & IPXMGR.OBJ & IPXPROT.OBJ & JSHELL.OBJ & KEYFBUFF.OBJ & KEYFRAME.OBJ & LAYER.OBJ & LINK.OBJ & LIST.OBJ & LOADDLG.OBJ & LOGIC.OBJ & MAP.OBJ & MAPEDDLG.OBJ & MAPEDIT.OBJ & MAPEDPLC.OBJ & MAPEDSEL.OBJ & MAPEDTM.OBJ & MAPSEL.OBJ & MENUS.OBJ & MISSION.OBJ & MIXFILE.OBJ & MONOC.OBJ & MOUSE.OBJ & MPLAYER.OBJ & MSGBOX.OBJ & MSGLIST.OBJ & NETDLG.OBJ & NOSEQCON.OBJ & NULLCONN.OBJ & NULLDLG.OBJ & NULLMGR.OBJ & OBJECT.OBJ & ODATA.OBJ & OPTIONS.OBJ & OVERLAY.OBJ & POWER.OBJ & PROFILE.OBJ & QUEUE.OBJ & RADAR.OBJ & RADIO.OBJ & RAND.OBJ & RAWFILE.OBJ & REINF.OBJ & SAVELOAD.OBJ & SCENARIO.OBJ & SCORE.OBJ & SCROLL.OBJ & SDATA.OBJ & SHAPEBTN.OBJ & SIDEBAR.OBJ & SLIDER.OBJ & SMUDGE.OBJ & SOUNDDLG.OBJ & STARTUP.OBJ & SUPPORT.OBJ & TAB.OBJ & TARCOM.OBJ & TARGET.OBJ & TDATA.OBJ & TEAM.OBJ & TEAMTYPE.OBJ & TECHNO.OBJ & TEMPLATE.OBJ & TERRAIN.OBJ & TEXTBTN.OBJ & THEME.OBJ & TOGGLE.OBJ & TRIGGER.OBJ & TURRET.OBJ & TXTLABEL.OBJ & TXTPRNT.OBJ & UDATA.OBJ & UNIT.OBJ & VECTOR.OBJ & VISUDLG.OBJ PROJ_LIBS = & wwflat32.lib VQ_LIBS = & vqa32wp.lib & vqm32wp.lib GCL_LIBS = & gclfr3s.lib ############################################################################ # Pre-compilation process. Move old files to backup directory and switch # to monochrome screen. .BEFORE mode mono -if exist *.pch del *.pch -if exist $(%CCNETDIR)\code\netmake.err del $(%CCNETDIR)\code\netmake.err -if exist *.bak move *.bak bak # Switch back to normal screen at compilation end. .AFTER mode co80 # Switch back to normal screen if there was an error. .ERROR mode co80 ############################################################################# # Default target all: conquer.exe ############################################################################# # Builds the stub replacement program. CWSTUB.OBJ: CWSTUB.C *watcom\wcc /i=watcom\h /dQUIET /dVMM /ms /zQ -foobj\$^. $< CWSTUB.EXE: CWSTUB.OBJ *watcom\wlink system dos file obj\cwstub.obj name cwstub.exe option quiet library watcom\lib286\dos\clibs.lib, watcom\lib286\math87s.lib, watcom\lib286\dos\emu87.lib ############################################################################# # Build the EXE conquer.exe: $(OBJECTS) cwstub.exe conquer.lnk $(WWFLAT)\lib\wwflat32.lib Echo "conquer.exe" linking phase. !ifdef %NETWORK echo Waiting for objects... for %index in ($(OBJECTS)) do WAITFILE $(%CCNETDIR)\code\obj\%index # copy $(%CCNETDIR)\code\obj\*.obj $(%CCLOCALDIR)\code\obj /U copy $(%CCNETDIR)\code\obj\*.obj r: /U !endif watcom\wlink name ..\run\$@ @conquer.lnk Echo "conquer.exe" executable completed. !ifdef %WWOBJ xcopy /M $(WWOBJ)obj\*.obj obj !endif # watcom\wlink $(LINK_CFG) name ..\run\$@ @conquer.lnk ############################################################################# # This creates the linker command file. conquer.lnk : makefile %create $^@ %append $^@ system dos4g %append $^@ debug all %append $^@ option stack=8k %append $^@ option redefsok %append $^@ option quiet %append $^@ option map %append $^@ option cache %append $^@ option eliminate %append $^@ option caseexact # %append $^@ option stub=cwstub.exe # for %index in ($(OBJECTS)) do %append $^@ file obj\%index for %index in ($(OBJECTS)) do %append $^@ file r:\%index for %index in ($(PROJ_LIBS)) do %append $^@ library $(WWFLAT)\lib\%index for %index in ($(VQ_LIBS)) do %append $^@ library ..\vq\lib\%index for %index in ($(GCL_LIBS)) do %append $^@ library ..\gcl510\w10\%index bind: .SYMBOLIC -copy ..\run\conquer.exe ..\run\temp.exe -wstrip ..\run\temp.exe -watcom\4gwbind watcom\4gwpro.exe ..\run\temp.exe ..\run\c&c.exe -f -del ..\run\temp.exe # -wstrip ..\run\install.exe # -move ..\run\install.exe ..\run\temp.exe # -watcom\4gwbind watcom\4gwpro.exe ..\run\temp.exe ..\run\install.exe -f # -del ..\run\temp.exe ############################################################# # Update source and art to network. update: bind .SYMBOLIC -del *.pch -del *.tr -del *.td -del *.bak -del *.rst -del ..\run\*.swp -attrib -r f:\projects\c&c\cd\*.* /s -copy ..\cd\*.* f:\projects\c&c\cd /v /u /s -deltree /Y f:\projects\c&c\cd\install -md f:\projects\c&c\cd\install -copy ..\run\*.* f:\projects\c&c\cd\install /v /u -del f:\projects\c&c\cd\install\*.cfg -del f:\projects\c&c\cd\install\*.dat -del f:\projects\c&c\cd\install\*.doc -del f:\projects\c&c\cd\install\*.ini -del f:\projects\c&c\cd\install\*.bin -del f:\projects\c&c\cd\install\*.lbm -del f:\projects\c&c\cd\install\*.out -del f:\projects\c&c\cd\install\*.sym -del f:\projects\c&c\cd\install\*.log -del f:\projects\c&c\cd\install\*.txt -del f:\projects\c&c\cd\install\*.bak -del f:\projects\c&c\cd\install\*.rst -del f:\projects\c&c\cd\install\savegame.* -move f:\projects\c&c\cd\install\conquer.exe f:\projects\c&c\playtest -attrib +r f:\projects\c&c\cd\*.* /s -copy watcom\dos4gw.exe f:\projects\c&c\playtest -deltree /Y f:\projects\c&c\art\ingame -md f:\projects\c&c\art\ingame -xcopy ..\art\ingame\*.* f:\projects\c&c\art\ingame /e /v /s -del /Y f:\projects\c&c\code\*.* -copy *.* f:\projects\c&c\code /v /s /u ############################################################################# # Explicit rules to build the master zip files (used by Codewrite merge). BILL_R.ZIP: pkzip.dat .SYMBOLIC -del f:\projects\c&c\bill_r.zip -pkzip -p -u -x@pkzip.dat f:\projects\c&c\bill_r.zip *.* eng\*.* MARIA_L.ZIP: pkzip.dat .SYMBOLIC -del f:\projects\c&c\maria_l.zip -pkzip -p -u -x@pkzip.dat f:\projects\c&c\maria_l.zip *.* eng\*.* BARRY_G.ZIP: pkzip.dat .SYMBOLIC -del f:\projects\c&c\barry_g.zip -pkzip -p -u -x@pkzip.dat f:\projects\c&c\barry_g.zip *.* eng\*.* PHIL_G.ZIP: pkzip.dat .SYMBOLIC -del f:\projects\c&c\phil_g.zip -pkzip -p -u -x@pkzip.dat f:\projects\c&c\phil_g.zip *.* eng\*.* DAVID_D.ZIP: pkzip.dat .SYMBOLIC -del f:\projects\c&c\david_d.zip -pkzip -p -u -x@pkzip.dat f:\projects\c&c\david_d.zip *.* eng\*.* BILL_P.ZIP: pkzip.dat .SYMBOLIC -del f:\projects\c&c\bill_p.zip -pkzip -p -u -x@pkzip.dat f:\projects\c&c\bill_p.zip *.* eng\*.* # Special "mega-zip" process. JOE_B.ZIP: pkzip.dat .SYMBOLIC -pkzip -rp -u -xcps\*.* -x@pkzip.dat f:\projects\c&c\joe_b.zip ############################################################################# # Rebuilds the master zip control file. This is used by the zip process. PKZIP.DAT: makefile .SYMBOLIC %create $^@ %append $^@ *.000 %append $^@ *.@@@ %append $^@ *.bak %append $^@ *.bat %append $^@ *.cfg %append $^@ *.dat %append $^@ *.def %append $^@ *.doc %append $^@ *.dsw %append $^@ *.err %append $^@ *.ewp %append $^@ *.ext %append $^@ *.i %append $^@ *.ide %append $^@ *.lnk %append $^@ *.log %append $^@ *.lst %append $^@ *.mac %append $^@ *.map %append $^@ *.mk %append $^@ *.mk1 %append $^@ *.obj %append $^@ *.out %append $^@ *.pch %append $^@ *.pfs %append $^@ *.pif %append $^@ *.pjt %append $^@ *.prf %append $^@ *.pro %append $^@ *.ptg %append $^@ *.rc %append $^@ *.rep %append $^@ *.rpt %append $^@ *.rst %append $^@ *.sym %append $^@ *.tag %append $^@ *.td %append $^@ *.td %append $^@ *.tgt %append $^@ *.tmp %append $^@ *.tr %append $^@ *.tr %append $^@ *.vec %append $^@ *.wpj %append $^@ *.zip %append $^@ state.rst #--------------------------------------------------------------------------- # Dependency macros (makes defining dependencies easier) #--------------------------------------------------------------------------- GENERAL_H = defines.h function.h externs.h conquer.h vector.h heap.h & debug.h jshell.h compat.h TECHNO_H = facing.h techno.h mission.h stage.h cargo.h object.h abstract.h UNIT_H = unit.h tarcom.h turret.h drive.h foot.h radio.h $(TECHNO_H) INFANTRY_H = infantry.h foot.h radio.h $(TECHNO_H) AIRCRAFT_H = aircraft.h fly.h radio.h $(TECHNO_H) BUILDING_H = building.h radio.h $(TECHNO_H) BULLET_H = bullet.h fly.h fuse.h object.h abstract.h OBJ_H = $(UNIT_H) $(INFANTRY_H) $(AIRCRAFT_H) $(BUILDING_H) $(BULLET_H) MAP_H = base.h mapedit.h mouse.h scroll.h help.h tab.h power.h sidebar.h & radar.h display.h map.h gscreen.h cell.h GADGET_H = textbtn.h shapebtn.h slider.h gauge.h dial8.h edit.h & toggle.h list.h cheklist.h control.h gadget.h link.h FILE_H = ccfile.h cdfile.h mixfile.h rawfile.h wwfile.h link.h TEAM_H = team.h teamtype.h trigger.h IPX_H = ipx.h ipxaddr.h NET_H = combuf.h connect.h connmgr.h ipx.h ipxaddr.h ipxconn.h ipxgconn.h & ipxmgr.h noseqcon.h nullconn.h nullmgr.h MISC_H = ftimer.h logic.h score.h theme.h event.h queue.h special.h #--------------------------------------------------------------------------- # Dependencies (This is not totally accurate; if you're not sure, rebuild # everything!) #--------------------------------------------------------------------------- aadata.obj: aadata.cpp $(GENERAL_H) type.h abstract.obj: abstract.cpp $(GENERAL_H) abstract.h adata.obj: adata.cpp $(GENERAL_H) type.h aircraft.obj: aircraft.cpp $(GENERAL_H) $(AIRCRAFT_H) anim.obj: anim.cpp $(GENERAL_H) anim.h stage.h object.h audio.obj: audio.cpp $(GENERAL_H) audio.h base.obj: base.cpp $(GENERAL_H) type.h bbdata.obj: bbdata.cpp $(GENERAL_H) type.h bdata.obj: bdata.cpp $(GENERAL_H) type.h building.obj: building.cpp $(GENERAL_H) $(BUILDING_H) bullet.obj: bullet.cpp $(GENERAL_H) $(BULLET_H) cargo.obj: cargo.cpp $(GENERAL_H) $(TECHNO_H) cargo.h ccfile.obj: ccfile.cpp $(GENERAL_H) $(FILE_H) cdata.obj: cdata.cpp $(GENERAL_H) type.h cdfile.obj: cdfile.cpp $(GENERAL_H) $(FILE_H) cell.obj: cell.cpp $(GENERAL_H) $(MAP_H) cheklist.obj: cheklist.cpp $(GENERAL_H) $(GADGET_H) colrlist.obj: colrlist.cpp $(GENERAL_H) $(GADGET_H) combat.obj: combat.cpp $(GENERAL_H) combuf.obj: combuf.cpp $(GENERAL_H) combuf.h confdlg.obj: confdlg.cpp $(GENERAL_H) $(GADGET_H) connect.obj: connect.cpp $(GENERAL_H) connect.h combuf.h conquer.obj: conquer.cpp $(GENERAL_H) $(MISC_H) $(OBJ_H) const.obj: const.cpp $(GENERAL_H) control.obj: control.cpp $(GENERAL_H) $(GADGET_H) coord.obj: coord.cpp $(GENERAL_H) coorda.obj: coorda.asm credits.obj: credits.cpp $(GENERAL_H) credits.h crew.obj: crew.cpp $(GENERAL_H) crew.h debug.obj: debug.cpp $(GENERAL_H) debug.h deldlg.obj: deldlg.cpp $(GENERAL_H) $(GADGET_H) descdlg.obj: descdlg.cpp $(GENERAL_H) $(GADGET_H) dial8.obj: dial8.cpp $(GENERAL_H) $(GADGET_H) dialog.obj: dialog.cpp $(GENERAL_H) display.obj: display.cpp $(GENERAL_H) $(MAP_H) dpmi.obj: dpmi.cpp $(GENERAL_H) drive.obj: drive.cpp $(GENERAL_H) $(TECHNO_H) edit.obj: edit.cpp $(GENERAL_H) $(GADGET_H) event.obj: event.cpp $(GENERAL_H) $(MISC_H) facing.obj: facing.cpp $(GENERAL_H) facing.h factory.obj: factory.cpp $(GENERAL_H) factory.h findpath.obj: findpath.cpp $(GENERAL_H) flasher.obj: flasher.cpp $(GENERAL_H) flasher.h fly.obj: fly.cpp $(GENERAL_H) fly.h foot.obj: foot.cpp $(GENERAL_H) $(INFANTRY_H) fuse.obj: fuse.cpp $(GENERAL_H) fuse.h gadget.obj: gadget.cpp $(GENERAL_H) $(GADGET_H) gamedlg.obj: gamedlg.cpp $(GENERAL_H) $(GADGET_H) gauge.obj: gauge.cpp $(GENERAL_H) $(GADGET_H) globals.obj: globals.cpp $(GENERAL_H) goptions.obj: goptions.cpp $(GENERAL_H) $(GADGET_H) gscreen.obj: gscreen.cpp $(GENERAL_H) $(MAP_H) hdata.obj: hdata.cpp $(GENERAL_H) type.h heap.obj: heap.cpp $(GENERAL_H) $(MISC_H) help.obj: help.cpp $(GENERAL_H) $(MAP_H) house.obj: house.cpp $(GENERAL_H) house.h idata.obj: idata.cpp $(GENERAL_H) type.h infantry.obj: infantry.cpp $(GENERAL_H) $(INFANTRY_H) ini.obj: ini.cpp $(GENERAL_H) $(MISC_H) init.obj: init.cpp $(GENERAL_H) $(MISC_H) $(OBJ_H) iomap.obj: iomap.cpp $(GENERAL_H) $(MAP_H) $(FILE_H) ioobj.obj: ioobj.cpp $(GENERAL_H) $(FILE_H) $(OBJ_H) ipx.obj: ipx.cpp $(GENERAL_H) $(IPX_H) ipxaddr.obj: ipxaddr.cpp $(GENERAL_H) $(IPX_H) ipxconn.obj: ipxconn.cpp $(GENERAL_H) $(NET_H) ipxgconn.obj: ipxgconn.cpp $(GENERAL_H) $(NET_H) ipxmgr.obj: ipxmgr.cpp $(GENERAL_H) $(NET_H) ipxreal.ibn: jshell.obj: jshell.cpp $(GENERAL_H) $(MISC_H) keyfbuff.obj: keyfbuff.asm keyframe.obj: keyframe.cpp $(GENERAL_H) layer.obj: layer.cpp $(GENERAL_H) $(MISC_H) link.obj: link.cpp $(GENERAL_H) link.h list.obj: list.cpp $(GENERAL_H) $(GADGET_H) loaddlg.obj: loaddlg.cpp $(GENERAL_H) $(GADGET_H) logic.obj: logic.cpp $(GENERAL_H) $(MISC_H) map.obj: map.cpp $(GENERAL_H) $(MAP_H) mapsel.obj: mapsel.cpp $(GENERAL_H) mapeddlg.obj: mapeddlg.cpp $(GENERAL_H) $(MAP_H) $(OBJ_H) mapedit.obj: mapedit.cpp $(GENERAL_H) $(MAP_H) $(OBJ_H) mapedplc.obj: mapedplc.cpp $(GENERAL_H) $(MAP_H) $(OBJ_H) mapedsel.obj: mapedsel.cpp $(GENERAL_H) $(MAP_H) $(OBJ_H) mapedtm.obj: mapedtm.cpp $(GENERAL_H) $(MAP_H) $(OBJ_H) menus.obj: menus.cpp $(GENERAL_H) mission.obj: mission.cpp $(GENERAL_H) mission.h stage.h cargo.h object.h abstract.h mixfile.obj: mixfile.cpp $(GENERAL_H) $(FILE_H) monoc.obj: monoc.cpp $(GENERAL_H) mouse.obj: mouse.cpp $(GENERAL_H) $(MAP_H) mplayer.obj: mplayer.cpp $(GENERAL_H) msgbox.obj: msgbox.cpp $(GENERAL_H) $(GADGET_H) msglist.obj: msglist.cpp $(GENERAL_H) $(GADGET_H) netdlg.obj: netdlg.cpp $(GENERAL_H) $(GADGET_H) $(NET_H) noseqcon.obj: noseqcon.cpp $(GENERAL_H) noseqcon.h connect.h combuf.h nullconn.obj: nullconn.cpp $(GENERAL_H) nullconn.h noseqcon.h connect.h combuf.h nulldlg.obj: nulldlg.cpp $(GENERAL_H) nullmgr.h nullconn.h connmgr.h noseqcon.h connect.h combuf.h nullmgr.obj: nullmgr.cpp $(GENERAL_H) nullmgr.h nullconn.h connmgr.h noseqcon.h connect.h combuf.h object.obj: object.cpp $(GENERAL_H) object.h abstract.h odata.obj: odata.cpp $(GENERAL_H) type.h options.obj: options.cpp $(GENERAL_H) $(GADGET_H) overlay.obj: overlay.cpp $(GENERAL_H) overlay.h object.h power.obj: power.cpp $(GENERAL_H) $(MAP_H) profile.obj: profile.cpp $(GENERAL_H) queue.obj: queue.cpp $(GENERAL_H) $(MISC_H) rand.obj: rand.cpp $(GENERAL_H) radar.obj: radar.cpp $(GENERAL_H) $(MAP_H) radio.obj: radio.cpp $(GENERAL_H) $(TECHNO_H) rawfile.obj: rawfile.cpp $(GENERAL_H) $(FILE_H) reinf.obj: reinf.cpp $(GENERAL_H) $(MISC_H) savedlg.obj: savedlg.cpp $(GENERAL_H) $(GADGET_H) saveload.obj: saveload.cpp $(GENERAL_H) $(MISC_H) scenario.obj: scenario.cpp $(GENERAL_H) $(MISC_H) score.obj: score.cpp $(GENERAL_H) scroll.obj: scroll.cpp $(GENERAL_H) $(MAP_H) sdata.obj: sdata.cpp $(GENERAL_H) type.h shapebtn.obj: shapebtn.cpp $(GENERAL_H) $(GADGET_H) sidebar.obj: sidebar.cpp $(GENERAL_H) $(MAP_H) slider.obj: slider.cpp $(GENERAL_H) $(GADGET_H) smudge.obj: smudge.cpp $(GENERAL_H) smudge.h object.h sounddlg.obj: sounddlg.cpp $(GENERAL_H) $(GADGET_H) sounddlg.h startup.obj: startup.cpp $(GENERAL_H) stuff.obj: stuff.cpp $(GENERAL_H) $(MISC_H) support.obj: support.asm tab.obj: tab.cpp $(GENERAL_H) $(MAP_H) tarcom.obj: tarcom.cpp $(GENERAL_H) $(UNIT_H) target.obj: target.cpp $(GENERAL_H) target.h tdata.obj: tdata.cpp $(GENERAL_H) type.h team.obj: team.cpp $(GENERAL_H) $(TEAM_H) teamtype.obj: teamtype.cpp $(GENERAL_H) $(TEAM_H) techno.obj: techno.cpp $(GENERAL_H) $(TECHNO_H) template.obj: template.cpp $(GENERAL_H) template.h object.h terrain.obj: terrain.cpp $(GENERAL_H) terrain.h stage.h object.h textbtn.obj: textbtn.cpp $(GENERAL_H) $(GADGET_H) theme.obj: theme.cpp $(GENERAL_H) theme.h toggle.obj: toggle.cpp $(GENERAL_H) $(GADGET_H) trigger.obj: trigger.cpp $(GENERAL_H) $(TEAM_H) turret.obj: turret.cpp $(GENERAL_H) $(UNIT_H) txtlabel.obj: txtlabel.cpp $(GENERAL_H) $(GADGET_H) txtprnt.obj: txtprnt.asm udata.obj: udata.cpp $(GENERAL_H) type.h unit.obj: unit.cpp $(GENERAL_H) $(UNIT_H) vector.obj: vector.cpp $(GENERAL_H) $(MISC_H) visudlg.obj: visudlg.cpp $(GENERAL_H) $(GADGET_H) #-------------------------------------------------------------------------- # The IPX assembly object files are created in a special way: # IPXREAL is the real-mode code that gets stuffed into memory by protected- # mode code. It's assembled, then converted into a big header file by # the 'EBN' utility. # IPXPROT is the protected-mode code that includes IPXREAL.IBN, and # provides routines to let C++ read the code's address & size. #-------------------------------------------------------------------------- #obj\ipxreal.ibn: obj\ipxreal.obj # %create $^*.rsp # %append $^*.rsp obj\$^&.obj # %append $^*.rsp obj\$^&.exe # %append $^*.rsp obj\$^&.map # tlink @$^*.rsp # tdstrip obj\ipxreal.exe # utils\ebn obj\ipxreal.exe r:\ipxreal.ibn: r:\ipxreal.obj %create $^*.rsp %append $^*.rsp r:\$^&.obj %append $^*.rsp r:\$^&.exe %append $^*.rsp r:\$^&.map tlink @$^*.rsp tdstrip r:\ipxreal.exe utils\ebn r:\ipxreal.exe ipxreal.obj: ipxreal.asm tasm /zn /la /ml /m2 ipxreal.asm, r:\ipxreal.obj # tasm /zn /la /ml /m2 ipxreal.asm, obj\ipxreal.obj #ipxprot.obj: obj\ipxreal.ibn ipxprot.asm ipxprot.obj: r:\ipxreal.ibn ipxprot.asm #**************************** End of makefile ******************************