Full memory management support (memory.c & memory.h & mem.S)
[reactos.git] / reactos / Makefile
index b9d84f9..60dbf5e 100644 (file)
 # 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
-SUBSYS = smss win32k
-#SUBSYS = csrss
+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 vga
-# DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1
-FS_DRIVERS = vfat
-# 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
 
-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
@@ -70,11 +116,28 @@ buildno: include/reactos/version.h
 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
@@ -85,13 +148,30 @@ $(APPS): %:
 $(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
@@ -102,7 +182,7 @@ iface_native:
 iface_native_clean:
        make -C iface/native clean
 
-iface_native_floppy:
+iface_native_install:
 
 iface_native_dist:
 
@@ -112,14 +192,32 @@ iface_additional:
 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
@@ -130,14 +228,32 @@ $(DEVICE_DRIVERS): %:
 $(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/$*
@@ -145,15 +261,48 @@ $(FS_DRIVERS): %:
 $(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
 #
@@ -164,13 +313,13 @@ $(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)
 
 #
@@ -183,13 +332,13 @@ ntoskrnl:
 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
@@ -201,60 +350,49 @@ $(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
 
-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_install_dirs
 
-.PHONY: make_floppy_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
@@ -275,18 +413,20 @@ else
        $(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