makefile

来自「windows版本的emacs」· 代码 · 共 581 行 · 第 1/2 页

TXT
581
字号
# Start of settings from configure.bat 
COMPILER=gcc
NOCYGWIN=1 
# End of settings from configure.bat
 
##  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 targetall:# 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=CMDelseUSING_SH = 1THE_SHELL = $(SHELL)SHELLTYPE=SHendifMAKETYPE=gmakeTHISDIR		= .# 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_SHsh_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 = 1endifendifALL_DEPS	= $^EMPTY =SPACE = $(EMPTY) $(EMPTY)SUBSYSTEM_WINDOWS=-Wl,-subsystem,windowsSUBSYSTEM_CONSOLE=-Wl,-subsystem,console# INSTALL_DIR is the directory into which emacs will be installed.#ifndef INSTALL_DIRINSTALL_DIR     = $(CURDIR)/..endifexport 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 NTCPU		= $(PROCESSOR_ARCHITECTURE)CONFIG_H	= config.ntOS_TYPE		= windowsnt ifeq "$(PROCESSOR_ARCHITECTURE)" "x86"ARCH		= i386CPU		= i386 else  ifeq "$(PROCESSOR_ARCHITECTURE)" "MIPS"ARCH		= mips  else   ifeq "$(PROCESSOR_ARCHITECTURE)" "ALPHA"ARCH		= alpha   else    ifeq "$(PROCESSOR_ARCHITECTURE)" "PPC"ARCH		= ppc    elseerror Unknown architecture type "$(PROCESSOR_ARCHITECTURE)"    endif   endif  endif endifelse# We're on Windows 95ARCH		= i386CPU		= i386CONFIG_H	= config.ntOS_TYPE		= windows95endifAR		= ar -rscAR_OUT		=CC		= gccCC_OUT		= -o$(SPACE)LINK		= gccLINK_OUT	= -o$(SPACE)RC		= windres -O coffRC_OUT		= -o$(SPACE)RC_INCLUDE	= --include-dir$(SPACE)libc		= baselibs	= O		= oA		= aBASE_LIBS	= $(libc) $(baselibs)ADVAPI32	= -ladvapi32COMDLG32	= -lcomdlg32GDI32		= -lgdi32MPR		= -lmprSHELL32		= -lshell32USER32		= -luser32WSOCK32		= -lwsock32ifdef NOOPTDEBUG_CFLAGS	= -DEMACSDEBUGelseDEBUG_CFLAGS	= endifCFLAGS          = -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 = -DUSE_CRT_DLL=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.mapifdef NOOPTOBJDIR          = ooelseOBJDIR          = oo-spdendif$(OBJDIR):;	-mkdir "$(OBJDIR)"BLD             = $(OBJDIR)/$(ARCH)$(BLD):         $(OBJDIR)		-mkdir "$(BLD)"COMPILER_TEMP_FILES =CP		= cp -fCP_DIR		= cp -rfDEL		= rmDEL_TREE	= rm -rifdef USING_SHIFNOTSAMEDIR	= if [ ! -s ../same-dir.tst ] ; thenFOREACH		= for f inFORVAR		= $${f}FORDO		= ; doENDFOR		= ; doneENDIF		= ; fiARGQUOTE	= 'ifdef NEW_CYGWINDQUOTE		= "elseDQUOTE		= ""endifelseIFNOTSAMEDIR	= if not exist ../same-dir.tstFOREACH		= for %%f in (FORVAR		= %%fFORDO		= ) doENDFOR		=ENDIF		=ARGQUOTE	= "DQUOTE		= \"endififdef NODEBUGDEBUG_FLAG = DEBUG_LINK =elseDEBUG_FLAG = -gDEBUG_LINK = -gendififdef NOCYGWINNOCYGWIN = -mno-cygwinendififeq "$(ARCH)" "i386"ifdef NOOPTARCH_CFLAGS     = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN)elseARCH_CFLAGS     = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN) -mcpu=i686 -O2 \		  # -fbuiltin \		  # -finline-functions \		  # -fomit-frame-pointerendifARCH_LDFLAGS	= $(SYS_LDFLAGS)elseERROR Unknown architecture type "$(ARCH)".endifLINK_FLAGS	= $(ARCH_LDFLAGS) $(DEBUG_LINK) $(NOCYGWIN) $(USER_LDFLAGS).DEFAULT:$(BLD)/%.o: %.c		$(CC) $(CFLAGS) $(CC_OUT)$@ $<#  Makefile for GNU Emacs on the Microsoft W32 API.#  Copyright (c) 2000-2001 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 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.#ALL =all: $(ALL)SQUOTE='

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?