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