- Move NCI generated files to arch-specific directories
[reactos.git] / reactos / tools / nci / nci.mak
index 1298e0b..fdf14bc 100644 (file)
@@ -1,23 +1,38 @@
-NCI_BASE = .$(SEP)tools$(SEP)nci
+NCI_BASE = $(TOOLS_BASE_)nci
+NCI_BASE_ = $(NCI_BASE)$(SEP)
+NCI_INT = $(INTERMEDIATE_)$(NCI_BASE)
+NCI_INT_ = $(NCI_INT)$(SEP)
+NCI_OUT = $(OUTPUT_)$(NCI_BASE)
+NCI_OUT_ = $(NCI_OUT)$(SEP)
+
+$(NCI_INT): | $(TOOLS_INT)
+       $(ECHO_MKDIR)
+       ${mkdir} $@
+
+ifneq ($(INTERMEDIATE),$(OUTPUT))
+$(NCI_OUT): | $(TOOLS_OUT)
+       $(ECHO_MKDIR)
+       ${mkdir} $@
+endif
 
 NCI_TARGET = \
-       $(ROS_INTERMEDIATE)$(NCI_BASE)$(SEP)nci$(EXEPOSTFIX)
+       $(EXEPREFIX)$(NCI_OUT_)nci$(EXEPOSTFIX)
 
 NCI_SOURCES = \
-       $(NCI_BASE)$(SEP)ncitool.c
+       $(NCI_BASE_)ncitool.c
 
 NCI_OBJECTS = \
-       $(NCI_SOURCES:.c=.o)
+    $(addprefix $(INTERMEDIATE_), $(NCI_SOURCES:.c=.o))
 
-NCI_HOST_CFLAGS = -Iinclude -g -Werror -Wall
+NCI_HOST_CFLAGS = -Iinclude $(TOOLS_CFLAGS)
 
-NCI_HOST_LFLAGS = -g
+NCI_HOST_LFLAGS = $(TOOLS_LFLAGS)
 
-$(NCI_TARGET): $(NCI_OBJECTS)
+$(NCI_TARGET): $(NCI_OBJECTS) | $(NCI_OUT)
        $(ECHO_LD)
-       ${host_gcc} $(NCI_OBJECTS) $(NCI_HOST_CFLAGS) -o $(NCI_TARGET)
+       ${host_gcc} $(NCI_OBJECTS) $(NCI_HOST_LFLAGS) -o $@
 
-$(NCI_OBJECTS): %.o : %.c
+$(NCI_INT_)ncitool.o: $(NCI_BASE_)ncitool.c | $(NCI_INT)
        $(ECHO_CC)
        ${host_gcc} $(NCI_HOST_CFLAGS) -c $< -o $@
 
@@ -27,16 +42,16 @@ nci_clean:
 clean: nci_clean
 
 # WIN32K.SYS
-WIN32K_SVC_DB = $(NCI_BASE)$(SEP)w32ksvc.db
-WIN32K_SERVICE_TABLE = subsys$(SEP)win32k$(SEP)main$(SEP)svctab.c
-WIN32K_GDI_STUBS = lib$(SEP)gdi32$(SEP)misc$(SEP)win32k.S
-WIN32K_USER_STUBS = lib$(SEP)user32$(SEP)misc$(SEP)win32k.S
+WIN32K_SVC_DB = $(NCI_BASE_)w32ksvc.db
+WIN32K_SERVICE_TABLE = subsystems$(SEP)win32$(SEP)win32k$(SEP)include$(SEP)napi.h
+WIN32K_GDI_STUBS = dll$(SEP)win32$(SEP)gdi32$(SEP)misc$(SEP)$(ARCH)$(SEP)win32k.S
+WIN32K_USER_STUBS = dll$(SEP)win32$(SEP)user32$(SEP)misc$(SEP)$(ARCH)$(SEP)win32k.S
 
 # NTOSKRNL.EXE
-KERNEL_SVC_DB = $(NCI_BASE)$(SEP)sysfuncs.lst
-KERNEL_SERVICE_TABLE = include$(SEP)ntdll$(SEP)napi.h
-NTDLL_STUBS = lib$(SEP)ntdll$(SEP)napi.S
-KERNEL_STUBS = ntoskrnl$(SEP)ex$(SEP)zw.S
+KERNEL_SVC_DB = $(NCI_BASE_)sysfuncs.lst
+KERNEL_SERVICE_TABLE = ntoskrnl$(SEP)include$(SEP)internal$(SEP)napi.h
+NTDLL_STUBS = dll$(SEP)ntdll$(SEP)$(ARCH)$(SEP)napi.S
+KERNEL_STUBS = ntoskrnl$(SEP)ex$(SEP)$(ARCH)$(SEP)zw.S
 
 NCI_SERVICE_FILES = \
        $(KERNEL_SERVICE_TABLE) \
@@ -46,9 +61,13 @@ NCI_SERVICE_FILES = \
        $(WIN32K_GDI_STUBS) \
        $(WIN32K_USER_STUBS)
 
-$(NCI_SERVICE_FILES): $(NCI_TARGET)
+$(NCI_SERVICE_FILES): $(NCI_TARGET) $(KERNEL_SVC_DB) $(WIN32K_SVC_DB)
        $(ECHO_NCI)
-       $(Q)$(EXEPREFIX)$(NCI_TARGET) \
+       ${mkdir} dll$(SEP)ntdll$(SEP)$(ARCH) 2>$(NUL)
+       ${mkdir} ntoskrnl$(SEP)ex$(SEP)$(ARCH) 2>$(NUL)
+       ${mkdir} dll$(SEP)win32$(SEP)gdi32$(SEP)misc$(SEP)$(ARCH) 2>$(NUL)
+       ${mkdir} dll$(SEP)win32$(SEP)user32$(SEP)misc$(SEP)$(ARCH) 2>$(NUL)
+       $(Q)$(NCI_TARGET) -arch $(ARCH) \
                $(KERNEL_SVC_DB) \
                $(WIN32K_SVC_DB) \
                $(KERNEL_SERVICE_TABLE) \