home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / nethack-3.1 / sys / msdos / MakeGCC.src < prev    next >
Encoding:
Text File  |  1993-01-25  |  12.3 KB  |  421 lines

  1. #       SCCS Id: @(#)MakeGCC.src       3.1     93/01/05
  2. #    Copyright (c) NetHack PC Development Team 1992, 1993.
  3. #       PC NetHack 3.1 Src Makefile for djgpp 1.09 and ndmake 4.5
  4. #
  5. #       For questions read the Install.dos file included with
  6. #       the distribution.
  7. #
  8. #       Kevin D Smolkowski, Kevins@ori.org
  9.  
  10. #
  11. #   Programs
  12. #   gcc and go32 dos extender
  13.  
  14.  
  15. CC       = gcc
  16. STUB     = stub.exe         # Can either be stub.exe or go32.exe
  17. STUBPATH = f:\djgpp\bin\    # Must be complete path with trailing '\'
  18. LINK     = gcc
  19.  
  20. #
  21. #  Set the gamedir according to your preference.  It must be present prior
  22. #  to compilation.
  23.  
  24. GAME    = nethack                 # Game Name
  25. GAMEDIR = c:\games\nethack        # Game directory
  26.  
  27. #
  28. #  Flags.
  29. #
  30.  
  31. # Debugging
  32. #CFLAGS = -pg -c -I../include
  33. #LFLAGS = -pg
  34.  
  35. CFLAGS = -c -O -I../include
  36. LFLAGS =
  37.  
  38. #
  39. # Special libraries
  40. LIBS = -lpc
  41.  
  42. #
  43. #  Source directories.    Makedefs hardcodes these, don't change them.
  44. #
  45.  
  46. INCL = ..\include   # NetHack include files
  47. DAT  = ..\dat       # NetHack data files
  48. DOC  = ..\doc       # NetHack documentation files
  49. UTIL = ..\util      # Utility source
  50. SRC  = ..\src       # Main source
  51. SYS  = ..\sys\share # Shared system files
  52. MSYS = ..\sys\msdos # Msdos specific files
  53. WIN  = ..\win\tty   # Character terminal files
  54. GAMEFILE = $(GAMEDIR)\$(GAME).exe # whole thing
  55.  
  56. #
  57. #  The default make target (so just typing 'make' is useful).
  58. #
  59.  
  60. default : $(GAMEFILE)
  61.  
  62. #
  63. #  If TERMLIB is defined in pcconf.c, comment out the upper line and
  64. #  uncomment the lower.  Note that you must build the termc library
  65. #  and place it in djgpp's lib directory.  See termcap.zip for details
  66.  
  67. #TERMLIB =
  68. TERMLIB = -ltermc
  69.  
  70. LIBRARIES = $(LIBS) $(TERMLIB)
  71.  
  72. ######################################################################
  73. #
  74. #  Nothing below this line should have to be changed.
  75. #
  76. #  Other things that have to be reconfigured are in
  77. #       config.h, pccconf.h and possibly system.h.
  78. #
  79.  
  80. #       This line should not be deleted.
  81.  
  82. #
  83. #  Make Rules.
  84. #
  85.  
  86. .SUFFIXES:  .exe .o .c .y .l
  87.  
  88. .c.o:
  89.         $(CC) $(CFLAGS) -o$*.o $*.c
  90.  
  91.  
  92. #
  93. #  Object files for the game itself.
  94. #
  95.  
  96. VOBJ01 = allmain.o  alloc.o    apply.o    artifact.o  attrib.o
  97. VOBJ02 = ball.o     bones.o    botl.o     cmd.o      dbridge.o
  98. VOBJ03 = decl.o     detect.o   display.o  do.o       do_name.o
  99. VOBJ04 = do_wear.o  dog.o      dogmove.o  dokick.o   dothrow.o
  100. VOBJ05 = drawing.o  dungeon.o  eat.o      end.o      engrave.o
  101. VOBJ06 = exper.o    explode.o  extralev.o files.o    fountain.o
  102. VOBJ07 = getline.o  hack.o     hacklib.o  invent.o   lock.o
  103. VOBJ08 = mail.o     main.o     makemon.o  mcastu.o   mhitm.o
  104. VOBJ09 = mhitu.o    minion.o   mkmap.o    mklev.o    mkmaze.o
  105. VOBJ10 = mkobj.o    mkroom.o   mon.o      mondata.o  monmove.o
  106. VOBJ11 = monst.o    monstr.o   mplayer.o  mthrowu.o  muse.o
  107. VOBJ12 = music.o    o_init.o   objects.o  objnam.o   options.o
  108. VOBJ13 = pickup.o   pline.o    polyself.o potion.o   quest.o
  109. VOBJ14 = questpgr.o pager.o    pray.o     priest.o   read.o
  110. VOBJ15 = rect.o     restore.o  rip.o      rnd.o      rumors.o
  111. VOBJ16 = save.o     shk.o      shknam.o   sit.o      sounds.o
  112. VOBJ17 = sp_lev.o   spell.o    steal.o    termcap.o  timeout.o
  113. VOBJ18 = topl.o     topten.o   track.o    trap.o     u_init.o
  114. VOBJ19 = uhitm.o    vault.o    vision.o   vis_tab.o  weapon.o
  115. VOBJ20 = were.o     wield.o    windows.o  wintty.o   wizard.o
  116. VOBJ21 = worm.o     worn.o     write.o    zap.o
  117.  
  118. SOBJ    = msdos.o    sys.o      tty.o      unix.o
  119.  
  120. VVOBJ  = version.o
  121.  
  122.  
  123. VOBJ   = $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) \
  124.          $(VOBJ06) $(VOBJ07) $(VOBJ08) $(VOBJ09) $(VOBJ10) \
  125.          $(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) $(VOBJ15) \
  126.          $(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) \
  127.          $(VOBJ21)
  128.  
  129. ALLOBJ =     $(VOBJ) $(VVOBJ) $(SOBJ)
  130.  
  131. DGN_FILE_H = $(INCL)\align.h    $(INCL)\dgn_file.h
  132. DUNGEON_H  = $(INCL)\align.h    $(INCL)\dungeon.h
  133. EMIN_H     = $(DUNGEON_H)       $(INCL)\emin.h
  134. EPRI_H     = $(DUNGEON_H)       $(INCL)\align.h     $(INCL)\epri.h
  135. ESHK_H     = $(DUNGEON_H)       $(INCL)\eshk.h
  136. MONDATA_H  = $(INCL)\align.h    $(INCL)\mondata.h
  137. MONST_H    = $(INCL)\align.h    $(INCL)\monst.h
  138. PERMONST_H = $(INCL)\monattk.h  $(INCL)\monflag.h   $(INCL)\align.h   \
  139.              $(INCL)\permonst.h
  140. RM_H       = $(INCL)\align.h    $(INCL)\rm.h
  141. SP_LEV_H   = $(INCL)\align.h    $(INCL)\sp_lev.h
  142. VAULT_H    = $(DUNGEON_H)       $(INCL)\vault.h
  143. YOUPROP_H  = $(PERMONST_H)      $(MONDATA_H)        $(INCL)\prop.h    \
  144.              $(INCL)\pm.h       $(INCL)\youprop.h
  145. YOU_H      = $(MONST_H)         $(YOUPROP_H)        $(INCL)\align.h   \
  146.              $(INCL)\attrib.h   $(INCL)\you.h
  147. DISPLAY_H  = $(MONDATA_H)       $(INCL)\vision.h    $(INCL)\display.h
  148. PCCONF_H   = $(INCL)\micro.h    $(INCL)\system.h    $(INCL)\pcconf.h
  149. CONFIG_H   = $(GLOBAL_H)        $(INCL)\tradstdc.h  $(INCL)\config.h
  150. DECL_H     = $(YOU_H)           $(INCL)\spell.h     $(INCL)\color.h   \
  151.              $(INCL)\obj.h      $(INCL)\onames.h    $(INCL)\pm.h      \
  152.              $(INCL)\decl.h
  153. GLOBAL_H   = $(PCCONF_H)        $(INCL)\coord.h     $(INCL)\global.h
  154. HACK_H     = $(CONFIG_H)        $(DUNGEON_H)        $(DECL_H)         \
  155.              $(DISPLAY_H)       $(INCL)\monsym.h    $(INCL)\mkroom.h  \
  156.              $(INCL)\objclass.h $(INCL)\trap.h      $(INCL)\flag.h    \
  157.              $(RM_H)            $(INCL)\vision.h    $(INCL)\wintype.h \
  158.              $(INCL)\engrave.h  $(INCL)\rect.h      $(INCL)\extern.h \
  159.              $(INCL)\trampoli.h $(INCL)\hack.h
  160.  
  161.  
  162.  
  163.  
  164. #
  165. #  The default target.
  166. #
  167.  
  168. all :     $(GAMEFILE) install.tag
  169.     @echo Done.
  170.  
  171. install: install.tag
  172.  
  173. install.tag:    $(GAMEFILE) $(DAT)\sp_lev.tag
  174.     copy $(SYS)\termcap       $(GAMEDIR)
  175.     copy $(DAT)\*.?           $(GAMEDIR)
  176.     copy $(DAT)\*.dat         $(GAMEDIR)
  177.     copy $(DAT)\*.lev         $(GAMEDIR)
  178.     copy $(SYS)\NetHack.cnf   $(GAMEDIR)
  179.     copy $(UTIL)\recover.exe  $(GAMEDIR)
  180.     del   $(GAMEDIR)\makefile
  181.     echo install done > install.tag
  182.  
  183. #
  184. #  The main target.
  185. #
  186. $(GAMEFILE) : $(GAME).res  $(UTIL)\utility.tag
  187.     $(CC) $(LFLAGS) @$(GAME).res $(LIBRARIES)
  188.     copy /b $(STUBPATH)$(STUB) + a.out $(GAMEFILE)
  189. #    del a.out
  190.  
  191. $(GAME).res : $(ALLOBJ)
  192.     @echo $(VOBJ01) > $@
  193.     @echo $(VOBJ02) >> $@
  194.     @echo $(VOBJ03) >> $@
  195.     @echo $(VOBJ04) >> $@
  196.     @echo $(VOBJ05) >> $@
  197.     @echo $(VOBJ06) >> $@
  198.     @echo $(VOBJ07) >> $@
  199.     @echo $(VOBJ08) >> $@
  200.     @echo $(VOBJ09) >> $@
  201.     @echo $(VOBJ10) >> $@
  202.     @echo $(VOBJ11) >> $@
  203.     @echo $(VOBJ12) >> $@
  204.     @echo $(VOBJ13) >> $@
  205.     @echo $(VOBJ14) >> $@
  206.     @echo $(VOBJ15) >> $@
  207.     @echo $(VOBJ16) >> $@
  208.     @echo $(VOBJ17) >> $@
  209.     @echo $(VOBJ18) >> $@
  210.     @echo $(VOBJ19) >> $@
  211.     @echo $(VOBJ20) >> $@
  212.     @echo $(VOBJ21) >> $@
  213.     @echo $(SOBJ)   >> $@
  214.     @echo $(VVOBJ)  >> $@
  215.  
  216. #
  217. #  The following include files depend on makedefs to be created.
  218. #
  219. #  date.h should be remade every time any of the source or include
  220. #  files is modified.
  221. #
  222.  
  223. $(INCL)\date.h : $(VOBJ)
  224.     $(UTIL)\makedefs -v
  225.  
  226. $(INCL)\onames.h :
  227.     $(UTIL)\makedefs -o
  228.  
  229. $(INCL)\pm.h :
  230.     $(UTIL)\makedefs -p
  231.  
  232. $(INCL)\trap.h :
  233.     $(UTIL)\makedefs -t
  234.  
  235. #
  236. #       System specific modules
  237. #
  238. #             Ndmake doesn't like unix style / directory specs and
  239. #             djgcc doesn't like dos style directory specs.  So we
  240. #             get to copy stuff where we might need it.   Fun eh?
  241. #
  242.  
  243. main.o:  $(HACK_H) $(SYS)\pcmain.c
  244.     copy $(SYS)\pcmain.c .
  245.     $(CC) $(CFLAGS) -omain.o pcmain.c
  246.  
  247. tty.o:   $(HACK_H) $(INCL)\wintty.h $(SYS)\pctty.c
  248.     copy $(SYS)\pctty.c .
  249.     $(CC) $(CFLAGS) -otty.o  pctty.c
  250.  
  251. unix.o:  $(SYS)\pcunix.c $(HACK_H)
  252.     copy $(SYS)\pcunix.c .
  253.     $(CC) $(CFLAGS) -ounix.o pcunix.c
  254.  
  255. sys.o : $(SYS)\pcsys.c $(HACK_H)
  256.     copy $(SYS)\pcsys.c .
  257.     $(CC) $(CFLAGS) -o$*.o pcsys.c
  258.  
  259. msdos.o : $(HACK_H)  $(MSYS)\msdos.c
  260.     copy $(MSYS)\msdos.c .
  261.     $(CC) $(CFLAGS) -o$*.o $*.c
  262.  
  263.  
  264. # some other files requiring movement
  265.  
  266. getline.o : $(WIN)\getline.c
  267.     copy $(WIN)\getline.c .
  268.     $(CC) $(CFLAGS) -o$*.o $*.c
  269.  
  270. termcap.o : $(CONFIG_H) $(WIN)\termcap.c
  271.     copy $(WIN)\termcap.c .
  272.     $(CC) $(CFLAGS) -o$*.o $*.c
  273.  
  274. topl.o : $(CONFIG_H) $(WIN)\topl.c
  275.     copy $(WIN)\topl.c .
  276.     $(CC) $(CFLAGS) -o$*.o $*.c
  277.  
  278. wintty.o : $(CONFIG_H) $(WIN)\wintty.c
  279.     copy $(WIN)\wintty.c .
  280.     $(CC) $(CFLAGS) -o$*.o $*.c
  281.  
  282. #
  283. #  Housekeeping.
  284. #
  285.  
  286. clean :
  287.     -del *.o
  288.  
  289. spotless : clean
  290.     -del $(INCL)\date.h
  291.     -del $(INCL)\onames.h
  292.     -del $(INCL)\pm.h
  293.     -del $(INCL)\vis_tab.h
  294.     -del vis_tab.c
  295.     -del $(UTIL)\makedefs.exe
  296.     -del $(UTIL)\lev_comp.exe
  297.     -del $(UTIL)\dgn_comp.exe
  298.     -del $(UTIL)\*.res
  299.     -del $(UTIL)\*.def
  300.     -del $(UTIL)\*.map
  301.     -del $(DAT)\data
  302.     -del $(DAT)\rumors
  303.     -del $(UTIL)\guideboo.dvi
  304.  
  305. # dependencies
  306. allmain.o     : $(HACK_H)
  307. alloc.o       : $(CONFIG_H)
  308. apply.o       : $(HACK_H)
  309. artifact.o    : $(HACK_H)       $(INCL)\artifact.h
  310. attrib.o      : $(HACK_H)
  311. bones.o       : $(HACK_H)
  312. botl.o        : $(HACK_H)
  313. cmd.o         : $(HACK_H)       $(INCL)\func_tab.h
  314. dbridge.o     : $(HACK_H)
  315. decl.o        : $(HACK_H)       $(INCL)\quest.h
  316. detect.o      : $(HACK_H)
  317. display.o     : $(HACK_H)
  318. do.o          : $(HACK_H)       $(INCL)\lev.h
  319. do_name.o     : $(HACK_H)
  320. do_wear.o     : $(HACK_H)
  321. dog.o         : $(HACK_H)       $(INCL)\edog.h
  322. dogmove.o     : $(HACK_H)       $(INCL)\mfndpos.h   $(INCL)\edog.h
  323. dokick.o      : $(HACK_H)       $(ESHK_H)
  324. dothrow.o     : $(HACK_H)
  325. drawing.o     : $(HACK_H)       $(INCL)\termcap.h
  326. dungeon.o     : $(HACK_H)       $(DGN_FILE_H)
  327. eat.o         : $(HACK_H)
  328. end.o         : $(HACK_H)       $(ESHK_H)
  329. engrave.o     : $(HACK_H)       $(INCL)\lev.h
  330. exper.o       : $(HACK_H)
  331. explode.o     : $(HACK_H)
  332. extralev.o    : $(HACK_H)
  333. files.o       : $(HACK_H)
  334. fountain.o    : $(HACK_H)
  335. getline.o     : $(HACK_H)
  336. hack.o        : $(HACK_H)
  337. invent.o      : $(HACK_H)
  338. lock.o        : $(HACK_H)
  339. mail.o        : $(HACK_H)
  340. hacklib.o     : $(HACK_H)
  341. main.o        : $(HACK_H)
  342. makemon.o     : $(HACK_H)
  343. mcastu.o      : $(HACK_H)
  344. mhitm.o       : $(HACK_H)
  345. mhitu.o       : $(HACK_H)
  346. minion.o      : $(HACK_H)
  347. mklev.o       : $(HACK_H)
  348. mkmap.o       : $(HACK_H)
  349. mkmaze.o      : $(HACK_H)
  350. mkobj.o       : $(HACK_H)
  351. mkroom.o      : $(HACK_H)
  352. mon.o         : $(HACK_H)
  353. mondata.o     : $(HACK_H)
  354. monmove.o     : $(HACK_H)       $(INCL)\mfndpos.h   $(INCL)\artifact.h
  355. monst.o       : $(CONFIG_H)     $(PERMONST_H)       $(INCL)\monsym.h     \
  356.                 $(ESHK_H)       $(VAULT_H)          $(INCL)\color.h      \
  357.                 $(EPRI_H)
  358. monstr.o      : $(CONFIG_H)
  359. mplayer.o     : $(HACK_H)
  360. mthrowu.o     : $(HACK_H)
  361. muse.o        : $(HACK_H)
  362. music.o       : $(HACK_H)
  363. o_init.o      : $(HACK_H)
  364. objects.o     : $(CONFIG_H)     $(INCL)\obj.h       $(INCL)\objclass.h   \
  365.                 $(INCL)\prop.h  $(INCL)\color.h
  366. objects.o     : $(HACK_H)
  367. objnam.o      : $(HACK_H)
  368. options.o     : $(HACK_H)       $(INCL)\termcap.h
  369. msdos.o       : $(HACK_H)
  370. pager.o       : $(HACK_H)
  371. pickup.o      : $(HACK_H)
  372. pline.o       : $(HACK_H)     $(EPRI_H)
  373. polyself.o    : $(HACK_H)
  374. potion.o      : $(HACK_H)
  375. priest.o      : $(HACK_H)     $(INCL)\mfndpos.h   $(ESHK_H) \
  376.                 $(EPRI_H)     $(EMIN_H)
  377. quest.o       : $(HACK_H)     $(INCL)\quest.h     $(INCL)\qtext.h
  378. questpgr.o    : $(HACK_H)     $(INCL)\quest.h     $(INCL)\qtext.h
  379. pray.o        : $(HACK_H)
  380. priest.o      : $(HACK_H)
  381. read.o        : $(HACK_H)
  382. rect.o        : $(HACK_H)
  383. restore.o     : $(HACK_H)     $(INCL)\lev.h       $(INCL)\quest.h
  384. rip.o         : $(HACK_H)
  385. rnd.o         : $(HACK_H)
  386. rumors.o      : $(HACK_H)
  387. save.o        : $(HACK_H)     $(INCL)\lev.h       $(INCL)\quest.h
  388. search.o      : $(HACK_H)     $(INCL)\artifact.h
  389. shk.o         : $(HACK_H)
  390. shknam.o      : $(HACK_H)     $(ESHK_H)
  391. sit.o         : $(HACK_H)
  392. sounds.o      : $(HACK_H)     $(INCL)\edog.h      $(ESHK_H)
  393. sp_lev.o      : $(HACK_H)
  394. spell.o       : $(HACK_H)
  395. steal.o       : $(HACK_H)
  396. sys.o         : $(HACK_H)
  397. termcap.o     : $(HACK_H)
  398. timeout.o     : $(HACK_H)
  399. topl.o        : $(HACK_H)
  400. topten.o      : $(HACK_H)
  401. track.o       : $(HACK_H)
  402. trap.o        : $(HACK_H)     $(INCL)\edog.h
  403. tty.o         : $(HACK_H)
  404. u_init.o      : $(HACK_H)
  405. uhitm.o       : $(HACK_H)
  406. unix.o        : $(HACK_H)
  407. vault.o       : $(HACK_H)     $(INCL)\vault.h
  408. version.o     : $(HACK_H)     $(INCL)\date.h      $(INCL)\patchlev.h
  409. vision.o      : $(HACK_H)     $(INCL)\vis_tab.h
  410. vis_tab.o     : $(HACK_H)
  411. weapon.o      : $(HACK_H)
  412. were.o        : $(HACK_H)
  413. wield.o       : $(HACK_H)
  414. windows.o     : $(HACK_H)
  415. wintty.o      : $(HACK_H)
  416. wizard.o      : $(HACK_H)
  417. worm.o        : $(HACK_H)     $(INCL)\lev.h
  418. worn.o        : $(HACK_H)
  419. write.o       : $(HACK_H)
  420. zap.o         : $(HACK_H)
  421.