A general Makefile for building the Win32(tm) development kit.
[reactos.git] / reactos / Makefile
1 #
2 # Global makefile
3 #
4
5 PATH_TO_TOP = .
6
7 #
8 # Define to build WINE modules
9 #
10 ifeq ($(ROS_BUILD_WINE),)
11 ROS_BUILD_WINE = no
12 else
13 ROS_BUILD_WINE = yes
14 endif
15
16 include $(PATH_TO_TOP)/rules.mak
17
18 #
19 # Required to run the system
20 #
21 COMPONENTS = iface_native iface_additional hallib ntoskrnl
22 HALS = halx86
23 BUS = acpi isapnp pci
24 DLLS = ntdll kernel32 advapi32 crtdll msvcrt fmifs gdi32 msafd \
25 user32 secur32 ws2_32 version
26 SUBSYS = smss win32k csrss
27
28 #
29 # Select the server(s) you want to build
30 #
31 #SERVERS = posix linux os2
32 SERVERS = win32
33
34 #
35 # Select the loader(s) you want to build
36 #
37 #LOADERS = boot dos
38 LOADERS = dos
39
40 #
41 # Select the device drivers and filesystems you want
42 #
43 #DEVICE_DRIVERS = beep floppy mouse sound test parallel serial
44 DEVICE_DRIVERS = vidport vga blue ide null floppy
45
46 #INPUT_DRIVERS = keyboard
47 INPUT_DRIVERS = keyboard mouclass psaux
48
49 #FS_DRIVERS = vfat minix ext2 template
50 FS_DRIVERS = vfat ms np
51
52 #NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
53 NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
54
55 #NET_DEVICE_DRIVERS = ne2000
56 NET_DEVICE_DRIVERS = ne2000
57
58 #
59 # storage drivers (don't change the order)
60 #
61 STORAGE_DRIVERS = class2 scsiport atapi disk
62
63 #
64 # system applications (required for startup)
65 #
66 #SYS_APPS = lsass services shell winlogon
67 SYS_APPS = services shell winlogon
68
69 APPS = args hello test cat bench apc shm lpc thread event file gditest \
70 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
71 objdir atomtest winhello partinfo mutex
72
73 #NET_APPS = ping roshttpd telnet
74 NET_APPS = ping roshttpd
75
76 #lzexpand mapi32 (missing imports)
77 #dsound (missing winmm.dll)
78 WINE_DLLS = rpcrt4 ole32 oleaut32 oledlg olepro32 olecli olesvr \
79 shell32 shlwapi comctl32 shfolder shdocvw commdlg \
80 ddraw dinput dplay dplayx \
81 psapi richedit serialui winspool
82
83 WINE_PROGS = clock cmdlgtst control notepad osversioncheck \
84 progman uninstaller view wcmd winemine \
85 winver
86
87 ifeq ($(ROS_BUILD_WINE),yes)
88 WINE_MODULES = $(WINE_DLLS) $(WINE_PROGS)
89 else
90 WINE_MODULES =
91 endif
92
93 KERNEL_SERVICES = $(DEVICE_DRIVERS) $(INPUT_DRIVERS) $(FS_DRIVERS) \
94 $(NET_DRIVERS) $(NET_DEVICE_DRIVERS) $(STORAGE_DRIVERS)
95
96 all: tools dk implib $(COMPONENTS) $(HALS) $(BUS) $(DLLS) $(SUBSYS) \
97 $(LOADERS) $(KERNEL_SERVICES) $(SYS_APPS) $(APPS) $(NET_APPS) \
98 $(WINE_MODULES)
99
100 implib: $(COMPONENTS:%=%_implib) $(HALS:%=%_implib) $(BUS:%=%_implib) \
101 $(DLLS:%=%_implib) $(LOADERS:%=%_implib) \
102 $(KERNEL_SERVICES:%=%_implib) $(SUBSYS:%=%_implib) \
103 $(SYS_APPS:%=%_implib) $(APPS:%=%_implib) \
104 $(WINE_MODULES:%=%_implib)
105
106 clean: dk_clean $(HALS:%=%_clean) \
107 $(COMPONENTS:%=%_clean) $(BUS:%=%_clean) $(DLLS:%=%_clean) \
108 $(LOADERS:%=%_clean) $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) \
109 $(SYS_APPS:%=%_clean) $(APPS:%=%_clean) $(NET_APPS:%=%_clean) \
110 $(WINE_MODULES:%=%_clean) clean_after tools_clean
111
112 clean_after:
113 $(RM) $(PATH_TO_TOP)/include/roscfg.h
114
115 install: tools install_dirs install_before \
116 $(COMPONENTS:%=%_install) $(HALS:%=%_install) $(BUS:%=%_install) \
117 $(DLLS:%=%_install) $(LOADERS:%=%_install) \
118 $(KERNEL_SERVICES:%=%_install) $(SUBSYS:%=%_install) \
119 $(SYS_APPS:%=%_install) $(APPS:%=%_install) \
120 $(WINE_MODULES:%=%_install)
121
122 dist: $(TOOLS_PATH)/rcopy$(EXE_POSTFIX) dist_clean dist_dirs \
123 $(HALS:%=%_dist) $(COMPONENTS:%=%_dist) $(BUS:%=%_dist) $(DLLS:%=%_dist) \
124 $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
125 $(SYS_APPS:%=%_dist) $(APPS:%=%_dist) $(NET_APPS:%=%_dist) \
126 $(WINE_MODULES:%=%_dist)
127
128 .PHONY: all implib clean clean_before install dist
129
130 #
131 # System Applications
132 #
133 $(SYS_APPS): %:
134 make -C apps/system/$*
135
136 $(SYS_APPS:%=%_implib): %_implib:
137 make -C apps/system/$* implib
138
139 $(SYS_APPS:%=%_clean): %_clean:
140 make -C apps/system/$* clean
141
142 $(SYS_APPS:%=%_dist): %_dist:
143 make -C apps/system/$* dist
144
145 $(SYS_APPS:%=%_install): %_install:
146 make -C apps/system/$* install
147
148 .PHONY: $(SYS_APPS) $(SYS_APPS:%=%_implib) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_dist)
149
150 #
151 # Applications
152 #
153 $(APPS): %:
154 make -C apps/$*
155
156 $(APPS:%=%_implib): %_implib:
157 make -C apps/$* implib
158
159 $(APPS:%=%_clean): %_clean:
160 make -C apps/$* clean
161
162 $(APPS:%=%_dist): %_dist:
163 make -C apps/$* dist
164
165 $(APPS:%=%_install): %_install:
166 make -C apps/$* install
167
168 .PHONY: $(APPS) $(APPS:%=%_implib) $(APPS:%=%_clean) $(APPS:%=%_install) $(APPS:%=%_dist)
169
170 #
171 # Network applications
172 #
173 $(NET_APPS): %:
174 make -C apps/net/$*
175
176 $(NET_APPS:%=%_implib): %_implib:
177 make -C apps/net/$* implib
178
179 $(NET_APPS:%=%_clean): %_clean:
180 make -C apps/net/$* clean
181
182 $(NET_APPS:%=%_dist): %_dist:
183 make -C apps/net/$* dist
184
185 $(NET_APPS:%=%_install): %_install:
186 make -C apps/net/$* install
187
188 .PHONY: $(NET_APPS) $(NET_APPS:%=%_implib) $(NET_APPS:%=%_clean) $(NET_APPS:%=%_install) $(NET_APPS:%=%_dist)
189
190
191 #
192 # Wine DLLs
193 #
194 $(WINE_DLLS): %:
195 make -f makefile.ros -C $(WINE_PATH)/dlls/$*
196
197 $(WINE_DLLS:%=%_implib): %_implib:
198 make -f makefile.ros -C $(WINE_PATH)/dlls/$* implib
199
200 $(WINE_DLLS:%=%_clean): %_clean:
201 make -f makefile.ros -C $(WINE_PATH)/dlls/$* clean
202
203 $(WINE_DLLS:%=%_dist): %_dist:
204 make -f makefile.ros -C $(WINE_PATH)/dlls/$* dist
205
206 $(WINE_DLLS:%=%_install): %_install:
207 make -f makefile.ros -C $(WINE_PATH)/dlls/$* install
208
209 .PHONY: $(WINE_DLLS) $(WINE_DLLS:%=%_implib) $(WINE_DLLS:%=%_clean) $(WINE_DLLS:%=%_install) $(WINE_DLLS:%=%_dist)
210
211
212 #
213 # Wine programs
214 #
215 $(WINE_PROGS): %:
216 make -f makefile.ros -C $(WINE_PATH)/programs/$*
217
218 $(WINE_PROGS:%=%_implib): %_implib:
219 make -f makefile.ros -C $(WINE_PATH)/programs/$* implib
220
221 $(WINE_PROGS:%=%_clean): %_clean:
222 make -f makefile.ros -C $(WINE_PATH)/programs/$* clean
223
224 $(WINE_PROGS:%=%_dist): %_dist:
225 make -f makefile.ros -C $(WINE_PATH)/programs/$* dist
226
227 $(WINE_PROGS:%=%_install): %_install:
228 make -f makefile.ros -C $(WINE_PATH)/programs/$* install
229
230 .PHONY: $(WINE_PROGS) $(WINE_PROGS:%=%_implib) $(WINE_PROGS:%=%_clean) $(WINE_PROGS:%=%_install) $(WINE_PROGS:%=%_dist)
231
232
233 #
234 # Tools
235 #
236 tools:
237 make -C tools
238
239 tools_implib:
240
241 tools_clean:
242 make -C tools clean
243
244 tools_install:
245
246 tools_dist:
247
248 .PHONY: tools tools_implib tools_clean tools_install tools_dist
249
250
251 #
252 # Developer Kits
253 #
254 dk:
255 $(RMKDIR) $(DK_PATH)
256 $(RMKDIR) $(DDK_PATH)
257 $(RMKDIR) $(DDK_PATH_LIB)
258 $(RMKDIR) $(DDK_PATH_INC)
259 $(RMKDIR) $(SDK_PATH)
260 $(RMKDIR) $(SDK_PATH_LIB)
261 $(RMKDIR) $(SDK_PATH_INC)
262 $(RMKDIR) $(XDK_PATH)
263 $(RMKDIR) $(XDK_PATH_LIB)
264 $(RMKDIR) $(XDK_PATH_INC)
265
266 dk_implib:
267
268 # WARNING! Be very sure that there are no important files
269 # in these directories before cleaning them!!!
270 dk_clean:
271 $(RM) $(DDK_PATH_LIB)/*.a
272 # $(RM) $(DDK_PATH_INC)/*.h
273 $(RMDIR) $(DDK_PATH_LIB)
274 # $(RMDIR) $(DDK_PATH_INC)
275 $(RM) $(SDK_PATH_LIB)/*.a
276 # $(RM) $(SDK_PATH_INC)/*.h
277 $(RMDIR) $(SDK_PATH_LIB)
278 # $(RMDIR) $(SDK_PATH_INC)
279 $(RM) $(XDK_PATH_LIB)/*.a
280 # $(RM) $(XDK_PATH_INC)/*.h
281 $(RMDIR) $(XDK_PATH_LIB)
282 # $(RMDIR) $(XDK_PATH_INC)
283
284 dk_install:
285
286 dk_dist:
287
288 .PHONY: dk dk_implib dk_clean dk_install dk_dist
289
290
291 #
292 # Interfaces
293 #
294 iface_native:
295 make -C iface/native
296
297 iface_native_implib:
298
299 iface_native_clean:
300 make -C iface/native clean
301
302 iface_native_install:
303
304 iface_native_dist:
305
306 iface_additional:
307 make -C iface/addsys
308
309 iface_additional_implib:
310
311 iface_additional_clean:
312 make -C iface/addsys clean
313
314 iface_additional_install:
315
316 iface_additional_dist:
317
318 .PHONY: iface_native iface_native_implib iface_native_clean iface_native_install \
319 iface_native_dist \
320 iface_additional iface_additional_implib iface_additional_clean \
321 iface_additional_install iface_additional_dist
322
323 #
324 # Bus driver rules
325 #
326 $(BUS): %:
327 make -C services/bus/$*
328
329 $(BUS:%=%_implib): %_implib:
330 make -C services/bus/$* implib
331
332 $(BUS:%=%_clean): %_clean:
333 make -C services/bus/$* clean
334
335 $(BUS:%=%_install): %_install:
336 make -C services/bus/$* install
337
338 $(BUS:%=%_dist): %_dist:
339 make -C services/bus/$* dist
340
341 .PHONY: $(BUS) $(BUS:%=%_implib) $(BUS:%=%_clean) \
342 $(BUS:%=%_install) $(BUS:%=%_dist)
343
344 #
345 # Device driver rules
346 #
347 $(DEVICE_DRIVERS): %:
348 make -C services/dd/$*
349
350 $(DEVICE_DRIVERS:%=%_implib): %_implib:
351 make -C services/dd/$* implib
352
353 $(DEVICE_DRIVERS:%=%_clean): %_clean:
354 make -C services/dd/$* clean
355
356 $(DEVICE_DRIVERS:%=%_install): %_install:
357 make -C services/dd/$* install
358
359 $(DEVICE_DRIVERS:%=%_dist): %_dist:
360 make -C services/dd/$* dist
361
362 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_implib) $(DEVICE_DRIVERS:%=%_clean) \
363 $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_dist)
364
365 #
366 # Input driver rules
367 #
368 $(INPUT_DRIVERS): %:
369 make -C services/input/$*
370
371 $(INPUT_DRIVERS:%=%_implib): %_implib:
372 make -C services/input/$* implib
373
374 $(INPUT_DRIVERS:%=%_clean): %_clean:
375 make -C services/input/$* clean
376
377 $(INPUT_DRIVERS:%=%_install): %_install:
378 make -C services/input/$* install
379
380 $(INPUT_DRIVERS:%=%_dist): %_dist:
381 make -C services/input/$* dist
382
383 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_implib) $(INPUT_DRIVERS:%=%_clean)\
384 $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_dist)
385
386 $(FS_DRIVERS): %:
387 make -C services/fs/$*
388
389 $(FS_DRIVERS:%=%_implib): %_implib:
390 make -C services/fs/$* implib
391
392 $(FS_DRIVERS:%=%_clean): %_clean:
393 make -C services/fs/$* clean
394
395 $(FS_DRIVERS:%=%_install): %_install:
396 make -C services/fs/$* install
397
398 $(FS_DRIVERS:%=%_dist): %_dist:
399 make -C services/fs/$* dist
400
401 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_implib) $(FS_DRIVERS:%=%_clean) \
402 $(FS_DRIVERS:%=%_install) $(FS_DRIVERS:%=%_dist)
403
404 #
405 # Network driver rules
406 #
407 $(NET_DRIVERS): %:
408 make -C services/net/$*
409
410 $(NET_DRIVERS:%=%_implib): %_implib:
411 make -C services/net/$* implib
412
413 $(NET_DRIVERS:%=%_clean): %_clean:
414 make -C services/net/$* clean
415
416 $(NET_DRIVERS:%=%_install): %_install:
417 make -C services/net/$* install
418
419 $(NET_DRIVERS:%=%_dist): %_dist:
420 make -C services/net/$* dist
421
422 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_implib) $(NET_DRIVERS:%=%_clean) \
423 $(NET_DRIVERS:%=%_install) $(NET_DRIVERS:%=%_dist)
424
425 $(NET_DEVICE_DRIVERS): %:
426 make -C services/net/dd/$*
427
428 $(NET_DEVICE_DRIVERS:%=%_implib): %_implib:
429 make -C services/net/dd/$* implib
430
431 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
432 make -C services/net/dd/$* clean
433
434 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
435 make -C services/net/dd/$* install
436
437 $(NET_DEVICE_DRIVERS:%=%_dist): %_dist:
438 make -C services/net/dd/$* dist
439
440 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) $(NET_DEVICE_DRIVERS:%=%_implib) \
441 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_dist)
442
443 #
444 # storage driver rules
445 #
446 $(STORAGE_DRIVERS): %:
447 make -C services/storage/$*
448
449 $(STORAGE_DRIVERS:%=%_implib): %_implib:
450 make -C services/storage/$* implib
451
452 $(STORAGE_DRIVERS:%=%_clean): %_clean:
453 make -C services/storage/$* clean
454
455 $(STORAGE_DRIVERS:%=%_install): %_install:
456 make -C services/storage/$* install
457
458 $(STORAGE_DRIVERS:%=%_dist): %_dist:
459 make -C services/storage/$* dist
460
461 .PHONY: $(STORAGE_DRIVERS) $(STORAGE_DRIVERS:%=%_clean) \
462 $(STORAGE_DRIVERS:%=%_install) $(STORAGE_DRIVERS:%=%_dist)
463
464 #
465 # Kernel loaders
466 #
467
468 $(LOADERS): %:
469 make -C loaders/$*
470
471 $(LOADERS:%=%_implib): %_implib:
472
473 $(LOADERS:%=%_clean): %_clean:
474 make -C loaders/$* clean
475
476 $(LOADERS:%=%_install): %_install:
477 make -C loaders/$* install
478
479 $(LOADERS:%=%_dist): %_dist:
480 make -C loaders/$* dist
481
482 .PHONY: $(LOADERS) $(LOADERS:%=%_implib) $(LOADERS:%=%_clean) $(LOADERS:%=%_install) \
483 $(LOADERS:%=%_dist)
484
485 #
486 # Required system components
487 #
488
489 ntoskrnl:
490 make -C ntoskrnl
491
492 ntoskrnl_implib:
493 make -C ntoskrnl implib
494
495 ntoskrnl_clean:
496 make -C ntoskrnl clean
497
498 ntoskrnl_install:
499 make -C ntoskrnl install
500
501 ntoskrnl_dist:
502 make -C ntoskrnl dist
503
504 .PHONY: ntoskrnl ntoskrnl_implib ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
505
506 #
507 # Hardware Abstraction Layer import library
508 #
509
510 hallib:
511 make -C hal/hal
512
513 hallib_implib:
514 make -C hal/hal implib
515
516 hallib_clean:
517 make -C hal/hal clean
518
519 hallib_install:
520 make -C hal/hal install
521
522 hallib_dist:
523 make -C hal/hal dist
524
525 .PHONY: hallib hallib_implib hallib_clean hallib_install hallib_dist
526
527 #
528 # Hardware Abstraction Layers
529 #
530
531 $(HALS): %:
532 make -C hal/$*
533
534 $(HALS:%=%_implib): %_implib:
535 make -C hal/$* implib
536
537 $(HALS:%=%_clean): %_clean:
538 make -C hal/$* clean
539
540 $(HALS:%=%_install): %_install:
541 make -C hal/$* install
542
543 $(HALS:%=%_dist): %_dist:
544 make -C hal/$* dist
545
546 .PHONY: $(HALS) $(HALS:%=%_implib) $(HALS:%=%_clean) $(HALS:%=%_install) $(HALS:%=%_dist)
547
548 #
549 # Required DLLs
550 #
551
552 $(DLLS): %:
553 make -C lib/$*
554
555 $(DLLS:%=%_implib): %_implib:
556 make -C lib/$* implib
557
558 $(DLLS:%=%_clean): %_clean:
559 make -C lib/$* clean
560
561 $(DLLS:%=%_install): %_install:
562 make -C lib/$* install
563
564 $(DLLS:%=%_dist): %_dist:
565 make -C lib/$* dist
566
567 .PHONY: $(DLLS) $(DLLS:%=%_implib) $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_dist)
568
569 #
570 # Kernel Subsystems
571 #
572
573 $(SUBSYS): %:
574 make -C subsys/$*
575
576 $(SUBSYS:%=%_implib): %_implib:
577 make -C subsys/$* implib
578
579 $(SUBSYS:%=%_clean): %_clean:
580 make -C subsys/$* clean
581
582 $(SUBSYS:%=%_install): %_install:
583 make -C subsys/$* install
584
585 $(SUBSYS:%=%_dist): %_dist:
586 make -C subsys/$* dist
587
588 .PHONY: $(SUBSYS) $(SUBSYS:%=%_implib) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
589 $(SUBSYS:%=%_dist)
590
591 #
592 # Create an installation
593 #
594
595 install_clean:
596 $(RM) $(INSTALL_DIR)/system32/drivers/*.*
597 $(RM) $(INSTALL_DIR)/system32/config/*.*
598 $(RM) $(INSTALL_DIR)/system32/*.*
599 $(RM) $(INSTALL_DIR)/symbols/*.*
600 $(RM) $(INSTALL_DIR)/media/fonts/*.*
601 $(RM) $(INSTALL_DIR)/media/*.*
602 $(RM) $(INSTALL_DIR)/bin/*.*
603 $(RM) $(INSTALL_DIR)/*.com
604 $(RM) $(INSTALL_DIR)/*.bat
605 $(RMDIR) $(INSTALL_DIR)/system32/drivers
606 $(RMDIR) $(INSTALL_DIR)/system32/config
607 $(RMDIR) $(INSTALL_DIR)/system32
608 $(RMDIR) $(INSTALL_DIR)/symbols
609 $(RMDIR) $(INSTALL_DIR)/media/fonts
610 $(RMDIR) $(INSTALL_DIR)/media
611 $(RMDIR) $(INSTALL_DIR)/bin
612 $(RMDIR) $(INSTALL_DIR)
613
614 install_dirs:
615 $(RMKDIR) $(INSTALL_DIR)
616 $(RMKDIR) $(INSTALL_DIR)/bin
617 $(RMKDIR) $(INSTALL_DIR)/media
618 $(RMKDIR) $(INSTALL_DIR)/media/fonts
619 $(RMKDIR) $(INSTALL_DIR)/symbols
620 $(RMKDIR) $(INSTALL_DIR)/system32
621 $(RMKDIR) $(INSTALL_DIR)/system32/config
622 $(RMKDIR) $(INSTALL_DIR)/system32/drivers
623
624 install_before:
625 $(CP) boot.bat $(INSTALL_DIR)/boot.bat
626 $(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
627 $(CP) boot.hiv $(INSTALL_DIR)/system32/boot.hiv
628 $(CP) media/fonts/helb____.ttf $(INSTALL_DIR)/media/fonts/helb____.ttf
629 $(CP) media/fonts/timr____.ttf $(INSTALL_DIR)/media/fonts/timr____.ttf
630
631 .PHONY: install_clean install_dirs install_before
632
633
634 #
635 # Make a distribution saveset
636 #
637
638 dist_clean:
639 $(RM) $(DIST_DIR)/symbols/*.sym
640 $(RM) $(DIST_DIR)/drivers/*.sys
641 $(RM) $(DIST_DIR)/subsys/*.exe
642 $(RM) $(DIST_DIR)/dlls/*.dll
643 $(RM) $(DIST_DIR)/apps/*.exe
644 $(RM) $(DIST_DIR)/*.exe
645 $(RMDIR) $(DIST_DIR)/symbols
646 $(RMDIR) $(DIST_DIR)/subsys
647 $(RMDIR) $(DIST_DIR)/drivers
648 $(RMDIR) $(DIST_DIR)/dlls
649 $(RMDIR) $(DIST_DIR)/apps
650 $(RMDIR) $(DIST_DIR)
651
652 dist_dirs:
653 $(RMKDIR) $(DIST_DIR)
654 $(RMKDIR) $(DIST_DIR)/apps
655 $(RMKDIR) $(DIST_DIR)/dlls
656 $(RMKDIR) $(DIST_DIR)/drivers
657 $(RMKDIR) $(DIST_DIR)/subsys
658 $(RMKDIR) $(DIST_DIR)/symbols
659
660 .PHONY: dist_clean dist_dirs
661
662
663 etags:
664 find . -name "*.[ch]" -print | etags --language=c -
665
666 # EOF