makefile.def 4.81 KB
Newer Older
Geoff Voelker's avatar
Geoff Voelker committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#
#  Makefile definition file for building GNU Emacs on Windows NT
#  
#  GNU Emacs is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2, or (at your option)
#  any later version.
#  
#  GNU Emacs is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License
#  along with GNU Emacs; see the file COPYING.  If not, write to
Erik Naggum's avatar
Erik Naggum committed
16 17
#  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
#  Boston, MA 02111-1307, USA.
Geoff Voelker's avatar
Geoff Voelker committed
18 19 20 21 22 23 24
#
#     Geoff Voelker (voelker@cs.washington.edu)         9-6-94

#
# BEGIN CONFIGURATION
#

Geoff Voelker's avatar
Geoff Voelker committed
25 26 27 28
# Define the following to build the GUI version
#
NTGUI=1

Geoff Voelker's avatar
Geoff Voelker committed
29
# Set INSTALL_DIR to be the directory into which you want emacs installed.
Geoff Voelker's avatar
Geoff Voelker committed
30
#
Geoff Voelker's avatar
Geoff Voelker committed
31 32 33
!ifndef INSTALL_DIR
INSTALL_DIR     = C:\emacs
!endif
Geoff Voelker's avatar
Geoff Voelker committed
34

Richard M. Stallman's avatar
Richard M. Stallman committed
35 36 37 38
# Define MSVCNT11 to be nonzero if you are using the MSVCNT 1.1 environment.
# MSVCNT11	= 1
MSVCNT11        = 0

Geoff Voelker's avatar
Geoff Voelker committed
39 40 41
#
# END CONFIGURATION
#
Geoff Voelker's avatar
Geoff Voelker committed
42 43 44 45 46 47 48 49 50 51 52 53 54 55

# Check that the INCLUDE and LIB environment variables are set.
#
!ifndef INCLUDE
!error The INCLUDE environment variable needs to be set.
!endif
!ifndef LIB
!error The LIB environment variable needs to be set.
!endif

# Determine the architecture we're running on.
# Define ARCH for our purposes; 
# Define CPU for use by ntwin32.mak;
# Define CONFIG_H to the appropriate config.h for the system;
Geoff Voelker's avatar
Geoff Voelker committed
56
#
Geoff Voelker's avatar
Geoff Voelker committed
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
!ifdef PROCESSOR_ARCHITECTURE
# We're on Windows NT
CPU		= $(PROCESSOR_ARCHITECTURE)
CONFIG_H	= config.nt
OS_TYPE		= winnt
! if "$(PROCESSOR_ARCHITECTURE)" == "x86"
ARCH		= i386
CPU		= i386
! else
!  if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
ARCH		= mips
!  else
!   if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
ARCH		= alpha
!   else
!    if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
ARCH		= ppc
!    else
!error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)"
!    endif
!   endif
!  endif
! endif
!else
# We're on Windows 95
ARCH		= i386
CPU		= i386
CONFIG_H	= config.w95
OS_TYPE		= win95
!endif

# Include ntwin32.mak.  So far, this file seems to be supported by every
# Microsoft compiler on NT and Win95 and properly defines the executable
# names and libraries necessary to build Emacs.  I do not have access 
# to any other vendor compilers, so I do not know if they supply this 
# file, too.  For now I'll assume that they do.
#
!include <ntwin32.mak>
Geoff Voelker's avatar
Geoff Voelker committed
95

Geoff Voelker's avatar
Geoff Voelker committed
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
# Using cvtres is necessary on NT 3.10 and doesn't hurt on later platforms.
CVTRES		= cvtres.exe
AR		= $(implib)
# The assignment $(CC) = $(cc) fails even though variables are case sensitive.
LINK_TMP	= $(link)
LINK		= $(LINK_TMP)
CC_TMP		= $(cc)
CC		= $(CC_TMP)

# advapi32.lib is left off of $(baselibs) on NT 3.10
!if "$(baselibs)" == "kernel32.lib "
ADVAPI32	= advapi32.lib
!else
ADVAPI32	=
!endif

# Older ntwin32.mak files do not define libc; do it for them.
!ifndef libc
libc		= libc.lib
!endif

