Makefile.in 7.54 KB
Newer Older
1
### @configure_input@
2

3
# Copyright (C) 2013-2014 Free Software Foundation, Inc.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

# 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/>.

# Avoid trouble on systems where the `SHELL' variable might be
# inherited from the environment.
SHELL = /bin/sh

# ==================== Things `configure' will edit ====================

CC=@CC@
CFLAGS=@CFLAGS@
28
CPPFLAGS=@CPPFLAGS@
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
version=@version@
## Used in $archlibdir.
configuration=@configuration@
EXEEXT=@EXEEXT@
C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@
C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
PROFILING_CFLAGS = @PROFILING_CFLAGS@
WARN_CFLAGS = @WARN_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@

# Program name transformation.
TRANSFORM = @program_transform_name@

# ==================== Where To Install Things ====================

# The default location for installation.  Everything is placed in
# subdirectories of this directory.  The default values for many of
# the variables below are expressed in terms of this one, so you may
# not need to change them.  This is set with the --prefix option to
# `../configure'.
prefix=@prefix@

# Like `prefix', but used for architecture-specific files.  This is
# set with the --exec-prefix option to `../configure'.
exec_prefix=@exec_prefix@

# Where to install Emacs and other binaries that people will want to
# run directly (like etags).  This is set with the --bindir option
# to `../configure'.
bindir=@bindir@

60 61 62 63 64 65 66 67 68
# The root of the directory tree for read-only architecture-independent
# data files.  ${datadir}, ${infodir} and ${mandir} are based on this.
datarootdir=@datarootdir@

# Where to install architecture-independent data files.  ${lispdir}
# and ${etcdir} are subdirectories of this.  This is set with the
# --datadir option to `../configure'.
datadir=@datadir@

69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
# Where to install and expect executable files to be run by Emacs
# rather than directly by users, and other architecture-dependent
# data.  ${archlibdir} is usually below this.  This is set with the
# --libexecdir option to `../configure'.
libexecdir=@libexecdir@

# Directory for local state files for all programs.
localstatedir=@localstatedir@

# Where to find the source code.  This is set by the configure
# script's `--srcdir' option.  However, the value of ${srcdir} in
# this makefile is not identical to what was specified with --srcdir,
# since the variable here has `/lib-src' added at the end.

# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
srcdir=@srcdir@
VPATH=@srcdir@

# The top-level source directory, also set by configure.
top_srcdir=@top_srcdir@
89 90
# MinGW CPPFLAGS may use this.
abs_top_srcdir=@abs_top_srcdir@
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107

# ==================== Emacs-specific directories ====================

# These variables hold the values Emacs will actually use.  They are
# based on the values of the standard Make variables above.

# Where to put executables to be run by Emacs rather than the user.
# This path usually includes the Emacs version and configuration name,
# so that multiple configurations for multiple versions of Emacs may
# be installed at once.  This can be set with the --archlibdir option
# to `../configure'.
archlibdir=@archlibdir@

# ==================== Utility Programs for the Build =================

# ../configure figures out the correct values for these.
INSTALL = @INSTALL@
108
INSTALL_DATA = @INSTALL_DATA@
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
# By default, we uphold the dignity of our programs.
INSTALL_STRIP =
MKDIR_P = @MKDIR_P@

# ========================== Lists of Files ===========================

# Things that a user might actually run, which should be installed in bindir.
INSTALLABLES = runemacs${EXEEXT} addpm${EXEEXT}

# Things that Emacs runs internally, which should not be installed in bindir.
UTILITIES = cmdproxy${EXEEXT} ddeclient${EXEEXT}

# Things that Emacs runs during the build process.
124
DONT_INSTALL =
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156

# All files that are created by the linker, i.e., whose names end in ${EXEEXT}.
EXE_FILES = ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL}

# =========================== Configuration ===========================

# MS-Windows resource files and resource compiler
EMACSRES = @EMACSRES@
EMACS_MANIFEST = @EMACS_MANIFEST@
WINDRES = @WINDRES@

## Extra libraries to use when linking addpm.
LIBS_ADDPM = -lole32 -luuid

