+# Accepted environment variables:
+#
+# ROS_INTERMEDIATE
+# This variable controls where to put intermediate files. Intermediate
+# files are generated files that are needed to generate the final
+# output files. Examples of intermediate files include *.o, *.a, and
+# *.coff. N.B. Don't put a path separator at the end. The variable
+# defaults to .\obj-i386.
+#
+# ROS_OUTPUT
+# This variable controls where to put output files. Output files are
+# generated files that makes up the result of the build process.
+# Examples of output files include *.exe, *.dll, and *.sys. N.B. Don't
+# put a path separator at the end. The variable defaults to .\output-i386.
+#
+
+.PHONY: all
+.PHONY: clean
+all: makefile.auto
+
+.SUFFIXES:
+
+ifeq ($(HOST),)
+ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
+HOST=mingw32-windows
+else
+HOST=mingw32-linux
+endif
+endif
+
# Default to half-verbose mode
ifeq ($(VERBOSE),no)
Q = @
HALFVERBOSEECHO = no
+ BUILDNO_QUIET = -q
else
ifeq ($(VERBOSE),yes)
Q =
HALFVERBOSEECHO = no
+ BUILDNO_QUIET =
else
Q = @
HALFVERBOSEECHO = yes
+ BUILDNO_QUIET = -q
endif
endif
ifeq ($(HALFVERBOSEECHO),yes)
+ ECHO_MKDIR =@echo [MKDIR] $@
+ ECHO_BUILDNO=@echo [BUILDNO] $@
ECHO_INVOKE =@echo [INVOKE] $<
ECHO_PCH =@echo [PCH] $@
ECHO_CC =@echo [CC] $<
ECHO_LD =@echo [LD] $@
ECHO_RBUILD =@echo [RBUILD] $@
ECHO_RSYM =@echo [RSYM] $@
+ ECHO_WMC =@echo [WMC] $@
ECHO_NCI =@echo [NCI] $@
ECHO_CABMAN =@echo [CABMAN] $<
ECHO_CDMAKE =@echo [CDMAKE] $@
ECHO_TEST =@echo [TEST] $@
else
+ ECHO_MKDIR =
+ ECHO_BUILDNO=
ECHO_INVOKE =
ECHO_PCH =
ECHO_CC =
ECHO_LD =
ECHO_RBUILD =
ECHO_RSYM =
+ ECHO_WMC =
ECHO_NCI =
ECHO_CABMAN =
ECHO_CDMAKE =
EXEPREFIX = ./
EXEPOSTFIX =
SEP = /
- nmkdir = $(Q)mkdir -p
+ nmkdir = -$(Q)mkdir -p
gcc = $(Q)mingw32-gcc
gpp = $(Q)mingw32-g++
ld = $(Q)mingw32-ld
else # mingw32-windows
EXEPREFIX =
EXEPOSTFIX = .exe
- SEP = \$(EMPTY_VAR)
- nmkdir = $(Q)mkdir
+ ROS_EMPTY =
+ SEP = \$(ROS_EMPTY)
+ nmkdir = -$(Q)mkdir
gcc = $(Q)gcc
gpp = $(Q)g++
ld = $(Q)ld
NUL = NUL
endif
-.PHONY: all
-.PHONY: clean
-
-all: makefile.auto
-
ifneq ($(ROS_INTERMEDIATE),)
-$(ROS_INTERMEDIATE)tools: $(ROS_INTERMEDIATE)
- ${nmkdir} $(ROS_INTERMEDIATE)tools
+ INTERMEDIATE = .$(SEP)$(ROS_INTERMEDIATE)$(SEP)
+ INTERMEDIATE_NO_SLASH := $(ROS_INTERMEDIATE)
+else
+ INTERMEDIATE = obj-i386$(SEP)
+ INTERMEDIATE_NO_SLASH = obj-i386
endif
-ifneq ($(ROS_INTERMEDIATE),)
-$(ROS_INTERMEDIATE):
- ${nmkdir} $(ROS_INTERMEDIATE)
+ifneq ($(ROS_OUTPUT),)
+ OUTPUT = $(ROS_OUTPUT)$(SEP)
+ OUTPUT_NO_SLASH = $(ROS_OUTPUT)
+else
+ OUTPUT = obj-i386$(SEP)
+ OUTPUT_NO_SLASH = obj-i386
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
+mkdir = -$(Q)$(INTERMEDIATE)rmkdir
+EXISTS = .exists
+INTERMEDIATE_EXISTS = $(INTERMEDIATE)$(EXISTS)
+
+$(INTERMEDIATE_EXISTS):
+ -${nmkdir} $(INTERMEDIATE_NO_SLASH) 2>$(NUL) >$(NUL)
+ @echo . > $@
+
+NTOSKRNL_MC = ntoskrnl$(SEP)ntoskrnl.mc
+KERNEL32_MC = lib$(SEP)kernel32$(SEP)kernel32.mc
+BUILDNO_H = include$(SEP)reactos$(SEP)buildno.h
+BUGCODES_H = include$(SEP)reactos$(SEP)bugcodes.h
+BUGCODES_RC = ntoskrnl$(SEP)bugcodes.rc
+ERRCODES_H = include$(SEP)reactos$(SEP)errcodes.h
+ERRCODES_RC = lib$(SEP)kernel32$(SEP)errcodes.rc
-include tools/Makefile
+include tools/tools.mak
-include makefile.auto
PREAUTO := \
$(BUGCODES_H) \
$(BUGCODES_RC) \
$(ERRCODES_H) \
- $(ERRCODES_RC)
+ $(ERRCODES_RC) \
+ $(NCI_SERVICE_FILES)
-makefile.auto: $(RMKDIR_TARGET) $(BUILDNO_TARGET) $(NCI_SERVICE_FILES) $(WMC_TARGET) $(WRC_TARGET) \
- $(RSYM_TARGET) $(CDMAKE_TARGET) $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
+makefile.auto: $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
$(ECHO_RBUILD)
- $(Q)tools$(SEP)rbuild$(SEP)rbuild$(EXEPOSTFIX) mingw
+ $(Q)$(RBUILD_TARGET) mingw
$(BUGCODES_H) $(BUGCODES_RC): $(WMC_TARGET) $(NTOSKRNL_MC)
- $(WMC_TARGET) -i -H $(BUGCODES_H) -o $(BUGCODES_RC) $(NTOSKRNL_MC)
+ $(ECHO_WMC)
+ $(Q)$(WMC_TARGET) -i -H $(BUGCODES_H) -o $(BUGCODES_RC) $(NTOSKRNL_MC)
$(ERRCODES_H) $(ERRCODES_RC): $(WMC_TARGET) $(KERNEL32_MC)
- $(WMC_TARGET) -i -H $(ERRCODES_H) -o $(ERRCODES_RC) $(KERNEL32_MC)
+ $(ECHO_WMC)
+ $(Q)$(WMC_TARGET) -i -H $(ERRCODES_H) -o $(ERRCODES_RC) $(KERNEL32_MC)
.PHONY: makefile_auto_clean
makefile_auto_clean:
-@$(rm) makefile.auto $(PREAUTO) 2>$(NUL)
+
+.PHONY: clean
clean: makefile_auto_clean