]> 4ch.mooo.com Git - 16.git/blob - src/lib/doslib/hw/dos/common.mak
added a bunch of things~ and midi stuff~
[16.git] / src / lib / doslib / hw / dos / common.mak
1
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.
4 #       "fullscreen" app.)
5
6 # this makefile is included from all the dos*.mak files, do not use directly
7 # NTS: HPS is either \ (DOS) or / (Linux)
8
9 CFLAGS_THIS = -fr=nul -fo=$(SUBDIR)$(HPS).obj -i=.. -i..$(HPS)..
10 NOW_BUILDING = HW_DOS_LIB
11
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
13 !ifdef TARGET_WINDOWS
14 OBJS +=       $(SUBDIR)$(HPS)winfcon.obj
15 !endif
16
17 #HW_DOS_LIB =  $(SUBDIR)$(HPS)dos.lib
18
19 !ifndef TARGET_OS2
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)
24 !endif
25
26 !ifndef TARGET_WINDOWS
27 ! ifndef TARGET_OS2
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
33 !  endif
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
39 ! endif
40 !endif
41 TEST_EXE =    $(SUBDIR)$(HPS)test.exe
42 CR3_EXE =     $(SUBDIR)$(HPS)cr3.exe
43
44 !ifndef TARGET_OS2
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
51 !endif
52
53 !ifdef TARGET_WINDOWS
54 ! ifeq TARGET_MSDOS 32
55 !  ifeq TARGET_WINDOWS 40
56 DOSNTAST_VDD_BUILD=1
57 !  endif
58 ! endif
59 !endif
60
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
80 !ifdef TARGET_WINDOWS
81         wlib -q -b -c $(HW_DOS_LIB) -+$(SUBDIR)$(HPS)winfcon.obj
82 !endif
83
84 # some components need a 386 in real mode
85 $(SUBDIR)$(HPS)biosmem3.obj: biosmem3.c
86         %write tmp.cmd $(CFLAGS_THIS) $(CFLAGS386) $[@
87         @$(CC) @tmp.cmd
88
89 $(SUBDIR)$(HPS)dosntast.obj: dosntast.c
90         %write tmp.cmd $(CFLAGS_THIS) $(CFLAGS) $[@
91         @$(CC) @tmp.cmd
92
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
95 .C.OBJ:
96         %write tmp.cmd $(CFLAGS_THIS) $(CFLAGS_CON) $[@
97         @$(CC) @tmp.cmd
98
99 .ASM.OBJ:
100         nasm -o $@ -f obj $(NASMFLAGS) $[@
101
102 all: lib exe
103
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
105
106 lib: $(DOSNTAST_VDD) $(HW_DOS_LIB) .symbolic
107
108 !ifdef TESTSMRT_EXE
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)
111         @wlink @tmp.cmd
112         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
113 !endif
114
115 !ifdef NTASTRM_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)
118         @wlink @tmp.cmd
119         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
120 !endif
121
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
128 ! endif
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.
133 #
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)
137         @wlink @tmp.cmd
138 !else
139 # copy from Win32 dir. Build if necessary
140 winnt$(HPS)dosntast.vdd: dosntast.c
141         @$(MAKECMD) build lib winnt
142
143 ! ifdef DOSNTAST_VDD
144 $(DOSNTAST_VDD): winnt$(HPS)dosntast.vdd
145         @$(COPY) winnt$(HPS)dosntast.vdd $(DOSNTAST_VDD)
146 ! endif
147 !endif
148
149 !ifdef LOL_EXE
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)
152         @wlink @tmp.cmd
153         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
154 !endif
155
156 !ifdef TESTDPMI_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)
159         @wlink @tmp.cmd
160         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
161 !endif
162
163 !ifdef TEST_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
171 !  endif
172 ! endif
173         %write tmp.cmd name $(TEST_EXE)
174         @wlink @tmp.cmd
175         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
176 ! ifdef WIN386
177         @$(WIN386_EXE_TO_REX_IF_REX) $(TEST_EXE)
178         @wbind $(TEST_EXE) -q -n
179 ! endif
180 ! ifdef WIN_NE_SETVER_BUILD
181         $(WIN_NE_SETVER_BUILD) $(TEST_EXE)
182 ! endif
183 !endif
184
185 !ifdef CR3_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
193 !  endif
194 ! endif
195         %write tmp.cmd name $(CR3_EXE)
196         @wlink @tmp.cmd
197         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
198 ! ifdef WIN386
199         @$(WIN386_EXE_TO_REX_IF_REX) $(CR3_EXE)
200         @wbind $(CR3_EXE) -q -n
201 ! endif
202 ! ifdef WIN_NE_SETVER_BUILD
203         $(WIN_NE_SETVER_BUILD) $(CR3_EXE)
204 ! endif
205 !endif
206
207 !ifdef TSTLP_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)
210         @wlink @tmp.cmd
211         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
212 !endif
213
214 !ifdef TESTBEXT_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)
217         @wlink @tmp.cmd
218         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
219 !endif
220
221 !ifdef TSTHIMEM_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)
224         @wlink @tmp.cmd
225         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
226 !endif
227
228 !ifdef TESTEMM_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)
231         @wlink @tmp.cmd
232         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
233 !endif
234
235 !ifdef TSTBIOM_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)
238         @wlink @tmp.cmd
239         @$(COPY) ..$(HPS)..$(HPS)dos32a.dat $(SUBDIR)$(HPS)dos4gw.exe
240 !endif
241
242 clean: .SYMBOLIC
243           del $(SUBDIR)$(HPS)*.obj
244           del $(HW_DOS_LIB)
245           del tmp.cmd
246           @echo Cleaning done
247