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