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