]> code.delx.au - gnu-emacs/blobdiff - nt/makefile.def
Fix spacing.
[gnu-emacs] / nt / makefile.def
index f83143bf6a909ade3206122d986e1f3d62a3c000..6fb05dfd20a63c4224259ab0c81d5e8f1b1062c4 100644 (file)
-#\r
-#  Makefile definition file for building GNU Emacs on Windows NT\r
-#  \r
-#  GNU Emacs is free software; you can redistribute it and/or modify\r
-#  it under the terms of the GNU General Public License as published by\r
-#  the Free Software Foundation; either version 2, or (at your option)\r
-#  any later version.\r
-#  \r
-#  GNU Emacs is distributed in the hope that it will be useful,\r
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-#  GNU General Public License for more details.\r
-#  \r
-#  You should have received a copy of the GNU General Public License\r
-#  along with GNU Emacs; see the file COPYING.  If not, write to\r
-#  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */\r
-#\r
-#     Geoff Voelker (voelker@cs.washington.edu)         9-6-94\r
-\r
-#\r
-# BEGIN CONFIGURATION\r
-#\r
-\r
-#\r
-# Set ARCH to the architecture on which you're building (i386, mips, alpha).\r
-# Set SYS_INC_DIR and SYS_LIB_DIR to your system include and library dirs.\r
-#\r
-\r
-ARCH            = mips\r
-SYS_INC_DIR     = C:\mstools\h\r
-SYS_LIB_DIR     = C:\mstools\lib\r
-\r
-# Set this to be the directory into which you want emacs installed\r
-INSTALL_DIR    = C:\emacs\r
-\r
-# May need to be cl386.exe when using the SDK on an x86.\r
-CC              = cl.exe\r
-\r
-# May need to be lib32.exe on NT 3.1, lib.exe on NT 3.5\r
-AR              = lib32.exe\r
-\r
-MAKE            = nmake.exe\r
-LINK            = link32.exe\r
-\r
-# If you are using VC 2.0, define COMPAT_LIB (only tested on i386)\r
-#COMPAT_LIB    = $(SYS_LIB_DIR)\oldnames.lib\r
-\r
-CVTRES         = cvtres.exe\r
-\r
-#\r
-# END CONFIGURATION\r
-#\r
-# You shouldn't have to change any of the below to get emacs to build and\r
-# install on your system.  If you did have to make changes, let me know.\r
-#\r
-\r
-INC             = -I. -I$(SYS_INC_DIR) -I$(SYS_INC_DIR)\crt\r
-CFLAGS          = -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH)\r
-\r
-OBJDIR          = obj\r
-$(OBJDIR):;     -mkdir $(OBJDIR)\r
-BLD             = $(OBJDIR)\$(ARCH)\r
-$(BLD):         $(OBJDIR)\r
-               -mkdir $(BLD)\r
-\r
-CP             = copy\r
-CP_DIR         = xcopy /fried\r
-\r
-# This is completely braindamaged, but it's the only routine known to be there\r
-DEL_TREE       = echo y | rmdir /s\r
-\r
-!IF "$(ARCH)" == "i386"\r
-ARCH_CFLAGS     = -nologo -D_X86_=1 -c -Zel -W2 -H63 -G3d -Zi -Od\r
-ARCH_LDFLAGS   = -align:0x1000\r
-\r
-!ELSE\r
-!IF "$(ARCH)" == "mips"\r
-CC              = mcl.exe\r
-ARCH_CFLAGS     = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0 -D__stdcall= -D__cdecl=\r
-ARCH_LDFLAGS   = -align:0x1000\r
-\r
-!ELSE\r
-!IF "$(ARCH)" == "alpha"\r
-CC              = claxp.exe\r
-ARCH_CFLAGS     = -D_ALPHA_=1 -c -Ze -Zi -W2 -D__stdcall= -D__cdecl=\r
-ARCH_LDFLAGS   = -align:0x2000\r
-\r
-!ELSE\r
-!ERROR Unknown architecture type.\r
-!ENDIF\r
-!ENDIF\r
-!ENDIF\r
+#
+#  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