remove unnessary @true, and create some macros to clean things up
[reactos.git] / reactos / Makefile
index bc4cdcd..aa24d38 100644 (file)
+# Default to half-verbose mode
+ifeq ($(VERBOSE),no)
+  Q = @
+  HALFVERBOSEECHO = no
+else
+ifeq ($(VERBOSE),yes)
+  Q =
+  HALFVERBOSEECHO = no
+else
+  Q = @
+  HALFVERBOSEECHO = yes
+endif
+endif
+ifeq ($(HALFVERBOSEECHO),yes)
+  ECHO_INVOKE =@echo [INVOKE]  $<
+  ECHO_PCH    =@echo [PCH]     $@
+  ECHO_CC     =@echo [CC]      $<
+  ECHO_GAS    =@echo [GAS]     $<
+  ECHO_NASM   =@echo [NASM]    $<
+  ECHO_AR     =@echo [AR]      $@
+  ECHO_WINEBLD=@echo [WINEBLD] $@
+  ECHO_WRC    =@echo [WRC]     $@
+  ECHO_BIN2RES=@echo [BIN2RES] $<
+  ECHO_DLLTOOL=@echo [DLLTOOL] $@
+  ECHO_LD     =@echo [LD]      $@
+  ECHO_RBUILD =@echo [RBUILD]  $@
+  ECHO_RSYM   =@echo [RSYM]    $@
+  ECHO_NCI    =@echo [NCI]     $@
+  ECHO_CABMAN =@echo [CABMAN]  $<
+  ECHO_CDMAKE =@echo [CDMAKE]  $@
+  ECHO_TEST   =@echo [TEST]    $@
+else
+  ECHO_INVOKE =
+  ECHO_PCH    =
+  ECHO_CC     =
+  ECHO_GAS    =
+  ECHO_NASM   =
+  ECHO_AR     =
+  ECHO_WINEBLD=
+  ECHO_WRC    =
+  ECHO_BIN2RES=
+  ECHO_DLLTOOL=
+  ECHO_LD     =
+  ECHO_RBUILD =
+  ECHO_RSYM   =
+  ECHO_NCI    =
+  ECHO_CABMAN =
+  ECHO_CDMAKE =
+  ECHO_TEST   =
+endif
+
+
+host_gcc = $(Q)gcc
+host_gpp = $(Q)g++
+host_ld = $(Q)ld
+host_ar = $(Q)ar
+host_objcopy = $(Q)objcopy
 ifeq ($(HOST),mingw32-linux)
+       EXEPREFIX = ./
        EXEPOSTFIX =
        SEP = /
-       host_gcc = gcc
-       host_gpp = g++
-       nmkdir = mkdir -p
-       rm = rm
+       nmkdir = $(Q)mkdir -p
+       gcc = $(Q)mingw32-gcc
+       gpp = $(Q)mingw32-g++
+       ld = $(Q)mingw32-ld
+       ar = $(Q)mingw32-ar
+       objcopy = $(Q)mingw32-objcopy
+       dlltool = $(Q)mingw32-dlltool
+       windres = $(Q)mingw32-windres
+       rm = rm -f
+       cp = $(Q)cp
+       NUL = /dev/null
 else # mingw32-windows
+       EXEPREFIX =
        EXEPOSTFIX = .exe
        SEP = \$(EMPTY_VAR)
-       host_gcc = gcc
-       host_gpp = g++
-       nmkdir = mkdir
+       nmkdir = $(Q)mkdir
+       gcc = $(Q)gcc
+       gpp = $(Q)g++
+       ld = $(Q)ld
+       ar = $(Q)ar
+       objcopy = $(Q)objcopy
+       dlltool = $(Q)dlltool
+       windres = $(Q)windres
        rm = del /f /q
+       cp = $(Q)copy /y
+       NUL = NUL
 endif
 
-all: Makefile.auto
+.PHONY: all
+.PHONY: clean
+
+all: makefile.auto
 
 ifneq ($(ROS_INTERMEDIATE),)
 $(ROS_INTERMEDIATE)tools: $(ROS_INTERMEDIATE)
