Commit | Line | Data |
---|---|---|
bd6766d3 | 1 | # -*- Makefile -*- definition file for building GNU Emacs on Windows NT.\r |
eef0be9e GM |
2 | # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,\r |
3 | # 2008 Free Software Foundation, Inc.\r | |
4 | \r | |
5 | # This file is part of GNU Emacs.\r | |
6 | \r | |
7 | # GNU Emacs is free software: you can redistribute it and/or modify\r | |
8 | # it under the terms of the GNU General Public License as published by\r | |
9 | # the Free Software Foundation, either version 3 of the License, or\r | |
10 | # (at your option) any later version.\r | |
11 | \r | |
12 | # GNU Emacs is distributed in the hope that it will be useful,\r | |
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of\r | |
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r | |
15 | # GNU General Public License for more details.\r | |
16 | \r | |
17 | # You should have received a copy of the GNU General Public License\r | |
18 | # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\r | |
19 | \r | |
039f725c AI |
20 | \r |
21 | # Ensure 'all' is the default target\r | |
22 | all:\r | |
23 | \r | |
24 | THE_SHELL = $(COMSPEC)\r | |
25 | SHELLTYPE=CMD\r | |
26 | \r | |
27 | MAKETYPE=nmake\r | |
28 | \r | |
29 | CURDIR = $(MAKEDIR:\=/)\r | |
30 | THISDIR = $(MAKEDIR)\r | |
31 | \r | |
32 | ALL_DEPS = $**\r | |
33 | \r | |
34 | SUBSYSTEM_WINDOWS=-subsystem:windows\r | |
35 | SUBSYSTEM_CONSOLE=-subsystem:console\r | |
36 | \r | |
37 | # INSTALL_DIR is the directory into which emacs will be installed.\r | |
38 | #\r | |
39 | !ifndef INSTALL_DIR\r | |
40 | INSTALL_DIR = $(CURDIR)/..\r | |
41 | !endif\r | |
42 | \r | |
43 | # Ensure EMACSLOADPATH is defined in the environment.\r | |
44 | #\r | |
45 | !if [set EMACSLOADPATH=foo]\r | |
46 | !endif\r | |
47 | \r | |
48 | # Allow detection of builds with MSVC 5 or later, so we can\r | |
49 | # speed up compiles (see rule at end).\r | |
50 | #\r | |
51 | _NMAKE_VER_5=162\r | |
52 | _NMAKE_VER_4=0\r | |
53 | \r | |
54 | !IFNDEF _NMAKE_VER\r | |
55 | _NMAKE_VER=$(_NMAKE_VER_4)\r | |
56 | !ENDIF\r | |
57 | \r | |
58 | # Check that the INCLUDE and LIB environment variables are set.\r | |
59 | #\r | |
60 | !ifndef INCLUDE\r | |
61 | !error The INCLUDE environment variable needs to be set.\r | |
62 | !endif\r | |
63 | !ifndef LIB\r | |
64 | !error The LIB environment variable needs to be set.\r | |
65 | !endif\r | |
66 | \r | |
67 | # Determine the architecture we're running on.\r | |
177c0ea7 | 68 | # Define ARCH for our purposes;\r |
039f725c AI |
69 | # Define CPU for use by ntwin32.mak;\r |
70 | # Define CONFIG_H to the appropriate config.h for the system;\r | |
71 | #\r | |
72 | !ifdef PROCESSOR_ARCHITECTURE\r | |
73 | # We're on Windows NT\r | |
74 | CPU = $(PROCESSOR_ARCHITECTURE)\r | |
75 | CONFIG_H = config.nt\r | |
76 | OS_TYPE = windowsnt\r | |
77 | ! if "$(PROCESSOR_ARCHITECTURE)" == "x86"\r | |
78 | ARCH = i386\r | |
79 | CPU = i386\r | |
80 | ! else\r | |
81 | ! if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"\r | |
82 | ARCH = mips\r | |
83 | ! else\r | |
84 | ! if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"\r | |
85 | ARCH = alpha\r | |
86 | ! else\r | |
87 | ! if "$(PROCESSOR_ARCHITECTURE)" == "PPC"\r | |
88 | ARCH = ppc\r | |
89 | ! else\r | |
90 | ! error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)"\r | |
91 | ! endif\r | |
92 | ! endif\r | |
93 | ! endif\r | |
94 | ! endif\r | |
95 | !else\r | |
96 | # We're on Windows 95\r | |
97 | ARCH = i386\r | |
98 | CPU = i386\r | |
99 | CONFIG_H = config.nt\r | |
100 | OS_TYPE = windows95\r | |
101 | !endif\r | |
102 | \r | |
103 | AR = lib\r | |
104 | AR_OUT = -out:\r | |
105 | CC = cl\r | |
106 | CC_OUT = -Fo\r | |
107 | LINK = link\r | |
108 | LINK_OUT = -out:\r | |
109 | RC = rc\r | |
110 | RC_OUT = -Fo\r | |
111 | RC_INCLUDE = -i\r | |
112 | \r | |
113 | libc = libc.lib\r | |
177c0ea7 | 114 | baselibs =\r |
039f725c AI |
115 | O = obj\r |
116 | A = lib\r | |
117 | \r | |
118 | BASE_LIBS = $(libc) $(baselibs) oldnames.lib\r | |
119 | \r | |
120 | ADVAPI32 = advapi32.lib\r | |
fc2554aa | 121 | COMCTL32 = comctl32.lib\r |
039f725c AI |
122 | COMDLG32 = comdlg32.lib\r |
123 | GDI32 = gdi32.lib\r | |
124 | MPR = mpr.lib\r | |
125 | SHELL32 = shell32.lib\r | |
126 | USER32 = user32.lib\r | |
127 | WSOCK32 = wsock32.lib\r | |
a71f59c1 | 128 | WINMM = winmm.lib\r |
0e664bca | 129 | WINSPOOL = winspool.lib\r |
a71f59c1 | 130 | OLE32 = ole32.lib\r |
b7612703 | 131 | UNISCRIBE = usp10.lib\r |
039f725c | 132 | \r |
12cc4d8f JR |
133 | !ifdef USE_FONTBACKEND\r |
134 | FONT_CFLAGS = -DUSE_FONT_BACKEND=1\r | |
135 | !else\r | |
136 | FONT_CFLAGS =\r | |
137 | !endif\r | |
138 | \r | |
039f725c AI |
139 | !ifdef NOOPT\r |
140 | DEBUG_CFLAGS = -DEMACSDEBUG\r | |
141 | !else\r | |
177c0ea7 | 142 | DEBUG_CFLAGS =\r |
039f725c | 143 | !endif\r |
12cc4d8f JR |
144 | CFLAGS = -I. -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400 \\r |
145 | $(ARCH_CFLAGS) -D$(ARCH) -D_CRTAPI1=_cdecl \\r | |
146 | $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)\r | |
147 | EMACS_EXTRA_C_FLAGS = $(FONT_CFLAGS)\r | |
039f725c | 148 | \r |
238add5e | 149 | SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r |
039f725c AI |
150 | \r |
151 | # see comments in allocate_heap in w32heap.c before changing any of the\r | |
152 | # -stack, -heap, or -base settings.\r | |
53b9fd77 | 153 | TEMACS_EXTRA_LINK = -stack:0x00800000 -heap:0x00100000 -base:0x01000000 -pdb:$(BLD)\temacs.pdb -machine:$(ARCH) $(SUBSYSTEM_CONSOLE) -entry:_start -map:$(BLD)\temacs.map $(EXTRA_LINK)\r |
039f725c AI |
154 | \r |
155 | !ifdef NOOPT\r | |
156 | OBJDIR = obj\r | |
157 | !else\r | |
158 | OBJDIR = obj-spd\r | |
159 | !endif\r | |
160 | $(OBJDIR):; -mkdir $(OBJDIR)\r | |
161 | BLD = $(OBJDIR)/$(ARCH)\r | |
596cbf7e | 162 | stamp_BLD: $(OBJDIR)\r |
039f725c | 163 | -mkdir "$(BLD)"\r |
596cbf7e | 164 | echo $(BLD) > $@\r |
039f725c AI |
165 | \r |
166 | COMPILER_TEMP_FILES = *.pdb\r | |
167 | \r | |
168 | CP = cp -f\r | |
169 | CP_DIR = cp -rf\r | |
170 | IFNOTSAMEDIR = if not exist ..\same-dir.tst\r | |
171 | ENDIF =\r | |
172 | FOREACH = for %%f in (\r | |
173 | FORVAR = %%f\r | |
174 | FORDO = ) do\r | |
175 | ENDFOR =\r | |
176 | ARGQUOTE = "\r | |
33d786f9 | 177 | # "\r |
039f725c AI |
178 | DQUOTE = \"\r |
179 | DEL = rm\r | |
180 | DEL_TREE = rm -r\r | |
181 | \r | |
182 | !ifdef NODEBUG\r | |
177c0ea7 JB |
183 | DEBUG_FLAG =\r |
184 | DEBUG_LINK =\r | |
039f725c AI |
185 | !else\r |
186 | DEBUG_FLAG = -Zi\r | |
53b9fd77 | 187 | DEBUG_LINK = -debug:full\r |
039f725c AI |
188 | !endif\r |
189 | \r | |
190 | !if "$(ARCH)" == "i386"\r | |
191 | !ifdef NOOPT\r | |
192 | ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG)\r | |
193 | !else\r | |
194 | ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG)\r | |
195 | !endif\r | |
196 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
197 | \r | |
198 | !else\r | |
199 | !if "$(ARCH)" == "mips"\r | |
200 | ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0\r | |
201 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
202 | \r | |
203 | !else\r | |
204 | !if "$(ARCH)" == "alpha"\r | |
205 | !if "$(BUILD_TYPE)" == "spd"\r | |
206 | ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=\r | |
207 | !else\r | |
208 | ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=\r | |
209 | !endif\r | |
210 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
211 | \r | |
212 | !else\r | |
213 | !if "$(ARCH)" == "ppc"\r | |
214 | # These flags are a guess...if they don't work, please send me mail.\r | |
215 | ARCH_CFLAGS = -D_PPC_=1 -c -Ze -Zi -W2 -Od\r | |
216 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
217 | \r | |
218 | !else\r | |
219 | !ERROR Unknown architecture type "$(ARCH)".\r | |
220 | !endif\r | |
221 | !endif\r | |
222 | !endif\r | |
223 | !endif\r | |
224 | \r | |
225 | LINK_FLAGS = $(ARCH_LDFLAGS) $(DEBUG_LINK) $(USER_LDFLAGS)\r | |
226 | \r | |
227 | # From MSVC 5.0 onwards, it seem base relocation information is not included,\r | |
228 | # at least in release builds. We need to ensure the reloc info is included\r | |
229 | # in order to use the MSVC profiler.\r | |
230 | !IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r | |
231 | EXTRA_LINK =\r | |
232 | !ELSE\r | |
233 | EXTRA_LINK = -profile\r | |
234 | !ENDIF\r | |
235 | \r | |
236 | #\r | |
237 | # If the compiler supports compiling multiple .c files to .o files at\r | |
238 | # one time, use this feature.\r | |
239 | #\r | |
240 | !IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r | |
241 | .c{$(BLD)}.obj:\r | |
242 | $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r | |
243 | !ELSE\r | |
244 | .c{$(BLD)}.obj::\r | |
245 | $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r | |
246 | !ENDIF\r | |
a2fcf029 MB |
247 | \r |
248 | # arch-tag: fefa49b0-c23c-46c7-9094-cab2a405058e\r |