# Select your host
#
#HOST = mingw32-linux
-#HOST = djgpp-msdos
#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
-#DLLS = mingw32
+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 = blue ide keyboard null parallel serial vidport
-# DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1
-FS_DRIVERS = vfat minix
-# FS_DRIVERS = minix ext2 template
-KERNEL_SERVICES = $(DEVICE_DRIVERS) $(FS_DRIVERS)
+#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
+
+#NET_DEVICE_DRIVERS = ne2000
+NET_DEVICE_DRIVERS = ne2000
+
+#
+# system applications (required for startup)
+#
+#SYS_APPS = shell winlogon services
+SYS_APPS = shell winlogon services
+
+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
+
+#NET_APPS = ping roshttpd telnet
+NET_APPS = ping
-APPS = args hello shell test cat bench apc shm lpc thread event file gditest \
- pteb 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
-floppy: make_floppy_dirs autoexec_floppy $(COMPONENTS:%=%_floppy) \
- $(DLLS:%=%_floppy) $(LOADERS:%=%_floppy) \
- $(KERNEL_SERVICES:%=%_floppy) $(SUBSYS:%=%_floppy) \
- $(APPS:%=%_floppy)
+ifeq ($(HOST),mingw32-linux)
+rcopy$(EXE_POSTFIX): rcopy.c
+ $(HOST_CC) -g -DUNIX_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
+endif
+ifeq ($(HOST),mingw32-windows)
+rcopy$(EXE_POSTFIX): rcopy.c
+ $(HOST_CC) -g -DDOS_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
+endif
+
+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
+
-dist: clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) $(DLLS:%=%_dist) \
+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) \
+ $(SYS_APPS:%=%_install) $(APPS:%=%_install)
+
+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
buildno_clean:
make -C apps/buildno clean
-buildno_floppy:
-
buildno_dist:
-.PHONY: buildno buildno_clean buildno_floppy buildno_dist
+buildno_install:
+
+.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
$(APPS:%=%_clean): %_clean:
make -C apps/$* clean
-$(APPS:%=%_floppy): %_floppy:
- make -C apps/$* floppy
-
$(APPS:%=%_dist): %_dist:
make -C apps/$* dist
-.PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_floppy) $(APPS:%=%_dist)
+$(APPS:%=%_install): %_install:
+ make -C apps/$* install
+
+.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_native_clean:
make -C iface/native clean
-iface_native_floppy:
+iface_native_install:
iface_native_dist:
iface_additional_clean:
make -C iface/addsys clean
-iface_additional_floppy:
+iface_additional_install:
iface_additional_dist:
-.PHONY: iface_native iface_native_clean iface_native_floppy \
+.PHONY: iface_native iface_native_clean iface_native_install \
iface_native_dist \
- iface_additional iface_additional_clean iface_additional_floppy \
- iface_additional_dist \
+ 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
$(DEVICE_DRIVERS:%=%_clean): %_clean:
make -C services/dd/$* clean
-$(DEVICE_DRIVERS:%=%_floppy): %_floppy:
- make -C services/dd/$* floppy
+$(DEVICE_DRIVERS:%=%_install): %_install:
+ make -C services/dd/$* install
$(DEVICE_DRIVERS:%=%_dist): %_dist:
make -C services/dd/$* dist
.PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
- $(DEVICE_DRIVERS:%=%_floppy) $(DEVICE_DRIVERS:%=%_dist)
+ $(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/$*
$(FS_DRIVERS:%=%_clean): %_clean:
make -C services/fs/$* clean
-$(FS_DRIVERS:%=%_floppy): %_floppy:
- make -C services/fs/$* floppy
+$(FS_DRIVERS:%=%_install): %_install:
+ make -C services/fs/$* install
$(FS_DRIVERS:%=%_dist): %_dist:
make -C services/fs/$* dist
-.PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_floppy) \
+.PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_install) \
$(FS_DRIVERS:%=%_dist)
+#
+# Network driver rules
+#
+$(NET_DRIVERS): %:
+ make -C services/net/$*
+
+$(NET_DRIVERS:%=%_clean): %_clean:
+ make -C services/net/$* clean
+
+$(NET_DRIVERS:%=%_install): %_install:
+ make -C services/net/$* install
+
+$(NET_DRIVERS:%=%_dist): %_dist:
+ make -C services/net/$* dist
+
+.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
#
$(LOADERS:%=%_clean): %_clean:
make -C loaders/$* clean
-$(LOADERS:%=%_floppy): %_floppy:
- make -C loaders/$* floppy
+$(LOADERS:%=%_install): %_install:
+ make -C loaders/$* install
$(LOADERS:%=%_dist): %_dist:
make -C loaders/$* dist
-.PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_floppy) \
+.PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_install) \
$(LOADERS:%=%_dist)
#
ntoskrnl_clean:
make -C ntoskrnl clean
-ntoskrnl_floppy:
- make -C ntoskrnl floppy
+ntoskrnl_install:
+ make -C ntoskrnl install
ntoskrnl_dist:
make -C ntoskrnl dist
-.PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_floppy ntoskrnl_dist
+.PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
#
# Required DLLs
$(DLLS:%=%_clean): %_clean:
make -C lib/$* clean
-$(DLLS:%=%_floppy): %_floppy:
- make -C lib/$* floppy
+$(DLLS:%=%_install): %_install:
+ make -C lib/$* install
$(DLLS:%=%_dist): %_dist:
make -C lib/$* dist
-.PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_floppy) $(DLLS:%=%_dist)
+.PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_dist)
#
# Kernel Subsystems
#
+
$(SUBSYS): %:
make -C subsys/$*
$(SUBSYS:%=%_clean): %_clean:
make -C subsys/$* clean
-$(SUBSYS:%=%_floppy): %_floppy:
- make -C subsys/$* floppy
+$(SUBSYS:%=%_install): %_install:
+ make -C subsys/$* install
$(SUBSYS:%=%_dist): %_dist:
make -C subsys/$* dist
-.PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_floppy) \
+.PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
$(SUBSYS:%=%_dist)
#
# Make an install floppy
#
+make_install_dirs:
+ ./rmkdir $(FLOPPY_DIR)/dlls
+ ./rmkdir $(FLOPPY_DIR)/apps
+ ./rmkdir $(FLOPPY_DIR)/drivers
+ ./rmkdir $(FLOPPY_DIR)/subsys
-install: all
- ./install.sh /mnt/hda1
- ./install.sh /mnt/hda4
-
-make_floppy_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
-.PHONY: make_floppy_dirs
+.PHONY: make_install_dirs
-autoexec_floppy: $(FLOPPY_DIR)/autoexec.bat
+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
+#
+#
+#
+etags:
+ find . -name "*.[ch]" -print | etags --language=c -
+
+# EOF