No need to define __USE_W32API
[reactos.git] / reactos / Makefile
index 4c64926..63d8c4c 100644 (file)
@@ -38,7 +38,7 @@
 #        This can require several minutes to complete. If you only need to check
 #        dependencies for a single or few modules then you can use the
 #        module_depends targets instead. This target can also repair a damaged or
-#        missing makefile.auto if needed.
+#        missing makefile-{ROS_ARCH}.auto if needed.
 #
 #    module_depends
 #        These targets do a dependency check of individual modules. Replace module
 #        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.
+#        defaults to .\obj-{ROS_ARCH}.
 #
 #    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.
+#        put a path separator at the end. The variable defaults to .\output-{ROS_ARCH}.
 #
 #    ROS_CDOUTPUT
 #        This variable controls the name of the ReactOS directory on cdrom.
@@ -89,7 +89,7 @@
 #    ROS_INSTALL
 #        This variable controls where to install output files to when using
 #        'make install'. N.B. Don't put a path separator at the end. The variable
-#        defaults to .\reactos.
+#        defaults to .\{ROS_CDOUTPUT}.
 #
 #    ROS_BUILDMAP
 #        This variable controls if map files are to be generated for executable
@@ -147,6 +147,12 @@ endif
 .PHONY: world
 .PHONY: universe
 
+ifneq ($(ROS_ARCH),)
+  ARCH := $(ROS_ARCH)
+else
+  ARCH := i386
+endif
+
 ifeq ($(ROS_AUTOMAKE),)
 ROS_AUTOMAKE=makefile.auto
 endif
@@ -254,104 +260,84 @@ else
   ECHO_STRIP   =
 endif
 
-
-host_gcc = $(Q)gcc
-host_gpp = $(Q)g++
+# Set host compiler/linker
+ifeq ($(HOST_CC),)
+  HOST_CC = gcc
+endif
+ifeq ($(HOST_CPP),)
+  HOST_CPP = g++
+endif
+host_gcc = $(Q)$(HOST_CC)
+host_gpp = $(Q)$(HOST_CPP)
 host_ld = $(Q)ld
 host_ar = $(Q)ar
 host_objcopy = $(Q)objcopy
-ifeq ($(HOST),mingw32-linux)
-       export EXEPREFIX = ./
-ifeq ($(OSTYPE),msys)
-       export EXEPOSTFIX = .exe
+
+# Set target compiler/linker
+ifneq ($(ROS_PREFIX),)
+  PREFIX_ := $(ROS_PREFIX)-
 else
-       export EXEPOSTFIX =
+  ifeq ($(HOST),mingw32-linux)
+    PREFIX_ := mingw32-
+  else
+    PREFIX_ :=
+  endif
+endif
+ifeq ($(TARGET_CC),)
+  TARGET_CC = $(PREFIX_)gcc
+endif
+ifeq ($(TARGET_CPP),)
+  TARGET_CPP = $(PREFIX_)g++
+endif
+gcc = $(Q)$(TARGET_CC)
+gpp = $(Q)$(TARGET_CPP)
+ld = $(Q)$(PREFIX_)ld
+nm = $(Q)$(PREFIX_)nm
+objdump = $(Q)$(PREFIX_)objdump
+ar = $(Q)$(PREFIX_)ar
+objcopy = $(Q)$(PREFIX_)objcopy
+dlltool = $(Q)$(PREFIX_)dlltool
+strip = $(Q)$(PREFIX_)strip
+windres = $(Q)$(PREFIX_)windres
+
+# Set utilities
+ifeq ($(OSTYPE),msys)
+  HOST=mingw32-linux
 endif
+ifeq ($(HOST),mingw32-linux)
+       export EXEPREFIX = ./
+       ifeq ($(OSTYPE),msys)
+               export EXEPOSTFIX = .exe
+       else
+               export EXEPOSTFIX =
+       endif
        export SEP = /
        mkdir = -$(Q)mkdir -p
-       gcc = $(Q)$(PREFIX)-gcc
-       gpp = $(Q)$(PREFIX)-g++
-       ld = $(Q)$(PREFIX)-ld
-       nm = $(Q)$(PREFIX)-nm
-       objdump = $(Q)$(PREFIX)-objdump
-       ar = $(Q)$(PREFIX)-ar
-       objcopy = $(Q)$(PREFIX)-objcopy
-       dlltool = $(Q)$(PREFIX)-dlltool
-       strip = $(Q)$(PREFIX)-strip
-       windres = $(Q)$(PREFIX)-windres
        rm = $(Q)rm -f
        cp = $(Q)cp
        NUL = /dev/null
 else # mingw32-windows
