2 # TODO: OS/2 target: What can we #define to tell the header files which OS/2
3 # environment we're doing? (Command prompt app. vs Presentation Manager app vs.
6 # this makefile is included from all the dos*.mak files, do not use directly
7 # NTS: HPS is either \ (DOS) or / (Linux)
9 CFLAGS_THIS = -fr=nul -fo=$(SUBDIR)$(HPS).obj -i=.. -i..$(HPS)..
10 NOW_BUILDING = HW_DOS_LIB
12 OBJS = $(SUBDIR)$(HPS)dos.obj $(SUBDIR)$(HPS)dosxio.obj $(SUBDIR)$(HPS)biosext.obj $(SUBDIR)$(HPS)himemsys.obj $(SUBDIR)$(HPS)emm.obj $(SUBDIR)$(HPS)dosbox.obj $(SUBDIR)$(HPS)biosmem.obj $(SUBDIR)$(HPS)biosmem3.obj $(SUBDIR)$(HPS)dosasm.obj $(SUBDIR)$(HPS)tgusmega.obj $(SUBDIR)$(HPS)tgussbos.obj $(SUBDIR)$(HPS)tgusumid.obj $(SUBDIR)$(HPS)dosntvdm.obj $(SUBDIR)$(HPS)doswin.obj $(SUBDIR)$(HPS)dos_lol.obj $(SUBDIR)$(HPS)dossmdrv.obj $(SUBDIR)$(HPS)dosvbox.obj $(SUBDIR)$(HPS)dosmapal.obj $(SUBDIR)$(HPS)dosflavr.obj $(SUBDIR)$(HPS)dos9xvm.obj $(SUBDIR)$(HPS)dos_nmi.obj $(SUBDIR)$(HPS)win32lrd.obj $(SUBDIR)$(HPS)win3216t.obj $(SUBDIR)$(HPS)win16vec.obj $(SUBDIR)$(HPS)dpmiexcp.obj $(SUBDIR)$(HPS)dosvcpi.obj $(SUBDIR)$(HPS)ddpmilin.obj $(SUBDIR)$(HPS)ddpmiphy.obj $(SUBDIR)$(HPS)ddpmidos.obj $(SUBDIR)$(HPS)ddpmidsc.obj $(SUBDIR)$(HPS)dpmirmcl.obj $(SUBDIR)$(HPS)dos_mcb.obj $(SUBDIR)$(HPS)dospsp.obj $(SUBDIR)$(HPS)dosdev.obj $(SUBDIR)$(HPS)dos_ltp.obj $(SUBDIR)$(HPS)dosdpmi.obj
14 OBJS += $(SUBDIR)$(HPS)winfcon.obj
17 #HW_DOS_LIB = $(SUBDIR)$(HPS)dos.lib
20 NTVDMLIB_LIB = ..$(HPS)..$(HPS)windows$(HPS)ntvdm$(HPS)$(SUBDIR)$(HPS)ntvdmlib.lib
21 NTVDMLIB_LIB_WLINK_LIBRARIES = library $(NTVDMLIB_LIB)
22 NTVDMVDD_LIB = ..$(HPS)..$(HPS)windows$(HPS)ntvdm$(HPS)$(SUBDIR)$(HPS)ntvdmvdd.lib
23 NTVDMVDD_LIB_WLINK_LIBRARIES = library $(NTVDMVDD_LIB)
26 !ifndef TARGET_WINDOWS
28 LOL_EXE = $(SUBDIR)$(HPS)lol.exe
29 TESTSMRT_EXE =$(SUBDIR)$(HPS)testsmrt.exe
30 NTASTRM_EXE = $(SUBDIR)$(HPS)ntastrm.exe
31 ! ifeq TARGET_MSDOS 16
32 TESTDPMI_EXE =$(SUBDIR)$(HPS)testdpmi.exe
34 TSTHIMEM_EXE =$(SUBDIR)$(HPS)tsthimem.exe
35 TESTBEXT_EXE =$(SUBDIR)$(HPS)testbext.exe
36 TESTEMM_EXE = $(SUBDIR)$(HPS)testemm.exe
37 TSTBIOM_EXE = $(SUBDIR)$(HPS)tstbiom.exe
38 TSTLP_EXE = $(SUBDIR)$(HPS)tstlp.exe
41 TEST_EXE = $(SUBDIR)$(HPS)test.exe
42 CR3_EXE = $(SUBDIR)$(HPS)cr3.exe
45 # if targeting Win32, then build the DOS NT assistant DLL that DOS versions
46 # can use to better interact with Windows NT/2000/XP. Else, copy the winnt
47 # DLL into the DOS build dir. The DLL is given the .VDD extension to clarify
48 # that it is intented for use as a VDD for NTVDM.EXE (or as a Win32 extension
49 # to the Win16 builds).
50 DOSNTAST_VDD = $(SUBDIR)$(HPS)dosntast.vdd
54 ! ifeq TARGET_MSDOS 32
55 ! ifeq TARGET_WINDOWS 40
61 $(HW_DOS_LIB): $(OBJS)
62 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dos.obj -+$(SUBDIR)$(HPS)biosext.obj
63 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)himemsys.obj -+$(SUBDIR)$(HPS)emm.obj
64 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dosbox.obj -+$(SUBDIR)$(HPS)biosmem.obj
65 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)biosmem3.obj -+$(SUBDIR)$(HPS)dosasm.obj
66 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)tgusmega.obj -+$(SUBDIR)$(HPS)tgussbos.obj
67 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)tgusumid.obj -+$(SUBDIR)$(HPS)dosntvdm.obj
68 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)doswin.obj -+$(SUBDIR)$(HPS)dosxio.obj
69 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dos_lol.obj -+$(SUBDIR)$(HPS)dossmdrv.obj
70 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dosvbox.obj -+$(SUBDIR)$(HPS)dosmapal.obj
71 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dosflavr.obj -+$(SUBDIR)$(HPS)dos9xvm.obj
72 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dos_nmi.obj -+$(SUBDIR)$(HPS)win32lrd.obj
73 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)win3216t.obj -+$(SUBDIR)$(HPS)win16vec.obj
74 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dpmiexcp.obj -+$(SUBDIR)$(HPS)dosvcpi.obj
75 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)ddpmilin.obj -+$(SUBDIR)$(HPS)ddpmiphy.obj
76 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)ddpmidos.obj -+$(SUBDIR)$(HPS)ddpmidsc.obj
77 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dpmirmcl.obj -+$(SUBDIR)$(HPS)dos_mcb.obj
78 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dospsp.obj -+$(SUBDIR)$(HPS)dosdev.obj
79 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)dos_ltp.obj -+$(SUBDIR)$(HPS)dosdpmi.obj
81 wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)winfcon.obj
84 # some components need a 386 in real mode
85 $(SUBDIR)$(HPS)biosmem3.obj: biosmem3.c
86 %write tmp.cmd $(CFLAGS_THIS) $(CFLAGS386) $[@
89 $(SUBDIR)$(HPS)dosntast.obj: dosntast.c
90 %write tmp.cmd $(CFLAGS_THIS) $(CFLAGS) $[@
93 # NTS we have to construct the command line into tmp.cmd because for MS-DOS
94 # systems all arguments would exceed the pitiful 128 char command line limit
96 %write tmp.cmd $(CFLAGS_THIS) $(CFLAGS_CON) $[@
100 nasm -o $@ -f obj $(NASMFLAGS) $[@
104 exe: $(TESTSMRT_EXE) $(NTASTRM_EXE) $(TEST_EXE) $(CR3_EXE) $(TESTBEXT_EXE) $(TSTHIMEM_EXE) $(TESTEMM_EXE) $(TSTBIOM_EXE) $(LOL_EXE) $(TSTLP_EXE) $(TESTDPMI_EXE) .symbolic
106 lib: $(DOSNTAST_VDD) $(HW_DOS_LIB) .symbolic
109 $(TESTSMRT_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)testsmrt.obj
110 %write tmp.cmd option quiet system $(WLINK_SYSTEM) file $(SUBDIR)$(HPS)testsmrt.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(TESTSMRT_EXE)
112 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
116 $(NTASTRM_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)ntastrm.obj
117 %write tmp.cmd option quiet system $(WLINK_SYSTEM) file $(SUBDIR)$(HPS)ntastrm.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(NTASTRM_EXE)
119 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
122 !ifdef DOSNTAST_VDD_BUILD
123 $(DOSNTAST_VDD): $(HW_DOS_LIB) $(HW_CPU_LIB) $(NTVDMLIB_LIB) $(NTVDMVDD_LIB) $(SUBDIR)$(HPS)dosntast.obj
124 %write tmp.cmd option quiet system $(WLINK_DLL_SYSTEM) $(HW_CPU_LIB_WLINK_LIBRARIES) $(HW_DOS_LIB_WLINK_LIBRARIES) $(NTVDMVDD_LIB_WLINK_LIBRARIES) $(NTVDMLIB_LIB_WLINK_LIBRARIES) library winmm.lib file $(SUBDIR)$(HPS)dosntast.obj
125 %write tmp.cmd option modname='DOSNTAST'
126 ! ifeq TARGET_MSDOS 32
127 %write tmp.cmd option nostdcall
129 # explanation: if we use the IMPLIB option, Watcom will go off and make an import library that
130 # cases all references to refer to HELLDLD1.DLL within the NE image, which Windows does NOT like.
131 # we need to ensure the DLL name is encoded by itself without a .DLL extension which is more
132 # compatible with Windows and it's internal functions.
134 # Frankly I'm surprised that Watcom has this bug considering how long it's been around... Kind of disappointed really
135 # %write tmp.cmd option impfile=$(SUBDIR)$(HPS)DOSNTAST.LCF
136 %write tmp.cmd name $(DOSNTAST_VDD)
139 # copy from Win32 dir. Build if necessary
140 winnt$(HPS)dosntast.vdd: dosntast.c
141 @$(MAKECMD) build lib winnt
144 $(DOSNTAST_VDD): winnt$(HPS)dosntast.vdd
145 @$(COPY) winnt$(HPS)dosntast.vdd $(DOSNTAST_VDD)
150 $(LOL_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)lol.obj
151 %write tmp.cmd option quiet system $(WLINK_SYSTEM) file $(SUBDIR)$(HPS)lol.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(LOL_EXE)
153 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
157 $(TESTDPMI_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)testdpmi.obj
158 %write tmp.cmd option quiet system $(WLINK_SYSTEM) file $(SUBDIR)$(HPS)testdpmi.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(TESTDPMI_EXE)
160 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
164 $(TEST_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)test.obj
165 %write tmp.cmd option quiet system $(WLINK_CON_SYSTEM) $(WLINK_FLAGS) file $(SUBDIR)$(HPS)test.obj $(HW_DOS_LIB_WLINK_LIBRARIES)
166 %write tmp.cmd option map=$(SUBDIR)$(HPS)test.map
167 ! ifdef TARGET_WINDOWS
168 ! ifeq TARGET_MSDOS 16
169 %write tmp.cmd segment TYPE CODE PRELOAD FIXED DISCARDABLE SHARED
170 %write tmp.cmd segment TYPE DATA PRELOAD MOVEABLE
173 %write tmp.cmd name $(TEST_EXE)
175 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
177 @$(WIN386_EXE_TO_REX_IF_REX) $(TEST_EXE)
178 @wbind $(TEST_EXE) -q -n
180 ! ifdef WIN_NE_SETVER_BUILD
181 $(WIN_NE_SETVER_BUILD) $(TEST_EXE)
186 $(CR3_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)cr3.obj
187 %write tmp.cmd option quiet system $(WLINK_CON_SYSTEM) $(WLINK_FLAGS) file $(SUBDIR)$(HPS)cr3.obj $(HW_DOS_LIB_WLINK_LIBRARIES)
188 %write tmp.cmd option map=$(SUBDIR)$(HPS)cr3.map
189 ! ifdef TARGET_WINDOWS
190 ! ifeq TARGET_MSDOS 16
191 %write tmp.cmd segment TYPE CODE PRELOAD FIXED DISCARDABLE SHARED
192 %write tmp.cmd segment TYPE DATA PRELOAD MOVEABLE
195 %write tmp.cmd name $(CR3_EXE)
197 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
199 @$(WIN386_EXE_TO_REX_IF_REX) $(CR3_EXE)
200 @wbind $(CR3_EXE) -q -n
202 ! ifdef WIN_NE_SETVER_BUILD
203 $(WIN_NE_SETVER_BUILD) $(CR3_EXE)
208 $(TSTLP_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)tstlp.obj
209 %write tmp.cmd option quiet system $(WLINK_SYSTEM) $(WLINK_FLAGS) file $(SUBDIR)$(HPS)tstlp.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(TSTLP_EXE)
211 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
215 $(TESTBEXT_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)testbext.obj
216 %write tmp.cmd option quiet system $(WLINK_SYSTEM) $(WLINK_FLAGS) file $(SUBDIR)$(HPS)testbext.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(TESTBEXT_EXE)
218 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
222 $(TSTHIMEM_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)tsthimem.obj
223 %write tmp.cmd option quiet system $(WLINK_SYSTEM) $(WLINK_FLAGS) file $(SUBDIR)$(HPS)tsthimem.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(TSTHIMEM_EXE)
225 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
229 $(TESTEMM_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)testemm.obj
230 %write tmp.cmd option quiet system $(WLINK_SYSTEM) $(WLINK_FLAGS) file $(SUBDIR)$(HPS)testemm.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(TESTEMM_EXE)
232 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
236 $(TSTBIOM_EXE): $(HW_DOS_LIB) $(HW_DOS_LIB_DEPENDENCIES) $(SUBDIR)$(HPS)tstbiom.obj
237 %write tmp.cmd option quiet system $(WLINK_SYSTEM) $(WLINK_FLAGS) file $(SUBDIR)$(HPS)tstbiom.obj $(HW_DOS_LIB_WLINK_LIBRARIES) name $(TSTBIOM_EXE)
239 @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
243 del $(SUBDIR)$(HPS)*.obj