Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

719 lines
19 KiB

  1. ################################################################################
  2. #
  3. #
  4. # This is the makefile for all of the emulators.
  5. #
  6. #
  7. #Revision History:
  8. #
  9. # 03-26-89 WAJ Added small emulators and emfull.asm to build
  10. # 04-02-89 WAJ Added build for sepcial version of emmt.lib (emmtsql.lib) for SQL
  11. # 04-06-89 WAJ Added win87em.exe and win87em.lib to build.
  12. # 04-07-89 WAJ Added emulator.inc to EMASM list.
  13. # 04-14-89 WAJ Ifdefed MATHDIR.
  14. # 05-16-89 WAJ Added /nologo to $(LIB)
  15. # 05-16-89 WAJ Changed $(LIB) to $(LIBEXE)
  16. # 05-16-89 WAJ win87em.exe now made with $(LINK4)
  17. # 05-30-89 WAJ Added emqp.lib to makefile.
  18. # 05-02-89 WAJ Added $(AQ) to masm build line.
  19. # 06-20-89 WAJ Changed build to make Win 3.0 version of win87em.exe
  20. # 06-26-89 WAJ Removed emfull.obj from build.
  21. # 06-28-89 WAJ Changed name of Win2 win87em.exe map file to win87em.ma2
  22. # 04-20-90 WAJ Math project name is now mrt6.
  23. # 04-26-90 WAJ Math project name is now mrt7.
  24. # 10-16-90 WAJ Now use libw.lib not swinlibc.lib
  25. # 09/09/91 JCR Now builds emoem.src, OEM version of emoem.asm.
  26. # 05/14/92 JWM Added "WF" to WINFLAGS (DonC's WINFAST changes).
  27. # 06/29/92 JWM Now builds in DOS; math project name is now mrt8.
  28. # 03/19/94 JWM Links win87em.dll with /align:16, for Chicago
  29. # 03/31/94 JWM "WF" removed from WINFLAGS!!
  30. #
  31. ################################################################################
  32. !INCLUDE ..\makefile.inc
  33. !IFNDEF MATHDIR
  34. MATHDIR = \mrt8
  35. !ENDIF
  36. SRCDIR = .
  37. OBJDIR = .\objs
  38. INCDIR = $(INCS)
  39. ASM = $(ASM) -DLOOK_AHEAD $(AQ)
  40. IFSTRIP = $(TOOLDIR)\ifstrip
  41. LIBEXE = $(TOOLDIR)\lib /nologo
  42. LINK4 = $(TOOLDIR)\link4
  43. LINK = $(TOOLDIR)\link
  44. IMPLIB = $(TOOLDIR)\implib
  45. RC = $(TOOLDIR)\rc -x
  46. all: em 87 piem pi87 pem p87 emmt frontend basici basicij qc emt 87t pisem \
  47. psem emoem
  48. basic: piem pi87 basici pisem
  49. basicj: pem p87 basicij psem
  50. win: win87em
  51. ###############################################################################
  52. #
  53. # These are the emulator's asm files
  54. #
  55. ###############################################################################
  56. EMASM = \
  57. $(SRCDIR)\emulator.inc \
  58. $(SRCDIR)\apisim.asm \
  59. $(SRCDIR)\em386.asm \
  60. $(SRCDIR)\emarith.asm \
  61. $(SRCDIR)\emconst.asm \
  62. $(SRCDIR)\emdecode.asm \
  63. $(SRCDIR)\emdisp.asm \
  64. $(SRCDIR)\emdoc.asm \
  65. $(SRCDIR)\emdos.asm \
  66. $(SRCDIR)\emds.asm \
  67. $(SRCDIR)\emerror.asm \
  68. $(SRCDIR)\emexcept.asm \
  69. $(SRCDIR)\emfadd.asm \
  70. $(SRCDIR)\emfcom.asm \
  71. $(SRCDIR)\emfconst.asm \
  72. $(SRCDIR)\emfdiv.asm \
  73. $(SRCDIR)\emfixfly.asm \
  74. $(SRCDIR)\emfmisc.asm \
  75. $(SRCDIR)\emfmul.asm \
  76. $(SRCDIR)\emfprem.asm \
  77. $(SRCDIR)\emfrndi.asm \
  78. $(SRCDIR)\emfsqrt.asm \
  79. $(SRCDIR)\emftran.asm \
  80. $(SRCDIR)\emintern.asm \
  81. $(SRCDIR)\emlsdbl.asm \
  82. $(SRCDIR)\emlsint.asm \
  83. $(SRCDIR)\emlsquad.asm \
  84. $(SRCDIR)\emlssng.asm \
  85. $(SRCDIR)\emlstmp.asm \
  86. $(SRCDIR)\emmain.asm \
  87. $(SRCDIR)\emnew.asm \
  88. $(SRCDIR)\emnormal.asm \
  89. $(SRCDIR)\emoem.asm \
  90. $(SRCDIR)\emoemqb.asm \
  91. $(SRCDIR)\emspec.asm \
  92. $(SRCDIR)\emstack.asm \
  93. $(SRCDIR)\emthread.asm \
  94. $(SRCDIR)\emu8087.asm \
  95. $(SRCDIR)\emulator.asm \
  96. $(SRCDIR)\emwin.asm \
  97. $(SRCDIR)\emxenix.asm
  98. ###############################################################################
  99. #
  100. #
  101. # This is how to build the normal emulators
  102. # ie no fwait polling
  103. # no IBM bios checks
  104. #
  105. ###############################################################################
  106. em: $(OBJDIR)\em.lib $(OBJDIR)\emr.lib $(OBJDIR)\emp.lib
  107. 87: $(OBJDIR)\87.lib $(OBJDIR)\87r.lib $(OBJDIR)\87p.lib
  108. $(OBJDIR)\em.lib: $(OBJDIR)\em.obj $(OBJDIR)\emoem.obj
  109. if exist $@ erase $@
  110. $(LIBEXE) $@ + $(OBJDIR)\em.obj + $(OBJDIR)\emoem.obj;
  111. $(OBJDIR)\emr.lib: $(OBJDIR)\emr.obj $(OBJDIR)\emoem.obj
  112. if exist $@ erase $@
  113. $(LIBEXE) $@ + $(OBJDIR)\emr.obj + $(OBJDIR)\emoem.obj;
  114. $(OBJDIR)\emp.lib: $(OBJDIR)\emp.obj
  115. if exist $@ erase $@
  116. $(LIBEXE) $@ + $(OBJDIR)\emp.obj;
  117. $(OBJDIR)\87.lib: $(OBJDIR)\87.obj $(OBJDIR)\emoem.obj
  118. if exist $@ erase $@
  119. $(LIBEXE) $@ + $(OBJDIR)\87.obj + $(OBJDIR)\emoem.obj;
  120. $(OBJDIR)\87r.lib: $(OBJDIR)\87r.obj $(OBJDIR)\emoem.obj
  121. if exist $@ erase $@
  122. $(LIBEXE) $@ + $(OBJDIR)\87r.obj + $(OBJDIR)\emoem.obj;
  123. $(OBJDIR)\87p.lib: $(OBJDIR)\87p.obj
  124. if exist $@ erase $@
  125. $(LIBEXE) $@ + $(OBJDIR)\87p.obj;
  126. $(OBJDIR)\em.obj: $(EMASM)
  127. $(ASM) -DDOS5 $(SRCDIR)\emulator.asm, $@;
  128. $(OBJDIR)\emr.obj: $(EMASM)
  129. $(ASM) $(SRCDIR)\emulator.asm, $@;
  130. $(OBJDIR)\emp.obj: $(EMASM)
  131. $(ASM) -DDOS5only $(SRCDIR)\emulator.asm, $@;
  132. $(OBJDIR)\87.obj: $(EMASM)
  133. $(ASM) -DDOS5 $(SRCDIR)\emu8087.asm, $@;
  134. $(OBJDIR)\87r.obj: $(EMASM)
  135. $(ASM) $(SRCDIR)\emu8087.asm, $@;
  136. $(OBJDIR)\87p.obj: $(EMASM)
  137. $(ASM) -DDOS5only $(SRCDIR)\emu8087.asm, $@;
  138. $(OBJDIR)\emoem.obj: $(SRCDIR)\emoem.asm
  139. $(ASM) $(SRCDIR)\emoem.asm, $@;
  140. ###############################################################################
  141. #
  142. #
  143. # This is how to build the IBM emulators
  144. # ie with fwait polling
  145. # with IBM bios checks
  146. #
  147. ###############################################################################
  148. IBMFLAGS =-DPOLLING -DPCDOS
  149. piem: $(OBJDIR)\piem.lib $(OBJDIR)\piemr.lib $(OBJDIR)\piemp.lib
  150. pi87: $(OBJDIR)\pi87.lib $(OBJDIR)\pi87r.lib $(OBJDIR)\pi87p.lib
  151. $(OBJDIR)\piem.lib: $(OBJDIR)\piem.obj $(OBJDIR)\emoem.obj
  152. if exist $@ erase $@
  153. $(LIBEXE) $@ + $(OBJDIR)\piem.obj + $(OBJDIR)\emoem.obj;
  154. $(OBJDIR)\piemr.lib: $(OBJDIR)\piemr.obj $(OBJDIR)\emoem.obj
  155. if exist $@ erase $@
  156. $(LIBEXE) $@ + $(OBJDIR)\piemr.obj + $(OBJDIR)\emoem.obj;
  157. $(OBJDIR)\piemp.lib: $(OBJDIR)\piemp.obj
  158. if exist $@ erase $@
  159. $(LIBEXE) $@ + $(OBJDIR)\piemp.obj;
  160. $(OBJDIR)\pi87.lib: $(OBJDIR)\pi87.obj $(OBJDIR)\emoem.obj
  161. if exist $@ erase $@
  162. $(LIBEXE) $@ + $(OBJDIR)\pi87.obj + $(OBJDIR)\emoem.obj;
  163. $(OBJDIR)\pi87r.lib: $(OBJDIR)\pi87r.obj $(OBJDIR)\emoem.obj
  164. if exist $@ erase $@
  165. $(LIBEXE) $@ + $(OBJDIR)\pi87r.obj + $(OBJDIR)\emoem.obj;
  166. $(OBJDIR)\pi87p.lib: $(OBJDIR)\pi87p.obj
  167. if exist $@ erase $@
  168. $(LIBEXE) $@ + $(OBJDIR)\pi87p.obj;
  169. $(OBJDIR)\piem.obj: $(EMASM)
  170. $(ASM) $(IBMFLAGS) -DDOS5 $(SRCDIR)\emulator.asm, $@;
  171. $(OBJDIR)\piemr.obj: $(EMASM)
  172. $(ASM) $(IBMFLAGS) $(SRCDIR)\emulator.asm, $@;
  173. $(OBJDIR)\piemp.obj: $(EMASM)
  174. $(ASM) $(IBMFLAGS) -DDOS5only $(SRCDIR)\emulator.asm, $@;
  175. $(OBJDIR)\pi87.obj: $(EMASM)
  176. $(ASM) $(IBMFLAGS) -DDOS5 $(SRCDIR)\emu8087.asm, $@;
  177. $(OBJDIR)\pi87r.obj: $(EMASM)
  178. $(ASM) $(IBMFLAGS) $(SRCDIR)\emu8087.asm, $@;
  179. $(OBJDIR)\pi87p.obj: $(EMASM)
  180. $(ASM) $(IBMFLAGS) -DDOS5only $(SRCDIR)\emu8087.asm, $@;
  181. ###############################################################################
  182. #
  183. #
  184. # This is how to build the multi thread version of the emulator
  185. #
  186. ###############################################################################
  187. MTFLAGS = -DMTHREAD -DDOS5only
  188. emmt: $(OBJDIR)\emmt.lib $(OBJDIR)\87mt.lib
  189. $(OBJDIR)\emmt.lib: $(OBJDIR)\emmt.obj $(OBJDIR)\emds.obj
  190. if exist $@ erase $@
  191. $(LIBEXE) $@ + $(OBJDIR)\emmt.obj + $(OBJDIR)\emds.obj;
  192. $(OBJDIR)\87mt.lib: $(OBJDIR)\87mt.obj $(OBJDIR)\emds.obj
  193. if exist $@ erase $@
  194. $(LIBEXE) $@ + $(OBJDIR)\87mt.obj + $(OBJDIR)\emds.obj;
  195. $(OBJDIR)\emmt.obj: $(EMASM)
  196. $(ASM) $(MTFLAGS) $(SRCDIR)\emulator.asm, $@;
  197. $(OBJDIR)\87mt.obj: $(EMASM)
  198. $(ASM) $(MTFLAGS) $(SRCDIR)\emu8087.asm, $@;
  199. $(OBJDIR)\emds.obj: $(SRCDIR)\emds.asm
  200. $(ASM) $(SRCDIR)\emds.asm, $@;
  201. ###############################################################################
  202. #
  203. #
  204. # This is how to build the front end emulators
  205. #
  206. ###############################################################################
  207. FRONTENDFLAGS = -Dfrontend
  208. frontend: $(OBJDIR)\feemr.obj $(OBJDIR)\feem.obj $(OBJDIR)\feemp.obj
  209. $(OBJDIR)\feem.obj: $(EMASM)
  210. $(ASM) $(FRONTENDFLAGS) -DDOS5 $(SRCDIR)\emulator.asm, $@;
  211. $(OBJDIR)\feemr.obj: $(EMASM)
  212. $(ASM) $(FRONTENDFLAGS) $(SRCDIR)\emulator.asm, $@;
  213. $(OBJDIR)\feemp.obj: $(EMASM)
  214. $(ASM) $(FRONTENDFLAGS) -DDOS5only $(SRCDIR)\emulator.asm, $@;
  215. ###############################################################################
  216. #
  217. #
  218. # This is how to build fwait polling versions of the emulators
  219. # ie with fwait polling
  220. # no IBM bios check
  221. #
  222. #
  223. ###############################################################################
  224. POLLINGFLAGS = -DPOLLING
  225. pem: $(OBJDIR)\pem.lib $(OBJDIR)\pemr.lib $(OBJDIR)\pemp.lib
  226. p87: $(OBJDIR)\p87.lib $(OBJDIR)\p87r.lib $(OBJDIR)\p87p.lib
  227. $(OBJDIR)\pem.lib: $(OBJDIR)\pem.obj $(OBJDIR)\emoem.obj
  228. if exist $@ erase $@
  229. $(LIBEXE) $@ + $(OBJDIR)\pem.obj + $(OBJDIR)\emoem.obj;
  230. $(OBJDIR)\pemr.lib: $(OBJDIR)\pemr.obj $(OBJDIR)\emoem.obj
  231. if exist $@ erase $@
  232. $(LIBEXE) $@ + $(OBJDIR)\pemr.obj + $(OBJDIR)\emoem.obj;
  233. $(OBJDIR)\pemp.lib: $(OBJDIR)\pemp.obj
  234. if exist $@ erase $@
  235. $(LIBEXE) $@ + $(OBJDIR)\pemp.obj;
  236. $(OBJDIR)\p87.lib: $(OBJDIR)\p87.obj $(OBJDIR)\emoem.obj
  237. if exist $@ erase $@
  238. $(LIBEXE) $@ + $(OBJDIR)\p87.obj + $(OBJDIR)\emoem.obj;
  239. $(OBJDIR)\p87r.lib: $(OBJDIR)\p87r.obj $(OBJDIR)\emoem.obj
  240. if exist $@ erase $@
  241. $(LIBEXE) $@ + $(OBJDIR)\p87r.obj + $(OBJDIR)\emoem.obj;
  242. $(OBJDIR)\p87p.lib: $(OBJDIR)\p87p.obj
  243. if exist $@ erase $@
  244. $(LIBEXE) $@ + $(OBJDIR)\p87p.obj;
  245. $(OBJDIR)\pem.obj: $(EMASM)
  246. $(ASM) $(POLLINGFLAGS) -DDOS5 $(SRCDIR)\emulator.asm, $@;
  247. $(OBJDIR)\pemr.obj: $(EMASM)
  248. $(ASM) $(POLLINGFLAGS) $(SRCDIR)\emulator.asm, $@;
  249. $(OBJDIR)\pemp.obj: $(EMASM)
  250. $(ASM) $(POLLINGFLAGS) -DDOS5only $(SRCDIR)\emulator.asm, $@;
  251. $(OBJDIR)\p87.obj: $(EMASM)
  252. $(ASM) $(POLLINGFLAGS) -DDOS5 $(SRCDIR)\emu8087.asm, $@;
  253. $(OBJDIR)\p87r.obj: $(EMASM)
  254. $(ASM) $(POLLINGFLAGS) $(SRCDIR)\emu8087.asm, $@;
  255. $(OBJDIR)\p87p.obj: $(EMASM)
  256. $(ASM) $(POLLINGFLAGS) -DDOS5only $(SRCDIR)\emu8087.asm, $@;
  257. ###############################################################################
  258. #
  259. #
  260. # This is how to build the QC emulator
  261. # ie stand alone
  262. # no control c hooking
  263. #
  264. ###############################################################################
  265. QCFLAGS = -DSTANDALONE -D_NO87INSTALL -D_NOCTRLC
  266. qc: $(OBJDIR)\sanemr.lib
  267. $(OBJDIR)\sanemr.lib: $(OBJDIR)\saemr.obj $(OBJDIR)\anemoem.obj
  268. if exist $@ erase $@
  269. $(LIBEXE) $@ + $(OBJDIR)\saemr.obj + $(OBJDIR)\anemoem.obj;
  270. $(OBJDIR)\saemr.obj: $(EMASM)
  271. $(ASM) $(QCFLAGS) $(SRCDIR)\emulator.asm, $@;
  272. $(OBJDIR)\anemoem.obj: $(SRCDIR)\emoem.asm
  273. $(ASM) $(QCFLAGS) $(SRCDIR)\emoem.asm, $@;
  274. ###############################################################################
  275. #
  276. #
  277. # This is how to build the BASIC interpreter's emulators
  278. # ie fwait polling
  279. # IBM bios check
  280. # no control c hooking
  281. #
  282. # Note. Basic also uses the piem?.lib and pi87?.lib
  283. #
  284. ###############################################################################
  285. BASICINTFLAGS = -D_NOCTRLC
  286. basici: $(OBJDIR)\pinemr.lib $(OBJDIR)\pin87r.lib
  287. $(OBJDIR)\pinemr.lib: $(OBJDIR)\piemr.obj $(OBJDIR)\nemoem.obj
  288. if exist $@ erase $@
  289. $(LIBEXE) $@ + $(OBJDIR)\piemr.obj + $(OBJDIR)\nemoem.obj;
  290. $(OBJDIR)\pin87r.lib: $(OBJDIR)\pi87r.obj $(OBJDIR)\nemoem.obj
  291. if exist $@ erase $@
  292. $(LIBEXE) $@ + $(OBJDIR)\pi87r.obj + $(OBJDIR)\nemoem.obj;
  293. $(OBJDIR)\nemoem.obj: $(SRCDIR)\emoem.asm
  294. $(ASM) $(BASICINTFLAGS) $(SRCDIR)\emoem.asm, $@;
  295. ###############################################################################
  296. #
  297. #
  298. # This is how to build the BASICJ interpreter's emulators
  299. # ie fwait polling
  300. # no control c hooking
  301. #
  302. # Note. Basicj also uses the pem?.lib and p87?.lib
  303. #
  304. ###############################################################################
  305. basicij: $(OBJDIR)\pnemr.lib $(OBJDIR)\pn87r.lib
  306. $(OBJDIR)\pnemr.lib: $(OBJDIR)\pemr.obj $(OBJDIR)\nemoem.obj
  307. if exist $@ erase $@
  308. $(LIBEXE) $@ + $(OBJDIR)\pemr.obj + $(OBJDIR)\nemoem.obj;
  309. $(OBJDIR)\pn87r.lib: $(OBJDIR)\p87r.obj $(OBJDIR)\nemoem.obj
  310. if exist $@ erase $@
  311. $(LIBEXE) $@ + $(OBJDIR)\p87r.obj + $(OBJDIR)\nemoem.obj;
  312. ###############################################################################
  313. #
  314. #
  315. # This is how to build fwait polling versions of the small emulators
  316. # with limited instructions. (for BASIC)
  317. #
  318. # ie with fwait polling
  319. # with limited instructions
  320. # no IBM bios check
  321. #
  322. #
  323. ###############################################################################
  324. SMALL_POLLING_FLAGS = -DPOLLING -DSMALL_EMULATOR
  325. psem: $(OBJDIR)\psem.lib $(OBJDIR)\psemr.lib $(OBJDIR)\psemp.lib
  326. $(OBJDIR)\psem.lib: $(OBJDIR)\psem.obj $(OBJDIR)\emoem.obj
  327. if exist $@ erase $@
  328. $(LIBEXE) $@ + $(OBJDIR)\psem.obj + $(OBJDIR)\emoem.obj;
  329. $(OBJDIR)\psemr.lib: $(OBJDIR)\psemr.obj $(OBJDIR)\emoem.obj
  330. if exist $@ erase $@
  331. $(LIBEXE) $@ + $(OBJDIR)\psemr.obj + $(OBJDIR)\emoem.obj;
  332. $(OBJDIR)\psemp.lib: $(OBJDIR)\psemp.obj
  333. if exist $@ erase $@
  334. $(LIBEXE) $@ + $(OBJDIR)\psemp.obj;
  335. $(OBJDIR)\psem.obj: $(EMASM)
  336. $(ASM) $(SMALL_POLLING_FLAGS) -DDOS5 $(SRCDIR)\emulator.asm, $@;
  337. $(OBJDIR)\psemr.obj: $(EMASM)
  338. $(ASM) $(SMALL_POLLING_FLAGS) $(SRCDIR)\emulator.asm, $@;
  339. $(OBJDIR)\psemp.obj: $(EMASM)
  340. $(ASM) $(SMALL_POLLING_FLAGS) -DDOS5only $(SRCDIR)\emulator.asm, $@;
  341. ###############################################################################
  342. #
  343. #
  344. # This is how to build fwait polling versions of the small emulators
  345. # with limited instructions and IBM bios checks. (for BASIC)
  346. #
  347. # ie with fwait polling
  348. # with limited instructions
  349. # with IBM bios check
  350. #
  351. #
  352. ###############################################################################
  353. SMALL_IBM_FLAGS = -DPOLLING -DPCDOS -DSMALL_EMULATOR
  354. pisem: $(OBJDIR)\pisem.lib $(OBJDIR)\pisemr.lib $(OBJDIR)\pisemp.lib
  355. $(OBJDIR)\pisem.lib: $(OBJDIR)\pisem.obj $(OBJDIR)\emoem.obj
  356. if exist $@ erase $@
  357. $(LIBEXE) $@ + $(OBJDIR)\pisem.obj + $(OBJDIR)\emoem.obj;
  358. $(OBJDIR)\pisemr.lib: $(OBJDIR)\pisemr.obj $(OBJDIR)\emoem.obj
  359. if exist $@ erase $@
  360. $(LIBEXE) $@ + $(OBJDIR)\pisemr.obj + $(OBJDIR)\emoem.obj;
  361. $(OBJDIR)\pisemp.lib: $(OBJDIR)\pisemp.obj
  362. if exist $@ erase $@
  363. $(LIBEXE) $@ + $(OBJDIR)\pisemp.obj;
  364. $(OBJDIR)\pisem.obj: $(EMASM)
  365. $(ASM) $(SMALL_IBM_FLAGS) -DDOS5 $(SRCDIR)\emulator.asm, $@;
  366. $(OBJDIR)\pisemr.obj: $(EMASM)
  367. $(ASM) $(SMALL_IBM_FLAGS) $(SRCDIR)\emulator.asm, $@;
  368. $(OBJDIR)\pisemp.obj: $(EMASM)
  369. $(ASM) $(SMALL_IBM_FLAGS) -DDOS5only $(SRCDIR)\emulator.asm, $@;
  370. ###############################################################################
  371. #
  372. #
  373. # This is how to build the emulators with .com file support (or tiny model)
  374. # ie .com support
  375. # no fwait polling
  376. # no IBM bios checks
  377. #
  378. ###############################################################################
  379. TINYFLAGS = -D_COM_
  380. emt: $(OBJDIR)\emt.lib $(OBJDIR)\emtr.lib
  381. 87t: $(OBJDIR)\87t.lib $(OBJDIR)\87tr.lib
  382. $(OBJDIR)\emt.lib: $(OBJDIR)\emt.obj $(OBJDIR)\emoem.obj
  383. if exist $@ erase $@
  384. $(LIBEXE) $@ + $(OBJDIR)\emt.obj + $(OBJDIR)\emoem.obj;
  385. $(OBJDIR)\emtr.lib: $(OBJDIR)\emtr.obj $(OBJDIR)\emoem.obj
  386. if exist $@ erase $@
  387. $(LIBEXE) $@ + $(OBJDIR)\emtr.obj + $(OBJDIR)\emoem.obj;
  388. $(OBJDIR)\87t.lib: $(OBJDIR)\87t.obj $(OBJDIR)\emoem.obj
  389. if exist $@ erase $@
  390. $(LIBEXE) $@ + $(OBJDIR)\87t.obj + $(OBJDIR)\emoem.obj;
  391. $(OBJDIR)\87tr.lib: $(OBJDIR)\87tr.obj $(OBJDIR)\emoem.obj
  392. if exist $@ erase $@
  393. $(LIBEXE) $@ + $(OBJDIR)\87tr.obj + $(OBJDIR)\emoem.obj;
  394. $(OBJDIR)\emt.obj: $(EMASM)
  395. $(ASM) $(TINYFLAGS) -DDOS5 $(SRCDIR)\emulator.asm, $@;
  396. $(OBJDIR)\emtr.obj: $(EMASM)
  397. $(ASM) $(TINYFLAGS) $(SRCDIR)\emulator.asm, $@;
  398. $(OBJDIR)\87t.obj: $(EMASM)
  399. $(ASM) $(TINYFLAGS) -DDOS5 $(SRCDIR)\emu8087.asm, $@;
  400. $(OBJDIR)\87tr.obj: $(EMASM)
  401. $(ASM) $(TINYFLAGS) $(SRCDIR)\emu8087.asm, $@;
  402. ###############################################################################
  403. #
  404. #
  405. # This is how to build the special verison of emmt.lib for SQL. The only
  406. # difference between the normal emmt.lib is that this verison always gets
  407. # a new CS alias to the stack segment when an exception occurs. This lets
  408. # the SQL swap stacks.
  409. #
  410. ###############################################################################
  411. MT_SQL_FLAGS = -DMTHREAD -DDOS5only -DSQL_EMMT
  412. emmtsql: $(OBJDIR)\emmtsql.lib
  413. $(OBJDIR)\emmtsql.lib: $(OBJDIR)\emmtsql.obj $(OBJDIR)\emds.obj
  414. if exist $@ erase $@
  415. $(LIBEXE) $@ + $(OBJDIR)\emmtsql.obj + $(OBJDIR)\emds.obj;
  416. $(OBJDIR)\emmtsql.obj: $(EMASM)
  417. $(ASM) $(MT_SQL_FLAGS) $(SRCDIR)\emulator.asm, $@;
  418. ###############################################################################
  419. #
  420. #
  421. # This is how to build the Windows emulator.
  422. #
  423. ###############################################################################
  424. WINFLAGS = -DPOLLING -DWINDOWS -D_NOCTRLC -DPCDOS
  425. win87em: $(OBJDIR)\win87em.dll $(OBJDIR)\win87em.lib
  426. $(OBJDIR)\win87em.ex2: $(OBJDIR)\win87em.obj $(OBJDIR)\emoemwin.obj \
  427. $(SRCDIR)\libw.lib $(SRCDIR)\win87em2.def
  428. $(LINK) /noi/nod @<<
  429. $(OBJDIR)\win87em.obj+
  430. $(OBJDIR)\emoemwin.obj+
  431. $(OBJDIR)\win87em.ex2
  432. $(OBJDIR)\win87em.ma2/map
  433. $(SRCDIR)\libw.lib+
  434. $(SRCDIR)\win87em2.def;
  435. <<
  436. $(OBJDIR)\win87em.dll: $(OBJDIR)\win87em.obj $(OBJDIR)\emoemwin.obj \
  437. $(SRCDIR)\libw.lib $(SRCDIR)\win87em3.def
  438. $(LINK) /align:16 /noi/nod @<<
  439. $(OBJDIR)\win87em.obj+
  440. $(OBJDIR)\emoemwin.obj+
  441. $(OBJDIR)\win87em.dll
  442. $(OBJDIR)\win87em.map/map
  443. $(SRCDIR)\libw.lib+
  444. $(SRCDIR)\win87em3.def;
  445. <<
  446. $(RC) $@
  447. $(OBJDIR)\win87em.lib: $(SRCDIR)\win87em.def $(OBJDIR)\87emstar.obj \
  448. $(OBJDIR)\wfpsig.obj $(OBJDIR)\wfpinit.obj
  449. $(IMPLIB) $@ $(SRCDIR)\win87em.def
  450. $(LIBEXE) $@ + $(OBJDIR)\87emstar.obj + $(OBJDIR)\wfpsig.obj + $(OBJDIR)\wfpinit.obj;
  451. erase $(@R).bak
  452. $(OBJDIR)\win87em.obj: $(EMASM)
  453. $(ASM) $(WINFLAGS) $(SRCDIR)\emulator.asm, $@;
  454. $(OBJDIR)\emoemwin.obj: $(SRCDIR)\emoemwin.asm
  455. $(ASM) $(WINFLAGS) $(SRCDIR)\emoemwin.asm, $@;
  456. $(OBJDIR)\87emstar.obj: $(SRCDIR)\87emstar.asm
  457. $(ASM) $(WINFLAGS) $(SRCDIR)\87emstar.asm, $@;
  458. $(OBJDIR)\wfpsig.obj: $(SRCDIR)\wfpsig.asm
  459. $(ASM) $(WINFLAGS) $(SRCDIR)\wfpsig.asm, $@;
  460. $(OBJDIR)\wfpinit.obj: $(SRCDIR)\wfpinit.asm
  461. $(ASM) $(WINFLAGS) $(SRCDIR)\wfpinit.asm, $@;
  462. ###############################################################################
  463. #
  464. #
  465. # This is how to build the Quick Pascal emulators.
  466. #
  467. ###############################################################################
  468. QPASCALFLAGS = -DQP
  469. emqp: $(OBJDIR)\emqp.lib
  470. $(OBJDIR)\emqp.lib: $(OBJDIR)\emqp.obj $(OBJDIR)\emoemqp.obj
  471. if exist $@ erase $@
  472. $(LIBEXE) $@ + $(OBJDIR)\emqp.obj + $(OBJDIR)\emoemqp.obj;
  473. $(OBJDIR)\emqp.obj: $(EMASM)
  474. $(ASM) $(QPASCALFLAGS) $(SRCDIR)\emulator.asm, $@;
  475. $(OBJDIR)\emoemqp.obj: $(SRCDIR)\emoemqp.asm
  476. $(ASM) $(QPASCALFLAGS) $(SRCDIR)\emoemqp.asm, $@;
  477. ###############################################################################
  478. #
  479. # This is how to build emoem.src, the OEM version of emoem.asm.
  480. #
  481. ###############################################################################
  482. emoem: $(SRCDIR)\emoem.src
  483. $(SRCDIR)\emoem.src: $(SRCDIR)\emoem.asm
  484. $(IFSTRIP) -w -xsrc -f $(SRCDIR)\switch.src $(SRCDIR)\emoem.asm