-else
-$(ROS_INTERMEDIATE)tools:
-endif
        ${nmkdir} $(ROS_INTERMEDIATE)tools
+endif
 
 ifneq ($(ROS_INTERMEDIATE),)
 $(ROS_INTERMEDIATE):
        ${nmkdir} $(ROS_INTERMEDIATE)
 endif
 
+NTOSKRNL_MC = .$(SEP)ntoskrnl$(SEP)ntoskrnl.mc
+KERNEL32_MC = .$(SEP)lib$(SEP)kernel32$(SEP)kernel32.mc
+BUILDNO_H = .$(SEP)include$(SEP)reactos$(SEP)buildno.h
+BUGCODES_H = .$(SEP)include$(SEP)reactos$(SEP)bugcodes.h
+BUGCODES_RC = .$(SEP)ntoskrnl$(SEP)bugcodes.rc
+ERRCODES_H = .$(SEP)include$(SEP)reactos$(SEP)errcodes.h
+ERRCODES_RC = .$(SEP)lib$(SEP)kernel32$(SEP)errcodes.rc
+
 include tools/Makefile
--include Makefile.auto
+-include makefile.auto
 
 PREAUTO := \
-       include$(SEP)reactos$(SEP)buildno.h \
-       include$(SEP)reactos$(SEP)bugcodes.h \
-       ntoskrnl$(SEP)bugcodes.rc \
-       include$(SEP)reactos$(SEP)errcodes.h \
-       lib$(SEP)kernel32$(SEP)errcodes.rc
+       $(BUILDNO_H) \
+       $(BUGCODES_H) \
+       $(BUGCODES_RC) \
+       $(ERRCODES_H) \
+       $(ERRCODES_RC)
 
-Makefile.auto: $(RMKDIR_TARGET) $(BUILDNO_TARGET) $(NCI_SERVICE_FILES) $(WMC_TARGET) $(RBUILD_TARGET) $(PREAUTO)
-       tools$(SEP)rbuild$(SEP)rbuild$(EXEPOSTFIX) mingw
-       $(MAKE) $(MAKECMDGOALS)
+makefile.auto: $(RMKDIR_TARGET) $(BUILDNO_TARGET) $(NCI_SERVICE_FILES) $(WMC_TARGET) $(WRC_TARGET) \
+               $(RSYM_TARGET) $(CDMAKE_TARGET) $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
+       $(ECHO_RBUILD)
+       $(Q)tools$(SEP)rbuild$(SEP)rbuild$(EXEPOSTFIX) mingw
 
 
-include$(SEP)reactos$(SEP)bugcodes.h ntoskrnl$(SEP)bugcodes.rc: $(WMC_TARGET) ntoskrnl$(SEP)ntoskrnl.mc
-       $(WMC_TARGET) -H include$(SEP)reactos$(SEP)bugcodes.h -o ntoskrnl$(SEP)bugcodes.rc ntoskrnl$(SEP)ntoskrnl.mc
+$(BUGCODES_H) $(BUGCODES_RC): $(WMC_TARGET) $(NTOSKRNL_MC)
+       $(WMC_TARGET) -i -H $(BUGCODES_H) -o $(BUGCODES_RC) $(NTOSKRNL_MC)
 
-include$(SEP)reactos$(SEP)errcodes.h lib$(SEP)kernel32$(SEP)errcodes.rc: $(WMC_TARGET) lib$(SEP)kernel32$(SEP)kernel32.mc
-       $(WMC_TARGET) -H include$(SEP)reactos$(SEP)errcodes.h -o lib$(SEP)kernel32$(SEP)errcodes.rc lib$(SEP)kernel32$(SEP)kernel32.mc
+$(ERRCODES_H) $(ERRCODES_RC): $(WMC_TARGET) $(KERNEL32_MC)
+       $(WMC_TARGET) -i -H $(ERRCODES_H) -o $(ERRCODES_RC) $(KERNEL32_MC)
 
-clean::
-       -@$(rm) Makefile.auto $(PREAUTO)
+.PHONY: makefile_auto_clean
+makefile_auto_clean:
+       -@$(rm) makefile.auto $(PREAUTO) 2>$(NUL)
+clean: makefile_auto_clean