X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/0f6465a643d70ff5a581cecb27dd92970776a243..9e363b8991ea4c52e18b59d0679689cd6a1c0d1b:/nt/nmake.defs diff --git a/nt/nmake.defs b/nt/nmake.defs index 1f6db21eaa..94fa9f431e 100644 --- a/nt/nmake.defs +++ b/nt/nmake.defs @@ -1,226 +1,236 @@ -# -# Makefile definition file for building GNU Emacs on the Microsoft W32 API. -# Copyright (c) 2000-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. - -# Ensure 'all' is the default target -all: - -THE_SHELL = $(COMSPEC) -SHELLTYPE=CMD - -MAKETYPE=nmake - -CURDIR = $(MAKEDIR:\=/) -THISDIR = $(MAKEDIR) - -ALL_DEPS = $** - -SUBSYSTEM_WINDOWS=-subsystem:windows -SUBSYSTEM_CONSOLE=-subsystem:console - -# INSTALL_DIR is the directory into which emacs will be installed. -# -!ifndef INSTALL_DIR -INSTALL_DIR = $(CURDIR)/.. -!endif - -# Allow detection of builds with MSVC 5 or later, so we can -# speed up compiles (see rule at end). -# -_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 - -AR = lib -AR_OUT = -out: -CC = cl -CC_OUT = -Fo -LINK = link -LINK_OUT = -out: -RC = rc -RC_OUT = -Fo -RC_INCLUDE = -i - -libc = libc.lib -baselibs = -O = obj -A = lib - -BASE_LIBS = $(libc) $(baselibs) oldnames.lib - -ADVAPI32 = advapi32.lib -COMDLG32 = comdlg32.lib -GDI32 = gdi32.lib -MPR = mpr.lib -SHELL32 = shell32.lib -USER32 = user32.lib -WSOCK32 = wsock32.lib - -!ifdef NOOPT -DEBUG_CFLAGS = -DEMACSDEBUG -!else -DEBUG_CFLAGS = -!endif -CFLAGS = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \ - -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) -EMACS_EXTRA_C_FLAGS = - -SYS_LDFLAGS = -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net - -# see comments in allocate_heap in w32heap.c before changing any of the -# -stack, -heap, or -base settings. -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) - -!ifdef NOOPT -OBJDIR = obj -!else -OBJDIR = obj-spd -!endif -$(OBJDIR):; -mkdir $(OBJDIR) -BLD = $(OBJDIR)/$(ARCH) -$(BLD): $(OBJDIR) - -mkdir "$(BLD)" - -COMPILER_TEMP_FILES = *.pdb - -CP = cp -f -CP_DIR = cp -rf -IFNOTSAMEDIR = if not exist ..\same-dir.tst -ENDIF = -FOREACH = for %%f in ( -FORVAR = %%f -FORDO = ) do -ENDFOR = -ARGQUOTE = " -DQUOTE = \" -DEL = rm -DEL_TREE = rm -r - -!ifdef NODEBUG -DEBUG_FLAG = -DEBUG_LINK = -!else -DEBUG_FLAG = -Zi -DEBUG_LINK = -debug:full -debugtype:both -!endif - -!if "$(ARCH)" == "i386" -!ifdef NOOPT -ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG) -!else -ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG) -!endif -ARCH_LDFLAGS = $(SYS_LDFLAGS) - -!else -!if "$(ARCH)" == "mips" -ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0 -ARCH_LDFLAGS = $(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 = $(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 = $(SYS_LDFLAGS) - -!else -!ERROR Unknown architecture type "$(ARCH)". -!endif -!endif -!endif -!endif - -LINK_FLAGS = $(ARCH_LDFLAGS) $(DEBUG_LINK) $(USER_LDFLAGS) - -# From MSVC 5.0 onwards, it seem base relocation information is not included, -# at least in release builds. We need to ensure the reloc info is included -# in order to use the MSVC profiler. -!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") -EXTRA_LINK = -!ELSE -EXTRA_LINK = -profile -!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 +# -*- Makefile -*- definition file for building GNU Emacs on Windows NT. +# Copyright (C) 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 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., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# Ensure 'all' is the default target +all: + +THE_SHELL = $(COMSPEC) +SHELLTYPE=CMD + +MAKETYPE=nmake + +CURDIR = $(MAKEDIR:\=/) +THISDIR = $(MAKEDIR) + +ALL_DEPS = $** + +SUBSYSTEM_WINDOWS=-subsystem:windows +SUBSYSTEM_CONSOLE=-subsystem:console + +# INSTALL_DIR is the directory into which emacs will be installed. +# +!ifndef INSTALL_DIR +INSTALL_DIR = $(CURDIR)/.. +!endif + +# Ensure EMACSLOADPATH is defined in the environment. +# +!if [set EMACSLOADPATH=foo] +!endif + +# Allow detection of builds with MSVC 5 or later, so we can +# speed up compiles (see rule at end). +# +_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 + +AR = lib +AR_OUT = -out: +CC = cl +CC_OUT = -Fo +LINK = link +LINK_OUT = -out: +RC = rc +RC_OUT = -Fo +RC_INCLUDE = -i + +libc = libc.lib +baselibs = +O = obj +A = lib + +BASE_LIBS = $(libc) $(baselibs) oldnames.lib + +ADVAPI32 = advapi32.lib +COMDLG32 = comdlg32.lib +GDI32 = gdi32.lib +MPR = mpr.lib +SHELL32 = shell32.lib +USER32 = user32.lib +WSOCK32 = wsock32.lib +WINMM = winmm.lib +WINSPOOL = winspool.lib + +!ifdef NOOPT +DEBUG_CFLAGS = -DEMACSDEBUG +!else +DEBUG_CFLAGS = +!endif +CFLAGS = -I. -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400 $(ARCH_CFLAGS) -D$(ARCH) \ + -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) +EMACS_EXTRA_C_FLAGS = + +SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj + +# see comments in allocate_heap in w32heap.c before changing any of the +# -stack, -heap, or -base settings. +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) + +!ifdef NOOPT +OBJDIR = obj +!else +OBJDIR = obj-spd +!endif +$(OBJDIR):; -mkdir $(OBJDIR) +BLD = $(OBJDIR)/$(ARCH) +$(BLD): $(OBJDIR) + -mkdir "$(BLD)" + +COMPILER_TEMP_FILES = *.pdb + +CP = cp -f +CP_DIR = cp -rf +IFNOTSAMEDIR = if not exist ..\same-dir.tst +ENDIF = +FOREACH = for %%f in ( +FORVAR = %%f +FORDO = ) do +ENDFOR = +ARGQUOTE = " +# " +DQUOTE = \" +DEL = rm +DEL_TREE = rm -r + +!ifdef NODEBUG +DEBUG_FLAG = +DEBUG_LINK = +!else +DEBUG_FLAG = -Zi +DEBUG_LINK = -debug:full -debugtype:both +!endif + +!if "$(ARCH)" == "i386" +!ifdef NOOPT +ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG) +!else +ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG) +!endif +ARCH_LDFLAGS = $(SYS_LDFLAGS) + +!else +!if "$(ARCH)" == "mips" +ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0 +ARCH_LDFLAGS = $(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 = $(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 = $(SYS_LDFLAGS) + +!else +!ERROR Unknown architecture type "$(ARCH)". +!endif +!endif +!endif +!endif + +LINK_FLAGS = $(ARCH_LDFLAGS) $(DEBUG_LINK) $(USER_LDFLAGS) + +# From MSVC 5.0 onwards, it seem base relocation information is not included, +# at least in release builds. We need to ensure the reloc info is included +# in order to use the MSVC profiler. +!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") +EXTRA_LINK = +!ELSE +EXTRA_LINK = -profile +!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 + +# arch-tag: fefa49b0-c23c-46c7-9094-cab2a405058e