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