#
# Accepted environment variables:
#
+# ROS_ARCH
+# This variable specifies the name of the architecture to build ReactOS for.
+# The variable defaults to i386.
+#
# ROS_PREFIX
# This variable specifies the prefix of the MinGW installation. On Windows
# a prefix is usually not needed, but on linux it is usually "mingw32". If
# 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.
#
+# ROS_CDOUTPUT
+# This variable controls the name of the ReactOS directory on cdrom.
+# The variable defaults to reactos.
+# Warning: setting this value may lead to a not bootable/installable cdrom.
+#
# ROS_TEMPORARY
# This variable controls where to put temporary files. Temporary files
# are (usually small) generated files that are needed to generate the
ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
export OSTYPE = msys
HOST=mingw32-linux
+CFLAGS+=-fshort-wchar
+CPPFLAGS+=-fshort-wchar
else
HOST=mingw32-windows
endif
else
HOST=mingw32-linux
+CFLAGS+=-fshort-wchar
+CPPFLAGS+=-fshort-wchar
endif
endif
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
- 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
- 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
- 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
- rm = $(Q)del /f /q
- cp = $(Q)copy /y
- NUL = NUL
- endif
+ 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
endif
ifneq ($(ROS_INTERMEDIATE),)
INTERMEDIATE := $(ROS_INTERMEDIATE)
else
- INTERMEDIATE := obj-i386
+ ifneq ($(ROS_CDOUTPUT),)
+ INTERMEDIATE := obj-$(ROS_CDOUTPUT)
+ else
+ INTERMEDIATE := obj-$(ARCH)
+ endif
endif
INTERMEDIATE_ := $(INTERMEDIATE)$(SEP)
ifneq ($(ROS_OUTPUT),)
OUTPUT := $(ROS_OUTPUT)
else
- OUTPUT := output-i386
+ ifneq ($(ROS_CDOUTPUT),)
+ OUTPUT := output-$(ROS_CDOUTPUT)
+ else
+ OUTPUT := output-$(ARCH)
+ endif
endif
OUTPUT_ := $(OUTPUT)$(SEP)
+ifneq ($(ROS_CDOUTPUT),)
+ CDOUTPUT := $(ROS_CDOUTPUT)
+else
+ CDOUTPUT := reactos
+endif
+CDOUTPUT_ := $(CDOUTPUT)$(SEP)
+
ifneq ($(ROS_TEMPORARY),)
TEMPORARY := $(ROS_TEMPORARY)
else
ifneq ($(ROS_INSTALL),)
INSTALL := $(ROS_INSTALL)
else
- INSTALL := reactos
+ ifneq ($(ROS_CDOUTPUT),)
+ INSTALL := reactos.$(ROS_CDOUTPUT)
+ else
+ INSTALL := reactos
+ endif
endif
INSTALL_ := $(INSTALL)$(SEP)
ERRCODES_H = include$(SEP)reactos$(SEP)errcodes.h
ERRCODES_RC = dll$(SEP)win32$(SEP)kernel32$(SEP)errcodes.rc
+
include lib/lib.mak
include tools/tools.mak
include boot/freeldr/bootsect/bootsect.mak
$(BUGCODES_RC) \
$(ERRCODES_H) \
$(ERRCODES_RC) \
- $(NCI_SERVICE_FILES) \
$(GENDIB_DIB_FILES) \
- $(OFW_INTERFACE_OUTPUT) \
- $(OFW_INTERFACE_SOURCE) \
- $(OFW_INTERFACE_HEADER)
+ $(NCI_SERVICE_FILES)
+
+POSTAUTO : \
+ psdk \
+ $(IDL_FILES)
$(ROS_AUTOMAKE): $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
+ ${mkdir} $(INTERMEDIATE_)media$(SEP)inf 2>$(NUL)
$(ECHO_RBUILD)
- $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) mingw
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -rReactOS-$(ARCH).rbuild mingw
+ @$(MAKE) POSTAUTO
-world: all
- $(MAKE) KDBG=$(KDBG) DBG=$(DBG) \
- ROS_AUTOMAKE=$(ROS_AUTOMAKE) \
- ROS_INSTALL=$(ROS_INSTALL) \
- ROS_INTERMEDIATE=$(ROS_INTERMEDIATE) \
- ROS_OUTPUT=$(ROS_OUTPUT) \
- bootcd livecd
+world: all bootcd livecd
universe:
$(MAKE) KDBG=1 DBG=1 \
ROS_OUTPUT=output-$(ARCH)-r \
world
+sysregtest:
+ -mkdir $(OUTPUT_)cd$(SEP)reactos
+ $(cp) boot$(SEP)bootdata$(SEP)unattend.inf.sample boot$(SEP)bootdata$(SEP)unattend.inf
+ $(cp) boot$(SEP)bootdata$(SEP)unattend.inf.sample $(OUTPUT_)cd$(SEP)reactos$(SEP)unattend.inf
+ $(cp) boot$(SEP)bootdata$(SEP)bootcdregtest$(SEP)testboot.bat.sample boot$(SEP)bootdata$(SEP)bootcdregtest$(SEP)testboot.bat
+ $(MAKE) dbgprint
+ $(MAKE) bootcdregtest
+ $(MAKE) sysreg
+ $(OUTPUT_)tools$(SEP)sysreg$(SEP)sysreg$(EXEPOSTFIX) tools$(SEP)sysreg$(SEP)txtmode.cfg rosboot
+ $(OUTPUT_)tools$(SEP)sysreg$(SEP)sysreg$(EXEPOSTFIX) tools$(SEP)sysreg$(SEP)secstage.cfg rosboot
+ $(OUTPUT_)tools$(SEP)sysreg$(SEP)sysreg$(EXEPOSTFIX) tools$(SEP)sysreg$(SEP)runonce.cfg rosboot
+
+sysregtest_clean:
+ $(rm) boot$(SEP)bootdata$(SEP)unattend.inf
+ $(rm) boot$(SEP)bootdata$(SEP)bootcdregtest$(SEP)testboot.bat
+ $(rm) $(OUTPUT_)cd$(SEP)reactos$(SEP)unattend.inf
+
+regtest:
+ $(cp) boot$(SEP)bootdata$(SEP)unattend.inf.sample $(OUTPUT_)cd$(SEP)reactos$(SEP)unattend.inf
+ $(MAKE) bootcdregtest
+ $(rm) $(OUTPUT_)cd$(SEP)reactos$(SEP)unattend.inf
+
+.PHONY: cb
+cb: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) cb
+
+.PHONY: msbuild
+msbuild: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) msbuild
+
+.PHONY: msbuild_clean
+msbuild_clean: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -c msbuild
+
+.PHONY: depmap
+depmap: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) depmap
+
.PHONY: msvc
msvc: $(RBUILD_TARGET)
$(ECHO_RBUILD)