1### @configure_input@
2
3# Copyright (C) 2013-2021 Free Software Foundation, Inc.
4
5# This file is part of GNU Emacs.
6
7# GNU Emacs is free software: you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation, either version 3 of the License, or
10# (at your option) any later version.
11
12# GNU Emacs is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16
17# You should have received a copy of the GNU General Public License
18# along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
19
20# Avoid trouble on systems where the `SHELL' variable might be
21# inherited from the environment.
22SHELL = /bin/sh
23
24# ==================== Things `configure' will edit ====================
25
26CC=@CC@
27CFLAGS=@CFLAGS@
28CPPFLAGS = @CPPFLAGS@
29LDFLAGS = @LDFLAGS@
30
31version=@version@
32## Used in $archlibdir.
33configuration=@configuration@
34EXEEXT=@EXEEXT@
35C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@
36C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
37PROFILING_CFLAGS = @PROFILING_CFLAGS@
38WARN_CFLAGS = @WARN_CFLAGS@
39WERROR_CFLAGS = @WERROR_CFLAGS@
40
41# Program name transformation.
42TRANSFORM = @program_transform_name@
43
44# 'make' verbosity.
45AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
46
47AM_V_CC = $(am__v_CC_@AM_V@)
48am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
49am__v_CC_0 = @echo "  CC      " $@;
50am__v_CC_1 =
51
52AM_V_CCLD = $(am__v_CCLD_@AM_V@)
53am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
54am__v_CCLD_0 = @echo "  CCLD    " $@;
55am__v_CCLD_1 =
56
57AM_V_RC = $(am__v_RC_@AM_V@)
58am__v_RC_ = $(am__v_RC_@AM_DEFAULT_V@)
59am__v_RC_0 = @echo "  RC      " $@;
60am__v_RC_1 =
61
62# ==================== Where To Install Things ====================
63
64# The default location for installation.  Everything is placed in
65# subdirectories of this directory.  The default values for many of
66# the variables below are expressed in terms of this one, so you may
67# not need to change them.  This is set with the --prefix option to
68# `../configure'.
69prefix=@prefix@
70
71# Like `prefix', but used for architecture-specific files.  This is
72# set with the --exec-prefix option to `../configure'.
73exec_prefix=@exec_prefix@
74
75# Where to install Emacs and other binaries that people will want to
76# run directly (like etags).  This is set with the --bindir option
77# to `../configure'.
78bindir=@bindir@
79
80# The root of the directory tree for read-only architecture-independent
81# data files.  ${datadir}, ${infodir} and ${mandir} are based on this.
82datarootdir=@datarootdir@
83
84# Where to install architecture-independent data files.  ${lispdir}
85# and ${etcdir} are subdirectories of this.  This is set with the
86# --datadir option to `../configure'.
87datadir=@datadir@
88
89# Where to install and expect executable files to be run by Emacs
90# rather than directly by users, and other architecture-dependent
91# data.  ${archlibdir} is usually below this.  This is set with the
92# --libexecdir option to `../configure'.
93libexecdir=@libexecdir@
94
95# Directory for local state files for all programs.
96localstatedir=@localstatedir@
97
98# Where to find the source code.  This is set by the configure
99# script's `--srcdir' option.  However, the value of ${srcdir} in
100# this makefile is not identical to what was specified with --srcdir,
101# since the variable here has `/lib-src' added at the end.
102
103# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
104srcdir=@srcdir@
105VPATH=@srcdir@
106
107# The top-level source directory, also set by configure.
108top_srcdir=@top_srcdir@
109# MinGW CPPFLAGS may use this.
110abs_top_srcdir=@abs_top_srcdir@
111
112# ==================== Emacs-specific directories ====================
113
114# These variables hold the values Emacs will actually use.  They are
115# based on the values of the standard Make variables above.
116
117# Where to put executables to be run by Emacs rather than the user.
118# This path usually includes the Emacs version and configuration name,
119# so that multiple configurations for multiple versions of Emacs may
120# be installed at once.  This can be set with the --archlibdir option
121# to `../configure'.
122archlibdir=@archlibdir@
123
124# ==================== Utility Programs for the Build =================
125
126# ../configure figures out the correct values for these.
127INSTALL = @INSTALL@
128INSTALL_DATA = @INSTALL_DATA@
129INSTALL_PROGRAM = @INSTALL_PROGRAM@
130INSTALL_SCRIPT = @INSTALL_SCRIPT@
131# By default, we uphold the dignity of our programs.
132INSTALL_STRIP =
133MKDIR_P = @MKDIR_P@
134
135# ========================== Lists of Files ===========================
136
137# Things that a user might actually run, which should be installed in bindir.
138INSTALLABLES = runemacs${EXEEXT} addpm${EXEEXT}
139
140# Things that Emacs runs internally, which should not be installed in bindir.
141UTILITIES = cmdproxy${EXEEXT} ddeclient${EXEEXT}
142
143# Things that Emacs runs during the build process.
144DONT_INSTALL =
145
146# All files that are created by the linker, i.e., whose names end in ${EXEEXT}.
147EXE_FILES = ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL}
148
149# =========================== Configuration ===========================
150
151# MS-Windows resource files and resource compiler
152EMACSRES = @EMACSRES@
153EMACS_MANIFEST = @EMACS_MANIFEST@
154WINDRES = @WINDRES@
155
156## Extra libraries to use when linking addpm.
157LIBS_ADDPM = -lole32 -luuid
158
159## Compilation and linking flags
160BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \
161	      $(WARN_CFLAGS) $(WERROR_CFLAGS) \
162	      -I. -I${srcdir}
163
164ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
165## Unused.
166LINK_CFLAGS = ${BASE_CFLAGS} ${LDFLAGS} ${CFLAGS}
167## Unused.
168CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS}
169
170all: ${EXE_FILES}
171
172.PHONY: all
173
174## Install the internal utilities.  Until they are installed, we can
175## just run them directly from nt/.
176$(DESTDIR)${archlibdir}: all
177	@echo
178	@echo "Installing utilities run internally by Emacs."
179	umask 022; ${MKDIR_P} "$(DESTDIR)${archlibdir}"
180	exp_archlibdir=`cd "$(DESTDIR)${archlibdir}" && /bin/pwd`; \
181	if [ "$$exp_archlibdir" != "`/bin/pwd`" ]; then \
182	  for file in ${UTILITIES}; do \
183	    $(INSTALL_PROGRAM) $(INSTALL_STRIP) $$file "$(DESTDIR)${archlibdir}/$$file" ; \
184	  done ; \
185        fi
186
187.PHONY: install uninstall mostlyclean clean distclean maintainer-clean
188.PHONY: bootstrap-clean extraclean check tags
189
190install: $(DESTDIR)${archlibdir}
191	@echo
192	@echo "Installing utilities for users to run."
193	umask 022; ${MKDIR_P} "$(DESTDIR)${bindir}"
194	for file in ${INSTALLABLES} ; do \
195	  $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} "$(DESTDIR)${bindir}"/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \
196	done
197	${MKDIR_P} "$(DESTDIR)${datadir}/emacs/$(version)"
198	$(INSTALL_DATA) ${srcdir}/README.W32 "$(DESTDIR)${datadir}/emacs/$(version)"
199
200uninstall:
201	rm -f "$(DESTDIR)${datadir}/emacs/$(version)/README.W32"
202	for file in ${INSTALLABLES}; do \
203	  rm -f "$(DESTDIR)${bindir}"/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \
204	done
205	if [ -d "$(DESTDIR)${archlibdir}" ]; then \
206	  (cd "$(DESTDIR)${archlibdir}" && rm -f ${UTILITIES}) \
207	fi
208
209mostlyclean:
210	-rm -f core *.o *.res
211
212clean: mostlyclean
213	-rm -f ${EXE_FILES}
214
215distclean: clean
216	-rm -f TAGS Makefile *.rc
217
218bootstrap-clean maintainer-clean: distclean
219	true
220
221extraclean: maintainer-clean
222	-rm -f *~ \#*
223
224## Test the contents of the directory.
225check:
226	@echo "We don't have any tests for the nt/ directory yet."
227
228ETAGS = ../lib-src/etags${EXEEXT}
229
230${ETAGS}: FORCE
231	${MAKE} -C ../lib-src $(notdir $@)
232
233tagsfiles= $(wildcard ${srcdir}/*.[ch])
234
235FORCE:
236.PHONY: tags FORCE
237tags: TAGS
238TAGS: ${ETAGS} ${tagsfiles}
239	${ETAGS} ${tagsfiles}
240
241## Build the programs
242addpm${EXEEXT}: ${srcdir}/addpm.c ../src/epaths.h
243	$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< $(LIBS_ADDPM) -o $@
244
245ddeclient${EXEEXT}: ${srcdir}/ddeclient.c
246	$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< -o $@
247
248cmdproxy${EXEEXT}: ${srcdir}/cmdproxy.c
249	$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< -o $@
250
251runemacs${EXEEXT}: ${srcdir}/runemacs.c $(EMACSRES)
252	$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $^ -mwindows -o $@
253
254## Also used in ../src/Makefile.
255emacs.res ../src/emacs.res: emacs.rc ${srcdir}/icons/emacs.ico \
256  ${srcdir}/icons/hand.cur ${srcdir}/$(EMACS_MANIFEST)
257	$(AM_V_RC)${WINDRES} -I ${srcdir} -O coff -o $@ $<
258