source: trunk/src/win32k/win32k.mak@ 21388

Last change on this file since 21388 was 21342, checked in by abwillis, 16 years ago

VAC365 build updates. dsound update seems to help VAC308 some here too.

File size: 13.2 KB
Line 
1# $Id: win32k.mak,v 1.13 2001-07-31 21:34:08 bird Exp $
2
3#
4# Win32k.sys makefile.
5#
6# Copyright 1998-2001 knut st. osmundsen (knut.stange.osmundsen@mynd.no)
7#
8# Project Odin Software License can be found in LICENSE.TXT
9#
10
11
12#
13# Include path definitions, common stuff and our own tools.
14#
15!include makefile.inc
16!include ../../makefile.inc
17!include win32k.tools.mk
18
19
20#
21# Main targetname
22#
23NAME = Win32k
24
25
26#
27# Main rules.
28#
29!if "$(DDKPATH)" == "" || "$(MSCPATH)" == "" || "$(TOOLKIT)" == "" || "$(VACPATH)" == ""
30all: $(WIN32KBIN)\$(NAME).sys
31!endif
32
33
34#
35# Win32k.sys objects and libraries - Don't mess with the order or objects and libraries!
36#
37OBJS =\
38 $(WIN32KOBJ)\devfirst.obj \
39 $(WIN32KOBJ)\d16strat.obj \
40 $(WIN32KOBJ)\d32CallGate.obj \
41 $(WIN32KOBJ)\d32hlp.obj \
42 $(WIN32KOBJ)\d32globals.obj \
43 $(WIN32KOBJ)\d16globl.obj \
44 $(WIN32KOBJ)\abort.obj \
45 $(WIN32KOBJ)\asmutils.obj \
46 $(WIN32KOBJ)\calltaba.obj \
47 $(WIN32KOBJ)\locks.obj \
48 $(WIN32KOBJ)\malloc.obj \
49 $(WIN32KOBJ)\smalloc_avl.obj \
50 $(WIN32KOBJ)\avl.obj \
51 $(WIN32KOBJ)\rmalloc_avl.obj \
52 $(WIN32KOBJ)\new.obj \
53 $(WIN32KOBJ)\env.obj \
54 $(WIN32KOBJ)\PerTaskW32kData.obj \
55 $(WIN32KOBJ)\stricmp.obj \
56 $(WIN32KOBJ)\yield.obj \
57 $(WIN32KOBJ)\vsprintf.obj \
58 $(WIN32KOBJ)\vprintf.obj \
59 $(WIN32KOBJ)\ldr.obj \
60 $(WIN32KOBJ)\myldrClose.obj \
61 $(WIN32KOBJ)\myldrOpen.obj \
62 $(WIN32KOBJ)\myldrRead.obj \
63 $(WIN32KOBJ)\myLDRQAppType.obj \
64 $(WIN32KOBJ)\myldrEnum32bitRelRecs.obj \
65 $(WIN32KOBJ)\myldrOpenPath.obj \
66 $(WIN32KOBJ)\myldrOpenPatha.obj \
67 $(WIN32KOBJ)\myldrFindModule.obj \
68 $(WIN32KOBJ)\myldrCheckInternalName.obj \
69 $(WIN32KOBJ)\myldrGetFileName.obj \
70 $(WIN32KOBJ)\d32Events.obj \
71 $(WIN32KOBJ)\OS2KTCB.obj \
72 $(WIN32KOBJ)\OS2KPTDA.obj \
73 $(WIN32KOBJ)\pe2lx.obj \
74 $(WIN32KOBJ)\ModuleBase.obj \
75 $(WIN32KOBJ)\d32ElfIOCtl.obj \
76 $(WIN32KOBJ)\d32Win32kIOCtl.obj \
77 $(WIN32KOBJ)\d32Win32kOpenClose.obj \
78 $(WIN32KOBJ)\k32AllocMemEx.obj \
79 $(WIN32KOBJ)\k32KillProcessEx.obj \
80 $(WIN32KOBJ)\k32HandleSystemEvent.obj \
81 $(WIN32KOBJ)\k32ProcessReadWrite.obj \
82 $(WIN32KOBJ)\k32QueryCallGate.obj \
83 $(WIN32KOBJ)\k32QueryOTEs.obj \
84 $(WIN32KOBJ)\k32QueryOptionsStatus.obj \
85 $(WIN32KOBJ)\k32QuerySystemMemInfo.obj \
86 $(WIN32KOBJ)\k32SetEnvironment.obj \
87 $(WIN32KOBJ)\k32SetOptions.obj \
88 $(WIN32KOBJ)\mytkExecPgm.obj \
89 $(WIN32KOBJ)\mytkStartProcess.obj \
90 $(WIN32KOBJ)\vprntf16.obj \
91 $(WIN32KOBJ)\d32init.obj \
92 $(WIN32KOBJ)\d16init.obj_init \
93 $(WIN32KOBJ)\ProbKrnl.obj_init \
94 $(WIN32KOBJ)\SymDB.obj
95
96LASTOBJ =\
97 $(WIN32KOBJ)\devlast.obj
98
99LIBS =\
100 $(VACPATH)\lib\$(RTLLIB_NRE) \
101 $(DDKPATH)\lib\os2386.lib \
102 $(WIN32KOBJ)\devhelp.lib \
103 $(WIN32KOBJ)\clib.lib
104
105
106#
107# Win32k.sys rule. (Don't mess with the order or objects and libraries!)
108#
109$(NAME).sys: $(WIN32KBIN)\$(NAME).sys
110
111$(WIN32KBIN)\$(NAME).sys: clfix.exe \
112 $(WIN32KINCLUDE)\options.inc \
113 $(WIN32KINCLUDE)\api.inc \
114 $(WIN32KINCLUDE)\win32k.inc \
115 $(OBJS) \
116 $(LIBS) \
117 $(WIN32KOBJ)\$(NAME)bldlevel.def \
118 $(LASTOBJ) \
119 $(LIBSINIT) \
120 $(WIN32KOBJ)\$(@B).lnk \
121 win32k.mak makefile.inc ..\..\makefile.inc
122 -@$(ECHO) recompiling d16globl to get correct build time and date:
123 $(CC16) -c $(CFLAGS16) $(CDEFINES16) $(CINCLUDES16) -Fo$(WIN32KOBJ)\d16globl.obj \
124 -Fa$(WIN32KLIST)\d16globl.s dev16\d16globl.c
125 -@$(ECHO) linking: $@
126!ifdef GREP
127 -4 $(LD) $(LFLAGS) @$(WIN32KOBJ)\$(@B).lnk | $(GREP) -v LNK4001 | $(GREP) -v LNK4031
128!else
129 -4 $(LD) $(LFLAGS) @$(WIN32KOBJ)\$(@B).lnk
130!endif
131 cd $(WIN32KBIN)
132 @mapsym $(*B).map > nul
133 cd $(WIN32KBASE)
134 if not exist $(ODIN32_BIN) $(CREATEPATH) $(ODIN32_BIN)
135 $(CP) $@ $(ODIN32_BIN)
136 $(CP) $*.sym $(ODIN32_BIN)
137 $(CP) $(WIN32KBASE)\$(*B).ddp $(ODIN32_BIN)
138
139# Linker file.
140$(WIN32KOBJ)\$(NAME).lnk: win32k.mak makefile.inc ..\..\makefile.inc
141 echo Creating linkerfile: @<<$(WIN32KOBJ)\$(NAME).lnk
142/OUT:$(WIN32KBIN)\$(NAME).sys
143/MAP:$(WIN32KBIN)\$(NAME).map
144$(OBJS: =^
145)
146/IG
147$(LIBS: =^
148)
149$(LASTOBJ)
150$(WIN32KOBJ)\$(NAME)bldlevel.def
151<<KEEP
152
153# Add bldlevel signature to win32k.def - creates temporary win32kbldlevel.def.
154$(WIN32KOBJ)\$(NAME)bldlevel.def: $(NAME).def win32k.mak MakeDesc.cmd
155 -$(ECHO) Creates $@ with bldlevel signature string.
156 $(BLDLEVELINF) $(NAME).def $@ -R"$(NAME).def" \
157 -V"#define=ODIN32_VERSION,$(ODIN32_INCLUDE)\odinbuild.h" \
158 -M"#define=ODIN32_BUILD_NR,$(ODIN32_INCLUDE)\odinbuild.h"
159
160
161#
162# Win32ktst.exe object configuration.
163# (It should be as identical as possible to win32k.sys.)
164# (Don't mess with the order or objects and libraries!)
165#
166TSTOBJS =\
167 $(WIN32KOBJ)\devfirst.obj \
168 $(WIN32KOBJ)\$(NAME)tst.obj \
169 $(WIN32KOBJ)\dh.obj \
170 $(WIN32KOBJ)\dos.obj \
171 $(WIN32KOBJ)\dosa.obj \
172 $(WIN32KOBJ)\init.obj \
173 $(WIN32KOBJ)\fake.obj \
174 $(WIN32KOBJ)\fakea.obj \
175 $(WIN32KOBJ)\TstFakers.obj \
176 $(WIN32KOBJ)\d16strat.obj \
177 $(WIN32KOBJ)\d32CallGate.obj \
178 $(WIN32KOBJ)\d32hlp.obj \
179 $(WIN32KOBJ)\d32globals.obj \
180 $(WIN32KOBJ)\d16globl.obj \
181 $(WIN32KOBJ)\abort.obj \
182 $(WIN32KOBJ)\asmutils.obj \
183 $(WIN32KOBJ)\calltaba.obj \
184 $(WIN32KOBJ)\locks.obj \
185 $(WIN32KOBJ)\malloc.obj_tst. \
186 $(WIN32KOBJ)\smalloc_avl.obj \
187 $(WIN32KOBJ)\avl.obj \
188 $(WIN32KOBJ)\rmalloc_avl.obj \
189 $(WIN32KOBJ)\new.obj \
190 $(WIN32KOBJ)\env.obj \
191 $(WIN32KOBJ)\PerTaskW32kData.obj \
192 $(WIN32KOBJ)\stricmp.obj \
193 $(WIN32KOBJ)\yield.obj \
194 $(WIN32KOBJ)\vsprintf.obj \
195 $(WIN32KOBJ)\vprintf.obj_tst. \
196 $(WIN32KOBJ)\ldr.obj \
197 $(WIN32KOBJ)\myldrClose.obj \
198 $(WIN32KOBJ)\myldrOpen.obj \
199 $(WIN32KOBJ)\myldrRead.obj \
200 $(WIN32KOBJ)\myLDRQAppType.obj \
201 $(WIN32KOBJ)\myldrEnum32bitRelRecs.obj \
202 $(WIN32KOBJ)\myldrOpenPath.obj \
203 $(WIN32KOBJ)\myldrOpenPatha.obj \
204 $(WIN32KOBJ)\myldrFindModule.obj \
205 $(WIN32KOBJ)\myldrCheckInternalName.obj \
206 $(WIN32KOBJ)\myldrGetFileName.obj \
207 $(WIN32KOBJ)\d32Events.obj \
208 $(WIN32KOBJ)\OS2KTCB.obj \
209 $(WIN32KOBJ)\OS2KPTDA.obj \
210 $(WIN32KOBJ)\pe2lx.obj \
211 $(WIN32KOBJ)\ModuleBase.obj \
212 $(WIN32KOBJ)\d32ElfIOCtl.obj \
213 $(WIN32KOBJ)\d32Win32kIOCtl.obj \
214 $(WIN32KOBJ)\d32Win32kOpenClose.obj \
215 $(WIN32KOBJ)\k32AllocMemEx.obj \
216 $(WIN32KOBJ)\k32KillProcessEx.obj \
217 $(WIN32KOBJ)\k32HandleSystemEvent.obj \
218 $(WIN32KOBJ)\k32ProcessReadWrite.obj \
219 $(WIN32KOBJ)\k32QueryCallGate.obj \
220 $(WIN32KOBJ)\k32QueryOTEs.obj \
221 $(WIN32KOBJ)\k32QueryOptionsStatus.obj \
222 $(WIN32KOBJ)\k32QuerySystemMemInfo.obj \
223 $(WIN32KOBJ)\k32SetEnvironment.obj \
224 $(WIN32KOBJ)\k32SetOptions.obj \
225 $(WIN32KOBJ)\mytkExecPgm.obj \
226 $(WIN32KOBJ)\mytkStartProcess.obj \
227 $(WIN32KOBJ)\vprntf16.obj_tst. \
228 $(WIN32KOBJ)\d32init.obj_tst. \
229 $(WIN32KOBJ)\d16init.obj_tst_init. \
230 $(WIN32KOBJ)\ProbKrnl.obj_tst_init. \
231 $(WIN32KOBJ)\SymDB.obj
232
233TSTLASTOBJ = $(LASTOBJ)
234
235TSTLIBS = $(LIBS)
236
237
238#
239# Win32ktst.exe rule.
240# This is a test executable; win32k.sys wrapped into an executable with emulation
241# code for most of the OS/2 kernel dependencies.
242#
243$(NAME)tst.exe: $(WIN32KBIN)\$(NAME)tst.exe
244 $(CP) $(WIN32KBIN)\$@ $@
245$(WIN32KBIN)\$(NAME)tst.exe: clfix.exe \
246 Test\TstFakers.c \
247 $(NAME)tst.def \
248 $(TSTOBJS:. = ) \
249 $(TSTLIBS) \
250 $(TSTLASTOBJ) \
251 $(WIN32KOBJ)\$(@B).lnk \
252 win32k.mak makefile.inc ..\..\makefile.inc
253 -@$(ECHO) linking: $@
254!ifdef GREP
255 -4 $(LD) $(LFLAGS) @$(WIN32KOBJ)\$(@B).lnk | $(GREP) -v LNK4001 | $(GREP) -v LNK4031
256!else
257 -4 $(LD) $(LFLAGS) @$(WIN32KOBJ)\$(@B).lnk
258!endif
259
260# Linker file.
261$(WIN32KOBJ)\$(NAME)tst.lnk: win32k.mak makefile.inc ..\..\makefile.inc
262 echo Creating linkerfile: @<<$(WIN32KOBJ)\$(NAME)tst.lnk
263/DEBUG
264/OUT:$(WIN32KBIN)\$(NAME)tst.exe
265/MAP:$(WIN32KBIN)\$(NAME)tst.map
266$(TSTOBJS: =^
267)
268/IG
269$(TSTLIBS: =^
270)
271$(TSTLASTOBJ)
272$(NAME)tst.def
273<<KEEP
274
275
276
277#
278#
279# L i b r a r i e s
280#
281#
282
283#
284# Libraries - segments are renamed for the 16-bit libraries.
285#
286
287# List of object files in the converted devhelp library.
288DHLPOBJS = +$(WIN32KOBJ)\dhcall5b.obj +$(WIN32KOBJ)\dhcal11a.obj \
289 +$(WIN32KOBJ)\dhcal11g.obj +$(WIN32KOBJ)\dhret.obj
290
291# Make corrected devhelp library with only the required object files.
292$(WIN32KOBJ)\devhelp.lib: $(DDKPATH)\lib\dhcalls.lib $(WIN32KBIN)\libconv.exe $(DHLPOBJS:+=)
293 @$(RM) $@
294 @cd $(WIN32KOBJ)
295 $(DDKPATH)\tools\lib /nologo $@ $(DHLPOBJS);
296 @cd $(MAKEDIR)
297
298# Convert devhelp library.
299$(WIN32KOBJ)\devhelp_.lib: $(DDKPATH)\lib\dhcalls.lib
300 $(WIN32KBIN)\libconv $** $@
301
302# Extract required object files from the converted devhelp library.
303$(DHLPOBJS:+=): $(WIN32KOBJ)\devhelp_.lib
304 @cd $(WIN32KOBJ)
305 $(DDKPATH)\tools\lib /nologo $** *$@;
306 @cd $(MAKEDIR)
307
308
309# List of object files in the converted crt library.
310CLIBOBJS = +$(WIN32KOBJ)\inp.obj +$(WIN32KOBJ)\outp.obj \
311 +$(WIN32KOBJ)\anfalmul.obj +$(WIN32KOBJ)\anfaldiv.obj \
312 +$(WIN32KOBJ)\anfalrem.obj +$(WIN32KOBJ)\anfauldi.obj \
313 +$(WIN32KOBJ)\anuldiv.obj +$(WIN32KOBJ)\fmemcpy.obj \
314 +$(WIN32KOBJ)\anulrem.obj +$(WIN32KOBJ)\anlmul.obj \
315 +$(WIN32KOBJ)\__AHINCR.obj +$(WIN32KOBJ)\anlshl.obj
316
317# Make corrected crt library with only the required object files.
318$(WIN32KOBJ)\clib.lib: $(MSCPATH)\lib\clibcep.lib $(WIN32KBIN)\libconv.exe $(CLIBOBJS:+=)
319 @$(RM) $@
320 @cd $(WIN32KOBJ)
321 $(DDKPATH)\tools\lib /nologo $@ $(CLIBOBJS);
322 @cd $(MAKEDIR)
323
324# Convert devhelp library.
325$(WIN32KOBJ)\clib_.lib: $(MSCPATH)\lib\clibcep.lib
326 $(WIN32KBIN)\libconv $** $@ > nul
327
328# Extract required object files from the converted crt library.
329$(CLIBOBJS:+=): $(WIN32KOBJ)\clib_.lib
330 @cd $(WIN32KOBJ)
331 $(ILIB) $** *$@;
332 @cd $(MAKEDIR)
333
334
335#
336# Make last library.
337#
338$(WIN32KOBJ)\last.lib: $(WIN32KOBJ)\devlast.obj
339 -@$(RM) $@ > nul 2> nul
340 $(ILIB) $@ $**;
341
342
343#
344#
345# S o u r c e
346#
347#
348
349#
350# Generate calltaba.asm
351#
352ldr\calltaba.asm \
353$(WIN32KBASE)\ldr\calltaba.asm : dev16\probkrnl.c $(WIN32KBIN)\mkcalltab.exe
354 $(WIN32KBIN)\mkcalltab.exe calltab > $@
355
356
357#
358# Generate TstFakers.c
359#
360test\TstFakers.c \
361$(WIN32KBASE)\test\TstFakers.c: dev16\probkrnl.c include\probkrnl.h $(WIN32KBIN)\mkcalltab.exe
362 $(WIN32KBIN)\mkcalltab.exe tstfakers > $@
363
364
365#
366# Make assembly version of options.h; options.inc
367#
368$(WIN32KINCLUDE)\options.inc: $(WIN32KINCLUDE)\options.h
369 @$(ECHO) H2Inc: $**
370 $(H2INC) $** > $@
371
372
373#
374# Make assembly version of api.h; api.inc
375#
376$(WIN32KINCLUDE)\api.inc: $(WIN32KINCLUDE)\api.h
377 @$(ECHO) H2Inc: $**
378 $(H2INC) $** > $@
379
380#
381# Make assembly version of win32k.h; win32k.inc
382#
383$(WIN32KINCLUDE)\win32k.inc: $(ODIN32_INCLUDE)\win32k.h
384 @$(ECHO) H2Inc: $**
385 $(H2INC) $** > $@
386
387
388#
389#
390# T o o l s
391#
392#
393
394#
395# Make the convert tool.
396#
397$(WIN32KBIN)\libconv.exe: libconv.c
398 icc -Q+ -Ti+ -Fe$@ -Fo$(WIN32KOBJ)\$(*B).obj libconv.c
399
400
401#
402# Make the MkCallTab.exe utillity.
403#
404
405# MkCallTab objects.
406MKCALLTABOBJS = \
407 $(WIN32KOBJ)\mkcalltab.obj_c \
408 $(WIN32KOBJ)\probkrnl.obj_c \
409 $(WIN32KOBJ)\d16globl.obj_c \
410 $(WIN32KOBJ)\vprntf16.obj_c
411
412# Rule to build MkCallTab.exe
413mkcalltab.exe mkcalltab: $(WIN32KBIN)\mkcalltab.exe
414$(WIN32KBIN)\mkcalltab.exe: clfix.exe $(MKCALLTABOBJS)
415 @if not exist $(WIN32KBIN) $(CREATEPATH) $(WIN32KBIN)
416 $(LD) $(LFLAGS) /pmtype:vio @<<$(WIN32KOBJ)\$(@B).lnk
417 /OUT:$@
418 /MAP:$(WIN32KBIN)\$(@B).map
419 $(MKCALLTABOBJS)
420 $(TOOLKIT)\lib\os2286.lib
421 $(MSCPATH)\lib\clibcep.lib
422<<keep
423
424# Interference rule to make the MkCallTab objects.
425{dev16}.c.obj_c:
426 @$(ECHO) compiling 16bit (mkcalltab): $<
427 @$(CC16) -c -W3 -Asfw -G2s -Zp -Zl -nologo -Fa -Zi -Od -Lp -DDEBUG -DEXTRACT \
428 -Fa$(WIN32KLIST)\$(*B)_c.s -Fo$(WIN32KOBJ)\$(@B).obj_c $(CINCLUDES16) $<
429
430
431#
432# Make the clfix.exe utillity - clfix.exe
433# This should fix some of the problems we are experiencing with the
434# MSC v6.0a compiler (cl.exe) (16-bit).
435#
436clfix.exe: clfix.c
437 $(CC) $(@B).c
438
439
440#
441# Make the symbol extract utillity - Extract.exe
442#
443
444# Extract object files.
445EXTRACTOBJS = \
446 $(WIN32KOBJ)\extract.obj_e \
447 $(WIN32KOBJ)\probkrnl.obj_e \
448 $(WIN32KOBJ)\d16globl.obj_e \
449 $(WIN32KOBJ)\vprntf16.obj_e
450
451# Rules to build Extract.exe.
452$(WIN32KBIN)\extract.exe: clfix.exe $(EXTRACTOBJS)
453 $(LD) $(LFLAGS) /pmtype:vio @<<$(WIN32KOBJ)\$(@B).lnk
454 /OUT:$@
455 /MAP:$(WIN32KBIN)\$(@B).map
456 $(EXTRACTOBJS)
457 $(TOOLKIT)\lib\os2286.lib
458 $(MSCPATH)\lib\clibcep.lib
459<<keep
460
461# Copy rule.
462extract.exe: $(WIN32KBIN)\extract.exe
463 $(CP) $** $@
464
465# Interference rule to make the Extract objects.
466{dev16}.c.obj_e:
467 @$(ECHO) compiling 16bit (extract): $<
468 @$(CC16) -c -W3 -Asfw -G2s -Zp -Zl -nologo -Fa -Zi -Od -Lp -DDEBUG -DEXTRACT \
469 -Fa$(WIN32KLIST)\$(*B)_e.s -Fo$(WIN32KOBJ)\$(@B).obj_e $(CINCLUDES16) $<
470
471
472
473
474#
475# Include the .depend file.
476#
477!if [$(EXISTS) .depend] == 0
478! include .depend
479!else
480! if [$(ECHO) .depend doesn't exist]
481! endif
482!endif
483
Note: See TracBrowser for help on using the repository browser.