[project] Development cycle binaries for today
[people/sha0/winvblock.git] / Makefile
1 INCLUDES := $(shell echo | cpp -v 2>&1 | sed -n '/\#include "..." search starts here:/,/End of search list./p' | grep "^ " | sed "s/^ \(.*\)$$/-I\1\/ddk/" | tr "\n" " " | sed "s/ $$//" | sed ":start;s/\/[^\/]*\/\.\.\//\//;t start")
2
3 # Next line is duplicated in config.bat, edit both when adding files.
4 c := driver.c registry.c bus.c aoedisk.c aoe.c protocol.c debug.c probe.c winvblock.rc
5 h := driver.h aoe.h protocol.h mount.h portable.h
6
7 # This is also duplicated in config.bat.
8 # The c style aoe.0 is not yet stable enough to use.
9 PXESTYLE := asm
10 #PXESTYLE := c
11
12 all: bin/aoe.0 bin/loader32.exe bin/wvblk32.sys bin/aoe.exe bin/winvblk.inf bin/txtsetup.oem
13
14 clean:
15         @rm -rf src/obj src/nbp/pxe.asm/obj src/nbp/pxe.c/obj bin
16
17 dist:
18         @sh -c "unset \`set | cut -f 1 -d \"=\" | egrep -v \"PATH|COMSPEC\"\` 2> /dev/null ; cmd /c makedist.bat"
19
20 free: bin/winvblk.inf bin/txtsetup.oem $(addprefix src/,$c $h) Makefile
21         @sh -c "unset \`set | cut -f 1 -d \"=\" | egrep -v \"PATH|COMSPEC\"\` 2> /dev/null ; cmd /c makefree.bat"
22         @touch -r Makefile $(wildcard bin/*.sys)
23         
24 checked: bin/winvblk.inf bin/txtsetup.oem $(addprefix src/,$c $h) Makefile
25         @sh -c "unset \`set | cut -f 1 -d \"=\" | egrep -v \"PATH|COMSPEC\"\` 2> /dev/null ; cmd /c makechecked.bat"
26         @touch -r Makefile $(wildcard bin/*.sys)
27
28 bin/aoe.0: src/nbp/pxe.$(PXESTYLE)/aoe.0 Makefile
29         @mkdir -p bin
30         cp src/nbp/pxe.$(PXESTYLE)/aoe.0 bin
31
32 src/nbp/pxe.$(PXESTYLE)/aoe.0: $(wildcard src/nbp/pxe.$(PXESTYLE)/*.c) $(wildcard src/nbp/pxe.$(PXESTYLE)/*.h) $(wildcard src/nbp/pxe.$(PXESTYLE)/*.S) src/nbp/pxe.$(PXESTYLE)/aoe.ld src/nbp/pxe.$(PXESTYLE)/Makefile Makefile
33         rm -rf src/nbp/pxe.$(PXESTYLE)/aoe.0
34         make -C src/nbp/pxe.$(PXESTYLE)
35
36 bin/winvblk.inf bin/txtsetup.oem: makeinf.bat Makefile
37         @sh -c "unset \`set | cut -f 1 -d \"=\" | egrep -v \"PATH|COMSPEC\"\` 2> /dev/null ; cmd /c makeinf.bat ; exit 0" >/dev/null 2>&1
38         touch bin/winvblk.inf
39         touch bin/txtsetup.oem
40
41 src/loader/obj/loader32.o: src/loader/loader.c src/portable.h Makefile
42         @mkdir -p src/loader/obj
43         @rm -rf src/loader/obj/loader32.o bin/loader32.exe bin/loader64.exe
44         gcc $(INCLUDES) -c -Wall src/loader/loader.c -o src/loader/obj/loader32.o
45
46 bin/loader32.exe: src/loader/obj/loader32.o Makefile
47         @mkdir -p bin
48         @rm -rf bin/loader32.exe bin/loader64.exe
49         gcc $(INCLUDES) -Wall src/loader/obj/loader32.o -o bin/loader32.exe -lsetupapi
50         strip bin/loader32.exe
51
52 src/util/obj/winvblk.o: src/util/winvblk.c src/portable.h src/mount.h Makefile
53         @mkdir -p src/obj
54         @rm -rf src/util/obj/winvblk.o bin/aoe.exe
55         gcc -Wall -c src/util/winvblk.c -o src/util/obj/winvblk.o
56
57 bin/aoe.exe: src/util/obj/winvblk.o Makefile
58         @mkdir -p bin
59         @rm -rf bin/aoe.exe
60         gcc -Wall src/util/obj/winvblk.o -o bin/aoe.exe
61         strip bin/aoe.exe
62
63 src/obj/driver.o: src/driver.c src/portable.h src/driver.h Makefile
64         @mkdir -p src/obj
65         @rm -rf src/obj/driver.o src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
66         gcc $(INCLUDES) -c -Wall src/driver.c -o src/obj/driver.o
67
68 src/obj/registry.o: src/registry.c src/portable.h Makefile
69         @mkdir -p src/obj
70         @rm -rf src/obj/registry.o src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
71         gcc $(INCLUDES) -c -Wall src/registry.c -o src/obj/registry.o
72
73 src/obj/bus.o: src/bus.c src/portable.h src/driver.h src/aoe.h src/mount.h Makefile
74         @mkdir -p src/obj
75         @rm -rf src/obj/bus.o src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
76         gcc $(INCLUDES) -c -Wall src/bus.c -o src/obj/bus.o
77
78 src/obj/aoedisk.o: src/aoedisk.c src/portable.h src/driver.h src/aoe.h Makefile
79         @mkdir -p src/obj
80         @rm -rf src/obj/aoedisk.o src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
81         gcc $(INCLUDES) -c -Wall src/aoedisk.c -o src/obj/aoedisk.o
82
83 src/obj/aoe.o: src/aoe.c src/portable.h src/driver.h src/aoe.h src/protocol.h Makefile
84         @mkdir -p src/obj
85         @rm -rf src/obj/aoe.o src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
86         gcc $(INCLUDES) -c -Wall src/aoe.c -o src/obj/aoe.o
87
88 src/obj/protocol.o: src/protocol.c src/portable.h src/driver.h src/aoe.h src/protocol.h Makefile
89         @mkdir -p src/obj
90         @rm -rf src/obj/protocol.o src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
91         gcc $(INCLUDES) -c -Wall src/protocol.c -o src/obj/protocol.o
92
93 src/obj/debug.o: src/debug.c src/portable.h src/driver.h src/mount.h Makefile
94         @mkdir -p src/obj
95         @rm -rf src/obj/debug.o src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
96         gcc $(INCLUDES) -c -Wall src/debug.c -o src/obj/debug.o
97
98 src/obj/probe.o: src/probe.c src/portable.h src/driver.h src/mount.h Makefile
99         @mkdir -p src/obj
100         @rm -rf src/obj/probe.o src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
101         gcc $(INCLUDES) -c -Wall src/probe.c -o src/obj/probe.o
102
103 src/obj/aoe.tmp: src/obj/driver.o src/obj/registry.o src/obj/bus.o src/obj/aoedisk.o src/obj/aoe.o src/obj/protocol.o src/obj/debug.o probe.o Makefile
104         @mkdir -p src/obj
105         @rm -rf src/obj/aoe.tmp src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
106         @gcc -Wall src/obj/driver.o src/obj/registry.o src/obj/bus.o src/obj/aoedisk.o src/obj/aoe.o src/obj/protocol.o src/obj/debug.o src/obj/probe.o -Wl,--base-file,src/obj/aoe.tmp -Wl,--entry,_DriverEntry@8 -nostartfiles -nostdlib -lntoskrnl -lhal -lndis -o null
107         @rm -rf null.exe
108
109 src/obj/aoe.exp: src/obj/aoe.tmp Makefile
110         @mkdir -p src/obj
111         @rm -rf src/obj/aoe.exp bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
112         @dlltool --dllname wvblk32.sys --base-file src/obj/aoe.tmp --output-exp src/obj/aoe.exp
113
114 bin/wvblk32.sys: src/obj/driver.o src/obj/registry.o src/obj/bus.o src/obj/aoedisk.o src/obj/aoe.o src/obj/protocol.o src/obj/debug.o src/obj/probe.o src/obj/aoe.exp Makefile
115         @mkdir -p bin
116         @rm -rf bin/wvblk32.sys bin/wvblk64.sys bin/wvblk32.pdb bin/wvblk64.pdb bin/loader64.exe
117         @gcc -Wall src/obj/driver.o src/obj/registry.o src/obj/bus.o src/obj/aoedisk.o src/obj/aoe.o src/obj/protocol.o src/obj/debug.o src/obj/probe.o -Wl,--subsystem,native -Wl,--entry,_DriverEntry@8 -Wl,src/obj/aoe.exp -mdll -nostartfiles -nostdlib -lntoskrnl -lhal -lndis -o bin/wvblk32.sys
118 #       strip bin/wvblk32.sys