#HOST = mingw32-linux
#HOST = mingw32-windows
+PATH_TO_TOP = .
+
include rules.mak
#
# Required to run the system
#
COMPONENTS = iface_native iface_additional ntoskrnl
-DLLS = ntdll kernel32 crtdll advapi32 fmifs gdi32 secur32
+BUS = acpi isapnp
+DLLS = ntdll kernel32 crtdll advapi32 fmifs gdi32 secur32 user32 ws2_32 \
+ msafd msvcrt shell32
SUBSYS = smss win32k csrss
#
# Select the server(s) you want to build
#
+#SERVERS = posix linux os2
SERVERS = win32
-# SERVERS = posix linux os2
#
# Select the loader(s) you want to build
#
+#LOADERS = boot dos
LOADERS = dos
-# LOADERS = boot
#
# Select the device drivers and filesystems you want
#
-DEVICE_DRIVERS = vidport vga blue ide keyboard null parallel serial floppy
-# DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1
+#DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1 parallel serial
+DEVICE_DRIVERS = vidport vga blue ide null floppy
+
+#INPUT_DRIVERS = keyboard
+INPUT_DRIVERS = keyboard mouclass psaux
+
+#FS_DRIVERS = vfat minix ext2 template
+FS_DRIVERS = vfat ms np
+
+#NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
+NET_DRIVERS = ndis tcpip tditest wshtcpip afd
-FS_DRIVERS = vfat
-# FS_DRIVERS = minix ext2 template
+#NET_DEVICE_DRIVERS = ne2000
+NET_DEVICE_DRIVERS = ne2000
-# ndis tdi tcpip tditest
-NET_DRIVERS = ndis tcpip tditest
+#
+# system applications (required for startup)
+#
+#SYS_APPS = shell winlogon services
+SYS_APPS = shell winlogon services
-KERNEL_SERVICES = $(DEVICE_DRIVERS) $(FS_DRIVERS) $(NET_DRIVERS)
+APPS = args hello test cat bench apc shm lpc thread event file gditest \
+ pteb consume dump_shared_data vmtest regtest alive mstest nptest \
+ objdir atomtest
-APPS = args hello shell test cat bench apc shm lpc thread event file gditest \
- pteb consume dump_shared_data vmtest
+#NET_APPS = ping roshttpd telnet
+NET_APPS = ping
-# objdir
-all: buildno $(COMPONENTS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(APPS)
+KERNEL_SERVICES = $(DEVICE_DRIVERS) $(INPUT_DRIVERS) $(FS_DRIVERS) $(NET_DRIVERS) $(NET_DEVICE_DRIVERS)
+
+all: buildno $(COMPONENTS) $(BUS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(SYS_APPS) $(APPS) $(NET_APPS)
.PHONY: all
-clean: buildno_clean $(COMPONENTS:%=%_clean) $(DLLS:%=%_clean) $(LOADERS:%=%_clean) \
- $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) $(APPS:%=%_clean)
+clean: buildno_clean $(COMPONENTS:%=%_clean) $(BUS:%=%_clean) $(DLLS:%=%_clean) \
+ $(LOADERS:%=%_clean) $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) \
+ $(SYS_APPS:%=%_clean) $(APPS:%=%_clean) $(NET_APPS:%=%_clean)
.PHONY: clean
ifeq ($(HOST),mingw32-linux)
rcopy$(EXE_POSTFIX): rcopy.c
- $(NATIVE_CC) -g -DUNIX_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
+ $(HOST_CC) -g -DUNIX_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
endif
ifeq ($(HOST),mingw32-windows)
rcopy$(EXE_POSTFIX): rcopy.c
- $(NATIVE_CC) -g -DDOS_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
+ $(HOST_CC) -g -DDOS_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
endif
-install: rcopy$(EXE_POSTFIX) make_install_dirs autoexec_install $(COMPONENTS:%=%_install) \
+ifeq ($(HOST),mingw32-linux)
+rmkdir$(EXE_POSTFIX): rmkdir.c
+ $(HOST_CC) -g -DUNIX_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
+endif
+ifeq ($(HOST),mingw32-windows)
+rmkdir$(EXE_POSTFIX): rmkdir.c
+ $(HOST_CC) -g -DDOS_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
+endif
+
+
+install: rcopy$(EXE_POSTFIX) rmkdir$(EXE_POSTFIX) make_install_dirs autoexec_install \
+ $(COMPONENTS:%=%_install) $(BUS:%=%_install) \
$(DLLS:%=%_install) $(LOADERS:%=%_install) \
$(KERNEL_SERVICES:%=%_install) $(SUBSYS:%=%_install) \
- $(APPS:%=%_install)
+ $(SYS_APPS:%=%_install) $(APPS:%=%_install)
-dist: clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) $(DLLS:%=%_dist) \
+dist: rcopy$(EXE_POSTFIX) clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) \
+ $(BUS:%=%_dist) $(DLLS:%=%_dist) \
$(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
- $(APPS:%=%_dist)
+ $(SYS_APPS:%=%_dist) $(APPS:%=%_dist) $(NET_APPS:%=%_dist)
#
# Build number generator
.PHONY: buildno buildno_clean buildno_dist buildno_install
+#
+# System Applications
+#
+$(SYS_APPS): %:
+ make -C apps/system/$*
+
+$(SYS_APPS:%=%_clean): %_clean:
+ make -C apps/system/$* clean
+
+$(SYS_APPS:%=%_dist): %_dist:
+ make -C apps/system/$* dist
+
+$(SYS_APPS:%=%_install): %_install:
+ make -C apps/system/$* install
+
+.PHONY: $(SYS_APPS) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_dist)
+
#
# Applications
#
.PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_install) $(APPS:%=%_dist)
+#
+# Network applications
+#
+$(NET_APPS): %:
+ make -C apps/net/$*
+
+$(NET_APPS:%=%_clean): %_clean:
+ make -C apps/net/$* clean
+
+$(NET_APPS:%=%_dist): %_dist:
+ make -C apps/net/$* dist
+
+$(NET_APPS:%=%_install): %_install:
+ make -C apps/net/$* install
+
+.PHONY: $(NET_APPS) $(NET_APPS:%=%_clean) $(NET_APPS:%=%_install) $(NET_APPS:%=%_dist)
+
#
# Interfaces
#
iface_additional iface_additional_clean iface_additional_install \
iface_additional_dist
+#
+# Bus driver rules
+#
+$(BUS): %:
+ make -C services/bus/$*
+
+$(BUS:%=%_clean): %_clean:
+ make -C services/bus/$* clean
+
+$(BUS:%=%_install): %_install:
+ make -C services/bus/$* install
+
+$(BUS:%=%_dist): %_dist:
+ make -C services/bus/$* dist
+
+.PHONY: $(BUS) $(BUS:%=%_clean) \
+ $(BUS:%=%_install) $(BUS:%=%_dist)
+
#
# Device driver rules
#
.PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
$(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_dist)
+#
+# Input driver rules
+#
+$(INPUT_DRIVERS): %:
+ make -C services/input/$*
+
+$(INPUT_DRIVERS:%=%_clean): %_clean:
+ make -C services/input/$* clean
+
+$(INPUT_DRIVERS:%=%_install): %_install:
+ make -C services/input/$* install
+
+$(INPUT_DRIVERS:%=%_dist): %_dist:
+ make -C services/input/$* dist
+
+.PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_clean) \
+ $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_dist)
+
$(FS_DRIVERS): %:
make -C services/fs/$*
.PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_install) \
$(FS_DRIVERS:%=%_dist)
+#
+# Network driver rules
+#
$(NET_DRIVERS): %:
make -C services/net/$*
.PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_clean) $(NET_DRIVERS:%=%_install) \
$(NET_DRIVERS:%=%_dist)
+$(NET_DEVICE_DRIVERS): %:
+ make -C services/net/dd/$*
+
+$(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
+ make -C services/net/dd/$* clean
+
+$(NET_DEVICE_DRIVERS:%=%_install): %_install:
+ make -C services/net/dd/$* install
+
+$(NET_DEVICE_DRIVERS:%=%_dist): %_dist:
+ make -C services/net/dd/$* dist
+
+.PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) \
+ $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_dist)
+
#
# Kernel loaders
#
#
# Make an install floppy
#
-
-install: all
- ./install.sh /mnt/hda1
- ./install.sh /mnt/hda4
- ./install.bochs
-
make_install_dirs:
-ifeq ($(DOSCLI),yes)
- mkdir $(FLOPPY_DIR)\dlls
- mkdir $(FLOPPY_DIR)\apps
- mkdir $(FLOPPY_DIR)\drivers
- mkdir $(FLOPPY_DIR)\subsys
-else
- mkdir $(FLOPPY_DIR)/dlls $(FLOPPY_DIR)/apps $(FLOPPY_DIR)/drivers
- mkdir $(FLOPPY_DIR)/subsys
-endif
+ ./rmkdir $(FLOPPY_DIR)/dlls
+ ./rmkdir $(FLOPPY_DIR)/apps
+ ./rmkdir $(FLOPPY_DIR)/drivers
+ ./rmkdir $(FLOPPY_DIR)/subsys
+
.PHONY: make_install_dirs
autoexec_install: $(FLOPPY_DIR)/autoexec.bat
$(FLOPPY_DIR)/autoexec.bat: bootflop.bat
-ifeq ($(DOSCLI),yes)
- $(CP) bootflop.bat $(FLOPPY_DIR)\autoexec.bat
-else
$(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat
-endif
#
# Make a distribution saveset
$(RM) -r $(DIST_DIR)
endif
-make_dist_dirs:
-ifeq ($(DOSCLI),yes)
- mkdir $(DIST_DIR)
- mkdir $(DIST_DIR)\dlls
- mkdir $(DIST_DIR)\apps
- mkdir $(DIST_DIR)\drivers
- mkdir $(DIST_DIR)\dlls
- mkdir $(DIST_DIR)\subsys
-else
- mkdir $(DIST_DIR) $(DIST_DIR)/dlls $(DIST_DIR)/apps $(DIST_DIR)/drivers
- mkdir $(DIST_DIR)/subsys
-endif
+make_dist_dirs: ./rmkdir
+ ./rmkdir $(DIST_DIR)
+ ./rmkdir $(DIST_DIR)/dlls
+ ./rmkdir $(DIST_DIR)/apps
+ ./rmkdir $(DIST_DIR)/drivers
+ ./rmkdir $(DIST_DIR)/dlls
+ ./rmkdir $(DIST_DIR)/subsys
.PHONY: clean_dist_dir make_dist_dirs