mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-30 11:09:23 +00:00
231 lines
5.8 KiB
Modula-2
231 lines
5.8 KiB
Modula-2
#
|
|
# Makefile definition file for building GNU Emacs on Windows NT
|
|
# Copyright (c) 1994-2001 Free Software Foundation, Inc.
|
|
#
|
|
# 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
|
|
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
# Boston, MA 02111-1307, USA.
|
|
#
|
|
# Geoff Voelker (voelker@cs.washington.edu) 9-6-94
|
|
|
|
#
|
|
# BEGIN CONFIGURATION
|
|
#
|
|
|
|
# Define the following to build the GUI version
|
|
#
|
|
NTGUI=1
|
|
|
|
# Set INSTALL_DIR to be the directory into which you want emacs installed.
|
|
#
|
|
!ifndef INSTALL_DIR
|
|
INSTALL_DIR = C:\emacs
|
|
!endif
|
|
|
|
# Define MSVCNT11 to be nonzero if you are using the MSVCNT 1.1 environment.
|
|
# MSVCNT11 = 1
|
|
!ifndef MSVCNT11
|
|
MSVCNT11 = 0
|
|
!endif
|
|
|
|
#
|
|
# END CONFIGURATION
|
|
#
|
|
|
|
#
|
|
# Allow detection of builds with MSVC 5 or later
|
|
#
|
|
_NMAKE_VER_5=162
|
|
_NMAKE_VER_4=0
|
|
|
|
!IFNDEF _NMAKE_VER
|
|
_NMAKE_VER=$(_NMAKE_VER_4)
|
|
!ENDIF
|
|
|
|
# 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;
|
|
#
|
|
!ifdef PROCESSOR_ARCHITECTURE
|
|
# We're on Windows NT
|
|
CPU = $(PROCESSOR_ARCHITECTURE)
|
|
CONFIG_H = config.nt
|
|
OS_TYPE = windowsnt
|
|
! 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.nt
|
|
OS_TYPE = windows95
|
|
!endif
|
|
|
|
# Include ntwin32.mak. So far, this file seems to be supported by every
|
|
# Microsoft compiler on NT and Windows 95 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>
|
|
|
|
# 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.
|
|
!if $(MSVCNT11)
|
|
BASE_LIBS = $(libc) $(baselibs) oldnames.lib
|
|
!else
|
|
BASE_LIBS = $(libc) $(baselibs) -nodefaultlib:oldnames.lib
|
|
!endif
|
|
|
|
# We want any debugging info in the executable.
|
|
!if "$(LINK)" == "link32"
|
|
SYS_LDFLAGS = -nologo
|
|
!else
|
|
SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10
|
|
!endif
|
|
|
|
# Tag the executables to run out of the swapfile when execute off CD or network shares
|
|
SYS_LDFLAGS = $(SYS_LDFLAGS) -swaprun:cd -swaprun:net
|
|
|
|
INC = -I.
|
|
!if "$(BUILD_TYPE)" == "spd"
|
|
CFLAGS_COMMON = -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH) -Fd$(BLD)\vc.pdb
|
|
!else
|
|
CFLAGS_COMMON = -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH) -Fd$(BLD)\vc.pdb -DEMACSDEBUG
|
|
!endif
|
|
!if $(MSVCNT11)
|
|
CFLAGS = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl
|
|
!else
|
|
CFLAGS = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl
|
|
!endif
|
|
|
|
!ifdef BUILD_TYPE
|
|
OBJDIR = obj-$(BUILD_TYPE)
|
|
!else
|
|
OBJDIR = obj
|
|
!endif
|
|
$(OBJDIR):; -mkdir $(OBJDIR)
|
|
BLD = $(OBJDIR)\$(ARCH)
|
|
$(BLD): $(OBJDIR)
|
|
-mkdir $(BLD)
|
|
|
|
CP = copy
|
|
CP_DIR = xcopy /f/r/i/e/d/k
|
|
|
|
!if "$(OS_TYPE)" == "windows95"
|
|
DEL = deltree /y
|
|
DEL_TREE = deltree /y
|
|
!else
|
|
DEL = del
|
|
# NT better way of killing a deltree
|
|
DEL_TREE = rd /s/q
|
|
!endif
|
|
|
|
# Lets us add icons to the GNU Emacs folder
|
|
ADDPM = ..\nt\$(BLD)\addpm.exe
|
|
|
|
!if "$(ARCH)" == "i386"
|
|
!if "$(BUILD_TYPE)" == "spd"
|
|
ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -G6dF -Zi -Zp8
|
|
!else
|
|
ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zi -Zp8
|
|
!endif
|
|
ARCH_LDFLAGS = -align:0x1000 $(SYS_LDFLAGS)
|
|
|
|
!else
|
|
!if "$(ARCH)" == "mips"
|
|
ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0
|
|
ARCH_LDFLAGS = -align:0x1000 $(SYS_LDFLAGS)
|
|
|
|
!else
|
|
!if "$(ARCH)" == "alpha"
|
|
!if "$(BUILD_TYPE)" == "spd"
|
|
ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=
|
|
!else
|
|
ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=
|
|
!endif
|
|
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
|
|
|
|
#
|
|
# If the compiler supports compiling multiple .c files to .o files at
|
|
# one time, use this feature.
|
|
#
|
|
!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")
|
|
.c{$(BLD)}.obj:
|
|
$(CC) $(CFLAGS) -Fo$(BLD)\ $<
|
|
!ELSE
|
|
.c{$(BLD)}.obj::
|
|
$(CC) $(CFLAGS) -Fo$(BLD)\ $<
|
|
!ENDIF
|