-       ifeq ($(OSTYPE),msys)
-               HOST=mingw32-linux
-               export EXEPREFIX = ./
-               export EXEPOSTFIX = .exe
-               export SEP = /
-               mkdir = -$(Q)mkdir -p
-               rm = $(Q)rm -f
-               cp = $(Q)cp
-               NUL = /dev/null
-       else
-               export EXEPREFIX =
-               export EXEPOSTFIX = .exe
-               ROS_EMPTY =
-               export SEP = \$(ROS_EMPTY)
-               mkdir = -$(Q)mkdir
-               rm = $(Q)del /f /q
-               cp = $(Q)copy /y
-               NUL = NUL
-       endif
-       ifeq ($(ROS_PREFIX),)
-               gcc = $(Q)gcc
-               gpp = $(Q)g++
-               ld = $(Q)ld
-               nm = $(Q)nm
-               objdump = $(Q)objdump
-               ar = $(Q)ar
-               objcopy = $(Q)objcopy
-               dlltool = $(Q)dlltool
-               strip = $(Q)strip
-               windres = $(Q)windres
-       else
-               gcc = $(Q)$(ROS_PREFIX)-gcc
-               gpp = $(Q)$(ROS_PREFIX)-g++
-               ld = $(Q)$(ROS_PREFIX)-ld
-               nm = $(Q)$(ROS_PREFIX)-nm
-               objdump = $(Q)$(ROS_PREFIX)-objdump
-               ar = $(Q)$(ROS_PREFIX)-ar
-               objcopy = $(Q)$(ROS_PREFIX)-objcopy
-               dlltool = $(Q)$(ROS_PREFIX)-dlltool
-               strip = $(Q)$(ROS_PREFIX)-strip
-               windres = $(Q)$(ROS_PREFIX)-windres
-       endif
-endif
-
-ifneq ($(ROS_ARCH),)
-  ARCH := $(ROS_ARCH)
-else
-  ARCH := i386
+       export EXEPREFIX =
+       export EXEPOSTFIX = .exe
+       ROS_EMPTY =
+       export SEP = \$(ROS_EMPTY)
+       mkdir = -$(Q)mkdir
+       rm = $(Q)del /f /q
+       cp = $(Q)copy /y
+       NUL = NUL
 endif
 
 ifneq ($(ROS_INTERMEDIATE),)
   INTERMEDIATE := $(ROS_INTERMEDIATE)
 else
-  ifneq ($(ROS_CDOUTPUT),)
-    INTERMEDIATE := obj-$(ROS_CDOUTPUT)
-  else
-    INTERMEDIATE := obj-$(ARCH)
-  endif
+  INTERMEDIATE := obj-$(ARCH)
 endif
 INTERMEDIATE_ := $(INTERMEDIATE)$(SEP)
 
 ifneq ($(ROS_OUTPUT),)
   OUTPUT := $(ROS_OUTPUT)
 else
-  ifneq ($(ROS_CDOUTPUT),)
-    OUTPUT := output-$(ROS_CDOUTPUT)
-  else
-    OUTPUT := output-$(ARCH)
-  endif
+  OUTPUT := output-$(ARCH)
 endif
 OUTPUT_ := $(OUTPUT)$(SEP)
 
@@ -365,18 +351,14 @@ CDOUTPUT_ := $(CDOUTPUT)$(SEP)
 ifneq ($(ROS_TEMPORARY),)
   TEMPORARY := $(ROS_TEMPORARY)
 else
-  TEMPORARY :=
+  TEMPORARY := .
 endif
 TEMPORARY_ := $(TEMPORARY)$(SEP)
 
 ifneq ($(ROS_INSTALL),)
   INSTALL := $(ROS_INSTALL)
 else
-  ifneq ($(ROS_CDOUTPUT),)
-    INSTALL := reactos.$(ROS_CDOUTPUT)
-  else
-    INSTALL := reactos
-  endif
+  INSTALL := $(CDOUTPUT)
 endif
 INSTALL_ := $(INSTALL)$(SEP)
 
@@ -414,13 +396,12 @@ PREAUTO := \
        $(ERRCODES_H) \
        $(ERRCODES_RC) \
        $(GENDIB_DIB_FILES) \
-       $(NCI_SERVICE_FILES) \
-       $(OFW_INTERFACE_SERVICE_FILES)
+       $(NCI_SERVICE_FILES)
 ifeq ($(ARCH),powerpc)
-PREAUTO += $(PPCMMU_TARGETS)
+PREAUTO += $(OFW_INTERFACE_SERVICE_FILES) $(PPCMMU_TARGETS)
 endif
 
-$(ROS_AUTOMAKE): $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
+$(ROS_AUTOMAKE): $(RBUILD_TARGET) $(XMLBUILDFILES) | $(PREAUTO)
        ${mkdir} $(OUTPUT_)media$(SEP)inf 2>$(NUL)
        $(ECHO_RBUILD)
        $(Q)$(RBUILD_TARGET) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) mingw
@@ -449,8 +430,7 @@ universe:
 
 sysregtest:
        $(OUTPUT_)tools$(SEP)sysreg$(SEP)sysreg$(EXEPOSTFIX) tools$(SEP)sysreg$(SEP)txtmode.cfg
-       $(OUTPUT_)tools$(SEP)sysreg$(SEP)sysreg$(EXEPOSTFIX) tools$(SEP)sysreg$(SEP)txtmode.cfg
-       $(OUTPUT_)tools$(SEP)sysreg$(SEP)sysreg$(EXEPOSTFIX) tools$(SEP)sysreg$(SEP)txtmode.cfg
+
 
 .PHONY: cb
 cb: $(RBUILD_TARGET)