## Compilation and linking flags
BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \
	      $(WARN_CFLAGS) $(WERROR_CFLAGS) \
	      -I. -I${srcdir}

ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
LINK_CFLAGS = ${BASE_CFLAGS} ${LDFLAGS} ${CFLAGS}
CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS}

all: ${EXE_FILES}

.PHONY: all

## Install the internal utilities.  Until they are installed, we can
## just run them directly from nt/.
$(DESTDIR)${archlibdir}: all
	@echo
	@echo "Installing utilities run internally by Emacs."
157
	umask 022; ${MKDIR_P} "$(DESTDIR)${archlibdir}"
158 159
	exp_archlibdir=`cd "$(DESTDIR)${archlibdir}" && /bin/pwd`; \
	if [ "$$exp_archlibdir" != "`/bin/pwd`" ]; then \
160
	  for file in ${UTILITIES}; do \
161
	    $(INSTALL_PROGRAM) $(INSTALL_STRIP) $$file "$(DESTDIR)${archlibdir}/$$file" ; \
162 163 164 165
	  done ; \
        fi

.PHONY: install uninstall mostlyclean clean distclean maintainer-clean
166
.PHONY: bootstrap-clean extraclean check tags
167 168 169 170

install: $(DESTDIR)${archlibdir}
	@echo
	@echo "Installing utilities for users to run."
171
	umask 022; ${MKDIR_P} "$(DESTDIR)${bindir}"
172
	for file in ${INSTALLABLES} ; do \
173
	  $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} "$(DESTDIR)${bindir}"/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \
174
	done
175
	${MKDIR_P} "$(DESTDIR)${datadir}/emacs/$(version)"
176
	$(INSTALL_DATA) ${srcdir}/README.W32 "$(DESTDIR)${datadir}/emacs/$(version)"
177 178

uninstall:
179
	rm -f "$(DESTDIR)${datadir}/emacs/$(version)/README.W32"
180
	for file in ${INSTALLABLES}; do \
181
	  rm -f "$(DESTDIR)${bindir}"/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \
182
	done
183 184
	if [ -d "$(DESTDIR)${archlibdir}" ]; then \
	  (cd "$(DESTDIR)${archlibdir}" && rm -f ${UTILITIES}) \
185 186 187
	fi

mostlyclean:
188
	-rm -f core *.o *.res
189 190 191 192 193 194 195 196

clean: mostlyclean
	-rm -f ${EXE_FILES}

distclean: clean
	-rm -f TAGS
	-rm -f Makefile

197
bootstrap-clean maintainer-clean: distclean
198 199 200 201 202 203 204 205 206 207 208 209 210 211
	true

extraclean: maintainer-clean
	-rm -f *~ \#*

## Test the contents of the directory.
check:
	@echo "We don't have any tests for the nt/ directory yet."

tags: TAGS
TAGS: ${EXE_FILES:${EXEEXT}=.c}
	../lib-src/etags *.[ch]

## Build the programs
212
addpm${EXEEXT}: ${srcdir}/addpm.c ../src/epaths.h
213 214 215 216 217
	$(CC) ${ALL_CFLAGS} ${srcdir}/addpm.c $(LIBS_ADDPM) -o addpm${EXEEXT}

ddeclient${EXEEXT}: ${srcdir}/ddeclient.c
	$(CC) ${ALL_CFLAGS} ${srcdir}/ddeclient.c -o ddeclient${EXEEXT}

218
cmdproxy${EXEEXT}: ${srcdir}/cmdproxy.c
219 220
	$(CC) ${ALL_CFLAGS} ${srcdir}/cmdproxy.c -o cmdproxy${EXEEXT}

221
runemacs${EXEEXT}: ${srcdir}/runemacs.c $(EMACSRES)
222
	$(CC) ${ALL_CFLAGS} ${srcdir}/runemacs.c $(EMACSRES) -mwindows \
223 224
         -o runemacs${EXEEXT}

225
emacs.res: ${srcdir}/emacs.rc ${srcdir}/icons/emacs.ico ${srcdir}/$(EMACS_MANIFEST)
226
	${WINDRES} -I ${srcdir} -O coff -o emacs.res ${srcdir}/emacs.rc