aboutsummaryrefslogtreecommitdiff
path: root/makefile
blob: 1eb22d5647d0b4c836ad4f0dd791701c9d7e43a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# This is an Open Watcom wmake makefile, not GNU make.
# Assuming you have sourced `owsetenv` beforehand.

mousedosobjs = mousetsr.obj mousmain.obj vbox.obj
mousew16objs = mousew16.obj

doscflags = -bt=dos -ms -6 -osi -w3 -wcd=202
# -ms to use small memory model (though sometimes ss != ds...)
# -osi to optimize for size, put intrinsics inline (to avoid runtime calls)
# -w3 enables warnings
# -wcd=202 disables the unreferenced function warning (e.g., for inline functions in headers)
dostsrcflags = -zu -s -g=RES_GROUP -nd=RES -nt=RES_TEXT -nc=RES_CODE
# -s to disable stack checks, since it inserts calls to the runtime from the TSR part
# -zu since ss != ds on the TSR

w16cflags = -bt=windows -bd -mc -zu -s -6 -oi -w3 -wcd=202
# -bd to build DLL
# -mc to use compact memory model (far data pointers, ss != ds in a DLL)
# -zu for DLL calling convention (ss != ds)
# -s to disable stack checks, since the runtime uses MessageBox() to abort (which we can't call from mouse.drv)

.BEFORE:
	# We need DOS and Windows headers, not host platform's
	set include=$(%watcom)/h/win;$(%watcom)/h

# Main DOS driver file
vbmouse.exe: vbmouse.lnk $(mousedosobjs) 
	wlink @$[@ name $@ file { $(mousedosobjs) } 

mousetsr.obj: mousetsr.c .AUTODEPEND
	wcc -fo=$^@ $(doscflags) $(dostsrcflags) $[@

mousmain.obj: mousmain.c .AUTODEPEND
	wcc -fo=$^@ $(doscflags) $[@

vbox.obj: vbox.c .AUTODEPEND
	wcc -fo=$^@ $(doscflags) $[@

vbmouse.drv: mousew16.lnk $(mousew16objs)
	wlink @$[@ name $@ file { $(mousew16objs) }

mousew16.obj: mousew16.c .AUTODEPEND
	wcc -fo=$^@ $(w16cflags) $[@

clean: .SYMBOLIC
	rm -f vbmouse.exe vbmouse.drv vbmouse.flp *.obj *.map

vbmouse.flp:
	mformat -C -f 1440 -v VBMOUSE -i $^@ ::

# Build a floppy image containing the driver
flp: vbmouse.flp vbmouse.exe vbmouse.drv oemsetup.inf .SYMBOLIC
	mcopy -i vbmouse.flp -o vbmouse.exe vbmouse.drv oemsetup.inf ::