2004-10-23 Casper S. Hornstrup <chorns@users.sourceforge.net>
[reactos.git] / reactos / rules.mak
1 # Default to verbose mode
2 ifeq ($(VERBOSE),no)
3 Q = @
4 else
5 Q =
6 endif
7
8 export MAKE := @$(MAKE)
9
10 ifeq ($(VERBOSE),no)
11 # Do not print "Entering directory ..."
12 export MAKEFLAGS += --no-print-directory
13 # Be silent
14 export MAKEFLAGS += --silent
15 endif
16
17 # Windows is default host environment
18 ifeq ($(HOST),)
19 export HOST = mingw32-windows
20 endif
21
22 # Default to building map files which includes source and asm code
23 ifeq ($(FULL_MAP),)
24 export FULL_MAP = yes
25 endif
26
27 # Default to minimal dependencies, making components not
28 # depend on all import libraries
29 ifeq ($(MINIMALDEPENDENCIES),)
30 export MINIMALDEPENDENCIES = yes
31 endif
32
33 # Default to no PCH support
34 ifeq ($(ROS_USE_PCH),)
35 export ROS_USE_PCH = no
36 endif
37
38 # uncomment if you use bochs and it displays only 30 rows
39 # BOCHS_30ROWS = yes
40
41 #
42 # Choose various options
43 #
44 ifeq ($(HOST),mingw32-linux)
45 export NASM_FORMAT = win32
46 export PREFIX = mingw32-
47 export EXE_POSTFIX :=
48 export EXE_PREFIX := ./
49 export DLLTOOL = $(PREFIX)dlltool --as=$(PREFIX)as
50 #
51 # Do not change NASM_CMD to NASM because older versions of
52 # nasm doesn't like an environment variable NASM
53 #
54 export NASM_CMD = nasm
55 export DOSCLI =
56 export FLOPPY_DIR = /mnt/floppy
57 export SEP := /
58 export PIPE :=
59 endif
60
61 ifeq ($(HOST),mingw32-windows)
62 export NASM_FORMAT = win32
63 export PREFIX =
64 export EXE_PREFIX :=
65 export EXE_POSTFIX := .exe
66 export DLLTOOL = $(Q)$(PREFIX)dlltool --as=$(PREFIX)as
67 #
68 # Do not change NASM_CMD to NASM because older versions of
69 # nasm doesn't like an environment variable NASM
70 #
71 export NASM_CMD = $(Q)nasmw
72 export DOSCLI = yes
73 export FLOPPY_DIR = A:
74 export SEP := \$(EMPTY_VAR)
75 export PIPE := -pipe
76 endif
77
78 # TOPDIR is used by make bootcd but not defined anywhere. Usurp pointed out
79 # that it has the same meaning as PATH_TO_TOP.
80 export TOPDIR = $(PATH_TO_TOP)
81
82 # Directory to build a bootable CD image in
83 export BOOTCD_DIR=$(TOPDIR)/../bootcd/disk
84 export LIVECD_DIR=$(TOPDIR)/../livecd/disk
85
86 ifeq ($(LIVECD_INSTALL),yes)
87 export INSTALL_DIR=$(LIVECD_DIR)/reactos
88 else
89 # Use environment var ROS_INSTALL to override default install dir
90 ifeq ($(ROS_INSTALL),)
91 ifeq ($(HOST),mingw32-windows)
92 export INSTALL_DIR = C:/reactos
93 else
94 export INSTALL_DIR = $(PATH_TO_TOP)/reactos
95 endif
96 else
97 export INSTALL_DIR = $(ROS_INSTALL)
98 endif
99 endif
100
101
102 export CC = $(Q)$(PREFIX)gcc
103 export CXX = $(Q)$(PREFIX)g++
104 export HOST_CC = $(Q)gcc
105 export HOST_CXX = $(Q)g++
106 export HOST_AR = $(Q)ar
107 export HOST_NM = $(Q)nm
108 export LD = $(Q)$(PREFIX)ld
109 export NM = $(Q)$(PREFIX)nm
110 export OBJCOPY = $(Q)$(PREFIX)objcopy
111 export STRIP = $(Q)$(PREFIX)strip
112 export AS = $(Q)$(PREFIX)gcc -c -x assembler-with-cpp
113 export CPP = $(Q)$(PREFIX)cpp
114 export AR = $(Q)$(PREFIX)ar
115 export RC = $(Q)$(PREFIX)windres
116 export WRC = $(Q)$(WINE_TOP)/tools/wrc/wrc
117 export OBJCOPY = $(Q)$(PREFIX)objcopy
118 export OBJDUMP =$(Q)$(PREFIX)objdump
119 export TOOLS_PATH = $(PATH_TO_TOP)/tools
120 export W32API_PATH = $(PATH_TO_TOP)/w32api
121 export CP = $(Q)$(TOOLS_PATH)/rcopy
122 export RM = $(Q)$(TOOLS_PATH)/rdel
123 export RLINE = $(Q)$(TOOLS_PATH)/rline
124 export RMDIR = $(Q)$(TOOLS_PATH)/rrmdir
125 export RMKDIR = $(Q)$(TOOLS_PATH)/rmkdir
126 export RSYM = $(Q)$(TOOLS_PATH)/rsym
127 export RTOUCH = $(Q)$(TOOLS_PATH)/rtouch
128 export REGTESTS = $(Q)$(TOOLS_PATH)/regtests
129 export MC = $(Q)$(TOOLS_PATH)/wmc/wmc
130 export CABMAN = $(Q)$(TOOLS_PATH)/cabman/cabman
131 export WINEBUILD = $(Q)$(TOOLS_PATH)/winebuild/winebuild
132 export WINE2ROS = $(Q)$(TOOLS_PATH)/wine2ros/wine2ros
133 export MKHIVE = $(Q)$(TOOLS_PATH)/mkhive/mkhive
134 export CDMAKE = $(Q)$(TOOLS_PATH)/cdmake/cdmake
135 export BIN2RES = $(Q)$(TOOLS_PATH)/bin2res/bin2res
136 export XSLTPROC = $(Q)xsltproc
137 export MS2PS = $(Q)$(TOOLS_PATH)/ms2ps/ms2ps
138
139 export STD_CFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -pipe -march=$(OARCH) -D_M_IX86
140 export STD_CPPFLAGS = $(STD_CFLAGS)
141 # Check for 3GB
142 ifeq ($(3GB), 1)
143 export STD_ASFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -D__ASM__ -D_M_IX86 -D__3GB__
144 else
145 export STD_ASFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -D__ASM__ -D_M_IX86
146 endif
147 export STD_RCFLAGS = --include-dir $(PATH_TO_TOP)/include --include-dir $(W32API_PATH)/include
148 export STD_NFLAGS = -f win32
149
150 # Developer Kits
151 export DK_PATH=$(PATH_TO_TOP)/dk
152 # Native and kernel mode
153 export DDK_PATH=$(DK_PATH)/nkm
154 export DDK_PATH_LIB=$(DDK_PATH)/lib
155 export DDK_PATH_INC=$(PATH_TO_TOP)/include
156 # Win32
157 export SDK_PATH=$(DK_PATH)/w32
158 export SDK_PATH_LIB=$(SDK_PATH)/lib
159 export SDK_PATH_INC=$(PATH_TO_TOP)/include
160 # POSIX+
161 export XDK_PATH=$(DK_PATH)/psx
162 export XDK_PATH_LIB=$(XDK_PATH)/lib
163 export XDK_PATH_INC=$(XDK_PATH)/include
164
165 # Wine Integration
166 export WINE_PATH=$(PATH_TO_TOP)/../wine
167 export WINE_PATH_LIB=$(WINE_PATH)/lib
168 export WINE_PATH_INC=$(WINE_PATH)/include
169
170 # Posix+ Integration
171 export POSIX_PATH=$(PATH_TO_TOP)/../posix
172 export POSIX_PATH_LIB=$(POSIX_PATH)/lib
173 export POSIX_PATH_INC=$(POSIX_PATH)/include
174
175 # OS/2 Integration
176 export OS2_PATH=$(PATH_TO_TOP)/../os2
177 export OS2_PATH_LIB=$(OS2_PATH)/lib
178 export OS2_PATH_INC=$(OS2_PATH)/include
179
180 # Other systems integration
181 export REGTESTS_PATH=$(PATH_TO_TOP)/regtests
182 export REGTESTS_PATH_INC=$(PATH_TO_TOP)/regtests/shared