# The base libraries for compiling Emacs on NT.  With MSVC, this should
# include oldnames.lib.
Richard M. Stallman's avatar
Richard M. Stallman committed
119 120 121
!if $(MSVCNT11)
BASE_LIBS	= $(libc) $(baselibs) oldnames.lib
!else
Geoff Voelker's avatar
Geoff Voelker committed
122
BASE_LIBS	= $(libc) $(baselibs)
Richard M. Stallman's avatar
Richard M. Stallman committed
123
!endif
Geoff Voelker's avatar
Geoff Voelker committed
124 125 126 127 128

# We want any debugging info in the executable.
!if "$(LINK)" == "link32"
SYS_LDFLAGS	= 
!else
Geoff Voelker's avatar
Geoff Voelker committed
129
SYS_LDFLAGS	= -pdb:none -release -incremental:no -version:3.10
Geoff Voelker's avatar
Geoff Voelker committed
130 131 132
!endif

INC             = -I.
Richard M. Stallman's avatar
Richard M. Stallman committed
133 134 135 136 137 138
CFLAGS_COMMON	= -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH)
!if $(MSVCNT11)
CFLAGS          = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl
!else
CFLAGS          = $(CFLAGS_COMMON) 
!endif
Geoff Voelker's avatar
Geoff Voelker committed
139 140 141
!ifdef NTGUI
CFLAGS          = $(CFLAGS) -DHAVE_NTGUI=1
!endif
Geoff Voelker's avatar
Geoff Voelker committed
142 143

OBJDIR          = obj
Geoff Voelker's avatar
Geoff Voelker committed
144
$(OBJDIR):;	-mkdir $(OBJDIR)
Geoff Voelker's avatar
Geoff Voelker committed
145 146 147 148 149
BLD             = $(OBJDIR)\$(ARCH)
$(BLD):         $(OBJDIR)
		-mkdir $(BLD)

CP		= copy
150
CP_DIR		= xcopy /f/r/i/e/d
Geoff Voelker's avatar
Geoff Voelker committed
151

Geoff Voelker's avatar
Geoff Voelker committed
152 153 154 155 156
!if "$(OS_TYPE)" == "win95"
DEL		= deltree /y
DEL_TREE	= deltree /y
!else
DEL		= del
Geoff Voelker's avatar
Geoff Voelker committed
157 158
# This is completely braindamaged, but it's the only routine known to be there
DEL_TREE	= echo y | rmdir /s
Geoff Voelker's avatar
Geoff Voelker committed
159
!endif
Geoff Voelker's avatar
Geoff Voelker committed
160

161 162 163 164 165 166
# The location of the icon file
EMACS_ICON_PATH = ..\nt\emacs.ico

# Lets us add icons to the GNU Emacs folder
ADDPM		= ..\nt\$(BLD)\addpm.exe

Geoff Voelker's avatar
Geoff Voelker committed
167
!if "$(ARCH)" == "i386"
Geoff Voelker's avatar
Geoff Voelker committed
168
ARCH_CFLAGS     = -nologo -D_X86_=1 -c -Zel -W2 -H63 -G3d -Zi -Od
Geoff Voelker's avatar
Geoff Voelker committed
169
ARCH_LDFLAGS	= -align:0x1000 $(SYS_LDFLAGS)
Geoff Voelker's avatar
Geoff Voelker committed
170

Geoff Voelker's avatar
Geoff Voelker committed
171 172 173 174
!else
!if "$(ARCH)" == "mips"
ARCH_CFLAGS     = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0
ARCH_LDFLAGS	= -align:0x1000 $(SYS_LDFLAGS)
Geoff Voelker's avatar
Geoff Voelker committed
175

Geoff Voelker's avatar
Geoff Voelker committed
176 177
!else
!if "$(ARCH)" == "alpha"
Geoff Voelker's avatar
Geoff Voelker committed
178
ARCH_CFLAGS     = -D_ALPHA_=1 -c -Ze -Zi -W2 -D__stdcall= -D__cdecl=
Geoff Voelker's avatar
Geoff Voelker committed
179 180 181 182 183 184 185 186 187 188 189 190 191 192
ARCH_LDFLAGS	= -align:0x2000 $(SYS_LDFLAGS)

!else
!if "$(ARCH)" == "ppc"
# These flags are a guess...if they don't work, please send me mail.
ARCH_CFLAGS	= -D_PPC_=1 -c -Ze -Zi -W2 -Od
ARCH_LDFLAGS	= -align:0x1000 $(SYS_LDFLAGS)

!else
!ERROR Unknown architecture type "$(ARCH)".
!endif
!endif
!endif
!endif