home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / msdos / c / ue312d / mswin / msc / makefile
Encoding:
Makefile  |  1993-03-05  |  8.5 KB  |  321 lines

  1. #        MicroSoft C makefile for
  2. #        MicroEMACS 3.12
  3. #        written by Pierre Perret
  4. #
  5. # for Microsoft C compiler (6.0 or 7.0) on i386 or MIPS or ALPHA CPU
  6. #
  7. # define TARGET as C6, C7 or NT (or some other short suffix)
  8. # for Windows/NT, use TARGET=NT
  9. # other suffixes compile for Windows 3.1
  10. #
  11. # define DEBUG as 1 if Codeview/WinDebug symbolic information is desired
  12. # if DEBUG is not defined, no debugging information is generated
  13. #
  14. # This makefile assumes the following directory hierarchy:
  15. #     ---
  16. #        |-- SRC    <-- source files (*.c)
  17. #        |
  18. #        |-- H      <-- include files (*.h)
  19. #        |
  20. #        |-- MSWIN --   <-- resource files (.dlg, .rc, .ico ...)
  21. #        |           |
  22. #        |           |-- MSC --   <-- where this makefile is located
  23. #        |           |         |
  24. #        |           |         |-- BIN  <-- where the executable ends up
  25. #        |           |         |
  26. #        |           |         |-- OBJ.C7
  27. #        |           |         |
  28. #        |           |         |-- OBJ.NT
  29. #
  30. # if TEMPOBJ is defined, the object files are stored under a directory
  31. # (MEWIN.NT, MEWIN.C7 ...) under $TEMP. Otherwise, they are stored under
  32. # the corresponding object directory (OBJ.NT, OBJ.C7 ...) in the
  33. # MSWIN\MSC hierarchy
  34.  
  35.  
  36. !IFNDEF DEBUG
  37. DEBUG = 0
  38. !ENDIF
  39.  
  40. !IFNDEF TARGET
  41. TARGET = C7
  42. !ENDIF
  43.  
  44. !IFNDEF CPU
  45. !IF "$(TARGET)"=="NT"
  46. CPU = i386
  47. !ENDIF
  48. !ENDIF
  49.  
  50. SRC = ..\..\SRC
  51. INC = ..\..\H
  52. RES = ..
  53. BIN = BIN
  54. !IFNDEF TEMPOBJ
  55. OBJ = OBJ.$(TARGET)
  56. !ELSE
  57. OBJ = $(TEMP)\MEWIN.$(TARGET)
  58. !ENDIF
  59. PROJ = MEWIN$(TARGET)
  60. PROG = $(BIN)\$(PROJ).exe
  61.  
  62. DEF_FILE = $(RES)\MEWIN.DEF
  63. RES_FILE = $(OBJ)\MEWIN.RES
  64. RC_FILE = $(RES)\MEWIN.RC
  65. DLG_FILES = $(RES)\mswmodes.dlg $(RES)\mswmlh.dlg $(RES)\mswfonts.dlg\
  66.     $(RES)\mswprg.dlg $(RES)\mswabout.dlg $(RES)\mswfile.dlg
  67. ICO_FILES = $(RES)\mswapp.ico $(RES)\mswscr.ico $(RES)\mswwait.ico
  68. CUR_FILES = $(RES)\mswcur.cur $(RES)\mswnot.cur $(RES)\mswgrin1.cur\
  69.     $(RES)\mswgrin2.cur $(RES)\mswgrin3.cur $(RES)\mswgrin4.cur\
  70.     $(RES)\mswgrin5.cur $(RES)\mswgrin6.cur $(RES)\mswgrin7.cur\
  71.     $(RES)\mswgrin8.cur
  72. BMP_FILES =
  73. MNU_FILES = $(RES)\mswmenu.rc
  74.  
  75. !IF "$(TARGET)"=="NT"
  76. !IF "$(CPU)"=="MIPS"
  77. # MIPS specific build stuff
  78. CPUTYPE=2
  79. CC = cc
  80. cvtobj = mip2coff
  81. CFLAGS_G  = -std -G0 -O -EL -I. -I$(INC) -DMIPS=1 -DWIN32 -DWINNT=1 -D__cdecl= -D__export= $(C_FLAGS)
  82. CFLAGS_D  =
  83. CFLAGS_R  =
  84. LFLAGS_G  = /SUBSYSTEM:windows /ENTRY:WinMainCRTStartup\
  85.         /OUT:$(PROG) $(L_FLAGS)
  86. LFLAGS_D  = /DEBUG:full
  87. LFLAGS_R  =
  88. LLIBS_G   = $(OBJ)\$(PROJ).lib $(LIB)\libcmt.lib $(LIB)\*.lib
  89. LLIBS_R  =
  90. LLIBS_D  =
  91. !ELSE
  92. !IF "$(CPU)"=="ALPHA"
  93. # Alpha AXP build stuff
  94. CPUTYPE=2
  95. CC = acc
  96. cvtobj = a2coff
  97. CFLAGS_G  = -std -G0 -O -EL -I$(INC) -DALPHA=1 -DWIN32 -DWINNT=1 -D__cdecl=-D__export= $(C_FLAGS)
  98. CFLAGS_D  =
  99. CFLAGS_R  =
  100. LFLAGS_G  = /SUBSYSTEM:windows /ENTRY:WinMainCRTStartup\
  101.         /OUT:$(PROG) $(L_FLAGS)
  102. LFLAGS_D  = /DEBUG:full
  103. LFLAGS_R  =
  104. LLIBS_G   = $(OBJ)\$(PROJ).lib $(LIB)\libcmt.lib $(LIB)\*.lib
  105. LLIBS_R  =
  106. LLIBS_D  =
  107. !ELSE
  108. # x86 build stuff
  109. !if "$(CPU)"=="i386"
  110. CC  = cl386
  111. CFLAGS_G  = /I . /I $(INC) /G3 /Gd /BATCH /Di386=1 /DWIN32 /DWINNT=1 $(C_FLAGS)
  112. CFLAGS_D  = /Od /Zi
  113. CFLAGS_R  = /Os /Og
  114. LFLAGS_G  = /SUBSYSTEM:windows /ENTRY:WinMainCRTStartup\
  115.         /OUT:$(PROG) $(L_FLAGS)
  116. LFLAGS_D  = /DEBUG:full /DEBUGTYPE:cv
  117. LFLAGS_R  =
  118. LLIBS_G   = $(OBJ)\$(PROJ).lib libc.lib ntdll.lib \
  119.         kernel32.lib user32.lib gdi32.lib shell32.lib
  120. LLIBS_R  =
  121. LLIBS_D  =
  122. !ELSE
  123. !ERROR  Must specify CPU Environment Variable
  124. !ERROR  (set CPU=i386 or set CPU=MIPS or set CPU=ALPHA)
  125. !ENDIF
  126. !ENDIF
  127. !ENDIF
  128. !ELSE
  129. CC  = cl
  130. CFLAGS_G  = /I . /I $(INC) /AL /G2 /Gx /GA /DWINVER=0x030a /Zp /BATCH
  131. CFLAGS_D  = /Od /Zi
  132. CFLAGS_R  = /Os /Og /Gs
  133. LFLAGS_G  = /BATCH /ONERROR:NOEXE
  134. LFLAGS_D  = /CO /NOF
  135. LFLAGS_R  = /F
  136. LLIBS_G  = LIBW.LIB SHELL.LIB
  137. LLIBS_R  = /NOD:LLIBCE LLIBCEW.LIB
  138. LLIBS_D  = /NOD:LLIBCE LLIBCEW.LIB
  139. !ENDIF
  140. MAPFILE_D  = $(OBJ)\$(PROJ).map
  141. MAPFILE_R  = NUL
  142. LINKER    = link
  143. LRF  = echo > NUL
  144. RC  = rc
  145. RCFLAGS2  = /30 /t
  146. CVFLAGS  = /25
  147.  
  148. H_FILES = estruct.h $(INC)\eproto.h $(INC)\edef.h $(INC)\elang.h\
  149.     $(INC)\english.h
  150.  
  151. OBJ_FILES = $(OBJ)\BASIC.obj $(OBJ)\BIND.obj $(OBJ)\BUFFER.obj $(OBJ)\CHAR.obj\
  152.         $(OBJ)\CRYPT.obj $(OBJ)\DISPLAY.obj $(OBJ)\DOLOCK.obj $(OBJ)\EVAL.obj\
  153.         $(OBJ)\EXEC.obj $(OBJ)\FILE.obj $(OBJ)\FILEIO.obj $(OBJ)\INPUT.obj\
  154.         $(OBJ)\ISEARCH.obj $(OBJ)\LINE.obj $(OBJ)\LOCK.obj $(OBJ)\MAIN.obj\
  155.         $(OBJ)\MOUSE.obj $(OBJ)\MSWDISP.obj $(OBJ)\MSWDRV.obj\
  156.         $(OBJ)\MSWEMACS.obj $(OBJ)\MSWEXEC.obj $(OBJ)\MSWFILE.obj\
  157.         $(OBJ)\MSWFONT.obj $(OBJ)\MSWINPUT.obj $(OBJ)\MSWMEM.obj\
  158.         $(OBJ)\MSWMENU.obj $(OBJ)\MSWSYS.obj $(OBJ)\RANDOM.obj\
  159.         $(OBJ)\REGION.obj $(OBJ)\REPLACE.obj $(OBJ)\SCREEN.obj\
  160.         $(OBJ)\SEARCH.obj $(OBJ)\WINDOW.obj $(OBJ)\WORD.obj
  161.  
  162. all: $(PROG)
  163.  
  164. SUFFIXES:
  165. SUFFIXES: .obj .c
  166. SUFFIXES: .obj .c
  167.  
  168. $(OBJ)\BASIC.obj : $(SRC)\BASIC.C $(H_FILES)
  169.  
  170. $(OBJ)\BIND.obj : $(SRC)\BIND.C  $(H_FILES) $(INC)\epath.h
  171.  
  172. $(OBJ)\BUFFER.obj : $(SRC)\BUFFER.C $(H_FILES)
  173.  
  174. $(OBJ)\CHAR.obj : $(SRC)\CHAR.C $(H_FILES)
  175.  
  176. $(OBJ)\CRYPT.obj : $(SRC)\CRYPT.C $(H_FILES)
  177.  
  178. $(OBJ)\DISPLAY.obj : $(SRC)\DISPLAY.C $(H_FILES)
  179.  
  180. $(OBJ)\DOLOCK.obj : $(SRC)\DOLOCK.C $(H_FILES)
  181.  
  182. $(OBJ)\EVAL.obj : $(SRC)\EVAL.C $(H_FILES) $(INC)\evar.h
  183.  
  184. $(OBJ)\EXEC.obj : $(SRC)\EXEC.C $(H_FILES)
  185.  
  186. $(OBJ)\FILE.obj : $(SRC)\FILE.C $(H_FILES)
  187.  
  188. $(OBJ)\FILEIO.obj : $(SRC)\FILEIO.C $(H_FILES)
  189.  
  190. $(OBJ)\INPUT.obj : $(SRC)\INPUT.C $(H_FILES)
  191.  
  192. $(OBJ)\ISEARCH.obj : $(SRC)\ISEARCH.C $(H_FILES)
  193.  
  194. $(OBJ)\LINE.obj : $(SRC)\LINE.C $(H_FILES)
  195.  
  196. $(OBJ)\LOCK.obj : $(SRC)\LOCK.C $(H_FILES)
  197.  
  198. $(OBJ)\MAIN.obj : $(SRC)\MAIN.C $(H_FILES) $(INC)\efunc.h $(INC)\ebind.h
  199.  
  200. $(OBJ)\MOUSE.obj : $(SRC)\MOUSE.C $(H_FILES)
  201.  
  202. $(OBJ)\MSWDISP.obj : $(SRC)\MSWDISP.C $(H_FILES) $(INC)\mswin.h $(INC)\mswrid.h
  203.  
  204. $(OBJ)\MSWDRV.obj : $(SRC)\MSWDRV.C $(H_FILES) $(INC)\mswin.h $(INC)\mswrid.h
  205.  
  206. $(OBJ)\MSWEMACS.obj : $(SRC)\MSWEMACS.C $(H_FILES) $(INC)\mswin.h\
  207.     $(INC)\mswmenu.h $(INC)\mswrid.h
  208.  
  209. $(OBJ)\MSWEXEC.obj : $(SRC)\MSWEXEC.C $(H_FILES) $(INC)\mswin.h $(INC)\mswrid.h
  210.  
  211. $(OBJ)\MSWFILE.obj : $(SRC)\MSWFILE.C $(H_FILES) $(INC)\mswin.h $(INC)\mswrid.h
  212.  
  213. $(OBJ)\MSWFONT.obj : $(SRC)\MSWFONT.C $(H_FILES) $(INC)\mswin.h $(INC)\mswrid.h
  214.  
  215. $(OBJ)\MSWINPUT.obj : $(SRC)\MSWINPUT.C $(H_FILES) $(INC)\mswin.h\
  216.     $(INC)\mswrid.h
  217.  
  218. $(OBJ)\MSWMEM.obj : $(SRC)\MSWMEM.C $(H_FILES) $(INC)\mswin.h $(INC)\mswrid.h
  219.  
  220. $(OBJ)\MSWMENU.obj : $(SRC)\MSWMENU.C $(H_FILES) $(INC)\mswin.h\
  221.     $(INC)\mswmenu.h $(INC)\mswhelp.h $(INC)\mswrid.h
  222.  
  223. $(OBJ)\MSWSYS.obj : $(SRC)\MSWSYS.C $(H_FILES) $(INC)\mswin.h $(INC)\mswrid.h
  224.  
  225. $(OBJ)\RANDOM.obj : $(SRC)\RANDOM.C $(H_FILES)
  226.  
  227. $(OBJ)\REGION.obj : $(SRC)\REGION.C $(H_FILES)
  228.  
  229. $(OBJ)\REPLACE.obj : $(SRC)\REPLACE.C $(H_FILES)
  230.  
  231. $(OBJ)\SCREEN.obj : $(SRC)\SCREEN.C $(H_FILES)
  232.  
  233. $(OBJ)\SEARCH.obj : $(SRC)\SEARCH.C $(H_FILES)
  234.  
  235. $(OBJ)\WINDOW.obj : $(SRC)\WINDOW.C $(H_FILES)
  236.  
  237. $(OBJ)\WORD.obj : $(SRC)\WORD.C $(H_FILES)
  238.  
  239. $(RES_FILE) : $(RC_FILE) $(INC)\mswin.h $(INC)\mswrid.h $(INC)\mswmenu.h\
  240.         $(DLG_FILES) $(ICO_FILES) $(CUR_FILES) $(BMP_FILES) $(MENU_FILES)
  241.         $(RC) /i $(INC) /i $(RES) /r /fo $(RES_FILE) $(RC_FILE)
  242.  
  243. $(PROG) : $(OBJ) $(BIN) $(OBJ_FILES) $(RES_FILE)
  244. !IF $(DEBUG)
  245. !IF "$(TARGET)"=="NT"
  246.     $(LRF) @<<$(OBJ)\$(PROJ).lrf
  247. $(OBJ_FILES)
  248. $(LIBS) $(LLIBS_G) $(LLIBS_D)
  249. $(LFLAGS_G) $(LFLAGS_D);
  250. <<
  251. !ELSE
  252.     $(LRF) @<<$(OBJ)\$(PROJ).lrf
  253. $(RT_OBJS: = +^
  254. ) $(OBJ_FILES: = +^
  255. )
  256. $@
  257. $(MAPFILE_D)
  258. $(LIBS: = +^
  259. ) +
  260. $(LLIBS_G: = +^
  261. ) +
  262. $(LLIBS_D: = +^
  263. )
  264. $(DEF_FILE) $(LFLAGS_G) $(LFLAGS_D);
  265. <<
  266. !ENDIF
  267. !ELSE
  268. !IF "$(TARGET)"=="NT"
  269.     $(LRF) @<<$(OBJ)\$(PROJ).lrf
  270. $(OBJ_FILES)
  271. $(LIBS) $(LLIBS_G) $(LLIBS_R)
  272. $(LFLAGS_G) $(LFLAGS_R);
  273. <<
  274. !ELSE
  275.     $(LRF) @<<$(OBJ)\$(PROJ).lrf
  276. $(RT_OBJS: = +^
  277. ) $(OBJ_FILES: = +^
  278. )
  279. $@
  280. $(MAPFILE_R)
  281. $(LIBS: = +^
  282. ) +
  283. $(LLIBS_G: = +^
  284. ) +
  285. $(LLIBS_R: = +^
  286. )
  287. $(DEF_FILE) $(LFLAGS_G) $(LFLAGS_R);
  288. <<
  289. !ENDIF
  290. !ENDIF
  291. !IF "$(TARGET)"=="NT"
  292.         cvtres -$(CPU) $(RES_FILE)
  293.         LIB /OUT:$(OBJ)\$(PROJ).lib /DEF:$(DEF_FILE) /MACHINE:$(CPU)
  294.     $(LINKER) $(OBJ)\MEWIN.OBJ @$(OBJ)\$(PROJ).lrf
  295. !ELSE
  296.     $(LINKER) @$(OBJ)\$(PROJ).lrf
  297.         $(RC) $(RCFLAGS2) $(RES_FILE) $(PROG)
  298. !ENDIF
  299.  
  300. $(OBJ):
  301.         mkdir $(OBJ)
  302.  
  303. $(BIN):
  304.         mkdir $(BIN)
  305.  
  306. {$(SRC)}.c{$(OBJ)}.obj :
  307. !IF "$(CPU)"=="MIPS" || "$(CPU)"=="ALPHA"
  308. !IF $(DEBUG)
  309.     @$(CC) -c $(CFLAGS_G) $(CFLAGS_D) -o $@ $<
  310. !ELSE
  311.     @$(CC) -c $(CFLAGS_G) $(CFLAGS_R) -o $@ $<
  312. !ENDIF
  313.         @$(cvtobj) $@
  314. !ELSE
  315. !IF $(DEBUG)
  316.     @$(CC) /c $(CFLAGS_G) $(CFLAGS_D) /Fo$@ $<
  317. !ELSE
  318.     @$(CC) /c $(CFLAGS_G) $(CFLAGS_R) /Fo$@ $<
  319. !ENDIF
  320. !ENDIF
  321.