#
# Select your host
#
-#HOST = djgpp-linux
#HOST = mingw32-linux
-HOST = djgpp-msdos
-#HOST = mingw32-windows
+#HOST = djgpp-msdos
+HOST = mingw32-windows
include rules.mak
#
# Required to run the system
#
-COMPONENTS = iface_native ntoskrnl kernel32 ntdll crtdll mingw32
+COMPONENTS = iface_native ntoskrnl
+#DLLS = ntdll kernel32 crtdll user32 fmifs gdi32
+DLLS = ntdll kernel32 crtdll fmifs gdi32
+#DLLS = crtdll mingw32
+SUBSYS = win32k
#
# Select the server(s) you want to build
#
-SERVERS = win32 posix linux os2
+SERVERS = win32
+# SERVERS = posix linux os2
#
# Select the loader(s) you want to build
#
LOADERS = dos
+# LOADERS = boot
#
# Select the device drivers and filesystems you want
#
-KERNEL_SERVICES = parallel keyboard blues null mouse serial sound ide test sdisk \
- minix vfat
+DEVICE_DRIVERS = blue ide keyboard mouse null parallel serial vidport
+# DEVICE_DRIVERS = beep event floppy ide_test sound test test1
+FS_DRIVERS = vfat
+# FS_DRIVERS = minix ext2 template
+KERNEL_SERVICES = $(DEVICE_DRIVERS) $(FS_DRIVERS)
+
+APPS = args hello shell test cat bench
+# APPS = cmd
-APPS = hello shell
+all: $(COMPONENTS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(APPS)
+.PHONY: all
-all: $(COMPONENTS) $(LOADERS) $(KERNEL_SERVICES) $(APPS)
-
-clean: dummy
- make -C iface/native clean
+clean: $(COMPONENTS:%=%_clean) $(DLLS:%=%_clean) $(LOADERS:%=%_clean) \
+ $(KERNEL_SERVICES:%=%_clean) $(APPS:%=%_clean)
+.PHONY: clean
#
# Applications
#
-hello: dummy
- make -C apps/hello
+$(APPS): %:
+ make -C apps/$*
-cmd: dummy
- make -C apps/cmd
+$(APPS:%=%_clean): %_clean:
+ make -C apps/$* clean
-shell: dummy
- make -C apps/shell
+.PHONY: $(APPS) $(APPS:%=%_clean)
#
# Interfaces
#
-iface_native: dummy
+iface_native:
make -C iface/native
+iface_native_clean:
+ make -C iface/native clean
+
+.PHONY: iface_native iface_native_clean
+
#
# Device driver rules
#
-vfat: dummy
- make -C services/fs/vfat
-
-sdisk: dummy
- make -C services/dd/sdisk
-
-minix: dummy
- make -C services/fs/minix
-
-template: dummy
- make -C services/fs/template
+$(DEVICE_DRIVERS): %:
+ make -C services/dd/$*
-ide-test: dummy
- make -C services/dd/ide-test
+$(DEVICE_DRIVERS:%=%_clean): %_clean:
+ make -C services/dd/$* clean
-ide: dummy
- make -C services/dd/ide
+.PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean)
-test: dummy
- make -C services/dd/test
+$(FS_DRIVERS): %:
+ make -C services/fs/$*
-test1: dummy
- make -C services/dd/test1
+$(FS_DRIVERS:%=%_clean): %_clean:
+ make -C services/fs/$* clean
-null: dummy
- make -C services/dd/null
+.PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean)
-parallel: dummy
- make -C services/dd/parallel
-
-keyboard: dummy
- make -C services/dd/keyboard
+#
+# Kernel loaders
+#
-blues: dummy
- make -C services/dd/blue
+$(LOADERS): %:
+ make -C loaders/$*
-mouse: dummy
- make -C services/dd/mouse
-
-serial: dummy
- make -C services/dd/serial
+$(LOADERS:%=%_clean): %_clean:
+ make -C loaders/$* clean
-sound: dummy
- make -C services/dd/sound
+.PHONY: $(LOADERS) $(LOADERS:%=%_clean)
#
-# Kernel loaders
+# Required system components
#
-dos: dummy
- make -C loaders/dos
+ntoskrnl:
+ make -C ntoskrnl
+
+ntoskrnl_clean:
+ make -C ntoskrnl clean
+
+.PHONY: ntoskrnl ntoskrnl_clean
#
-# Required system components
+# Required DLLs
#
-ntoskrnl: dummy
- make -C ntoskrnl
+$(DLLS): %:
+ make -C lib/$*
+
+$(DLLS:%=%_clean): %_clean:
+ make -C lib/$* clean
+
+.PHONY: $(DLLS) $(DLLS:%=%_clean)
-kernel32: dummy
- make -C lib/kernel32
+#
+# Kernel Subsystems
+#
+$(SUBSYS): %:
+ make -C subsys/$*
-ntdll: dummy
- make -C lib/ntdll
+$(SUBSYS:%=%_clean): %_clean:
+ make -C lib/$* clean
-crtdll: dummy
- make -C lib/crtdll
+.PHONY: $(SUBSYS) $(SUBSYS:%=%_clean)
-mingw32: dummy
- make -C lib/mingw32
-dummy: