]> git.eshelyaron.com Git - emacs.git/commitdiff
(CFLAGS): No need for -D_ANONYMOUS_UNION
authorAndrew Innes <andrewi@gnu.org>
Sun, 3 Sep 2000 17:37:09 +0000 (17:37 +0000)
committerAndrew Innes <andrewi@gnu.org>
Sun, 3 Sep 2000 17:37:09 +0000 (17:37 +0000)
-D_ANONYMOUS_STRUCT on compile line.
(EMACS_EXTRA_C_FLAGS): No need for -DORDINARY_LINK.
(ARCH_CFLAGS): Change optimization flags to -O2.
(FOREACH, FORVAR, FORDO, ENDFOR): New definitions.
(ARGQUOTE, DQUOTE): New defines.

nt/gmake.defs

index 2517b31cf0bec18467e35701926f0a1b2ce6eb56..d8c658e6813151d1b51b7ad8fedf51529bc34e1b 100644 (file)
-#
-#  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
-#  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-#  Boston, MA 02111-1307, USA.
-
-# 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)
-else
-USING_SH = 1
-THE_SHELL = $(SHELL)
-endif
-
-MAKEDIR = $(CURDIR)
-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     = $(MAKEDIR)/..
-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
- 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
-COMDLG32       = -lcomdlg32
-GDI32          = -lgdi32
-MPR            = -lmpr
-SHELL32                = -lshell32
-USER32         = -luser32
-WSOCK32                = -lwsock32
-
-ifdef NOOPT
-DEBUG_CFLAGS   = -DEMACSDEBUG
-else
-DEBUG_CFLAGS   = 
-endif
-CFLAGS          = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \
-                 -D_CRTAPI1=_cdecl -D_ANONYMOUS_UNION -D_ANONYMOUS_STRUCT \
-                 $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)
-EMACS_EXTRA_C_FLAGS = -DUSE_CRT_DLL=1 -DORDINARY_LINK=1
-
-# 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 -g $(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)
-$(BLD):         $(OBJDIR)
-               -mkdir "$(BLD)"
-
-CP             = cp -f
-CP_DIR         = cp -rf
-DEL            = rm
-DEL_TREE       = rm -r
-ifdef USING_SH
-IFNOTSAMEDIR   = if [ ! -s ../same-dir.tst ] ; then
-ENDIF          = ; fi
-else
-IFNOTSAMEDIR   = if not exist ../same-dir.tst
-ENDIF          =
-endif
-
-# The location of the icon file
-EMACS_ICON_PATH = ../nt/emacs.ico
-
-ifdef NODEBUG
-DEBUG_FLAG = 
-else
-DEBUG_FLAG = -g
-endif
-
-ifdef NOCYGWIN
-NOCYGWIN = -mno-cygwin
-endif
-
-ifeq "$(ARCH)" "i386"
-ifdef NOOPT
-ARCH_CFLAGS     = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN)
-else
-ARCH_CFLAGS     = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN) -O -Os \
-                 -mcpu=i686 -fno-exceptions -fbuiltins \
-                 # -mpreferred-stack-boundary=2 \
-                 # -finline-functions \
-                 # -fomit-frame-pointer
-endif
-ARCH_LDFLAGS   = $(SYS_LDFLAGS)
-else
-ERROR Unknown architecture type "$(ARCH)".
-endif
-
-LINK_FLAGS     = $(ARCH_LDFLAGS) $(NOCYGWIN) $(USER_LDFLAGS)
-
-.DEFAULT:
-
-$(BLD)/%.o: %.c
-               $(CC) $(CFLAGS) $(CC_OUT)$@ $<
+#\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, Inc., 59 Temple Place - Suite 330,\r
+#  Boston, MA 02111-1307, USA.\r
+\r
+# Ensure 'all' is the default target\r
+all:\r
+\r
+# NOTES\r
+# \r
+# I tried to force gmake to use the native shell for simplicity, by\r
+# setting SHELL as below, but this didn't work reliably because of\r
+# various case sensitivity niggles.  Specifically, COMSPEC (which is in\r
+# fact usually spelled ComSpec on NT, to make life difficult) typically\r
+# references "cmd.exe" (on NT) when the file is actually called\r
+# "CMD.EXE" on disk for hysterical raisons.  As a result, GNU make\r
+# thinks it doesn't exist (unless compiled with a switch to ignore\r
+# case), and so doesn't change which shell it will invoke to execute\r
+# commands.\r
+# \r
+# It would be possible, though very tedious using just gmake facilities,\r
+# to convert the COMSPEC value to uppercase to solve this problem, but\r
+# it isn't worth it.  That is partly because, even when using the native\r
+# shell, gmake tends to not be happy with backslashes in command\r
+# strings.  The obvious solution is to use forward slashes as much as\r
+# possible, which can be made to work most of the time (putting\r
+# filenames in quotes often helps), but there are still some internal\r
+# cmd.exe commands like `del' and `copy' that won't work with them.\r
+# Although it is possible to convert slashes to backslashes when\r
+# necessary, gmake requires explicitly calling its subst function, which\r
+# nmake does not understand).  For this reason, it is simplest to\r
+# mandate that rm and cp be available, so we can use Unix-format file\r
+# names everywhere.  (Fortunately both MS and GNU make, and the\r
+# respective compilers, are happy with Unix-format names.)\r
+# \r
+# Since we cannot easily force the choice of a particular shell, we must\r
+# make the effort to cope with whichever shell is being used.\r
+# Fortunately, the only command we need to use that is shell specific is\r
+# the testing of a file's existence for the purpose of working out when\r
+# we are copying files to their original location.  That particular\r
+# requirement is abstracted easily enough.\r
+# \r
+# The only other problem area was the change of directory when running\r
+# temacs to dump emacs.exe (where gmake doesn't support cd foo in any\r
+# useful way), but that has been resolved by modifying the Windows\r
+# unexec function slightly to not require the directory change while\r
+# still allowing objects and binaries to be in subdirectories.\r
+\r
+# This doesn't work.\r
+#SHELL:=$(COMSPEC)\r
+\r
+# Determine whether make is using sh or cmd/command as shell; cmd.exe\r
+# will output "ECHO is on" when echo is given by itself, while sh will\r
+# not produce any output.\r
+sh_output := $(shell echo)\r
+ifeq "$(findstring ECHO, $(sh_output))" "ECHO"\r
+THE_SHELL = $(COMSPEC)$(ComSpec)\r
+else\r
+USING_SH = 1\r
+THE_SHELL = $(SHELL)\r
+endif\r
+\r
+MAKEDIR = $(CURDIR)\r
+ALL_DEPS       = $^\r
+EMPTY =\r
+SPACE = $(EMPTY) $(EMPTY)\r
+\r
+SUBSYSTEM_WINDOWS=-Wl,-subsystem,windows\r
+SUBSYSTEM_CONSOLE=-Wl,-subsystem,console\r
+\r
+# INSTALL_DIR is the directory into which emacs will be installed.\r
+#\r
+ifndef INSTALL_DIR\r
+INSTALL_DIR     = $(MAKEDIR)/..\r
+endif\r
+\r
+# Determine the architecture we're running on.\r
+# Define ARCH for our purposes; \r
+# Define CPU for use by ntwin32.mak;\r
+# Define CONFIG_H to the appropriate config.h for the system;\r
+#\r
+ifdef PROCESSOR_ARCHITECTURE\r
+# We're on Windows NT\r
+CPU            = $(PROCESSOR_ARCHITECTURE)\r
+CONFIG_H       = config.nt\r
+OS_TYPE                = windowsnt\r
+ ifeq "$(PROCESSOR_ARCHITECTURE)" "x86"\r
+ARCH           = i386\r
+CPU            = i386\r
+ else\r
+  ifeq "$(PROCESSOR_ARCHITECTURE)" "MIPS"\r
+ARCH           = mips\r
+  else\r
+   ifeq "$(PROCESSOR_ARCHITECTURE)" "ALPHA"\r
+ARCH           = alpha\r
+   else\r
+    ifeq "$(PROCESSOR_ARCHITECTURE)" "PPC"\r
+ARCH           = ppc\r
+    else\r
+error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)"\r
+    endif\r
+   endif\r
+  endif\r
+ endif\r
+else\r
+# We're on Windows 95\r
+ARCH           = i386\r
+CPU            = i386\r
+CONFIG_H       = config.nt\r
+OS_TYPE                = windows95\r
+endif\r
+\r
+AR             = ar -rsc\r
+AR_OUT         =\r
+CC             = gcc\r
+CC_OUT         = -o$(SPACE)\r
+LINK           = gcc\r
+LINK_OUT       = -o$(SPACE)\r
+RC             = windres -O coff\r
+RC_OUT         = -o$(SPACE)\r
+RC_INCLUDE     = --include-dir$(SPACE)\r
+\r
+libc           = \r
+baselibs       = \r
+O              = o\r
+A              = a\r
+\r
+BASE_LIBS      = $(libc) $(baselibs)\r
+\r
+ADVAPI32       = -ladvapi32\r
+COMDLG32       = -lcomdlg32\r
+GDI32          = -lgdi32\r
+MPR            = -lmpr\r
+SHELL32                = -lshell32\r
+USER32         = -luser32\r
+WSOCK32                = -lwsock32\r
+\r
+ifdef NOOPT\r
+DEBUG_CFLAGS   = -DEMACSDEBUG\r
+else\r
+DEBUG_CFLAGS   = \r
+endif\r
+CFLAGS          = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \\r
+                 -D_CRTAPI1=_cdecl \\r
+                 $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)\r
+EMACS_EXTRA_C_FLAGS = -DUSE_CRT_DLL=1\r
+\r
+# see comments in allocate_heap in w32heap.c before changing any of the\r
+# -stack, -heap, or -image-base settings.\r
+TEMACS_EXTRA_LINK = -Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -g $(SUBSYSTEM_CONSOLE) -Wl,-entry,__start -Wl,-Map,$(BLD)/temacs.map\r
+\r
+ifdef NOOPT\r
+OBJDIR          = oo\r
+else\r
+OBJDIR          = oo-spd\r
+endif\r
+$(OBJDIR):;    -mkdir "$(OBJDIR)"\r
+BLD             = $(OBJDIR)/$(ARCH)\r
+$(BLD):         $(OBJDIR)\r
+               -mkdir "$(BLD)"\r
+\r
+CP             = cp -f\r
+CP_DIR         = cp -rf\r
+DEL            = rm\r
+DEL_TREE       = rm -r\r
+ifdef USING_SH\r
+IFNOTSAMEDIR   = if [ ! -s ../same-dir.tst ] ; then\r
+FOREACH                = for f in\r
+FORVAR         = $${f}\r
+FORDO          = ; do\r
+ENDFOR         = ; done\r
+ENDIF          = ; fi\r
+ARGQUOTE       = '\r
+DQUOTE         = ""\r
+else\r
+IFNOTSAMEDIR   = if not exist ../same-dir.tst\r
+FOREACH                = for %%f in (\r
+FORVAR         = %%f\r
+FORDO          = ) do\r
+ENDFOR         =\r
+ENDIF          =\r
+ARGQUOTE       = "\r
+DQUOTE         = \"\r
+endif\r
+\r
+# The location of the icon file\r
+EMACS_ICON_PATH = ../nt/emacs.ico\r
+\r
+ifdef NODEBUG\r
+DEBUG_FLAG = \r
+else\r
+DEBUG_FLAG = -g\r
+endif\r
+\r
+ifdef NOCYGWIN\r
+NOCYGWIN = -mno-cygwin\r
+endif\r
+\r
+ifeq "$(ARCH)" "i386"\r
+ifdef NOOPT\r
+ARCH_CFLAGS     = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN)\r
+else\r
+ARCH_CFLAGS     = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN) -mcpu=i686 -O2 \\r
+                 # -fbuiltin \\r
+                 # -finline-functions \\r
+                 # -fomit-frame-pointer\r
+endif\r
+ARCH_LDFLAGS   = $(SYS_LDFLAGS)\r
+else\r
+ERROR Unknown architecture type "$(ARCH)".\r
+endif\r
+\r
+LINK_FLAGS     = $(ARCH_LDFLAGS) $(NOCYGWIN) $(USER_LDFLAGS)\r
+\r
+.DEFAULT:\r
+\r
+$(BLD)/%.o: %.c\r
+               $(CC) $(CFLAGS) $(CC_OUT)$@ $<\r