X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Frules.mak;h=ea01aff835d407ec3c3eda3db44581c12117be73;hp=e312e34bc871f2da3b5ccc3d2f587d1be8cf0ad0;hb=29f3606a016dd3154f6c3fbeaeebe868ffa6b595;hpb=5e5862c7feebd4bcd0e46be404db4a0b1e1fd752 diff --git a/reactos/rules.mak b/reactos/rules.mak index e312e34bc87..ea01aff835d 100644 --- a/reactos/rules.mak +++ b/reactos/rules.mak @@ -1,151 +1,215 @@ -# -# Important -# -.EXPORT_ALL_VARIABLES: +# Default to half-verbose mode +ifeq ($(VERBOSE),no) + Q = @ + HALFVERBOSEECHO = @: + # Do not print "Entering directory ..." + export MAKEFLAGS += --no-print-directory + # Be silent + export MAKEFLAGS += --silent +else +ifeq ($(VERBOSE),yes) + Q = + HALFVERBOSEECHO = @: +else + Q = @ + # the following is a hack to get the target name for wine dlls + # it's disabled because it produces warnings about overriden rules for author.c + #ifeq ($(TARGET_TYPE),winedll) + # export TOOLS_PATH = $(PATH_TO_TOP)/tools + # -include Makefile.ros + #endif + ifeq ($(TARGET_NAME),) + HALFVERBOSEECHO = @echo + else + HALFVERBOSEECHO = @echo $(TARGET_NAME): + endif + # Do not print "Entering directory ..." + export MAKEFLAGS += --no-print-directory + # Be silent + export MAKEFLAGS += --silent +endif +endif -#HOST = mingw32-windows +export MAKE := @$(MAKE) -# uncomment if you use bochs and it displays only 30 rows -# BOCHS_30ROWS = yes +ifeq ($(VERBOSE),no) +endif -ifeq ($(HOST),mingw32-linux) -TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) +# detect Windows host environment +ifeq ($(HOST),) +ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32) +HOST=mingw32-windows +else +export HOST=mingw32-linux +endif +endif + +# Default to building map files which includes source and asm code +# Other options are: yes +ifeq ($(BUILD_MAP),) +export BUILD_MAP = full +endif + +# Default to dumping .sym files out of .nostrip files +ifeq ($(BUILD_SYM),) +export BUILD_SYM = yes +endif + +# Default to minimal dependencies, making components not +# depend on all import libraries +ifeq ($(MINIMALDEPENDENCIES),) +export MINIMALDEPENDENCIES = yes +endif + +# Default to no PCH support +ifeq ($(ROS_USE_PCH),) +export ROS_USE_PCH = no endif -DOT := \. +# uncomment if you use bochs and it displays only 30 rows +# BOCHS_30ROWS = yes # # Choose various options # ifeq ($(HOST),mingw32-linux) -NASM_FORMAT = win32 -PREFIX = /usr/mingw32-cvs-000216/bin/mingw32-pc- -#PREFIX = i586-mingw32- -#PREFIX = /usr/mingw32-cvs-000207/bin/mingw32-cvs-000207- -EXE_POSTFIX = -EXE_PREFIX = ./ -#CP = cp -CP = $(PATH_TO_TOP)/rcopy -DLLTOOL = $(PREFIX)dlltool --as=$(PREFIX)as -NASM_CMD = nasm -#KM_SPECS = $(TOPDIR)/specs -FLOPPY_DIR = /a -# DIST_DIR should be relative from the top of the tree -DIST_DIR = dist -DOT := \\. +export NASM_FORMAT = win32 +export PREFIX = i386-mingw32- +export EXE_POSTFIX := +export EXE_PREFIX := ./ +export DLLTOOL = $(PREFIX)dlltool --as=$(PREFIX)as +# +# Do not change NASM_CMD to NASM because older versions of +# nasm doesn't like an environment variable NASM +# +export NASM_CMD = nasm +export DOSCLI = +export FLOPPY_DIR = /mnt/floppy +export SEP := / +export PIPE := endif ifeq ($(HOST),mingw32-windows) -NASM_FORMAT = win32 -PREFIX = -EXE_POSTFIX = .exe -#CP = copy /B -CP = $(PATH_TO_TOP)/rcopy -DLLTOOL = $(PREFIX)dlltool --as=$(PREFIX)as -NASM_CMD = nasm -RM = del -RMDIR = rmdir -#KM_SPECS = specs -DOSCLI = yes -FLOPPY_DIR = A: -# DIST_DIR should be relative from the top of the tree -DIST_DIR = dist -DOT := \. +export NASM_FORMAT = win32 +export PREFIX = +export EXE_PREFIX := +export EXE_POSTFIX := .exe +export DLLTOOL = $(Q)$(PREFIX)dlltool --as=$(PREFIX)as +# +# Do not change NASM_CMD to NASM because older versions of +# nasm doesn't like an environment variable NASM +# +export NASM_CMD = $(Q)nasmw +export DOSCLI = yes +export FLOPPY_DIR = A: +export SEP := \$(EMPTY_VAR) +export PIPE := -pipe endif -CC = $(PREFIX)gcc -CXX = $(PREFIX)g++ -HOST_CC = gcc -HOST_NM = nm -CFLAGS := $(CFLAGS) -I$(PATH_TO_TOP)/include -pipe -m386 -CXXFLAGS = $(CFLAGS) -NFLAGS = -i$(PATH_TO_TOP)/include/ -f$(NASM_FORMAT) -d$(NASM_FORMAT) -LD = $(PREFIX)ld -NM = $(PREFIX)nm -OBJCOPY = $(PREFIX)objcopy -STRIP = $(PREFIX)strip -ASFLAGS := $(ASFLAGS) -I$(PATH_TO_TOP)/include -D__ASM__ -AS = $(PREFIX)gcc -c -x assembler-with-cpp -CPP = $(PREFIX)cpp -AR = $(PREFIX)ar -RC = $(PREFIX)windres -RCINC = --include-dir $(PATH_TO_TOP)/include -OBJCOPY = $(PREFIX)objcopy - -%.o: %.cc - $(CC) $(CFLAGS) -c $< -o $@ -%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ -%.o: %.S - $(AS) $(ASFLAGS) -c $< -o $@ -%.o: %.s - $(AS) $(ASFLAGS) -c $< -o $@ -%.o: %.asm - $(NASM_CMD) $(NFLAGS) $< -o $@ -%.coff: %.rc - $(RC) $(RCINC) $< $@ - -%.sys: %.o - $(CC) \ - -nostartfiles -nostdlib -e _DriverEntry@8\ - -mdll \ - -o junk.tmp \ - -Wl,--defsym,_end=end \ - -Wl,--defsym,_edata=__data_end__ \ - -Wl,--defsym,_etext=etext \ - -Wl,--base-file,base.tmp $^ - - $(RM) junk.tmp - $(DLLTOOL) \ - --dllname $@ \ - --base-file base.tmp \ - --output-exp temp.exp \ - --kill-at - - $(RM) base.tmp - $(CC) \ - --verbose \ - -Wl,--subsystem,native \ - -Wl,--image-base,0x10000 \ - -Wl,-e,_DriverEntry@8 \ - -Wl,temp.exp \ - -nostartfiles -nostdlib -e _DriverEntry@8 \ - -mdll \ - -o $@.unstripped \ - $^ - - $(RM) temp.exp - $(STRIP) --strip-debug $< - $(CC) \ - -nostartfiles -nostdlib -e _DriverEntry@8 \ - -mdll \ - -o junk.tmp \ - -Wl,--defsym,_end=end \ - -Wl,--defsym,_edata=__data_end__ \ - -Wl,--defsym,_etext=etext \ - -Wl,--base-file,base.tmp $^ - - $(RM) junk.tmp - $(DLLTOOL) \ - --dllname $@ \ - --base-file base.tmp \ - --output-exp temp.exp \ - --kill-at - - $(RM) base.tmp - $(CC) \ - --verbose \ - -Wl,--subsystem,native \ - -Wl,--image-base,0x10000 \ - -Wl,-e,_DriverEntry@8 \ - -Wl,temp.exp \ - -nostartfiles -nostdlib -e _DriverEntry@8 \ - -mdll \ - -o $@ \ - $^ - - $(RM) temp.exp - -RULES_MAK_INCLUDED = 1 - - - - +# TOPDIR is used by make bootcd but not defined anywhere. Usurp pointed out +# that it has the same meaning as PATH_TO_TOP. +export TOPDIR = $(PATH_TO_TOP) +# Directory to build a bootable CD image in +export BOOTCD_DIR=$(TOPDIR)/../bootcd/disk +export LIVECD_DIR=$(TOPDIR)/../livecd/disk +ifeq ($(LIVECD_INSTALL),yes) +export INSTALL_DIR=$(LIVECD_DIR)/reactos +else +# Use environment var ROS_INSTALL to override default install dir +ifeq ($(ROS_INSTALL),) +ifeq ($(HOST),mingw32-windows) +export INSTALL_DIR = C:/reactos +else +export INSTALL_DIR = $(PATH_TO_TOP)/reactos +endif +else +export INSTALL_DIR = $(ROS_INSTALL) +endif +endif +export CC = $(Q)$(PREFIX)gcc +export CXX = $(Q)$(PREFIX)g++ +export HOST_CC = $(Q)gcc +export HOST_CXX = $(Q)g++ +export HOST_AR = $(Q)ar +export HOST_NM = $(Q)nm +export LD = $(Q)$(PREFIX)ld +export NM = $(Q)$(PREFIX)nm +export OBJCOPY = $(Q)$(PREFIX)objcopy +export STRIP = $(Q)$(PREFIX)strip +export AS = $(Q)$(PREFIX)gcc -c -x assembler-with-cpp +export CPP = $(Q)$(PREFIX)cpp +export AR = $(Q)$(PREFIX)ar +export RC = $(Q)$(PREFIX)windres +export WRC = $(Q)$(WINE_TOP)/tools/wrc/wrc +export OBJCOPY = $(Q)$(PREFIX)objcopy +export OBJDUMP =$(Q)$(PREFIX)objdump +export TOOLS_PATH = $(PATH_TO_TOP)/tools +export W32API_PATH = $(PATH_TO_TOP)/w32api +export CP = $(Q)$(TOOLS_PATH)/rcopy +export RM = $(Q)$(TOOLS_PATH)/rdel +export RLINE = $(Q)$(TOOLS_PATH)/rline +export RMDIR = $(Q)$(TOOLS_PATH)/rrmdir +export RMKDIR = $(Q)$(TOOLS_PATH)/rmkdir +export RSYM = $(Q)$(TOOLS_PATH)/rsym +export RTOUCH = $(Q)$(TOOLS_PATH)/rtouch +export REGTESTS = $(Q)$(TOOLS_PATH)/regtests +export MC = $(Q)$(TOOLS_PATH)/wmc/wmc +export CABMAN = $(Q)$(TOOLS_PATH)/cabman/cabman +export WINEBUILD = $(Q)$(TOOLS_PATH)/winebuild/winebuild +export WINE2ROS = $(Q)$(TOOLS_PATH)/wine2ros/wine2ros +export MKHIVE = $(Q)$(TOOLS_PATH)/mkhive/mkhive +export CDMAKE = $(Q)$(TOOLS_PATH)/cdmake/cdmake +export BIN2RES = $(Q)$(TOOLS_PATH)/bin2res/bin2res +export XSLTPROC = $(Q)xsltproc +export MS2PS = $(Q)$(TOOLS_PATH)/ms2ps/ms2ps +export WRC = $(Q)$(TOOLS_PATH)/wrc/wrc +export WIDL = $(Q)$(TOOLS_PATH)/widl/widl + +export STD_CFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -pipe -march=$(OARCH) -D_M_IX86 +export STD_CPPFLAGS = $(STD_CFLAGS) +# Check for 3GB +ifeq ($(3GB), 1) +export STD_ASFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -D__ASM__ -D_M_IX86 -D__3GB__ +else +export STD_ASFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -D__ASM__ -D_M_IX86 +endif +export STD_RCFLAGS = --include-dir $(PATH_TO_TOP)/include --include-dir $(W32API_PATH)/include +export STD_NFLAGS = -f win32 + +# Developer Kits +export DK_PATH=$(PATH_TO_TOP)/dk +# Native and kernel mode +export DDK_PATH=$(DK_PATH)/nkm +export DDK_PATH_LIB=$(DDK_PATH)/lib +export DDK_PATH_INC=$(PATH_TO_TOP)/include +# Win32 +export SDK_PATH=$(DK_PATH)/w32 +export SDK_PATH_LIB=$(SDK_PATH)/lib +export SDK_PATH_INC=$(PATH_TO_TOP)/include +# POSIX+ +export XDK_PATH=$(DK_PATH)/psx +export XDK_PATH_LIB=$(XDK_PATH)/lib +export XDK_PATH_INC=$(XDK_PATH)/include + +# Wine Integration +export WINE_PATH=$(PATH_TO_TOP)/../wine +export WINE_PATH_LIB=$(WINE_PATH)/lib +export WINE_PATH_INC=$(WINE_PATH)/include + +# Posix+ Integration +export POSIX_PATH=$(PATH_TO_TOP)/../posix +export POSIX_PATH_LIB=$(POSIX_PATH)/lib +export POSIX_PATH_INC=$(POSIX_PATH)/include + +# OS/2 Integration +export OS2_PATH=$(PATH_TO_TOP)/../os2 +export OS2_PATH_LIB=$(OS2_PATH)/lib +export OS2_PATH_INC=$(OS2_PATH)/include + +# Other systems integration +export REGTESTS_PATH=$(PATH_TO_TOP)/regtests +export REGTESTS_PATH_INC=$(PATH_TO_TOP)/regtests/shared