Mercurial > emacs
view nt/gmake.defs @ 111256:d3a53e95c036
Correct some viewcvs links in docs and comments.
* doc/misc/cc-mode.texi: Remove reference to defunct viewcvs URL.
Instead, refer to the generic Savannah page, since it seems likely
that Savannah will never provide the equivalent service for GNU bazaar.
The other option would be to use the Git mirror URL, since it seems to
be being updated now, and of course browsing Git repos works just fine.
That would be a pretty poor advert for the GNU system though.
* etc/MH-E-NEWS: Update URL (viewcvs -> viewvc).
* lisp/net/tramp-fish.el: Update URL in comment (viewcvs -> viewvc).
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 28 Oct 2010 20:19:33 -0700 |
parents | 1d1d5d9bd884 |
children | a2184d0e089b 376148b31b5e |
line wrap: on
line source
# -*- Makefile -*- definition file for building GNU Emacs on Windows NT. # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, # 2008, 2009, 2010 Free Software Foundation, Inc. # This file is part of GNU Emacs. # 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>. # Ensure 'all' is the default target all: # NOTES # # I tried to force gmake to use the native shell for simplicity, by # setting SHELL as below, but this didn't work reliably because of # various case sensitivity niggles. Specifically, COMSPEC (which is in # fact usually spelled ComSpec on NT, to make life difficult) typically # references "cmd.exe" (on NT) when the file is actually called # "CMD.EXE" on disk for hysterical raisons. As a result, GNU make # thinks it doesn't exist (unless compiled with a switch to ignore # case), and so doesn't change which shell it will invoke to execute # commands. # # It would be possible, though very tedious using just gmake facilities, # to convert the COMSPEC value to uppercase to solve this problem, but # it isn't worth it. That is partly because, even when using the native # shell, gmake tends to not be happy with backslashes in command # strings. The obvious solution is to use forward slashes as much as # possible, which can be made to work most of the time (putting # filenames in quotes often helps), but there are still some internal # cmd.exe commands like `del' and `copy' that won't work with them. # Although it is possible to convert slashes to backslashes when # necessary, gmake requires explicitly calling its subst function, which # nmake does not understand). For this reason, it is simplest to # mandate that rm and cp be available, so we can use Unix-format file # names everywhere. (Fortunately both MS and GNU make, and the # respective compilers, are happy with Unix-format names.) # # Since we cannot easily force the choice of a particular shell, we must # make the effort to cope with whichever shell is being used. # Fortunately, the only command we need to use that is shell specific is # the testing of a file's existence for the purpose of working out when # we are copying files to their original location. That particular # requirement is abstracted easily enough. # # The only other problem area was the change of directory when running # temacs to dump emacs.exe (where gmake doesn't support cd foo in any # useful way), but that has been resolved by modifying the Windows # unexec function slightly to not require the directory change while # still allowing objects and binaries to be in subdirectories. # This doesn't work. #SHELL:=$(COMSPEC) # Determine whether make is using sh or cmd/command as shell; cmd.exe # will output "ECHO is on" when echo is given by itself, while sh will # not produce any output. sh_output := $(shell echo) ifeq "$(findstring ECHO, $(sh_output))" "ECHO" THE_SHELL = $(COMSPEC)$(ComSpec) SHELLTYPE=CMD else USING_SH = 1 THE_SHELL = $(SHELL) SHELLTYPE=SH endif MAKETYPE=gmake # The following "ifeq" does not appear to DTRT, and therefore breaks # the build on mingw32. Also the -m option does not exist in many # (reasonably recent even) versions of Cygwin. These issues need to be # remedied before putting this cygpath kludge back in. # Convert CURDIR to native file name, if in Cygwin format #ifeq "$(shell cygpath $(CURDIR))" "$(CURDIR)" #CURDIR := $(shell cygpath -m $(CURDIR)) #endif THISDIR = . # Cygwin has changed quoting rules somewhat since b20, in a way that # affects makefiles using sh as the command processor, so we need to # detect which rules to use. ifdef USING_SH sh_output := $(shell echo [Please ignore a syntax error on the next line - it is intentional] 1>&2) sh_output := $(shell echo foo") ifeq "$(sh_output)" "" NEW_CYGWIN = 1 endif # By default, newer versions of Cygwin mess with NTFS ACLs in an # attempt to emulate traditional posix file permissions. This can # cause bad effects, such as .exe files that are missing the # FILE_EXECUTE/FILE_GENERIC_EXECUTE permissions when they are created # with Cygwin commands that don't expect to be creating executable # files. Then when we later use a non-Cygwin program to create the # real .exe, the previous Cygwin defined ACL sticks. CYGWIN=nontsec export CYGWIN endif ALL_DEPS = $^ EMPTY = SPACE = $(EMPTY) $(EMPTY) SUBSYSTEM_WINDOWS=-Wl,-subsystem,windows SUBSYSTEM_CONSOLE=-Wl,-subsystem,console # INSTALL_DIR is the directory into which emacs will be installed. # ifndef INSTALL_DIR INSTALL_DIR = $(CURDIR)/.. endif export EMACSLOADPATH # 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 ifeq "$(PROCESSOR_ARCHITECTURE)" "x86" ARCH = i386 CPU = i386 else ifeq "$(PROCESSOR_ARCHITECTURE)" "MIPS" ARCH = mips else ifeq "$(PROCESSOR_ARCHITECTURE)" "ALPHA" ARCH = alpha else ifeq "$(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 = ar -rsc AR_OUT = CC = gcc CC_OUT = -o$(SPACE) LINK = gcc LINK_OUT = -o$(SPACE) RC = windres -O coff RC_OUT = -o$(SPACE) RC_INCLUDE = --include-dir$(SPACE) libc = baselibs = O = o A = a BASE_LIBS = $(libc) $(baselibs) ADVAPI32 = -ladvapi32 COMCTL32 = -lcomctl32 COMDLG32 = -lcomdlg32 GDI32 = -lgdi32 MPR = -lmpr SHELL32 = -lshell32 USER32 = -luser32 WSOCK32 = -lwsock32 WINMM = -lwinmm WINSPOOL = -lwinspool OLE32 = -lole32 UNISCRIBE = -lusp10 UUID = -luuid ifdef NOOPT DEBUG_CFLAGS = -DEMACSDEBUG else DEBUG_CFLAGS = endif CFLAGS = -I. $(ARCH_CFLAGS) $(DEBUG_CFLAGS) $(PROFILE_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) EMACS_EXTRA_C_FLAGS = -DUSE_CRT_DLL=1 ifdef PROFILE PROFILE_CFLAGS = -pg PROFILE_LDFLAGS = -pg else PROFILE_CFLAGS = PROFILE_LDFLAGS = endif # see comments in allocate_heap in w32heap.c before changing any of the # -stack, -heap, or -image-base settings. TEMACS_EXTRA_LINK = -Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 $(SUBSYSTEM_CONSOLE) -Wl,-entry,__start -Wl,-Map,$(BLD)/temacs.map ifdef NOOPT OBJDIR = oo else OBJDIR = oo-spd endif $(OBJDIR):; -mkdir "$(OBJDIR)" BLD = $(OBJDIR)/$(ARCH) stamp_BLD: $(OBJDIR) -mkdir "$(BLD)" echo $(BLD) > $@ COMPILER_TEMP_FILES = CP = cp -f CP_DIR = cp -rf DEL = rm DEL_TREE = rm -r ifdef USING_SH IFNOTSAMEDIR = if [ ! -s ../same-dir.tst ] ; then FOREACH = for f in FORVAR = $${f} FORDO = ; do ENDFOR = ; done ENDIF = ; fi ARGQUOTE = ' ifdef NEW_CYGWIN DQUOTE = " else DQUOTE = "" endif else IFNOTSAMEDIR = if not exist ../same-dir.tst FOREACH = for %%f in ( FORVAR = %%f FORDO = ) do ENDFOR = ENDIF = ARGQUOTE = " DQUOTE = \" endif ifdef NODEBUG DEBUG_FLAG = DEBUG_LINK = else DEBUG_FLAG = $(DEBUG_INFO) DEBUG_LINK = $(DEBUG_INFO) endif ifdef NOCYGWIN NOCYGWIN = -mno-cygwin endif ifeq "$(ARCH)" "i386" ifdef NOOPT ARCH_CFLAGS = -c $(DEBUG_FLAG) $(NOCYGWIN) else ARCH_CFLAGS = -c $(DEBUG_FLAG) $(NOCYGWIN) $(MCPU_FLAG) -O2 \ # -fbuiltin \ # -finline-functions \ # -fomit-frame-pointer endif ARCH_LDFLAGS = $(SYS_LDFLAGS) else ERROR Unknown architecture type "$(ARCH)". endif LINK_FLAGS = $(ARCH_LDFLAGS) $(DEBUG_LINK) $(PROFILE_LDFLAGS) $(NOCYGWIN) $(USER_LDFLAGS) export XMFLAGS .DEFAULT: $(BLD)/%.o: %.c $(CC) $(CFLAGS) $(CC_OUT)$@ $< # arch-tag: 35eb9662-8534-4bcf-b891-0730a09d657f