Support building Emacs on MS-Windows using the Posix configury.
lib/Makefile.am: If building for MS-Windows, include nt/gnulib.mk instead of lib/gnulib.mk. configure.ac: Adapt to MSYS build on MS-Windows. Makefile.in (NTDIR): New variable, for the MSYS build on MS-Windows. (SUBDIR): Add $(NTDIR). (.PHONY): Add epaths-force-w32. (msys_to_w32): New variable. (epaths-force-w32, install-nt, uninstall-nt): New targets. (lib-src src): Add $(NTLIB) to prerequisites. (lib lib-src lisp leim nt): Add 'nt'. (config.status): Use $(CFG). (.PHONY): Add install-$(NTDIR) and uninstall-$(NTDIR). (install, install-arch-dep): Add install-$(NTDIR). (uninstall): Depend on uninstall-$(NTDIR). (mostlyclean, clean, distclean, bootstrap-clean): Add 'nt'. * GNUmakefile (CFG): New variable, uses mingw-cfg.site as CONFIG_SITE for the MSYS build on MS-Windows. (Makefile): Use $(CFG). .bzrignore: Ignore *.res, *.tmp, and *.map. Remove src/emacs.res. etc/NEWS: Advertise the MSYS build on MS-Windows. leim/Makefile.in (leim-list.el, check-declare): Use reveal-filename. lib-src/update-game-score.c [WINDOWSNT]: Include "ntlib.h". lib-src/ntlib.h (sleep): Update prototype. (geteuid): Add prototype. lib-src/ntlib.c (sleep): Now returns an unsigned value. (getgid): New function. lib-src/Makefile.in (CLIENTW, LIB_WSOCK32, LIBS_ECLIENT, NTLIB) (CLIENTRES, WINDRES, NTINC, NTDEPS): New variables. (INSTALLABLES): Add $(CLIENTW). (LIBS_MOVE): Use $(LIB_WSOCK32). ($(DESTDIR)${archlibdir}): Use $(EXEEXT) on update-game-score. (test-distrib${EXEEXT}): Use $(EXEEXT) on test-distrib. (etags${EXEEXT}, ebrowse${EXEEXT}, ctags${EXEEXT}) (profile${EXEEXT}, make-docfile${EXEEXT}, movemail${EXEEXT}) (emacsclient${EXEEXT}, hexl${EXEEXT}, update-game-score${EXEEXT}): Add $(NTLIB) to prerequisites. Use $(EXEEXT). (pop.o): Add pop.h to prerequisites. (emacsclientw${EXEEXT}, ntlib.o): New targets. (emacsclient.res): New target. lisp/subr.el (reveal-filename): New function. lisp/loadup.el: Compute Emacs executable versions on MS-Windows, where executables have the .exe extension. Add a hard link emacs-XX.YY.ZZ.exe on MS-Windows. lisp/Makefile.in (XARGS_LIMIT): New variable. (custom-deps, finder-data, autoloads) ($(MH_E_DIR)/mh-loaddefs.el, $(TRAMP_DIR)/tramp-loaddefs.el) ($(CAL_DIR)/cal-loaddefs.el, $(CAL_DIR)/diary-loaddefs.el) ($(CAL_DIR)/hol-loaddefs.el): Use reveal-filename. (compile-main): Limit xargs according to $(XARGS_LIMIT). nt/msysconfig.sh: New file. nt/mingw-cfg.site: New file. nt/makefile.w32-in (LOCAL_FLAGS): Add -DOLD_PATHS=1. nt/inc/unistd.h: Include pwd.h and sys/types.h. nt/inc/sys/time.h (_TIMEVAL_DEFINED, timerisset, timercmp) (timerclear): Define. (gettimeofday): Adjust signature to be Posix compatible, by using the 'restrict' keyword. nt/inc/sys/stat.h (UTIME_NOW, UTIME_OMIT): Define. (struct _stat, struct _stati64): Define. nt/inc/sys/socket.h (timeval): Define only for MSVC. (FD_SET, FD_CLR, FD_ISSET, fd_set): Redefine only if EMACS_CONFIG_H is defined. (timeval): Undefine only for MSVC. nt/inc/ms-w32.h (HAVE___BUILTIN_UNWIND_INIT, restrict) (HAVE_WINDOW_SYSTEM, HAVE_MENUS, EMACS_CONFIGURATION) (EMACS_CONFIG_OPTIONS, HAVE_LONG_LONG_INT) (HAVE_UNSIGNED_LONG_LONG_INT): Define only if not already defined. (fileno): Move definition after including stdio.h. (sigset_t): Guard typedef by _W64. nt/gnulib.mk: New file. nt/epaths.nt: New file. nt/addpm.c [!OLD_PATHS]: Include src/epaths.h, instead of having a copy of the file names there. <env_vars> [!OLD_PATHS]: Use macros from epaths.h instead of literal strings. nt/Makefile.in: New file. nt/INSTALL.MSYS: New file. nt/INSTALL: Mention INSTALL.MSYS. src/w32.c: Include epaths.h. (init_environment): Use cmdproxy.exe without leading directories. Support emacs.exe in src; point SHELL to cmdproxy in ../nt in that case. (gettimeofday): Adjust signature and return value to Posix expectations. src/unexw32.c (open_output_file): Delete the existing emacs.exe before creating it, to break the hard link to the versioned executable. src/Makefile.in (EMACS_MANIFEST, CM_OBJ, TEMACS_POST_LINK) (ADDSECTION, EMACS_HEAPSIZE, MINGW_TEMACS_POST_LINK) (FIRSTFILE_OBJ): New variables. (W32_RES): Rename to EMACSRES. All users changed. (base_obj): Use $(CM_OBJ). (ALLOBJS): Use $(FIRSTFILE_OBJ). (emacs$(EXEEXT)): Depend on $(ADDSECTION). (temacs$(EXEEXT)): Use $(TEMACS_POST_LINK), and move $(W32_RES_LINK) before $(LIBES). (emacs.res): Depend on $(EMACS_MANIFEST). Put emacs.rc in nt.
This commit is contained in:
commit
df065a0b9a
37 changed files with 2963 additions and 227 deletions
28
ChangeLog
28
ChangeLog
|
@ -1,3 +1,31 @@
|
|||
2013-05-16 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* lib/Makefile.am: If building for MS-Windows, include
|
||||
nt/gnulib.mk instead of lib/gnulib.mk.
|
||||
|
||||
* configure.ac: Adapt to MSYS build on MS-Windows.
|
||||
|
||||
* Makefile.in (NTDIR): New variable, for the MSYS build on
|
||||
MS-Windows.
|
||||
(SUBDIR): Add $(NTDIR).
|
||||
(.PHONY): Add epaths-force-w32.
|
||||
(msys_to_w32): New variable.
|
||||
(epaths-force-w32, install-nt, uninstall-nt): New targets.
|
||||
(lib-src src): Add $(NTLIB) to prerequisites.
|
||||
(lib lib-src lisp leim nt): Add 'nt'.
|
||||
(config.status): Use $(CFG).
|
||||
(.PHONY): Add install-$(NTDIR) and uninstall-$(NTDIR).
|
||||
(install, install-arch-dep): Add install-$(NTDIR).
|
||||
(uninstall): Depend on uninstall-$(NTDIR).
|
||||
(mostlyclean, clean, distclean, bootstrap-clean): Add 'nt'.
|
||||
|
||||
* GNUmakefile (CFG): New variable, uses mingw-cfg.site as
|
||||
CONFIG_SITE for the MSYS build on MS-Windows.
|
||||
(Makefile): Use $(CFG).
|
||||
|
||||
* .bzrignore: Ignore *.res, *.tmp, and *.map. Remove
|
||||
src/emacs.res.
|
||||
|
||||
2013-05-16 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Merge from gnulib, incorporating:
|
||||
|
|
|
@ -32,6 +32,11 @@
|
|||
# run "configure" by hand. But run autogen.sh first, if the source
|
||||
# was checked out directly from the repository.
|
||||
|
||||
ifneq ($(MSYSTEM),)
|
||||
CFG = CONFIG_SITE=$(CURDIR)/nt/mingw-cfg.site
|
||||
else
|
||||
CFG =
|
||||
endif
|
||||
|
||||
# If a Makefile already exists, just use it.
|
||||
|
||||
|
@ -70,7 +75,7 @@ configure:
|
|||
Makefile: configure
|
||||
@echo >&2 'There seems to be no Makefile in this directory.'
|
||||
@echo >&2 'Running ./configure ...'
|
||||
./configure
|
||||
$(CFG) ./configure
|
||||
@echo >&2 'Makefile built.'
|
||||
|
||||
endif
|
||||
|
|
71
Makefile.in
71
Makefile.in
|
@ -93,6 +93,9 @@ version=@version@
|
|||
### for, like `mips-dec-ultrix' or `sparc-sun-sunos'.
|
||||
configuration=@configuration@
|
||||
|
||||
### The nt/ subdirectory gets built only for MinGW
|
||||
NTDIR=@NTDIR@
|
||||
|
||||
# ==================== Where To Install Things ====================
|
||||
|
||||
# Location to install Emacs.app under GNUstep / Mac OS X.
|
||||
|
@ -272,23 +275,23 @@ EMACS = ${EMACS_NAME}${EXEEXT}
|
|||
EMACSFULL = `echo emacs-${version} | sed '$(TRANSFORM)'`${EXEEXT}
|
||||
|
||||
# Subdirectories to make recursively.
|
||||
SUBDIR = lib lib-src src lisp leim
|
||||
SUBDIR = $(NTDIR) lib lib-src src lisp leim
|
||||
|
||||
# The subdir makefiles created by config.status.
|
||||
SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@
|
||||
SUBDIR_MAKEFILES = `echo $(SUBDIR_MAKEFILES_IN:.in=) | sed 's|$(srcdir)/||g'`
|
||||
|
||||
# Subdirectories to install, and where they'll go.
|
||||
# lib-src's makefile knows how to install it, so we don't do that here.
|
||||
# Directories that cannot simply be copied, eg info,
|
||||
# are treated separately.
|
||||
# quail appears twice because in out-of-tree builds, it exists twice.
|
||||
# Subdirectories to install, and where they'll go. lib-src's and nt's
|
||||
# makefiles know how to install them, so we don't do that here.
|
||||
# Directories that cannot simply be copied, eg info, are treated
|
||||
# separately. quail appears twice because in out-of-tree builds, it
|
||||
# exists twice.
|
||||
COPYDIR = ${srcdir}/etc ${srcdir}/lisp ${srcdir}/leim/ja-dic ${srcdir}/leim/quail leim/quail
|
||||
COPYDESTS = $(DESTDIR)${etcdir} $(DESTDIR)${lispdir} $(DESTDIR)${leimdir}/ja-dic $(DESTDIR)${leimdir}/quail $(DESTDIR)${leimdir}/quail
|
||||
|
||||
all: ${SUBDIR}
|
||||
|
||||
.PHONY: all ${SUBDIR} blessmail epaths-force FRC
|
||||
.PHONY: all ${SUBDIR} blessmail epaths-force epaths-force-w32 FRC
|
||||
|
||||
removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g'
|
||||
|
||||
|
@ -315,7 +318,20 @@ epaths-force: FRC
|
|||
-e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";') && \
|
||||
${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h
|
||||
|
||||
lib-src src: lib
|
||||
# Convert MSYS-style /x/foo file name into x:/foo that Windows can grok.
|
||||
msys_to_w32=sed -e 's,^/\([A-Za-z]\)/,\1:/,'
|
||||
|
||||
# The w32 build needs a slightly different editing, and it uses
|
||||
# nt/epaths.nt as the template.
|
||||
epaths-force-w32: FRC
|
||||
@(w32srcdir=`echo "${srcdir}" | ${msys_to_w32}` ; \
|
||||
sed < ${srcdir}/nt/epaths.nt > epaths.h.$$$$ \
|
||||
-e '/^.*#/s/@VER@/${version}/g' \
|
||||
-e '/^.*#/s/@CFG@/${configuration}/g' \
|
||||
-e "/^.*#/s|@SRC@|$${w32srcdir}|g") && \
|
||||
${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h
|
||||
|
||||
lib-src src: $(NTDIR) lib
|
||||
|
||||
src: lib-src FRC
|
||||
|
||||
|
@ -324,7 +340,7 @@ src: lib-src FRC
|
|||
lisp leim: src
|
||||
|
||||
# These targets should be "${SUBDIR} without `src'".
|
||||
lib lib-src lisp leim: Makefile FRC
|
||||
lib lib-src lisp leim nt: Makefile FRC
|
||||
cd $@ && $(MAKE) all $(MFLAGS) \
|
||||
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
|
||||
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
|
||||
|
@ -378,9 +394,9 @@ $(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \
|
|||
|
||||
config.status: ${srcdir}/configure ${srcdir}/lisp/version.el
|
||||
if [ -x ./config.status ]; then \
|
||||
./config.status --recheck; \
|
||||
$(CFG) ./config.status --recheck; \
|
||||
else \
|
||||
$(srcdir)/configure $(CONFIGURE_FLAGS); \
|
||||
$(CFG) $(srcdir)/configure $(CONFIGURE_FLAGS); \
|
||||
fi
|
||||
|
||||
AUTOCONF_INPUTS = $(srcdir)/configure.ac $(srcdir)/aclocal.m4
|
||||
|
@ -417,13 +433,14 @@ $(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS)
|
|||
# ==================== Installation ====================
|
||||
|
||||
.PHONY: install install-arch-dep install-arch-indep install-doc install-info
|
||||
.PHONY: install-man install-etc install-strip uninstall
|
||||
.PHONY: install-man install-etc install-strip install-$(NTDIR)
|
||||
.PHONY: uninstall uninstall-$(NTDIR)
|
||||
|
||||
## If we let lib-src do its own installation, that means we
|
||||
## don't have to duplicate the list of utilities to install in
|
||||
## this Makefile as well.
|
||||
|
||||
install: all install-arch-indep install-doc install-arch-dep blessmail
|
||||
install: all install-arch-indep install-doc install-arch-dep install-$(NTDIR) blessmail
|
||||
@true
|
||||
|
||||
## Ensure that $subdir contains a subdirs.el file.
|
||||
|
@ -444,7 +461,7 @@ write_subdir=if [ -f $${subdir}/subdirs.el ]; \
|
|||
### Install the executables that were compiled specifically for this machine.
|
||||
### We do install-arch-indep first because the executable needs the
|
||||
### Lisp files and DOC file to work properly.
|
||||
install-arch-dep: src install-arch-indep install-doc
|
||||
install-arch-dep: src install-arch-indep install-doc install-$(NTDIR)
|
||||
umask 022; ${MKDIR_P} $(DESTDIR)${bindir}
|
||||
cd lib-src && \
|
||||
$(MAKE) install $(MFLAGS) prefix=${prefix} \
|
||||
|
@ -464,6 +481,16 @@ install-arch-dep: src install-arch-indep install-doc
|
|||
rm -rf ${ns_appresdir}/share; \
|
||||
fi
|
||||
|
||||
### Windows-specific install target for installing programs produced
|
||||
### in nt/, and its Posix do-nothing shadow.
|
||||
install-:
|
||||
install-nt:
|
||||
cd $(NTDIR) && \
|
||||
$(MAKE) install $(MFLAGS) prefix=${prefix} \
|
||||
exec_prefix=${exec_prefix} bindir=${bindir} \
|
||||
libexecdir=${libexecdir} archlibdir=${archlibdir} \
|
||||
INSTALL_STRIP=${INSTALL_STRIP}
|
||||
|
||||
## In the share directory, we are deleting:
|
||||
## applications (with emacs.desktop, also found in etc/)
|
||||
## emacs (basically empty except for unneeded site-lisp directories)
|
||||
|
@ -678,11 +705,12 @@ install-strip:
|
|||
### create (but not the noninstalled files such as `make all' would create).
|
||||
###
|
||||
### Don't delete the lisp and etc directories if they're in the source tree.
|
||||
uninstall:
|
||||
uninstall: uninstall-$(NTDIR)
|
||||
cd lib-src && \
|
||||
$(MAKE) $(MFLAGS) uninstall \
|
||||
prefix=${prefix} exec_prefix=${exec_prefix} \
|
||||
bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir}
|
||||
|
||||
-unset CDPATH; \
|
||||
for dir in $(DESTDIR)${lispdir} $(DESTDIR)${etcdir} ; do \
|
||||
if [ -d $${dir} ]; then \
|
||||
|
@ -727,6 +755,15 @@ uninstall:
|
|||
[ -s $${file} ] || rm -f $$file; \
|
||||
done
|
||||
|
||||
### Windows-specific uninstall target for removing programs produced
|
||||
### in nt/, and its Posix do-nothing shadow.
|
||||
uninstall-:
|
||||
uninstall-nt:
|
||||
cd $(NTDIR) && \
|
||||
$(MAKE) $(MFLAGS) uninstall \
|
||||
prefix=${prefix} exec_prefix=${exec_prefix} \
|
||||
bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir}
|
||||
|
||||
FRC:
|
||||
|
||||
# ==================== Cleaning up and miscellanea ====================
|
||||
|
@ -744,6 +781,7 @@ mostlyclean: FRC
|
|||
(cd lwlib; $(MAKE) $(MFLAGS) mostlyclean)
|
||||
(cd lib; $(MAKE) $(MFLAGS) mostlyclean)
|
||||
(cd lib-src; $(MAKE) $(MFLAGS) mostlyclean)
|
||||
(cd nt; $(MAKE) $(MFLAGS) mostlyclean)
|
||||
-(cd doc/emacs && $(MAKE) $(MFLAGS) mostlyclean)
|
||||
-(cd doc/misc && $(MAKE) $(MFLAGS) mostlyclean)
|
||||
-(cd doc/lispref && $(MAKE) $(MFLAGS) mostlyclean)
|
||||
|
@ -765,6 +803,7 @@ clean: FRC
|
|||
(cd lwlib; $(MAKE) $(MFLAGS) clean)
|
||||
(cd lib; $(MAKE) $(MFLAGS) clean)
|
||||
(cd lib-src; $(MAKE) $(MFLAGS) clean)
|
||||
(cd nt; $(MAKE) $(MFLAGS) clean)
|
||||
-(cd doc/emacs && $(MAKE) $(MFLAGS) clean)
|
||||
-(cd doc/misc && $(MAKE) $(MFLAGS) clean)
|
||||
-(cd doc/lispref && $(MAKE) $(MFLAGS) clean)
|
||||
|
@ -791,6 +830,7 @@ distclean: FRC
|
|||
(cd lwlib; $(MAKE) $(MFLAGS) distclean)
|
||||
(cd lib; $(MAKE) $(MFLAGS) distclean)
|
||||
(cd lib-src; $(MAKE) $(MFLAGS) distclean)
|
||||
(cd nt; $(MAKE) $(MFLAGS) distclean)
|
||||
(cd doc/emacs && $(MAKE) $(MFLAGS) distclean)
|
||||
(cd doc/misc && $(MAKE) $(MFLAGS) distclean)
|
||||
(cd doc/lispref && $(MAKE) $(MFLAGS) distclean)
|
||||
|
@ -809,6 +849,7 @@ bootstrap-clean: FRC
|
|||
(cd lwlib; $(MAKE) $(MFLAGS) maintainer-clean)
|
||||
(cd lib; $(MAKE) $(MFLAGS) maintainer-clean)
|
||||
(cd lib-src; $(MAKE) $(MFLAGS) maintainer-clean)
|
||||
(cd nt; $(MAKE) $(MFLAGS) maintainer-clean)
|
||||
-(cd doc/emacs && $(MAKE) $(MFLAGS) maintainer-clean)
|
||||
-(cd doc/misc && $(MAKE) $(MFLAGS) maintainer-clean)
|
||||
-(cd doc/lispref && $(MAKE) $(MFLAGS) maintainer-clean)
|
||||
|
|
526
configure.ac
526
configure.ac
|
@ -192,7 +192,7 @@ OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
|
|||
OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
|
||||
OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
|
||||
OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system])
|
||||
OPTION_DEFAULT_OFF([w32], [use native MS Windows GUI])
|
||||
OPTION_DEFAULT_OFF([w32], [use native MS Windows GUI in a Cygwin build])
|
||||
|
||||
OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
|
||||
OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
|
||||
|
@ -376,7 +376,7 @@ AC_ARG_ENABLE(gtk-deprecation-warnings,
|
|||
## Make sure CDPATH doesn't affect cd (in case PWD is relative).
|
||||
unset CDPATH
|
||||
case "${srcdir}" in
|
||||
/* ) ;;
|
||||
[[\\/]]* | ?:[[\\/]]*) ;;
|
||||
. )
|
||||
## We may be able to use the $PWD environment variable to make this
|
||||
## absolute. But sometimes PWD is inaccurate.
|
||||
|
@ -554,6 +554,11 @@ case "${canonical}" in
|
|||
i[3456]86-*-* )
|
||||
case "${canonical}" in
|
||||
*-darwin* ) opsys=darwin ;;
|
||||
*-mingw32 )
|
||||
opsys=mingw32
|
||||
# MinGW overrides and adds some system headers in nt/inc.
|
||||
GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
|
||||
;;
|
||||
*-sysv4.2uw* ) opsys=unixware ;;
|
||||
*-sysv5uw* ) opsys=unixware ;;
|
||||
*-sysv5OpenUNIX* ) opsys=unixware ;;
|
||||
|
@ -602,6 +607,11 @@ else
|
|||
test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
|
||||
fi
|
||||
|
||||
dnl This is used in lib/Makefile.am to use nt/gnulib.mk, the
|
||||
dnl alternative to lib/gnulib.mk, so as to avoid generating header files
|
||||
dnl that clash with MinGW.
|
||||
AM_CONDITIONAL([BUILDING_FOR_WINDOWSNT], [test "x$opsys" = "xmingw32"])
|
||||
|
||||
# Avoid gnulib's tests for HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW,
|
||||
# as we don't use them.
|
||||
AC_DEFUN([gl_FCNTL_O_FLAGS])
|
||||
|
@ -635,6 +645,9 @@ if test "$ac_test_CFLAGS" != set; then
|
|||
if test $emacs_cv_prog_cc_g3 != yes; then
|
||||
CFLAGS=$emacs_save_CFLAGS
|
||||
fi
|
||||
if test $opsys = mingw32; then
|
||||
CFLAGS="$CFLAGS -gdwarf-2"
|
||||
fi
|
||||
fi
|
||||
|
||||
case $CFLAGS in
|
||||
|
@ -852,6 +865,16 @@ fi
|
|||
AC_SUBST(LN_S_FILEONLY)
|
||||
|
||||
|
||||
dnl AC_PROG_LN_S sets LN_S to 'cp -pR' for MinGW, on the premise that 'ln'
|
||||
dnl doesn't support links to directories, as in "ln file dir". But that
|
||||
dnl use is non-portable, and OTOH MinGW wants to use hard links for Emacs
|
||||
dnl executables at "make install" time.
|
||||
dnl See http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00475.html
|
||||
dnl for more details.
|
||||
if test "$opsys" = "mingw32"; then
|
||||
LN_S="ln"
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(INSTALL_INFO, install-info, :,
|
||||
$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
|
||||
dnl Don't use GZIP, which is used by gzip for additional parameters.
|
||||
|
@ -957,7 +980,6 @@ AC_SUBST(CANNOT_DUMP)
|
|||
UNEXEC_OBJ=unexelf.o
|
||||
case "$opsys" in
|
||||
# MSDOS uses unexcoff.o
|
||||
# MSWindows uses unexw32.o
|
||||
aix4-2)
|
||||
UNEXEC_OBJ=unexaix.o
|
||||
;;
|
||||
|
@ -970,6 +992,9 @@ case "$opsys" in
|
|||
hpux10-20 | hpux11)
|
||||
UNEXEC_OBJ=unexhp9k800.o
|
||||
;;
|
||||
mingw32)
|
||||
UNEXEC_OBJ=unexw32.o
|
||||
;;
|
||||
sol2-10)
|
||||
# Use the Solaris dldump() function, called from unexsol.c, to dump
|
||||
# emacs, instead of the generic ELF dump code found in unexelf.c.
|
||||
|
@ -1064,6 +1089,7 @@ C_SWITCH_SYSTEM=
|
|||
## additional optimization. --nils@exp-math.uni-essen.de
|
||||
test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
|
||||
C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
|
||||
test "$opsys" = "mingw32" && C_SWITCH_SYSTEM="-mtune=pentium4"
|
||||
## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
|
||||
## It is redundant in glibc2, since we define _GNU_SOURCE.
|
||||
AC_SUBST(C_SWITCH_SYSTEM)
|
||||
|
@ -1083,8 +1109,8 @@ case "$opsys" in
|
|||
## Motif needs -lgen.
|
||||
unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
|
||||
esac
|
||||
AC_SUBST(LIBS_SYSTEM)
|
||||
|
||||
AC_SUBST(LIBS_SYSTEM)
|
||||
|
||||
### Make sure subsequent tests use flags consistent with the build flags.
|
||||
|
||||
|
@ -1122,6 +1148,10 @@ case $opsys in
|
|||
;;
|
||||
hpux10-20 | hpux11 )
|
||||
;;
|
||||
mingw32 )
|
||||
LIB_MATH=
|
||||
SYSTEM_TYPE=windows-nt
|
||||
;;
|
||||
dnl NB this may be adjusted below.
|
||||
netbsd | openbsd )
|
||||
SYSTEM_TYPE=berkeley-unix
|
||||
|
@ -1197,11 +1227,15 @@ AC_DEFUN([PKG_CHECK_MODULES], [
|
|||
fi
|
||||
])
|
||||
|
||||
|
||||
if test "${with_sound}" != "no"; then
|
||||
# Sound support for GNU/Linux and the free BSDs.
|
||||
AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h,
|
||||
have_sound_header=yes)
|
||||
# Sound support for GNU/Linux, the free BSDs, and MinGW.
|
||||
AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h mmsystem.h,
|
||||
have_sound_header=yes, [], [
|
||||
#ifdef __MINGW32__
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#endif
|
||||
])
|
||||
# Emulation library used on NetBSD.
|
||||
AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
|
||||
AC_SUBST(LIBSOUND)
|
||||
|
@ -1241,7 +1275,7 @@ if test "${with_sound}" != "no"; then
|
|||
if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
|
||||
case "$opsys" in
|
||||
dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
|
||||
gnu-linux|freebsd|netbsd)
|
||||
gnu-linux|freebsd|netbsd|mingw32)
|
||||
AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
|
||||
;;
|
||||
esac
|
||||
|
@ -1563,31 +1597,98 @@ AC_SUBST(NS_OBJC_OBJ)
|
|||
HAVE_W32=no
|
||||
W32_OBJ=
|
||||
W32_LIBS=
|
||||
W32_RES=
|
||||
EMACSRES=
|
||||
CLIENTRES=
|
||||
CLIENTW=
|
||||
W32_RES_LINK=
|
||||
EMACS_MANIFEST=
|
||||
if test "${with_w32}" != no; then
|
||||
if test "${opsys}" != "cygwin"; then
|
||||
AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin.])
|
||||
case "${opsys}" in
|
||||
cygwin)
|
||||
AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
|
||||
[AC_MSG_ERROR([`--with-w32' was specified, but windows.h
|
||||
cannot be found.])])
|
||||
;;
|
||||
mingw32)
|
||||
## Using --with-w32 with MinGW is a no-op, but we allow it.
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin and MinGW32.])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
AC_MSG_CHECKING([whether Windows API headers are recent enough])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <windows.h>
|
||||
#include <usp10.h>]],
|
||||
[[void test(PIMAGE_NT_HEADERS pHeader)
|
||||
{PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);}]])],
|
||||
[emacs_cv_w32api=yes
|
||||
HAVE_W32=yes],
|
||||
emacs_cv_w32api=no)
|
||||
AC_MSG_RESULT($emacs_cv_w32api)
|
||||
if test "${emacs_cv_w32api}" = "no"; then
|
||||
AC_MSG_ERROR([the Windows API headers are too old to support this build.])
|
||||
fi
|
||||
AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
|
||||
[AC_MSG_ERROR([`--with-w32' was specified, but windows.h
|
||||
cannot be found.])])
|
||||
fi
|
||||
|
||||
FIRSTFILE_OBJ=
|
||||
NTDIR=
|
||||
LIBS_ECLIENT=
|
||||
LIB_WSOCK32=
|
||||
NTLIB=
|
||||
CM_OBJ="cm.o"
|
||||
XARGS_LIMIT=
|
||||
if test "${HAVE_W32}" = "yes"; then
|
||||
AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
|
||||
AC_CHECK_TOOL(WINDRES, [windres],
|
||||
[AC_MSG_ERROR([No resource compiler found.])])
|
||||
W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
|
||||
W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
|
||||
W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
|
||||
W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
|
||||
W32_RES="emacs.res"
|
||||
# Tell the linker that emacs.res is an object (which we compile from
|
||||
# the rc file), not a linker script.
|
||||
W32_RES_LINK="-Wl,emacs.res"
|
||||
EMACSRES="emacs.res"
|
||||
case "$canonical" in
|
||||
x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
|
||||
*) EMACS_MANIFEST="emacs-x86.manifest" ;;
|
||||
esac
|
||||
if test "${opsys}" = "cygwin"; then
|
||||
W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
|
||||
W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
|
||||
# Tell the linker that emacs.res is an object (which we compile from
|
||||
# the rc file), not a linker script.
|
||||
W32_RES_LINK="-Wl,emacs.res"
|
||||
else
|
||||
W32_OBJ="$W32_OBJ w32.o w32console.o w32heap.o w32inevt.o w32proc.o"
|
||||
W32_OBJ="$W32_OBJ w32notify.o"
|
||||
W32_LIBS="$W32_LIBS -lwinmm -lgdi32 -lcomdlg32"
|
||||
W32_LIBS="$W32_LIBS -lmpr -lwinspool -lole32 -lcomctl32 -lusp10"
|
||||
W32_RES_LINK="\$(EMACSRES)"
|
||||
CLIENTRES="emacsclient.res"
|
||||
CLIENTW="emacsclientw\$(EXEEXT)"
|
||||
FIRSTFILE_OBJ=firstfile.o
|
||||
NTDIR=nt
|
||||
CM_OBJ=
|
||||
LIBS_ECLIENT="-lcomctl32"
|
||||
LIB_WSOCK32="-lwsock32"
|
||||
NTLIB="ntlib.$ac_objext"
|
||||
XARGS_LIMIT="-s 10000"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(W32_OBJ)
|
||||
AC_SUBST(W32_LIBS)
|
||||
AC_SUBST(W32_RES)
|
||||
AC_SUBST(EMACSRES)
|
||||
AC_SUBST(EMACS_MANIFEST)
|
||||
AC_SUBST(CLIENTRES)
|
||||
AC_SUBST(CLIENTW)
|
||||
AC_SUBST(W32_RES_LINK)
|
||||
AC_SUBST(FIRSTFILE_OBJ)
|
||||
AC_SUBST(NTDIR)
|
||||
AC_SUBST(CM_OBJ)
|
||||
AC_SUBST(LIBS_ECLIENT)
|
||||
AC_SUBST(LIB_WSOCK32)
|
||||
AC_SUBST(NTLIB)
|
||||
AC_SUBST(XARGS_LIMIT)
|
||||
|
||||
if test "${HAVE_W32}" = "yes"; then
|
||||
window_system=w32
|
||||
|
@ -1912,7 +2013,7 @@ fi
|
|||
|
||||
### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
|
||||
HAVE_RSVG=no
|
||||
if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes"; then
|
||||
if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then
|
||||
if test "${with_rsvg}" != "no"; then
|
||||
RSVG_REQUIRED=2.11.0
|
||||
RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
|
||||
|
@ -1955,43 +2056,45 @@ HAVE_GTK=no
|
|||
GTK_OBJ=
|
||||
check_gtk2=no
|
||||
gtk3_pkg_errors=
|
||||
if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
|
||||
GLIB_REQUIRED=2.28
|
||||
GTK_REQUIRED=3.0
|
||||
GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
|
||||
if test "${opsys}" != "mingw32"; then
|
||||
if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
|
||||
GLIB_REQUIRED=2.28
|
||||
GTK_REQUIRED=3.0
|
||||
GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
|
||||
|
||||
dnl Checks for libraries.
|
||||
PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
|
||||
if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
|
||||
AC_MSG_ERROR($GTK_PKG_ERRORS)
|
||||
dnl Checks for libraries.
|
||||
PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
|
||||
if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
|
||||
AC_MSG_ERROR($GTK_PKG_ERRORS)
|
||||
fi
|
||||
if test "$pkg_check_gtk" = "yes"; then
|
||||
AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
|
||||
GTK_OBJ=emacsgtkfixed.o
|
||||
term_header=gtkutil.h
|
||||
USE_GTK_TOOLKIT="GTK3"
|
||||
if test "x$ac_enable_gtk_deprecation_warnings" = x; then
|
||||
GTK_CFLAGS="$GTK_CFLAGS -DGDK_DISABLE_DEPRECATION_WARNINGS"
|
||||
fi
|
||||
else
|
||||
check_gtk2=yes
|
||||
gtk3_pkg_errors="$GTK_PKG_ERRORS "
|
||||
fi
|
||||
fi
|
||||
if test "$pkg_check_gtk" = "yes"; then
|
||||
AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
|
||||
GTK_OBJ=emacsgtkfixed.o
|
||||
term_header=gtkutil.h
|
||||
USE_GTK_TOOLKIT="GTK3"
|
||||
if test "x$ac_enable_gtk_deprecation_warnings" = x; then
|
||||
GTK_CFLAGS="$GTK_CFLAGS -DGDK_DISABLE_DEPRECATION_WARNINGS"
|
||||
fi
|
||||
else
|
||||
check_gtk2=yes
|
||||
gtk3_pkg_errors="$GTK_PKG_ERRORS "
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
|
||||
GLIB_REQUIRED=2.10
|
||||
GTK_REQUIRED=2.10
|
||||
GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
|
||||
if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
|
||||
GLIB_REQUIRED=2.10
|
||||
GTK_REQUIRED=2.10
|
||||
GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
|
||||
|
||||
dnl Checks for libraries.
|
||||
PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
|
||||
if test "$pkg_check_gtk" = "no" &&
|
||||
{ test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
|
||||
then
|
||||
AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
|
||||
dnl Checks for libraries.
|
||||
PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
|
||||
if test "$pkg_check_gtk" = "no" &&
|
||||
{ test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
|
||||
then
|
||||
AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
|
||||
fi
|
||||
test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2"
|
||||
fi
|
||||
test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2"
|
||||
fi
|
||||
|
||||
if test x"$pkg_check_gtk" = xyes; then
|
||||
|
@ -2161,6 +2264,8 @@ if test "${with_gnutls}" = "yes" ; then
|
|||
AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
|
||||
fi
|
||||
|
||||
OLD_CFLAGS=$CFLAGS
|
||||
OLD_LIBS=$LIBS
|
||||
CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
|
||||
LIBS="$LIBGNUTLS_LIBS $LIBS"
|
||||
AC_CHECK_FUNCS(gnutls_certificate_set_verify_function, HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=yes)
|
||||
|
@ -2168,6 +2273,13 @@ if test "${with_gnutls}" = "yes" ; then
|
|||
if test "${HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY}" = "yes"; then
|
||||
AC_DEFINE(HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY, 1, [Define if using GnuTLS certificate verification callbacks.])
|
||||
fi
|
||||
|
||||
# Windows loads GnuTLS dynamically
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
CFLAGS=$OLD_CFLAGS
|
||||
LIBS=$OLD_LIBS
|
||||
LIBGNUTLS_LIBS=
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(LIBGNUTLS_LIBS)
|
||||
|
@ -2283,6 +2395,9 @@ case $opsys in
|
|||
hpux* | aix4-2 )
|
||||
test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
|
||||
;;
|
||||
mingw32 )
|
||||
LIBXMU=
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(LIBXMU)
|
||||
|
||||
|
@ -2541,10 +2656,10 @@ AC_SUBST(M17N_FLT_CFLAGS)
|
|||
AC_SUBST(M17N_FLT_LIBS)
|
||||
|
||||
### Use -lXpm if available, unless `--with-xpm=no'.
|
||||
### mingw32 doesn't use -lXpm, since it loads the library dynamically.
|
||||
HAVE_XPM=no
|
||||
LIBXPM=
|
||||
|
||||
if test "${HAVE_W32}" = "yes"; then
|
||||
if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then
|
||||
if test "${with_xpm}" != "no"; then
|
||||
SAVE_CPPFLAGS="$CPPFLAGS"
|
||||
SAVE_LDFLAGS="$LDFLAGS"
|
||||
|
@ -2605,19 +2720,33 @@ no_return_alloc_pixels
|
|||
fi
|
||||
fi
|
||||
|
||||
### FIXME: Perhaps regroup to minimize code duplication due to MinGW's
|
||||
### slightly different requirements wrt image libraries (it doesn't
|
||||
### use -lXpm because it loads the xpm shared library dynamically at
|
||||
### run time).
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
if test "${with_xpm}" != "no"; then
|
||||
AC_CHECK_HEADER(X11/xpm.h, HAVE_XPM=yes, HAVE_XPM=no, [
|
||||
#define FOR_MSW 1])
|
||||
fi
|
||||
|
||||
if test "${HAVE_XPM}" = "yes"; then
|
||||
AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(LIBXPM)
|
||||
|
||||
### Use -ljpeg if available, unless `--with-jpeg=no'.
|
||||
### mingw32 doesn't use -ljpeg, since it loads the library dynamically.
|
||||
HAVE_JPEG=no
|
||||
LIBJPEG=
|
||||
if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
if test "${with_jpeg}" != "no"; then
|
||||
dnl Checking for jpeglib.h can lose because of a redefinition of
|
||||
dnl HAVE_STDLIB_H.
|
||||
AC_CHECK_HEADER(jerror.h,
|
||||
[AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
|
||||
dnl HAVE_STDLIB_H.
|
||||
AC_CHECK_HEADER(jerror.h, HAVE_JPEG=yes, HAVE_JPEG=no)
|
||||
fi
|
||||
|
||||
AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
|
||||
if test "${HAVE_JPEG}" = "yes"; then
|
||||
AC_DEFINE(HAVE_JPEG)
|
||||
|
@ -2629,6 +2758,25 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
|
|||
[AC_MSG_WARN([libjpeg found, but not version 6b or later])
|
||||
HAVE_JPEG=no])
|
||||
fi
|
||||
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
|
||||
if test "${with_jpeg}" != "no"; then
|
||||
dnl Checking for jpeglib.h can lose because of a redefinition of
|
||||
dnl HAVE_STDLIB_H.
|
||||
AC_CHECK_HEADER(jerror.h,
|
||||
[AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
|
||||
fi
|
||||
|
||||
AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
|
||||
if test "${HAVE_JPEG}" = "yes"; then
|
||||
AC_DEFINE(HAVE_JPEG)
|
||||
AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
|
||||
[#include <jpeglib.h>
|
||||
version=JPEG_LIB_VERSION
|
||||
],
|
||||
[AC_DEFINE(HAVE_JPEG)],
|
||||
[AC_MSG_WARN([libjpeg found, but not version 6b or later])
|
||||
HAVE_JPEG=no])
|
||||
fi
|
||||
if test "${HAVE_JPEG}" = "yes"; then
|
||||
LIBJPEG=-ljpeg
|
||||
fi
|
||||
|
@ -2636,9 +2784,30 @@ fi
|
|||
AC_SUBST(LIBJPEG)
|
||||
|
||||
### Use -lpng if available, unless `--with-png=no'.
|
||||
### mingw32 doesn't use -lpng, since it loads the library dynamically.
|
||||
HAVE_PNG=no
|
||||
LIBPNG=
|
||||
if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
if test "${with_png}" != "no"; then
|
||||
AC_CHECK_HEADER(png.h, HAVE_PNG=yes, HAVE_PNG=no)
|
||||
fi
|
||||
if test "${HAVE_PNG}" = "yes"; then
|
||||
AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
|
||||
|
||||
AC_CHECK_DECL(png_longjmp,
|
||||
[],
|
||||
[AC_DEFINE(PNG_DEPSTRUCT, [],
|
||||
[Define to empty to suppress deprecation warnings when building
|
||||
with --enable-gcc-warnings and with libpng versions before 1.5,
|
||||
which lack png_longjmp.])],
|
||||
[[#ifdef HAVE_LIBPNG_PNG_H
|
||||
# include <libpng/png.h>
|
||||
#else
|
||||
# include <png.h>
|
||||
#endif
|
||||
]])
|
||||
fi
|
||||
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
|
||||
if test "${with_png}" != "no"; then
|
||||
# Debian unstable as of July 2003 has multiple libpngs, and puts png.h
|
||||
# in /usr/include/libpng.
|
||||
|
@ -2669,9 +2838,17 @@ fi
|
|||
AC_SUBST(LIBPNG)
|
||||
|
||||
### Use -ltiff if available, unless `--with-tiff=no'.
|
||||
### mingw32 doesn't use -ltiff, since it loads the library dynamically.
|
||||
HAVE_TIFF=no
|
||||
LIBTIFF=
|
||||
if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
if test "${with_tiff}" != "no"; then
|
||||
AC_CHECK_HEADER(tiffio.h, HAVE_TIFF=yes, HAVE_TIFF=no)
|
||||
fi
|
||||
if test "${HAVE_TIFF}" = "yes"; then
|
||||
AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
|
||||
fi
|
||||
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
|
||||
if test "${with_tiff}" != "no"; then
|
||||
AC_CHECK_HEADER(tiffio.h,
|
||||
[tifflibs="-lz -lm"
|
||||
|
@ -2689,9 +2866,17 @@ fi
|
|||
AC_SUBST(LIBTIFF)
|
||||
|
||||
### Use -lgif or -lungif if available, unless `--with-gif=no'.
|
||||
### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
|
||||
HAVE_GIF=no
|
||||
LIBGIF=
|
||||
if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
if test "${with_gif}" != "no"; then
|
||||
AC_CHECK_HEADER(gif_lib.h, HAVE_GIF=yes, HAVE_GIF=no)
|
||||
fi
|
||||
if test "${HAVE_GIF}" = "yes"; then
|
||||
AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
|
||||
fi
|
||||
elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
|
||||
|| test "${HAVE_W32}" = "yes"; then
|
||||
AC_CHECK_HEADER(gif_lib.h,
|
||||
# EGifPutExtensionLast only exists from version libungif-4.1.0b1.
|
||||
|
@ -2847,13 +3032,18 @@ fi
|
|||
|
||||
|
||||
### Use libxml (-lxml2) if available
|
||||
### mingw32 doesn't use -lxml2, since it loads the library dynamically.
|
||||
HAVE_LIBXML2=no
|
||||
if test "${with_xml2}" != "no"; then
|
||||
### I'm not sure what the version number should be, so I just guessed.
|
||||
PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
|
||||
if test "${HAVE_LIBXML2}" = "yes"; then
|
||||
LIBS="$LIBXML2_LIBS $LIBS"
|
||||
AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
|
||||
if test "${opsys}" != "mingw32"; then
|
||||
LIBS="$LIBXML2_LIBS $LIBS"
|
||||
AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
|
||||
else
|
||||
LIBXML2_LIBS=""
|
||||
fi
|
||||
if test "${HAVE_LIBXML2}" = "yes"; then
|
||||
AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
|
||||
else
|
||||
|
@ -2866,6 +3056,10 @@ AC_SUBST(LIBXML2_LIBS)
|
|||
AC_SUBST(LIBXML2_CFLAGS)
|
||||
|
||||
# If netdb.h doesn't declare h_errno, we must declare it by hand.
|
||||
# On MinGW, that is provided by nt/inc/sys/socket.h and w32.c.
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
emacs_cv_netdb_declares_h_errno=yes
|
||||
fi
|
||||
AC_CACHE_CHECK(whether netdb declares h_errno,
|
||||
emacs_cv_netdb_declares_h_errno,
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
|
||||
|
@ -2876,8 +3070,10 @@ if test $emacs_cv_netdb_declares_h_errno = yes; then
|
|||
fi
|
||||
|
||||
# sqrt and other floating-point functions such as fmod and frexp
|
||||
# are found in -lm on most systems.
|
||||
AC_CHECK_LIB(m, sqrt)
|
||||
# are found in -lm on most systems, but mingw32 doesn't use -lm.
|
||||
if test "${opsys}" != "mingw32"; then
|
||||
AC_CHECK_LIB(m, sqrt)
|
||||
fi
|
||||
|
||||
# Check for mail-locking functions in a "mail" library. Probably this should
|
||||
# have the same check as for liblockfile below.
|
||||
|
@ -2941,6 +3137,9 @@ case "$opsys" in
|
|||
test $ac_cv_header_maillock_h = yes && mail_lock=no
|
||||
fi
|
||||
;;
|
||||
|
||||
mingw32)
|
||||
mail_lock="none-needed" ;;
|
||||
esac
|
||||
|
||||
BLESSMAIL_TARGET=
|
||||
|
@ -2949,6 +3148,8 @@ case "$mail_lock" in
|
|||
|
||||
lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
|
||||
|
||||
none-needed) ;;
|
||||
|
||||
*) BLESSMAIL_TARGET="need-blessmail" ;;
|
||||
esac
|
||||
AC_SUBST(BLESSMAIL_TARGET)
|
||||
|
@ -3020,25 +3221,29 @@ AC_DEFUN([tputs_link_source], [
|
|||
return 0;
|
||||
}]])
|
||||
])
|
||||
# Maybe curses should be tried earlier?
|
||||
# See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
|
||||
for tputs_library in '' tinfo ncurses terminfo termcap curses; do
|
||||
OLIBS=$LIBS
|
||||
if test -z "$tputs_library"; then
|
||||
LIBS_TERMCAP=
|
||||
msg='none required'
|
||||
else
|
||||
LIBS_TERMCAP=-l$tputs_library
|
||||
msg=$LIBS_TERMCAP
|
||||
LIBS="$LIBS_TERMCAP $LIBS"
|
||||
fi
|
||||
AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
|
||||
[AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
|
||||
LIBS=$OLIBS
|
||||
if test "X$msg" != Xno; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
msg='none required'
|
||||
else
|
||||
# Maybe curses should be tried earlier?
|
||||
# See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
|
||||
for tputs_library in '' tinfo ncurses terminfo termcap curses; do
|
||||
OLIBS=$LIBS
|
||||
if test -z "$tputs_library"; then
|
||||
LIBS_TERMCAP=
|
||||
msg='none required'
|
||||
else
|
||||
LIBS_TERMCAP=-l$tputs_library
|
||||
msg=$LIBS_TERMCAP
|
||||
LIBS="$LIBS_TERMCAP $LIBS"
|
||||
fi
|
||||
AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
|
||||
[AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
|
||||
LIBS=$OLIBS
|
||||
if test "X$msg" != Xno; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
AC_MSG_RESULT([$msg])
|
||||
if test "X$msg" = Xno; then
|
||||
AC_MSG_ERROR([The required function `tputs' was not found in any library.
|
||||
|
@ -3084,6 +3289,11 @@ fail;
|
|||
fi
|
||||
;;
|
||||
|
||||
mingw32)
|
||||
TERMINFO=no
|
||||
LIBS_TERMCAP=
|
||||
;;
|
||||
|
||||
netbsd)
|
||||
if test "x$LIBS_TERMCAP" != "x-lterminfo"; then
|
||||
TERMINFO=no
|
||||
|
@ -3373,11 +3583,14 @@ dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetatt
|
|||
dnl fi
|
||||
|
||||
dnl Turned on June 1996 supposing nobody will mind it.
|
||||
AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that &
|
||||
in the full name stands for the login id.])
|
||||
dnl MinGW emulates passwd database, so this feature doesn't make sense there.
|
||||
if test "${opsys}" != "mingw32"; then
|
||||
AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that &
|
||||
in the full name stands for the login id.])
|
||||
fi
|
||||
|
||||
dnl Every platform that uses configure (ie every non-MS platform)
|
||||
dnl supports this. There is a create-lockfiles option you can
|
||||
dnl Every platform that uses configure supports this.
|
||||
dnl There is a create-lockfiles option you can
|
||||
dnl customize if you do not want the lock files to be written.
|
||||
dnl So it is not clear that this #define still needs to exist.
|
||||
AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
|
||||
|
@ -3387,7 +3600,9 @@ AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
|
|||
dnl Everybody supports this, except MS.
|
||||
dnl Seems like the kind of thing we should be testing for, though.
|
||||
## Note: PTYs are broken on darwin <6. Use at your own risk.
|
||||
AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
|
||||
if test "${opsys}" != "mingw32"; then
|
||||
AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
|
||||
fi
|
||||
|
||||
dnl Everybody supports this, except MS-DOS.
|
||||
dnl Seems like the kind of thing we should be testing for, though.
|
||||
|
@ -3397,10 +3612,20 @@ AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
|
|||
|
||||
AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
|
||||
|
||||
AC_DEFINE(NULL_DEVICE, ["/dev/null"], [Name of the file to open to get
|
||||
AH_TEMPLATE(NULL_DEVICE, [Name of the file to open to get
|
||||
a null file, or a data sink.])
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
AC_DEFINE(NULL_DEVICE, ["NUL:"])
|
||||
else
|
||||
AC_DEFINE(NULL_DEVICE, ["/dev/null"])
|
||||
fi
|
||||
|
||||
AC_DEFINE(SEPCHAR, [':'], [Character that separates PATH elements.])
|
||||
AH_TEMPLATE(SEPCHAR, [Character that separates PATH elements.])
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
AC_DEFINE(SEPCHAR, [';'])
|
||||
else
|
||||
AC_DEFINE(SEPCHAR, [':'])
|
||||
fi
|
||||
|
||||
dnl Everybody supports this, except MS-DOS.
|
||||
AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
|
||||
|
@ -3411,19 +3636,28 @@ AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
|
|||
AC_DEFINE(DIRECTORY_SEP, ['/'],
|
||||
[Character that separates directories in a file name.])
|
||||
|
||||
dnl Only used on MS platforms.
|
||||
AH_TEMPLATE(DEVICE_SEP, [Character that separates a device in a file name.])
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
dnl Only used on MS platforms.
|
||||
AC_DEFINE(DEVICE_SEP, ':')
|
||||
AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == DEVICE_SEP)],
|
||||
[Returns true if character is a device separator.])
|
||||
|
||||
AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
|
||||
[Returns true if character is a device separator.])
|
||||
AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')],
|
||||
[Returns true if character is a directory separator.])
|
||||
|
||||
AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
|
||||
[Returns true if character is a directory separator.])
|
||||
AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP(_c_))],
|
||||
[Returns true if character is any form of separator.])
|
||||
else
|
||||
AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
|
||||
[Returns true if character is a device separator.])
|
||||
|
||||
dnl On MS, this also accepts IS_DEVICE_SEP.
|
||||
AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
|
||||
[Returns true if character is any form of separator.])
|
||||
AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
|
||||
[Returns true if character is a directory separator.])
|
||||
|
||||
AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
|
||||
[Returns true if character is any form of separator.])
|
||||
fi
|
||||
|
||||
AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
|
||||
|
||||
|
@ -3812,10 +4046,14 @@ else
|
|||
esac
|
||||
fi dnl GCC?
|
||||
|
||||
dnl In a weird quirk, MS runtime uses _setjmp and longjmp.
|
||||
AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp],
|
||||
[AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <setjmp.h>
|
||||
#ifdef __MINGW32__
|
||||
# define _longjmp longjmp
|
||||
#endif
|
||||
]],
|
||||
[[jmp_buf j;
|
||||
if (! _setjmp (j))
|
||||
|
@ -3910,6 +4148,14 @@ case $opsys in
|
|||
AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
|
||||
;;
|
||||
|
||||
mingw32)
|
||||
AC_DEFINE(DOS_NT, [])
|
||||
AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
|
||||
if test "x$ac_enable_checking" != "x" ; then
|
||||
AC_DEFINE(EMACSDEBUG, 1, [Define to 1 to enable w32 debug facilities.])
|
||||
fi
|
||||
;;
|
||||
|
||||
sol2*)
|
||||
AC_DEFINE(USG, [])
|
||||
AC_DEFINE(USG5, [])
|
||||
|
@ -3931,6 +4177,10 @@ AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
|
|||
emacs_cv_usable_FIONREAD=no
|
||||
;;
|
||||
|
||||
mingw32)
|
||||
emacs_cv_usable_FIONREAD=yes
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <sys/types.h>
|
||||
|
@ -4071,6 +4321,12 @@ AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}",
|
|||
AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure
|
||||
define this to include extra configuration information.])
|
||||
|
||||
case $opsys in
|
||||
mingw32)
|
||||
AC_DEFINE(config_opsysfile, <ms-w32.h>, [])
|
||||
;;
|
||||
esac
|
||||
|
||||
XMENU_OBJ=
|
||||
XOBJ=
|
||||
FONT_OBJ=
|
||||
|
@ -4131,12 +4387,14 @@ case "$USE_X_TOOLKIT" in
|
|||
esac
|
||||
AC_SUBST(TOOLKIT_LIBW)
|
||||
|
||||
if test "$USE_X_TOOLKIT" = "none"; then
|
||||
LIBXT_OTHER="\$(LIBXSM)"
|
||||
OLDXMENU_TARGET="really-oldXMenu"
|
||||
else
|
||||
LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
|
||||
OLDXMENU_TARGET="really-lwlib"
|
||||
if test "${opsys}" != "mingw32"; then
|
||||
if test "$USE_X_TOOLKIT" = "none"; then
|
||||
LIBXT_OTHER="\$(LIBXSM)"
|
||||
OLDXMENU_TARGET="really-oldXMenu"
|
||||
else
|
||||
LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
|
||||
OLDXMENU_TARGET="really-lwlib"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(LIBXT_OTHER)
|
||||
|
||||
|
@ -4210,6 +4468,10 @@ if test "$opsys" = "cygwin"; then
|
|||
## Cygwin differs because of its unexec().
|
||||
PRE_ALLOC_OBJ=
|
||||
POST_ALLOC_OBJ=lastfile.o
|
||||
elif test "$opsys" = "mingw32"; then
|
||||
CYGWIN_OBJ=
|
||||
PRE_ALLOC_OBJ=
|
||||
POST_ALLOC_OBJ=lastfile.o
|
||||
else
|
||||
CYGWIN_OBJ=
|
||||
PRE_ALLOC_OBJ=lastfile.o
|
||||
|
@ -4237,6 +4499,12 @@ gl_INIT
|
|||
CFLAGS=$SAVE_CFLAGS
|
||||
LIBS=$SAVE_LIBS
|
||||
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I $srcdir/nt/inc"
|
||||
# Remove unneeded switches from the value of CC that goes to Makefiles
|
||||
CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"`
|
||||
fi
|
||||
|
||||
case "$opsys" in
|
||||
aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
|
||||
|
||||
|
@ -4273,6 +4541,16 @@ case "$opsys" in
|
|||
## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
|
||||
gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;;
|
||||
|
||||
mingw32)
|
||||
## MinGW64 does not prepend an underscore to symbols, so we must
|
||||
## pass a different -entry switch to linker. FIXME: It is better
|
||||
## to make the entry points the same by changing unexw32.c.
|
||||
case "$canonical" in
|
||||
x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,_start -Wl,-Map,./temacs.map" ;;
|
||||
*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
|
||||
esac
|
||||
;;
|
||||
|
||||
openbsd) LD_SWITCH_SYSTEM_TEMACS='-nopie' ;;
|
||||
|
||||
*) LD_SWITCH_SYSTEM_TEMACS= ;;
|
||||
|
@ -4287,6 +4565,24 @@ fi
|
|||
|
||||
AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
|
||||
|
||||
## MinGW-specific post-link processing of temacs.
|
||||
TEMACS_POST_LINK=":"
|
||||
ADDSECTION=
|
||||
EMACS_HEAPSIZE=
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
TEMACS_POST_LINK="\$(MINGW_TEMACS_POST_LINK)"
|
||||
ADDSECTION="../nt/addsection\$(EXEEXT)"
|
||||
## Preload heap size of temacs.exe in MB.
|
||||
case "$canonical" in
|
||||
x86_64-*-*) EMACS_HEAPSIZE=42 ;;
|
||||
*) EMACS_HEAPSIZE=27 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
AC_SUBST(ADDSECTION)
|
||||
AC_SUBST(TEMACS_POST_LINK)
|
||||
AC_SUBST(EMACS_HEAPSIZE)
|
||||
|
||||
## Common for all window systems
|
||||
if test "$window_system" != "none"; then
|
||||
AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
|
||||
|
@ -4445,12 +4741,12 @@ dnl This will work, but you get a config.status that is not quite right
|
|||
dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
|
||||
dnl That doesn't have any obvious consequences for Emacs, but on the whole
|
||||
dnl it seems better to just live with the duplication.
|
||||
SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile nextstep/Makefile"
|
||||
SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile nextstep/Makefile nt/Makefile"
|
||||
|
||||
AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
|
||||
doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
|
||||
doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
|
||||
leim/Makefile nextstep/Makefile])
|
||||
leim/Makefile nextstep/Makefile nt/Makefile])
|
||||
|
||||
dnl test/ is not present in release tarfiles.
|
||||
opt_makefile=test/automated/Makefile
|
||||
|
@ -4493,8 +4789,12 @@ dnl by configure. This also explains the `move-if-change' test and
|
|||
dnl the use of force in the `epaths-force' rule in Makefile.in.
|
||||
AC_CONFIG_COMMANDS([epaths], [
|
||||
echo creating src/epaths.h
|
||||
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
|
||||
], [GCC="$GCC" CPPFLAGS="$CPPFLAGS"])
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
|
||||
else
|
||||
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
|
||||
fi
|
||||
], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"])
|
||||
|
||||
AC_CONFIG_COMMANDS([gdbinit], [
|
||||
if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2013-05-16 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* NEWS: Advertise the MSYS build on MS-Windows.
|
||||
|
||||
2013-05-15 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* .gitignore: Don't ignore DOC-* any more.
|
||||
|
|
10
etc/NEWS
10
etc/NEWS
|
@ -29,7 +29,15 @@ build time, like libacl on GNU/Linux. To prevent this, use the
|
|||
configure option `--disable-acl'.
|
||||
|
||||
** The configure option --with-crt-dir has been removed.
|
||||
It is no longer needed, as the crt*.o files are no longer linked specially.
|
||||
It is no longer needed, as the crt*.o files are no longer linked
|
||||
specially.
|
||||
|
||||
** Emacs for MS-Windows can now be built by running the configure script
|
||||
using the MSYS environment and MinGW development tools.
|
||||
This is from now on the preferred method of building Emacs on
|
||||
MS-Windows. The Windows-specific configure.bat and makefile.w32-in
|
||||
files are deprecated. See the file nt/INSTALL.MSYS for detailed
|
||||
instructions.
|
||||
|
||||
|
||||
* Startup Changes in Emacs 24.4
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2013-05-16 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* Makefile.in (leim-list.el, check-declare): Use reveal-filename.
|
||||
|
||||
2013-04-01 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Use UTF-8 for most files with non-ASCII characters (Bug#13936).
|
||||
|
|
|
@ -140,7 +140,7 @@ leim-list.el: ${TIT_MISC} ${srcdir}/leim-ext.el
|
|||
--eval "(update-leim-list-file \".\")" ; \
|
||||
else \
|
||||
${RUN_EMACS} -l ${buildlisppath}/international/quail \
|
||||
--eval "(update-leim-list-file \".\" \"${srcdir}\")" ; \
|
||||
--eval "(update-leim-list-file \".\" (reveal-filename \"${srcdir}\"))" ; \
|
||||
fi
|
||||
sed -n '/^[^;]/ p' < ${srcdir}/leim-ext.el >> $@
|
||||
|
||||
|
@ -199,4 +199,4 @@ extraclean: maintainer-clean
|
|||
|
||||
check-declare:
|
||||
$(RUN_EMACS) -l $(buildlisppath)/emacs-lisp/check-declare \
|
||||
--eval '(check-declare-directory "$(srcdir)")'
|
||||
--eval '(check-declare-directory (reveal-filename "$(srcdir)"))'
|
||||
|
|
|
@ -1,3 +1,27 @@
|
|||
2013-05-16 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* update-game-score.c [WINDOWSNT]: Include "ntlib.h".
|
||||
|
||||
* ntlib.h (sleep): Update prototype.
|
||||
(geteuid): Add prototype.
|
||||
|
||||
* ntlib.c (sleep): Now returns an unsigned value.
|
||||
(getgid): New function.
|
||||
|
||||
* Makefile.in (CLIENTW, LIB_WSOCK32, LIBS_ECLIENT, NTLIB)
|
||||
(CLIENTRES, WINDRES, NTINC, NTDEPS): New variables.
|
||||
(INSTALLABLES): Add $(CLIENTW).
|
||||
(LIBS_MOVE): Use $(LIB_WSOCK32).
|
||||
($(DESTDIR)${archlibdir}): Use $(EXEEXT) on update-game-score.
|
||||
(test-distrib${EXEEXT}): Use $(EXEEXT) on test-distrib.
|
||||
(etags${EXEEXT}, ebrowse${EXEEXT}, ctags${EXEEXT})
|
||||
(profile${EXEEXT}, make-docfile${EXEEXT}, movemail${EXEEXT})
|
||||
(emacsclient${EXEEXT}, hexl${EXEEXT}, update-game-score${EXEEXT}):
|
||||
Add $(NTLIB) to prerequisites. Use $(EXEEXT).
|
||||
(pop.o): Add pop.h to prerequisites.
|
||||
(emacsclientw${EXEEXT}, ntlib.o): New targets.
|
||||
(emacsclient.res): New target.
|
||||
|
||||
2013-05-15 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* makefile.w32-in ($(DOC)): Use DOC rather than DOC-X.
|
||||
|
|
|
@ -113,8 +113,11 @@ MKDIR_P = @MKDIR_P@
|
|||
|
||||
# ========================== Lists of Files ===========================
|
||||
|
||||
# emacsclientw.exe for MinGW, empty otherwise
|
||||
CLIENTW = @CLIENTW@
|
||||
|
||||
# Things that a user might actually run, which should be installed in bindir.
|
||||
INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} \
|
||||
INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} $(CLIENTW) \
|
||||
ebrowse${EXEEXT}
|
||||
|
||||
INSTALLABLE_SCRIPTS = grep-changelog
|
||||
|
@ -163,10 +166,21 @@ LIBS_MAIL=@LIBS_MAIL@
|
|||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
## empty or -lrt or -lposix4 if HAVE_FDATASYNC
|
||||
LIB_FDATASYNC = @LIB_FDATASYNC@
|
||||
## empty or -lwsock2 for MinGW
|
||||
LIB_WSOCK32=@LIB_WSOCK32@
|
||||
|
||||
## Extra libraries to use when linking movemail.
|
||||
LIBS_MOVE = $(LIBS_MAIL) $(KRB4LIB) $(DESLIB) $(KRB5LIB) $(CRYPTOLIB) \
|
||||
$(COM_ERRLIB) $(LIBHESIOD) $(LIBRESOLV)
|
||||
$(COM_ERRLIB) $(LIBHESIOD) $(LIBRESOLV) $(LIB_WSOCK32)
|
||||
|
||||
## Extra libraries when linking emacsclient
|
||||
## (empty or -lcomctl32 for MinGW)
|
||||
LIBS_ECLIENT = @LIBS_ECLIENT@
|
||||
|
||||
## Extra object files for linking for MinGW
|
||||
NTLIB = @NTLIB@
|
||||
CLIENTRES = @CLIENTRES@
|
||||
WINDRES = @WINDRES@
|
||||
|
||||
## Some systems define this to request special libraries.
|
||||
LIBS_SYSTEM = @LIBS_SYSTEM@
|
||||
|
@ -227,7 +241,7 @@ $(DESTDIR)${archlibdir}: all
|
|||
umask 022; ${MKDIR_P} $(DESTDIR)${gamedir}; \
|
||||
touch $(DESTDIR)${gamedir}/snake-scores; \
|
||||
touch $(DESTDIR)${gamedir}/tetris-scores
|
||||
-if chown ${gameuser} $(DESTDIR)${archlibdir}/update-game-score && chmod u+s $(DESTDIR)${archlibdir}/update-game-score; then \
|
||||
-if chown ${gameuser} $(DESTDIR)${archlibdir}/update-game-score${EXEEXT} && chmod u+s $(DESTDIR)${archlibdir}/update-game-score${EXEEXT}; then \
|
||||
chown ${gameuser} $(DESTDIR)${gamedir}; \
|
||||
chmod u=rwx,g=rwx,o=rx $(DESTDIR)${gamedir}; \
|
||||
fi
|
||||
|
@ -292,7 +306,7 @@ TAGS: etags${EXEEXT}
|
|||
## distribute Emacs. If they were clobbered, all the .elc files were
|
||||
## clobbered too.
|
||||
test-distrib${EXEEXT}: ${srcdir}/test-distrib.c
|
||||
$(CC) ${ALL_CFLAGS} -o test-distrib ${srcdir}/test-distrib.c
|
||||
$(CC) ${ALL_CFLAGS} -o test-distrib${EXEEXT} ${srcdir}/test-distrib.c
|
||||
./test-distrib ${srcdir}/testfile
|
||||
|
||||
../lib/libgnu.a: $(config_h)
|
||||
|
@ -302,47 +316,68 @@ regex.o: $(srcdir)/../src/regex.c $(srcdir)/../src/regex.h $(config_h)
|
|||
${CC} -c ${CPP_CFLAGS} -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER \
|
||||
${srcdir}/../src/regex.c
|
||||
|
||||
etags${EXEEXT}: ${srcdir}/etags.c regex.o $(config_h)
|
||||
etags${EXEEXT}: ${srcdir}/etags.c regex.o $(NTLIB) $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} -DEMACS_NAME="\"GNU Emacs\"" \
|
||||
-DVERSION="\"${version}\"" ${srcdir}/etags.c \
|
||||
regex.o $(LOADLIBES) -o etags
|
||||
regex.o $(LOADLIBES) $(NTLIB) -o etags${EXEEXT}
|
||||
|
||||
ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ${srcdir}/../lib/min-max.h $(config_h)
|
||||
ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ${srcdir}/../lib/min-max.h $(NTLIB) \
|
||||
$(config_h)
|
||||
$(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" \
|
||||
${srcdir}/ebrowse.c $(LOADLIBES) -o ebrowse
|
||||
${srcdir}/ebrowse.c $(LOADLIBES) $(NTLIB) -o ebrowse${EXEEXT}
|
||||
|
||||
## We depend on etags to assure that parallel makes do not write two
|
||||
## etags.o files on top of each other.
|
||||
ctags${EXEEXT}: etags${EXEEXT}
|
||||
$(CC) ${ALL_CFLAGS} -DCTAGS -DEMACS_NAME="\"GNU Emacs\"" \
|
||||
-DVERSION="\"${version}\"" ${srcdir}/etags.c \
|
||||
regex.o $(LOADLIBES) -o ctags
|
||||
regex.o $(LOADLIBES) $(NTLIB) -o ctags${EXEEXT}
|
||||
|
||||
profile${EXEEXT}: ${srcdir}/profile.c $(config_h)
|
||||
profile${EXEEXT}: ${srcdir}/profile.c $(NTLIB) $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/profile.c \
|
||||
$(LOADLIBES) $(LIB_CLOCK_GETTIME) -o profile
|
||||
$(LOADLIBES) $(NTLIB) $(LIB_CLOCK_GETTIME) -o profile${EXEEXT}
|
||||
|
||||
make-docfile${EXEEXT}: ${srcdir}/make-docfile.c $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) \
|
||||
-o make-docfile
|
||||
make-docfile${EXEEXT}: ${srcdir}/make-docfile.c $(NTLIB) $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) $(NTLIB) \
|
||||
-o make-docfile${EXEEXT}
|
||||
|
||||
movemail${EXEEXT}: ${srcdir}/movemail.c pop.o $(config_h)
|
||||
movemail${EXEEXT}: ${srcdir}/movemail.c pop.o $(NTLIB) $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${MOVE_FLAGS} ${srcdir}/movemail.c pop.o \
|
||||
$(LOADLIBES) $(LIBS_MOVE) -o movemail
|
||||
$(LOADLIBES) $(NTLIB) $(LIBS_MOVE) -o movemail${EXEEXT}
|
||||
|
||||
pop.o: ${srcdir}/pop.c ${srcdir}/../lib/min-max.h $(config_h)
|
||||
pop.o: ${srcdir}/pop.c ${srcdir}/pop.h ${srcdir}/../lib/min-max.h $(config_h)
|
||||
$(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/pop.c
|
||||
|
||||
emacsclient${EXEEXT}: ${srcdir}/emacsclient.c $(config_h)
|
||||
emacsclient${EXEEXT}: ${srcdir}/emacsclient.c $(NTLIB) $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/emacsclient.c \
|
||||
-DVERSION="\"${version}\"" \
|
||||
$(LOADLIBES) $(LIB_FDATASYNC) -o emacsclient
|
||||
-DVERSION="\"${version}\"" $(NTLIB) $(LOADLIBES) $(LIB_FDATASYNC) \
|
||||
$(LIB_WSOCK32) $(LIBS_ECLIENT) -o emacsclient${EXEEXT}
|
||||
|
||||
hexl${EXEEXT}: ${srcdir}/hexl.c $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl
|
||||
emacsclientw${EXEEXT}: ${srcdir}/emacsclient.c $(NTLIB) $(CLIENTRES) $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} $(CLIENTRES) -mwindows ${srcdir}/emacsclient.c \
|
||||
-DVERSION="\"${version}\"" $(LOADLIBES) $(LIB_FDATASYNC) \
|
||||
$(LIB_WSOCK32) $(LIBS_ECLIENT) -o emacsclientw${EXEEXT}
|
||||
|
||||
update-game-score${EXEEXT}: ${srcdir}/update-game-score.c $(config_h)
|
||||
NTINC = ${srcdir}/../nt/inc
|
||||
NTDEPS = $(NTINC)/ms-w32.h $(NTINC)/sys/stat.h $(NTINC)/inttypes.h \
|
||||
$(NTINC)/stdint.h $(NTINC)/pwd.h $(NTINC)/sys/time.h $(NTINC)/stdbool.h \
|
||||
$(NTINC)/sys/wait.h $(NTINC)/unistd.h $(NTINC)/sys/file.h $(NTINC)/netdb.h
|
||||
|
||||
# The dependency on $(NTDEPS) is a trick intended to cause recompile of
|
||||
# programs on MinGW whenever some private header in nt/inc is modified.
|
||||
ntlib.o: ${srcdir}/ntlib.c ${srcdir}/ntlib.h $(NTDEPS)
|
||||
$(CC) -c ${CPP_CFLAGS} ${srcdir}/ntlib.c
|
||||
|
||||
hexl${EXEEXT}: ${srcdir}/hexl.c $(NTLIB) $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl${EXEEXT}
|
||||
|
||||
update-game-score${EXEEXT}: ${srcdir}/update-game-score.c $(NTLIB) $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} -DHAVE_SHARED_GAME_DIR="\"$(gamedir)\"" \
|
||||
${srcdir}/update-game-score.c $(LOADLIBES) -o update-game-score
|
||||
${srcdir}/update-game-score.c $(LOADLIBES) $(NTLIB) \
|
||||
-o update-game-score${EXEEXT}
|
||||
|
||||
emacsclient.res: $(NTINC)/../emacsclient.rc
|
||||
$(WINDRES) -O coff --include-dir=$(NTINC)/.. -o emacsclient.res \
|
||||
$(NTINC)/../emacsclient.rc
|
||||
|
||||
## Makefile ends here.
|
||||
|
|
|
@ -49,10 +49,11 @@ struct timezone
|
|||
/* Emulate sleep...we could have done this with a define, but that
|
||||
would necessitate including windows.h in the files that used it.
|
||||
This is much easier. */
|
||||
void
|
||||
sleep (unsigned long seconds)
|
||||
unsigned
|
||||
sleep (unsigned seconds)
|
||||
{
|
||||
Sleep (seconds * 1000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Get the current working directory. */
|
||||
|
@ -137,6 +138,12 @@ getuid (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
unsigned
|
||||
geteuid (void)
|
||||
{
|
||||
return getuid ();
|
||||
}
|
||||
|
||||
unsigned
|
||||
getgid (void)
|
||||
{
|
||||
|
@ -415,4 +422,3 @@ lstat (const char * path, struct stat * buf)
|
|||
{
|
||||
return stat (path, buf);
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@ 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/>. */
|
||||
|
||||
|
||||
#include <pwd.h>
|
||||
#include <malloc.h>
|
||||
|
||||
|
@ -29,12 +28,13 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#ifdef sleep
|
||||
#undef sleep
|
||||
#endif
|
||||
void sleep (unsigned long seconds);
|
||||
unsigned sleep (unsigned seconds);
|
||||
char *getwd (char *dir);
|
||||
int getppid (void);
|
||||
char * getlogin (void);
|
||||
char * cuserid (char * s);
|
||||
unsigned getuid (void);
|
||||
unsigned geteuid (void);
|
||||
unsigned getegid (void);
|
||||
unsigned getgid (void);
|
||||
int setuid (unsigned uid);
|
||||
|
|
|
@ -46,6 +46,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include <sys/stat.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#ifdef WINDOWSNT
|
||||
#include "ntlib.h"
|
||||
#endif
|
||||
|
||||
#define MAX_ATTEMPTS 5
|
||||
#define MAX_SCORES 200
|
||||
#define MAX_DATA_LEN 1024
|
||||
|
|
|
@ -9,6 +9,10 @@ SUFFIXES =
|
|||
AM_CFLAGS = $(PROFILING_CFLAGS) $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)
|
||||
DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src
|
||||
|
||||
if BUILDING_FOR_WINDOWSNT
|
||||
include ../nt/gnulib.mk
|
||||
else
|
||||
include gnulib.mk
|
||||
|
||||
libgnu_a_SOURCES += openat-die.c save-cwd.c
|
||||
endif
|
||||
|
|
|
@ -1,3 +1,18 @@
|
|||
2013-05-16 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* subr.el (reveal-filename): New function.
|
||||
|
||||
* loadup.el: Compute Emacs executable versions on MS-Windows,
|
||||
where executables have the .exe extension. Add a hard link
|
||||
emacs-XX.YY.ZZ.exe on MS-Windows.
|
||||
|
||||
* Makefile.in (XARGS_LIMIT): New variable.
|
||||
(custom-deps, finder-data, autoloads)
|
||||
($(MH_E_DIR)/mh-loaddefs.el, $(TRAMP_DIR)/tramp-loaddefs.el)
|
||||
($(CAL_DIR)/cal-loaddefs.el, $(CAL_DIR)/diary-loaddefs.el)
|
||||
($(CAL_DIR)/hol-loaddefs.el): Use reveal-filename.
|
||||
(compile-main): Limit xargs according to $(XARGS_LIMIT).
|
||||
|
||||
2013-05-16 Leo Liu <sdl.web@gmail.com>
|
||||
|
||||
* progmodes/octave.el (octave-indent-defun): Mark obsolete.
|
||||
|
|
|
@ -24,6 +24,10 @@ abs_top_builddir = @abs_top_builddir@
|
|||
lisp = $(srcdir)
|
||||
VPATH = $(srcdir)
|
||||
|
||||
# Empty for all systems except MinGW, where xargs needs an explicit
|
||||
# limitation.
|
||||
XARGS_LIMIT = @XARGS_LIMIT@
|
||||
|
||||
# You can specify a different executable on the make command line,
|
||||
# e.g. "make EMACS=../src/emacs ...".
|
||||
|
||||
|
@ -160,21 +164,21 @@ $(lisp)/cus-load.el:
|
|||
custom-deps: doit
|
||||
cd $(lisp); $(setwins_almost); \
|
||||
echo Directories: $$wins; \
|
||||
$(emacs) -l cus-dep --eval '(setq generated-custom-dependencies-file "$(lisp)/cus-load.el")' -f custom-make-dependencies $$wins
|
||||
$(emacs) -l cus-dep --eval '(setq generated-custom-dependencies-file (reveal-filename "$(lisp)/cus-load.el"))' -f custom-make-dependencies $$wins
|
||||
|
||||
$(lisp)/finder-inf.el:
|
||||
$(MAKE) $(MFLAGS) finder-data
|
||||
finder-data: doit
|
||||
cd $(lisp); $(setwins_almost); \
|
||||
echo Directories: $$wins; \
|
||||
$(emacs) -l finder --eval '(setq generated-finder-keywords-file "$(lisp)/finder-inf.el")' -f finder-compile-keywords-make-dist $$wins
|
||||
$(emacs) -l finder --eval '(setq generated-finder-keywords-file (reveal-filename "$(lisp)/finder-inf.el"))' -f finder-compile-keywords-make-dist $$wins
|
||||
|
||||
# The chmod +w is to handle env var CVSREAD=1.
|
||||
autoloads: $(LOADDEFS) doit
|
||||
cd $(lisp) && chmod +w $(AUTOGEN_VCS)
|
||||
cd $(lisp); $(setwins_almost); \
|
||||
echo Directories: $$wins; \
|
||||
$(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins
|
||||
$(emacs) -l autoload --eval '(setq generated-autoload-file (reveal-filename "$(lisp)/loaddefs.el"))' -f batch-update-autoloads $$wins
|
||||
|
||||
# This is required by the bootstrap-emacs target in ../src/Makefile, so
|
||||
# we know that if we have an emacs executable, we also have a subdirs.el.
|
||||
|
@ -274,7 +278,7 @@ compile-main: compile-clean
|
|||
test -f $$el || continue; \
|
||||
test ! -f $${el}c && GREP_OPTIONS= grep '^;.*no-byte-compile: t' $$el > /dev/null && continue; \
|
||||
echo "$${el}c"; \
|
||||
done | xargs echo) | \
|
||||
done | xargs $(XARGS_LIMIT) echo) | \
|
||||
while read chunk; do \
|
||||
$(MAKE) $(MFLAGS) compile-targets EMACS="$(EMACS)" TARGETS="$$chunk"; \
|
||||
done
|
||||
|
@ -369,7 +373,7 @@ mh-autoloads: $(MH_E_DIR)/mh-loaddefs.el
|
|||
$(MH_E_DIR)/mh-loaddefs.el: $(MH_E_SRC)
|
||||
$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \
|
||||
--eval "(setq generated-autoload-file \"$@\")" \
|
||||
--eval "(setq generated-autoload-file (reveal-filename \"$@\"))" \
|
||||
--eval "(setq make-backup-files nil)" \
|
||||
-f batch-update-autoloads $(MH_E_DIR)
|
||||
|
||||
|
@ -387,7 +391,7 @@ TRAMP_SRC = $(TRAMP_DIR)/tramp.el $(TRAMP_DIR)/tramp-adb.el \
|
|||
$(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC)
|
||||
$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###tramp-autoload\")" \
|
||||
--eval "(setq generated-autoload-file \"$@\")" \
|
||||
--eval "(setq generated-autoload-file (reveal-filename \"$@\"))" \
|
||||
--eval "(setq make-backup-files nil)" \
|
||||
-f batch-update-autoloads $(TRAMP_DIR)
|
||||
|
||||
|
@ -409,21 +413,21 @@ CAL_SRC = $(CAL_DIR)/cal-bahai.el $(CAL_DIR)/cal-china.el \
|
|||
$(CAL_DIR)/cal-loaddefs.el: $(CAL_SRC)
|
||||
$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###cal-autoload\")" \
|
||||
--eval "(setq generated-autoload-file \"$@\")" \
|
||||
--eval "(setq generated-autoload-file (reveal-filename \"$@\"))" \
|
||||
--eval "(setq make-backup-files nil)" \
|
||||
-f batch-update-autoloads $(CAL_DIR)
|
||||
|
||||
$(CAL_DIR)/diary-loaddefs.el: $(CAL_SRC)
|
||||
$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###diary-autoload\")" \
|
||||
--eval "(setq generated-autoload-file \"$@\")" \
|
||||
--eval "(setq generated-autoload-file (reveal-filename \"$@\"))" \
|
||||
--eval "(setq make-backup-files nil)" \
|
||||
-f batch-update-autoloads $(CAL_DIR)
|
||||
|
||||
$(CAL_DIR)/hol-loaddefs.el: $(CAL_SRC)
|
||||
$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###holiday-autoload\")" \
|
||||
--eval "(setq generated-autoload-file \"$@\")" \
|
||||
--eval "(setq generated-autoload-file (reveal-filename \"$@\"))" \
|
||||
--eval "(setq make-backup-files nil)" \
|
||||
-f batch-update-autoloads $(CAL_DIR)
|
||||
|
||||
|
|
|
@ -290,9 +290,12 @@
|
|||
(equal (nth 4 command-line-args) "dump"))
|
||||
(not (eq system-type 'ms-dos)))
|
||||
(let* ((base (concat "emacs-" emacs-version "."))
|
||||
(exelen (if (eq system-type 'windows-nt) -4))
|
||||
(files (file-name-all-completions base default-directory))
|
||||
(versions (mapcar (function (lambda (name)
|
||||
(string-to-number (substring name (length base)))))
|
||||
(versions (mapcar (function
|
||||
(lambda (name)
|
||||
(string-to-number
|
||||
(substring name (length base) exelen))))
|
||||
files)))
|
||||
(setq emacs-bzr-version (condition-case nil (emacs-bzr-get-version)
|
||||
(error nil)))
|
||||
|
@ -376,18 +379,25 @@
|
|||
(dump-emacs "emacs" "temacs")
|
||||
(message "%d pure bytes used" pure-bytes-used)
|
||||
;; Recompute NAME now, so that it isn't set when we dump.
|
||||
(if (not (or (memq system-type '(ms-dos windows-nt))
|
||||
(if (not (or (eq system-type 'ms-dos)
|
||||
;; Don't bother adding another name if we're just
|
||||
;; building bootstrap-emacs.
|
||||
(equal (nth 3 command-line-args) "bootstrap")
|
||||
(equal (nth 4 command-line-args) "bootstrap")))
|
||||
(let ((name (concat "emacs-" emacs-version)))
|
||||
(let ((name (concat "emacs-" emacs-version))
|
||||
(exe (if (eq system-type 'windows-nt) ".exe" "")))
|
||||
(while (string-match "[^-+_.a-zA-Z0-9]+" name)
|
||||
(setq name (concat (downcase (substring name 0 (match-beginning 0)))
|
||||
"-"
|
||||
(substring name (match-end 0)))))
|
||||
(setq name (concat name exe))
|
||||
(message "Adding name %s" name)
|
||||
(add-name-to-file "emacs" name t)))
|
||||
;; When this runs on Windows, invocation-directory is not
|
||||
;; necessarily the current directory.
|
||||
(add-name-to-file (expand-file-name (concat "emacs" exe)
|
||||
invocation-directory)
|
||||
(expand-file-name name invocation-directory)
|
||||
t)))
|
||||
(kill-emacs)))
|
||||
|
||||
;; For machines with CANNOT_DUMP defined in config.h,
|
||||
|
|
16
lisp/subr.el
16
lisp/subr.el
|
@ -4678,4 +4678,20 @@ as alpha versions."
|
|||
(prin1-to-string (make-hash-table)))))
|
||||
(provide 'hashtable-print-readable))
|
||||
|
||||
;; This is used in lisp/Makefile.in and in leim/Makefile.in to
|
||||
;; generate file names for autoloads, custom-deps, and finder-data.
|
||||
(defun reveal-filename (file)
|
||||
"Produce the real file name for FILE.
|
||||
|
||||
On systems other than MS-Windows, just returns FILE.
|
||||
On MS-Windows, converts /d/foo/bar form of file names
|
||||
passed by MSYS Make into d:/foo/bar that Emacs can grok.
|
||||
|
||||
This function is called from lisp/Makefile."
|
||||
(when (and (eq system-type 'windows-nt)
|
||||
(string-match "\\`/[a-zA-Z]/" file))
|
||||
(setq file (concat (substring file 1 2) ":" (substring file 2))))
|
||||
file)
|
||||
|
||||
|
||||
;;; subr.el ends here
|
||||
|
|
45
nt/ChangeLog
45
nt/ChangeLog
|
@ -1,3 +1,48 @@
|
|||
2013-05-16 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* msysconfig.sh: New file.
|
||||
|
||||
* mingw-cfg.site: New file.
|
||||
|
||||
* makefile.w32-in (LOCAL_FLAGS): Add -DOLD_PATHS=1.
|
||||
|
||||
* inc/unistd.h: Include pwd.h and sys/types.h.
|
||||
|
||||
* inc/sys/time.h (_TIMEVAL_DEFINED, timerisset, timercmp)
|
||||
(timerclear): Define.
|
||||
(gettimeofday): Adjust signature to be Posix compatible, by using
|
||||
the 'restrict' keyword.
|
||||
|
||||
* inc/sys/stat.h (UTIME_NOW, UTIME_OMIT): Define.
|
||||
(struct _stat, struct _stati64): Define.
|
||||
|
||||
* inc/sys/socket.h (timeval): Define only for MSVC.
|
||||
(FD_SET, FD_CLR, FD_ISSET, fd_set): Redefine only if
|
||||
EMACS_CONFIG_H is defined.
|
||||
(timeval): Undefine only for MSVC.
|
||||
|
||||
* inc/ms-w32.h (HAVE___BUILTIN_UNWIND_INIT, restrict)
|
||||
(HAVE_WINDOW_SYSTEM, HAVE_MENUS, EMACS_CONFIGURATION)
|
||||
(EMACS_CONFIG_OPTIONS, HAVE_LONG_LONG_INT)
|
||||
(HAVE_UNSIGNED_LONG_LONG_INT): Define only if not already defined.
|
||||
(fileno): Move definition after including stdio.h.
|
||||
(sigset_t): Guard typedef by _W64.
|
||||
|
||||
* gnulib.mk: New file.
|
||||
|
||||
* epaths.nt: New file.
|
||||
|
||||
* addpm.c [!OLD_PATHS]: Include src/epaths.h, instead of having a
|
||||
copy of the file names there.
|
||||
<env_vars> [!OLD_PATHS]: Use macros from epaths.h instead of
|
||||
literal strings.
|
||||
|
||||
* Makefile.in: New file.
|
||||
|
||||
* INSTALL.MSYS: New file.
|
||||
|
||||
* INSTALL: Mention INSTALL.MSYS.
|
||||
|
||||
2013-05-15 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* makefile.w32-in (clean, top-distclean): DOC-X doesn't exist any more.
|
||||
|
|
10
nt/INSTALL
10
nt/INSTALL
|
@ -13,9 +13,13 @@
|
|||
Do not use this recipe with Cygwin. For building on Cygwin,
|
||||
use the normal installation instructions, ../INSTALL.
|
||||
|
||||
If you have a Cygwin or MSYS port of Bash on your Path, you will be
|
||||
better off removing it from PATH. (For details, search for "MSYS
|
||||
sh.exe" below.)
|
||||
Do not use these instructions with MSYS environment. For building
|
||||
the native Windows binary with MinGW and MSYS, follow the
|
||||
instructions in the file INSTALL.MSYS in this directory.
|
||||
|
||||
For building without MSYS, if you have a Cygwin or MSYS port of Bash
|
||||
on your Path, you will be better off removing it from PATH. (For
|
||||
details, search for "MSYS sh.exe" below.)
|
||||
|
||||
1. Change to the `nt' directory (the directory of this file):
|
||||
|
||||
|
|
640
nt/INSTALL.MSYS
Normal file
640
nt/INSTALL.MSYS
Normal file
|
@ -0,0 +1,640 @@
|
|||
Building and Installing Emacs on MS-Windows
|
||||
using the MSYS and MinGW tools
|
||||
|
||||
Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
The MSYS/MinGW build described here is supported on versions of
|
||||
Windows starting with Windows 2000 and newer. Windows 9X are not
|
||||
supported (but the Emacs binary produced by this build will run on
|
||||
Windows 9X as well).
|
||||
|
||||
* For the brave (a.k.a. "impatient"):
|
||||
|
||||
For those who have a working MSYS/MinGW development environment and
|
||||
are comfortable with running Posix configure scripts, here are the
|
||||
concise instructions for configuring and building the native Windows
|
||||
binary of Emacs with these tools.
|
||||
|
||||
Do not use this recipe with Cygwin. For building on Cygwin, use the
|
||||
normal installation instructions, ../INSTALL.
|
||||
|
||||
Do not use these instructions if you don't have MSYS installed; for
|
||||
that, see the file INSTALL in this directory.
|
||||
|
||||
0. Start the MSYS Bash window. Everything else below is done from
|
||||
that window's Bash prompt.
|
||||
|
||||
0a. If you are building from the development trunk (as opposed to a
|
||||
release tarball), produce the configure script, by typing from
|
||||
the top-level Emacs source directory:
|
||||
|
||||
./autogen.sh
|
||||
|
||||
1. If you want to build Emacs outside of the source tree
|
||||
(recommended), create the build directory and chdir there.
|
||||
|
||||
2. Invoke the MSYS-specific configure script:
|
||||
|
||||
- If you are building outside the source tree:
|
||||
|
||||
/PATH/TO/EMACS/SOURCE/TREE/nt/msysconfig.sh --prefix=PREFIX ...
|
||||
|
||||
- If you are building in-place, i.e. inside the source tree:
|
||||
|
||||
./nt/msysconfig.sh --prefix=PREFIX ...
|
||||
|
||||
It is always preferable to use --prefix to configure Emacs for
|
||||
some specific location of its installed tree; the default
|
||||
/usr/local is not suitable for Windows.
|
||||
|
||||
You can pass other options to the configure script. Here's a
|
||||
typical example (for an in-place debug build):
|
||||
|
||||
CPPFLAGS='-DGLYPH_DEBUG=1' CFLAGS='-O0 -g3' ./nt/msysconfig.sh --prefix=d:/usr/emacs --enable-checking
|
||||
|
||||
3. After the configure script finishes, it should display the
|
||||
resulting configuration. After that, type
|
||||
|
||||
make
|
||||
|
||||
Use "make -j N" if your MSYS Make supports parallel execution;
|
||||
the build will take significantly less time in that case. Here N
|
||||
is the number of simultaneous parallel jobs; use the number of
|
||||
the cores on your system.
|
||||
|
||||
4. Install the produced binaries:
|
||||
|
||||
make install
|
||||
|
||||
If you want the installation tree to go to a place that is
|
||||
different from the one specified by --prefix, say
|
||||
|
||||
make install prefix=/where/ever/you/want
|
||||
|
||||
That's it!
|
||||
|
||||
If these short instructions somehow fail, read the rest of this
|
||||
file.
|
||||
|
||||
* Installing MinGW and MSYS
|
||||
|
||||
Make sure you carefully read the following two sections in their
|
||||
entirety and install/configure the various packages as instructed.
|
||||
A correct installation makes all the rest almost trivial; a botched
|
||||
installation will likely make you miserable for quite some time.
|
||||
|
||||
There are two alternative to installing MinGW + MSYS: using the GUI
|
||||
installer, called mingw-get, provided by the MinGW project, or
|
||||
manual installation. The next two sections describe each one of
|
||||
these.
|
||||
|
||||
** Installing MinGW and MSYS using mingw-get
|
||||
|
||||
A nice GUI installer, called mingw-get, is available for those who
|
||||
don't like to mess with manual installations. You can download it
|
||||
from here:
|
||||
|
||||
https://sourceforge.net/projects/mingw/files/Installer/mingw-get/
|
||||
|
||||
(This installer only supports packages downloaded from the MinGW
|
||||
site; for the rest you will still need the manual method.)
|
||||
|
||||
After installing mingw-get, invoke it to install the packages that
|
||||
are already selected by default on the "Select Components" screen of
|
||||
its wizard.
|
||||
|
||||
After that, use "ming-get install PACKAGE" to install the following
|
||||
additional packages:
|
||||
|
||||
. msys-base
|
||||
. mingw-developer-toolkit
|
||||
. msys-automake
|
||||
|
||||
(We recommend that you refrain from installing the MSYS Texinfo
|
||||
package, which is part of msys-base, because it might produce mixed
|
||||
EOL format when installing Info files. Instead, install the MinGW
|
||||
port of Texinfo, see the ezwinports URL below.)
|
||||
|
||||
At this point, you should be ready to configure and build Emacs in
|
||||
its basic configuration. Skip to the "Generating the configure
|
||||
script" section for the build instructions. If you want to build it
|
||||
with image support and other optional libraries, read about the
|
||||
optional libraries near the end of this document, before you start
|
||||
the build. Also, consider installing additional MinGW packages that
|
||||
are required/recommended, especially if you are building from the
|
||||
Bazaar repository, as described in the next section.
|
||||
|
||||
** Installing MinGW and MSYS manually
|
||||
|
||||
*** MinGW
|
||||
|
||||
You will need to install the MinGW port of GCC and Binutils, and the
|
||||
MinGW runtime and Windows API distributions, to compile Emacs. You
|
||||
can find these on the MinGW download/Base page:
|
||||
|
||||
https://sourceforge.net/projects/mingw/files/MinGW/Base/
|
||||
|
||||
In general, install the latest stable versions of the following
|
||||
MinGW packages from that page: gcc, binutils, mingw-rt, w32api. You
|
||||
only need the 'bin' and the 'dll' tarballs of each of the above.
|
||||
|
||||
MinGW packages are distributed as .tar.lzma compressed archives. To
|
||||
install the packages manually, we recommend to use the Windows port
|
||||
of the 'bsdtar' program to unpack the tarballs. 'bsdtar' is
|
||||
available as part of the 'libarchive' package from here:
|
||||
|
||||
http://sourceforge.net/projects/ezwinports/files/
|
||||
|
||||
The recommended place to install these packages is a single tree
|
||||
starting from some directory on a drive other than the system drive
|
||||
C:. A typical example would be D:\usr, with D:\usr\bin holding the
|
||||
binaries and DLLs (should be added to your Path environment
|
||||
variable), D:\usr\include holding the include files, D:\usr\lib
|
||||
holding the static and import libraries, D:\usr\share holding docs,
|
||||
message catalogs, and package-specific subdirectories, etc.
|
||||
|
||||
Having all the headers and libraries in a single place will greatly
|
||||
reduce the number of -I and -L flags you will have to pass to the
|
||||
configure script (see below), as these files will be right where the
|
||||
compiler expects them.
|
||||
|
||||
We specifically do NOT recommend installing packages below
|
||||
"C:\Program Files" or "C:\Program Files (x86)". These directories
|
||||
are protected on versions of Windows from Vista and on, and you will
|
||||
have difficulties updating and maintaining your installation later,
|
||||
due to UAC elevation prompts, file virtualization, etc. You *have*
|
||||
been warned!
|
||||
|
||||
Additional MinGW packages are required/recommended, especially if
|
||||
you are building from the Bazaar repository:
|
||||
|
||||
. Texinfo (needed to produce the Info manuals when building from
|
||||
bzr, and for "make install")
|
||||
|
||||
Available from http://sourceforge.net/projects/ezwinports/files/.
|
||||
|
||||
. gzip (needed to compress files during "make install")
|
||||
|
||||
Available from http://gnuwin32.sourceforge.net/packages/gzip.htm.
|
||||
|
||||
. pkg-config (needed for building with some optional libraries,
|
||||
such as GnuTLS and libxml2)
|
||||
|
||||
Available from http://www.gtk.org/download/win32.php
|
||||
|
||||
Each package might list other packages as prerequisites on its
|
||||
download page (under "Runtime requirements"); download those as
|
||||
well. (Using the GUI installer mingw-get will fetch those
|
||||
prerequisites automatically for you.) A missing prerequisite will
|
||||
manifest itself by the program failing to run and presenting a
|
||||
pop-up dialog that states the missing or incompatible DLL; be sure
|
||||
to find and install these missing DLLs.
|
||||
|
||||
Once you think you have MinGW installed, test the installation by
|
||||
building a trivial "hello, world!" program, and make sure that it
|
||||
builds without any error messages and the binary works when run.
|
||||
|
||||
*** MSYS
|
||||
|
||||
You will need a reasonably full MSYS installation. MSYS is an
|
||||
environment needed to run the Posix configure scripts and the
|
||||
resulting Makefile's, in order to produce native Windows binaries
|
||||
using the MinGW compiler and runtime libraries. Here's the list of
|
||||
MSYS packages that are required:
|
||||
|
||||
. All the packages from the MSYS Base distribution, listed here:
|
||||
|
||||
https://sourceforge.net/projects/mingw/files/MSYS/Base/
|
||||
|
||||
. Additional packages listed below, from the MSYS Extension
|
||||
distribution here:
|
||||
|
||||
https://sourceforge.net/projects/mingw/files/MSYS/Extension/
|
||||
|
||||
- flex
|
||||
- bison
|
||||
- m4
|
||||
- perl
|
||||
- mktemp
|
||||
|
||||
These should only be needed if you intend to build development
|
||||
versions of Emacs from the Bazaar repository.
|
||||
|
||||
. Additional packages (needed only if building from the Bazaar
|
||||
repository): Automake and Autoconf. They are available from
|
||||
here:
|
||||
|
||||
http://sourceforge.net/projects/ezwinports/files/automake-1.11.6-msys-bin.zip/download
|
||||
http://sourceforge.net/projects/ezwinports/files/autoconf-2.65-msys-bin.zip/download
|
||||
|
||||
MSYS packages are distributed as .tar.lzma compressed archives. To
|
||||
install the packages manually, we recommend to use the Windows port
|
||||
of the 'bsdtar' program, already mentioned above.
|
||||
|
||||
If/when you are confident in your MinGW/MSYS installation, and want
|
||||
to speed up the builds, we recommend installing a pre-release
|
||||
version of Make from here:
|
||||
|
||||
https://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
|
||||
|
||||
These are snapshot builds of many packages, but you only need
|
||||
make.exe from there. The advantage of this make.exe is that it
|
||||
supports parallel builds, so you can use "make -j N" to considerably
|
||||
speed up your builds
|
||||
|
||||
For each of these packages, install the 'bin' and 'dll' tarballs of
|
||||
their latest stable releases. If there's an 'ext' tarball (e.g.,
|
||||
msysCORE and Coreutils have it), download and install those as well.
|
||||
|
||||
Each package might list other packages as prerequisites on its
|
||||
download page (under "Runtime requirements"); download those as
|
||||
well. (Using the GUI installer mingw-get will fetch those
|
||||
prerequisites automatically for you.) A missing prerequisite will
|
||||
manifest itself by the program failing to run and presenting a
|
||||
pop-up dialog that states the missing or incompatible DLL; be sure
|
||||
to find and install these missing DLLs.
|
||||
|
||||
MSYS packages should be installed in a separate tree from MinGW.
|
||||
For example, use D:\MSYS or D:\usr\MSYS as the top-level directory
|
||||
from which you unpack all of the MSYS packages.
|
||||
|
||||
Do NOT add the MSYS bin directory to your Windows Path! Only the
|
||||
MinGW bin directory should be on Path. When you install MSYS, it
|
||||
creates a shortcut on your desktop that invokes the MSYS Bash shell
|
||||
in a Command Prompt window; that shell is already set up so that the
|
||||
MSYS bin directory is on PATH ahead of any other directory. Thus,
|
||||
Bash will find MSYS executables first, which is exactly what you
|
||||
need.
|
||||
|
||||
At this point, you are ready to build Emacs in its basic
|
||||
configuration. If you want to build it with image support and other
|
||||
optional libraries, read about that near the end of this document.
|
||||
|
||||
* Generating the configure script
|
||||
|
||||
If you are building a release or pretest tarball, skip this section,
|
||||
because the configure script is already present in the tarball.
|
||||
|
||||
To build a development snapshot from the Emacs Bazaar repository,
|
||||
you will first need to generate the configure script and a few other
|
||||
auto-generated files. (If this step, described below, somehow
|
||||
fails, you can use the files in the autogen/ directory instead, but
|
||||
they might be outdated, and, most importantly, you are well advised
|
||||
not to disregard any failures in your local build procedures, as
|
||||
these are likely to be symptoms of incorrect installation that will
|
||||
bite you down the road.)
|
||||
|
||||
To generate the configure script, type this at the MSYS Bash prompt
|
||||
from the top-level directory of the Emacs tree:
|
||||
|
||||
./autogen.sh
|
||||
|
||||
If successful, this command should produce the following output:
|
||||
|
||||
$ ./autogen.sh
|
||||
Checking whether you have the necessary tools...
|
||||
(Read INSTALL.BZR for more details on building Emacs)
|
||||
|
||||
Checking for autoconf (need at least version 2.65)...
|
||||
ok
|
||||
Checking for automake (need at least version 1.11)...
|
||||
ok
|
||||
Your system has the required tools, running autoreconf...
|
||||
You can now run `./configure'.
|
||||
|
||||
* Configuring Emacs for MinGW:
|
||||
|
||||
Now it's time to run the configure script. You can do that either
|
||||
from a separate build directory that is outside of the Emacs source
|
||||
tree (recommended), or from inside the source tree. The former is
|
||||
recommended because it allows you to have several different builds,
|
||||
e.g., an optimized build and an unoptimized one, of the same
|
||||
revision of the source tree; the source tree will be left in its
|
||||
pristine state, without any build products.
|
||||
|
||||
You invoke the configure script like this:
|
||||
|
||||
/PATH/TO/EMACS/SOURCE/TREE/nt/msysconfig.sh --prefix=PREFIX ...
|
||||
|
||||
or, if you are building in-place, i.e. inside the source tree:
|
||||
|
||||
./nt/msysconfig.sh --prefix=PREFIX ...
|
||||
|
||||
Here PREFIX is the place where you eventually want to install Emacs
|
||||
once built, e.g. d:/usr.
|
||||
|
||||
You can pass additional options to the configure script, for the
|
||||
full list type
|
||||
|
||||
./nt/msysconfig.sh --help
|
||||
|
||||
As explained in the help text, you may need to tell the script what
|
||||
are the optional flags to invoke the compiler. This is needed if
|
||||
some of your headers and libraries, e.g., those belonging to
|
||||
optional image libraries, are installed in places where the compiler
|
||||
normally doesn't look for them. (Remember that advice above to
|
||||
avoid such situations? here's is where you will start paying for
|
||||
disregarding that recommendation.) For example, if you have libpng
|
||||
headers in C:\emacs\libs\libpng-1.2.37-lib\include and jpeg library
|
||||
headers in C:\emacs\libs\jpeg-6b-4-lib\include, you will need to say
|
||||
something like this:
|
||||
|
||||
CPPFLAGS='-Ic:/emacs/libs/libpng-1.2.37-lib/include -Ic:/emacs/libs/jpeg-6b-4-lib/include' ./nt/msysconfig.sh --prefix=PREFIX
|
||||
|
||||
which is quite a mouth-full, especially if you have more directories
|
||||
to specify... Perhaps you may wish to revisit your installation
|
||||
decisions now.
|
||||
|
||||
A few frequently used options are needed when you want to produce an
|
||||
unoptimized binary with runtime checks enabled:
|
||||
|
||||
CPPFLAGS='-DGLYPH_DEBUG=1' CFLAGS='-O0 -g3' ./nt/msysconfig.sh --prefix=PREFIX --enable-checking
|
||||
|
||||
Once invoked, the configure script will run for some time, and, if
|
||||
successful, will eventually produce a summary of the configuration
|
||||
like this:
|
||||
|
||||
Configured for `i686-pc-mingw32'.
|
||||
|
||||
Where should the build process find the source code? /path/to/emacs/sources
|
||||
What compiler should emacs be built with? gcc -std=gnu99 -O0 -g3
|
||||
Should Emacs use the GNU version of malloc? yes
|
||||
Should Emacs use a relocating allocator for buffers? yes
|
||||
Should Emacs use mmap(2) for buffer allocation? no
|
||||
What window system should Emacs use? w32
|
||||
What toolkit should Emacs use? none
|
||||
Where do we find X Windows header files? NONE
|
||||
Where do we find X Windows libraries? NONE
|
||||
Does Emacs use -lXaw3d? no
|
||||
Does Emacs use -lXpm? yes
|
||||
Does Emacs use -ljpeg? yes
|
||||
Does Emacs use -ltiff? yes
|
||||
Does Emacs use a gif library? yes
|
||||
Does Emacs use -lpng? yes
|
||||
Does Emacs use -lrsvg-2? no
|
||||
Does Emacs use imagemagick? no
|
||||
Does Emacs use -lgpm? no
|
||||
Does Emacs use -ldbus? no
|
||||
Does Emacs use -lgconf? no
|
||||
Does Emacs use GSettings? no
|
||||
Does Emacs use -lselinux? no
|
||||
Does Emacs use -lgnutls? yes
|
||||
Does Emacs use -lxml2? yes
|
||||
Does Emacs use -lfreetype? no
|
||||
Does Emacs use -lm17n-flt? no
|
||||
Does Emacs use -lotf? no
|
||||
Does Emacs use -lxft? no
|
||||
Does Emacs use toolkit scroll bars? yes
|
||||
|
||||
You are almost there, hang on.
|
||||
|
||||
If the output is significantly different, or if configure finishes
|
||||
prematurely and displays some error message, you should examine the
|
||||
configuration log in config.log and find the reason for the failure.
|
||||
|
||||
Once you succeeded in configuring Emacs, and just want to rebuild it
|
||||
after updating your local repository from the main repository, you
|
||||
don't need to re-run the configure script manually, unless you want
|
||||
to change the configure-time options. Just typing "make" will
|
||||
re-run configure if necessary with the exact same options you
|
||||
specified originally, and then go on to invoking Make, described
|
||||
below.
|
||||
|
||||
* Running Make.
|
||||
|
||||
This is simple: just type "make" and sit back, watching the fun.
|
||||
|
||||
If you installed a snapshot build of Make, the build will be much
|
||||
faster if you type "make -j N" instead, where N is the number of
|
||||
independent processing units on your machine. E.g., on a core i7
|
||||
system try using N of 6 or even 8.
|
||||
|
||||
When Make finishes, you can install the produced binaries:
|
||||
|
||||
make install
|
||||
|
||||
or, if you want the installed tree to go in a place different from
|
||||
the configured one, type
|
||||
|
||||
make install prefix=WHEREVER
|
||||
|
||||
Congrats! You have built and installed your own Emacs!
|
||||
|
||||
* Make targets
|
||||
|
||||
The following make targets may be used by users building the source
|
||||
distribution, or users who have checked out of Bazaar after
|
||||
an initial bootstrapping.
|
||||
|
||||
make
|
||||
Builds Emacs from the available sources and pre-compiled lisp files.
|
||||
|
||||
make install
|
||||
Installs the built programs and the auxiliary files.
|
||||
|
||||
make clean
|
||||
Removes object and executable files produced by the build process in
|
||||
the current configuration. After "make clean", you can rebuild with
|
||||
the same configuration using make. useful when you want to be sure
|
||||
that all of the products are built from coherent sources.
|
||||
|
||||
make distclean
|
||||
In addition to the files removed by make clean, this also removes
|
||||
Makefiles and other generated files to get back to the state of a
|
||||
freshly unpacked source distribution. After make distclean, it is
|
||||
necessary to run the configure script followed by "make", in order
|
||||
to rebuild.
|
||||
|
||||
The following targets are intended only for use with the Bazaar sources.
|
||||
|
||||
make bootstrap
|
||||
Removes all the auto-generated files and all the *.elc byte-compiled
|
||||
files, and builds Emacs from scratch. Useful when some change in
|
||||
basic Emacs functionality makes byte compilation of updated files
|
||||
fail.
|
||||
|
||||
make maintainer-clean
|
||||
Removes everything that can be recreated, including compiled Lisp
|
||||
files, to get back to the state of a fresh Bazaar tree. After make
|
||||
maintainer-clean, it is necessary to run configure and "make" or
|
||||
"make bootstrap" to rebuild. Occasionally it may be necessary to
|
||||
run this target after an update.
|
||||
|
||||
* Optional image library support
|
||||
|
||||
In addition to its "native" image formats (pbm and xbm), Emacs can
|
||||
handle other image types: xpm, tiff, gif, png, jpeg and experimental
|
||||
support for svg.
|
||||
|
||||
To build Emacs with support for them, the corresponding headers must
|
||||
be in the include path and libraries should be where the linker
|
||||
looks for them, when the configure script is run. If needed, this
|
||||
can be set up using the CPPFLAGS and CFLAGS variable specified on
|
||||
the configure command line. The configure script will report
|
||||
whether it was able to detect the headers and libraries. If the
|
||||
results of this testing appear to be incorrect, please look for
|
||||
details in the file config.log: it will show the failed test
|
||||
programs and compiler error messages that should explain what is
|
||||
wrong. (Usually, any such failures happen because some headers are
|
||||
missing due to bad packaging of the image support libraries.)
|
||||
|
||||
Note that any file path passed to the compiler or linker must use
|
||||
forward slashes, or double each backslash, as that is how Bash
|
||||
works.
|
||||
|
||||
If the configure script finds the necessary headers and libraries,
|
||||
but they are for some reason incompatible, or if you want to omit
|
||||
support for some image library that is installed on your system for
|
||||
some other reason, use the --without-PACKAGE option to configure,
|
||||
such as --without-gif to omit GIF, --without-tiff to omit TIFF, etc.
|
||||
Passing the --help option to the configure script displays all of
|
||||
the supported --without-PACKAGE options.
|
||||
|
||||
To use the external image support, the DLLs implementing the
|
||||
functionality must be found when Emacs first needs them, either on the
|
||||
PATH, or in the same directory as emacs.exe. Failure to find a
|
||||
library is not an error; the associated image format will simply be
|
||||
unavailable. Note that once Emacs has determined that a library can
|
||||
not be found, there's no way to force it to try again, other than
|
||||
restarting. See the variable `dynamic-library-alist' to configure the
|
||||
expected names of the libraries.
|
||||
|
||||
Some image libraries have dependencies on one another, or on zlib.
|
||||
For example, tiff support depends on the jpeg library. If you did not
|
||||
compile the libraries yourself, you must make sure that any dependency
|
||||
is in the PATH or otherwise accessible and that the binaries are
|
||||
compatible (for example, that they were built with the same compiler).
|
||||
|
||||
Binaries for the image libraries (among many others) can be found at
|
||||
the GnuWin32 project. PNG, JPEG and TIFF libraries are also
|
||||
included with GTK, which is installed along with other Free Software
|
||||
that requires it. Note specifically that, due to some packaging
|
||||
snafus in the GnuWin32-supplied image libraries, you will need to
|
||||
download _source_ packages for some of the libraries in order to get
|
||||
the header files necessary for building Emacs with image support.
|
||||
|
||||
For PNG images, we recommend to use versions 1.4.x and later of
|
||||
libpng, because previous versions had security issues. You can find
|
||||
precompiled libraries and headers on the GTK download page for
|
||||
Windows (http://www.gtk.org/download/win32.php).
|
||||
|
||||
Versions 1.4.0 and later of libpng are binary incompatible with
|
||||
earlier versions, so Emacs will only look for libpng libraries which
|
||||
are compatible with the version it was compiled against. That
|
||||
version is given by the value of the Lisp variable `libpng-version';
|
||||
e.g., 10403 means version 1.4.3. The variable `dynamic-library-alist'
|
||||
is automatically set to name only those DLL names that are known to
|
||||
be compatible with the version given by `libpng-version'. If PNG
|
||||
support does not work for you even though you have the support DLL
|
||||
installed, check the name of the installed DLL against
|
||||
`dynamic-library-alist' and the value of `libpng-version', and
|
||||
download compatible DLLs if needed.
|
||||
|
||||
* Optional GnuTLS support
|
||||
|
||||
To compile with GnuTLS, you will need pkg-config to be installed, as
|
||||
the configure script invokes pkg-config to find out which compiler
|
||||
switches to use for GnuTLS. See above for the URL where you can
|
||||
find pkg-config for Windows.
|
||||
|
||||
You will also need to install the p11-kit package, which is a
|
||||
dependency of GnuTLS, and its header files are needed for
|
||||
compilation of programs that use GnuTLS. You can find p11-kit on
|
||||
the same site as GnuTLS, see the URL below.
|
||||
|
||||
If the configure script finds the GnuTLS header files and libraries
|
||||
on your system, Emacs is built with GnuTLS support by default; to
|
||||
avoid that you can pass the argument --without-gnutls.
|
||||
|
||||
In order to support GnuTLS at runtime, a GnuTLS-enabled Emacs must
|
||||
be able to find the relevant DLLs during startup; failure to do so
|
||||
is not an error, but GnuTLS won't be available to the running
|
||||
session.
|
||||
|
||||
You can get pre-built binaries (including any required DLL and the
|
||||
header files) at http://sourceforge.net/projects/ezwinports/files/.
|
||||
|
||||
* Optional libxml2 support
|
||||
|
||||
To compile with libxml2, you will need pkg-config to be installed,
|
||||
as the configure script invokes pkg-config to find out which
|
||||
compiler switches to use for libxml2. See above for the URL where
|
||||
you can find pkg-config for Windows.
|
||||
|
||||
If the configure script finds the libxml2 header files and libraries
|
||||
on your system, Emacs is built with libxml2 support by default; to
|
||||
avoid that you can pass the argument --without-libxml2.
|
||||
|
||||
In order to support libxml2 at runtime, a libxml2-enabled Emacs must
|
||||
be able to find the relevant DLLs during startup; failure to do so
|
||||
is not an error, but libxml2 features won't be available to the
|
||||
running session.
|
||||
|
||||
One place where you can get pre-built Windows binaries of libxml2
|
||||
(including any required DLL and the header files) is here:
|
||||
|
||||
http://sourceforge.net/projects/ezwinports/files/
|
||||
|
||||
For runtime support of libxml2, you will also need to install the
|
||||
libiconv "development" tarball, because the libiconv headers need to
|
||||
be available to the compiler when you compile with libxml2 support.
|
||||
A MinGW port of libiconv can be found on the MinGW site:
|
||||
|
||||
http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/
|
||||
|
||||
You need the libiconv-X.Y.Z-N-mingw32-dev.tar.lzma tarball from that
|
||||
site.
|
||||
|
||||
* Experimental SVG support
|
||||
|
||||
To compile with SVG, you will need pkg-config to be installed, as
|
||||
the configure script invokes pkg-config to find out which compiler
|
||||
switches to use for SVG. See above for the URL where you can find
|
||||
pkg-config for Windows.
|
||||
|
||||
SVG support is currently experimental, and not built by default.
|
||||
Specify --with-rsvg and ensure you have all the dependencies in your
|
||||
include path. Unless you have built a minimalist librsvg yourself
|
||||
(untested), librsvg depends on a significant chunk of GTK+ to build,
|
||||
plus a few Gnome libraries, libxml2, libbz2 and zlib at runtime. The
|
||||
easiest way to obtain the dependencies required for building is to
|
||||
download a pre-bundled GTK+ development environment for Windows.
|
||||
|
||||
To use librsvg at runtime, ensure that librsvg and its dependencies
|
||||
are on your PATH. If you didn't build librsvg yourself, you will
|
||||
need to check with where you downloaded it from for the
|
||||
dependencies, as there are different build options. If it is a
|
||||
short list, then it most likely only lists the immediate
|
||||
dependencies of librsvg, but the dependencies themselves have
|
||||
dependencies - so don't download individual libraries from GTK+,
|
||||
download and install the whole thing. If you think you've got all
|
||||
the dependencies and SVG support is still not working, check your
|
||||
PATH for other libraries that shadow the ones you downloaded.
|
||||
Libraries of the same name from different sources may not be
|
||||
compatible, this problem was encountered with libbzip2 from GnuWin32
|
||||
with libcroco from gnome.org.
|
||||
|
||||
If you can see etc/images/splash.svg, then you have managed to get
|
||||
SVG support working. Congratulations for making it through DLL hell
|
||||
to this point. You'll probably find that some SVG images crash
|
||||
Emacs. Problems have been observed in some images that contain
|
||||
text, they seem to be a problem in the Windows port of Pango, or
|
||||
maybe a problem with the way Cairo or librsvg is using it that
|
||||
doesn't show up on other platforms.
|
||||
|
||||
|
||||
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/>.
|
212
nt/Makefile.in
Normal file
212
nt/Makefile.in
Normal file
|
@ -0,0 +1,212 @@
|
|||
# nt/Makefile for GNU Emacs.
|
||||
|
||||
# Copyright (C) 2013 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 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@
|
||||
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@
|
||||
|
||||
# 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@
|
||||
|
||||
# ==================== 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@
|
||||
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.
|
||||
DONT_INSTALL = addsection${EXEEXT}
|
||||
|
||||
# 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."
|
||||
umask 022; ${MKDIR_P} $(DESTDIR)${archlibdir}
|
||||
if [ `cd $(DESTDIR)${archlibdir} && /bin/pwd` != `/bin/pwd` ]; then \
|
||||
for file in ${UTILITIES}; do \
|
||||
$(INSTALL_PROGRAM) $(INSTALL_STRIP) $$file $(DESTDIR)${archlibdir}/$$file ; \
|
||||
done ; \
|
||||
fi
|
||||
|
||||
.PHONY: install uninstall mostlyclean clean distclean maintainer-clean
|
||||
.PHONY: extraclean check tags
|
||||
|
||||
install: $(DESTDIR)${archlibdir}
|
||||
@echo
|
||||
@echo "Installing utilities for users to run."
|
||||
umask 022; ${MKDIR_P} $(DESTDIR)${bindir}
|
||||
for file in ${INSTALLABLES} ; do \
|
||||
$(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} $(DESTDIR)${bindir}/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \
|
||||
done
|
||||
|
||||
uninstall:
|
||||
for file in ${INSTALLABLES}; do \
|
||||
rm -f $(DESTDIR)${bindir}/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \
|
||||
done
|
||||
if [ -d $(DESTDIR)${archlibdir} ]; then \
|
||||
(cd $(DESTDIR)${archlibdir} && rm -f ${UTILITIES}) \
|
||||
fi
|
||||
|
||||
mostlyclean:
|
||||
-rm -f core *.o
|
||||
|
||||
clean: mostlyclean
|
||||
-rm -f ${EXE_FILES}
|
||||
|
||||
distclean: clean
|
||||
-rm -f TAGS
|
||||
-rm -f Makefile
|
||||
|
||||
maintainer-clean: distclean
|
||||
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
|
||||
addsection${EXEEXT}: ${srcdir}/addsection.c
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/addsection.c -o addsection${EXEEXT}
|
||||
|
||||
addpm${EXEEXT}: ${srcdir}/addpm.c ../src/epaths.h
|
||||
$(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}
|
||||
|
||||
cmdproxy${EXEEXT}: ${srcdir}/cmdproxy.c
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/cmdproxy.c -o cmdproxy${EXEEXT}
|
||||
|
||||
runemacs${EXEEXT}: ${srcdir}/runemacs.c $(EMACSRES)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/runemacs.c $(EMACSRES) -mwindows \
|
||||
-o runemacs${EXEEXT}
|
||||
|
||||
emacs.res: ${srcdir}/emacs.rc ${srcdir}/icons/emacs.ico ${srcdir}/$(EMACS_MANIFEST)
|
||||
${WINDRES} -O coff -o emacs.res ${srcdir}/emacs.rc
|
17
nt/addpm.c
17
nt/addpm.c
|
@ -50,6 +50,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include <shlobj.h>
|
||||
#include <ddeml.h>
|
||||
|
||||
#ifndef OLD_PATHS
|
||||
#include "../src/epaths.h"
|
||||
#endif
|
||||
|
||||
HDDEDATA CALLBACK
|
||||
DdeCallback (UINT uType, UINT uFmt, HCONV hconv,
|
||||
HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
|
||||
|
@ -76,6 +80,7 @@ static struct entry
|
|||
}
|
||||
env_vars[] =
|
||||
{
|
||||
#ifdef OLD_PATHS
|
||||
{"emacs_dir", NULL},
|
||||
{"EMACSLOADPATH", "%emacs_dir%/site-lisp;%emacs_dir%/../site-lisp;%emacs_dir%/lisp;%emacs_dir%/leim"},
|
||||
{"SHELL", "%emacs_dir%/bin/cmdproxy.exe"},
|
||||
|
@ -86,6 +91,18 @@ env_vars[] =
|
|||
/* {"INFOPATH", "%emacs_dir%/info"}, */
|
||||
{"EMACSDOC", "%emacs_dir%/etc"},
|
||||
{"TERM", "cmd"}
|
||||
#else /* !OLD_PATHS */
|
||||
{"emacs_dir", NULL},
|
||||
{"EMACSLOADPATH", PATH_SITELOADSEARCH ";" PATH_LOADSEARCH},
|
||||
{"SHELL", PATH_EXEC "/cmdproxy.exe"},
|
||||
{"EMACSDATA", PATH_DATA},
|
||||
{"EMACSPATH", PATH_EXEC},
|
||||
/* We no longer set INFOPATH because Info-default-directory-list
|
||||
is then ignored. */
|
||||
/* {"INFOPATH", "%emacs_dir%/info"}, */
|
||||
{"EMACSDOC", PATH_DOC},
|
||||
{"TERM", "cmd"}
|
||||
#endif
|
||||
};
|
||||
|
||||
BOOL
|
||||
|
|
89
nt/epaths.nt
Normal file
89
nt/epaths.nt
Normal file
|
@ -0,0 +1,89 @@
|
|||
/* Hey Emacs, this is -*- C -*- code! */
|
||||
/* epaths.in file for MS-Windows build that uses the configure script.
|
||||
|
||||
Since Emacs on Windows must be relocatable to any directory, it
|
||||
cannot have here hard-coded directories determined at configure
|
||||
time. Therefore, each directory must begin with %emacs_dir%, which
|
||||
is resolved at startup to the root of the Emacs installation tree
|
||||
(see w32.c:init_environment).
|
||||
|
||||
This file is edited at configure time to replace @VER@ by the Emacs
|
||||
version being built (e.g., 25.9.77), @CFG@ by the canonical name of
|
||||
the host system (e.g., i686-pc-mingw32), and @SRC@ by the root of
|
||||
the Emacs source tree used to build Emacs. */
|
||||
/*
|
||||
Copyright (C) 1993, 1995, 1997, 1999, 2001-2013 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 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/>. */
|
||||
|
||||
|
||||
/* Together with PATH_SITELOADSEARCH, this gives the default value of
|
||||
load-path, which is the search path for the Lisp function "load".
|
||||
Configure (using "make epaths-force") sets this to
|
||||
${standardlisppath}, which typically has a value like:
|
||||
<datadir>/emacs/VERSION/lisp:<datadir>/emacs/VERSION/leim
|
||||
where datadir is eg /usr/local/share.
|
||||
*/
|
||||
#define PATH_LOADSEARCH "%emacs_dir%/share/emacs/@VER@/lisp;%emacs_dir%/share/emacs/@VER@/leim"
|
||||
|
||||
/* Like PATH_LOADSEARCH, but contains the non-standard pieces.
|
||||
These are the site-lisp directories, typically something like
|
||||
<datadir>/emacs/VERSION/site-lisp:<datadir>/emacs/site-lisp
|
||||
Configure prepends any $locallisppath, as set by the
|
||||
--enable-locallisppath argument.
|
||||
This is combined with PATH_LOADSEARCH to make the default load-path.
|
||||
If the --no-site-lisp option is used, this piece is excluded.
|
||||
*/
|
||||
#define PATH_SITELOADSEARCH "%emacs_dir%/share/emacs/@VER@/site-lisp;%emacs_dir%/share/emacs/site-lisp"
|
||||
|
||||
/* Like PATH_LOADSEARCH, but used only during the build process
|
||||
when Emacs is dumping. Configure (using "make epaths-force") sets
|
||||
this to $buildlisppath, which normally has the value: <srcdir>/lisp.
|
||||
*/
|
||||
#define PATH_DUMPLOADSEARCH "@SRC@/lisp"
|
||||
|
||||
/* The extra search path for programs to invoke. This is appended to
|
||||
whatever the PATH environment variable says to set the Lisp
|
||||
variable exec-path and the first file name in it sets the Lisp
|
||||
variable exec-directory. exec-directory is used for finding
|
||||
executables and other architecture-dependent files. */
|
||||
#define PATH_EXEC "%emacs_dir%/libexec/emacs/@VER@/@CFG@"
|
||||
|
||||
/* Where Emacs should look for its architecture-independent data
|
||||
files, like the NEWS file. The lisp variable data-directory
|
||||
is set to this value. */
|
||||
#define PATH_DATA "%emacs_dir%/share/emacs/@VER@/etc"
|
||||
|
||||
/* Where Emacs should look for X bitmap files.
|
||||
The lisp variable x-bitmap-file-path is set based on this value. */
|
||||
#define PATH_BITMAPS ""
|
||||
|
||||
/* Where Emacs should look for its docstring file. The lisp variable
|
||||
doc-directory is set to this value. */
|
||||
#define PATH_DOC "%emacs_dir%/share/emacs/@VER@/etc"
|
||||
|
||||
/* Where the configuration process believes the info tree lives. The
|
||||
lisp variable configure-info-directory gets its value from this
|
||||
macro, and is then used to set the Info-default-directory-list. */
|
||||
#define PATH_INFO "%emacs_dir%/share/info"
|
||||
|
||||
/* Where Emacs should store game score files. */
|
||||
#define PATH_GAME "%emacs_dir%/var/games/emacs"
|
||||
|
||||
/* Where Emacs should look for the application default file. */
|
||||
#define PATH_X_DEFAULTS ""
|
||||
|
902
nt/gnulib.mk
Normal file
902
nt/gnulib.mk
Normal file
|
@ -0,0 +1,902 @@
|
|||
## This file is an edited copy if ../lib/gnulib.mk.
|
||||
##
|
||||
## The purpose of the edits is to avoid generating any headers
|
||||
## which would conflict with either the headers we have in nt/inc,
|
||||
## or with MinGW system headers and subsequent redirection of some
|
||||
## functions in nt/inc/ms-w32.h.
|
||||
##
|
||||
## In general, do NOT remove anything from ../lib/gnulib.mk that
|
||||
## doesn't need to be removed, to minimize the differences from
|
||||
## upstream gnulib.mk and thus make the maintenance easier. Every
|
||||
## header file whose generation is controlled by configure-time tests
|
||||
## does NOT need to be removed; instead, force the configure script to
|
||||
## accept whatever MinGW has to offer, by defining the appropriate
|
||||
## Autoconf variable in the nt/mingw-cfg.site file. Headers that are
|
||||
## generated conditionally have the tell-tale "if GL_GENERATE_foo_H"
|
||||
## condition before their Makefile snippet in this file. Likewise, do
|
||||
## NOT remove gnulib modules which introduce header files that don't
|
||||
## exist in MinGW and in nt/inc/, since they cannot possibly clash
|
||||
## with anything. Gnulib modules that introduce source *.c files also
|
||||
## need not be removed; if they define functions that could clash with
|
||||
## the w32 substitutes in Emacs, disable their compilation by defining
|
||||
## suitable variables in nt/mingw-cfg.site.
|
||||
##
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file 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.
|
||||
#
|
||||
# This file 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 this file. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception to the GNU General Public License,
|
||||
# this file may be distributed as part of a program that
|
||||
# contains a configuration script generated by Autoconf, under
|
||||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=dup --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings memrchr mktime pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
|
||||
|
||||
MOSTLYCLEANFILES += core *.stackdump
|
||||
|
||||
noinst_LIBRARIES += libgnu.a
|
||||
|
||||
libgnu_a_SOURCES =
|
||||
libgnu_a_LIBADD = $(gl_LIBOBJS)
|
||||
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
|
||||
EXTRA_libgnu_a_SOURCES =
|
||||
|
||||
## begin gnulib module alloca-opt
|
||||
|
||||
BUILT_SOURCES += $(ALLOCA_H)
|
||||
|
||||
# We need the following in order to create <alloca.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
if GL_GENERATE_ALLOCA_H
|
||||
alloca.h: alloca.in.h $(top_builddir)/config.status
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||
cat $(srcdir)/alloca.in.h; \
|
||||
} > $@-t && \
|
||||
mv -f $@-t $@
|
||||
else
|
||||
alloca.h: $(top_builddir)/config.status
|
||||
rm -f $@
|
||||
endif
|
||||
MOSTLYCLEANFILES += alloca.h alloca.h-t
|
||||
|
||||
EXTRA_DIST += alloca.in.h
|
||||
|
||||
## end gnulib module alloca-opt
|
||||
|
||||
## begin gnulib module c-ctype
|
||||
|
||||
libgnu_a_SOURCES += c-ctype.h c-ctype.c
|
||||
|
||||
## end gnulib module c-ctype
|
||||
|
||||
## begin gnulib module c-strcase
|
||||
|
||||
libgnu_a_SOURCES += c-strcase.h c-strcasecmp.c c-strncasecmp.c
|
||||
|
||||
## end gnulib module c-strcase
|
||||
|
||||
## begin gnulib module close-stream
|
||||
|
||||
libgnu_a_SOURCES += close-stream.c
|
||||
|
||||
EXTRA_DIST += close-stream.h
|
||||
|
||||
## end gnulib module close-stream
|
||||
|
||||
## begin gnulib module crypto/md5
|
||||
|
||||
libgnu_a_SOURCES += md5.c
|
||||
|
||||
EXTRA_DIST += md5.h
|
||||
|
||||
## end gnulib module crypto/md5
|
||||
|
||||
## begin gnulib module crypto/sha1
|
||||
|
||||
libgnu_a_SOURCES += sha1.c
|
||||
|
||||
EXTRA_DIST += sha1.h
|
||||
|
||||
## end gnulib module crypto/sha1
|
||||
|
||||
## begin gnulib module crypto/sha256
|
||||
|
||||
libgnu_a_SOURCES += sha256.c
|
||||
|
||||
EXTRA_DIST += sha256.h
|
||||
|
||||
## end gnulib module crypto/sha256
|
||||
|
||||
## begin gnulib module crypto/sha512
|
||||
|
||||
libgnu_a_SOURCES += sha512.c
|
||||
|
||||
EXTRA_DIST += sha512.h
|
||||
|
||||
## end gnulib module crypto/sha512
|
||||
|
||||
## begin gnulib module dosname
|
||||
|
||||
if gl_GNULIB_ENABLED_dosname
|
||||
|
||||
endif
|
||||
EXTRA_DIST += dosname.h
|
||||
|
||||
## end gnulib module dosname
|
||||
|
||||
## begin gnulib module dtoastr
|
||||
|
||||
libgnu_a_SOURCES += dtoastr.c
|
||||
|
||||
EXTRA_DIST += ftoastr.c ftoastr.h
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += ftoastr.c
|
||||
|
||||
## end gnulib module dtoastr
|
||||
|
||||
## begin gnulib module dtotimespec
|
||||
|
||||
libgnu_a_SOURCES += dtotimespec.c
|
||||
|
||||
## end gnulib module dtotimespec
|
||||
|
||||
## begin gnulib module dup2
|
||||
|
||||
|
||||
EXTRA_DIST += dup2.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += dup2.c
|
||||
|
||||
## end gnulib module dup2
|
||||
|
||||
## begin gnulib module errno
|
||||
|
||||
BUILT_SOURCES += $(ERRNO_H)
|
||||
|
||||
# We need the following in order to create <errno.h> when the system
|
||||
# doesn't have one that is POSIX compliant.
|
||||
if GL_GENERATE_ERRNO_H
|
||||
errno.h: errno.in.h $(top_builddir)/config.status
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||||
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||
-e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
|
||||
-e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
|
||||
-e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
|
||||
-e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
|
||||
-e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
|
||||
-e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
|
||||
-e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
|
||||
< $(srcdir)/errno.in.h; \
|
||||
} > $@-t && \
|
||||
mv $@-t $@
|
||||
else
|
||||
errno.h: $(top_builddir)/config.status
|
||||
rm -f $@
|
||||
endif
|
||||
MOSTLYCLEANFILES += errno.h errno.h-t
|
||||
|
||||
EXTRA_DIST += errno.in.h
|
||||
|
||||
## end gnulib module errno
|
||||
|
||||
## begin gnulib module euidaccess
|
||||
|
||||
if gl_GNULIB_ENABLED_euidaccess
|
||||
|
||||
endif
|
||||
EXTRA_DIST += euidaccess.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += euidaccess.c
|
||||
|
||||
## end gnulib module euidaccess
|
||||
|
||||
## begin gnulib module execinfo
|
||||
|
||||
BUILT_SOURCES += $(EXECINFO_H)
|
||||
|
||||
# We need the following in order to create <execinfo.h> when the system
|
||||
# doesn't have one that works.
|
||||
if GL_GENERATE_EXECINFO_H
|
||||
execinfo.h: execinfo.in.h $(top_builddir)/config.status
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||
cat $(srcdir)/execinfo.in.h; \
|
||||
} > $@-t && \
|
||||
mv $@-t $@
|
||||
else
|
||||
execinfo.h: $(top_builddir)/config.status
|
||||
rm -f $@
|
||||
endif
|
||||
MOSTLYCLEANFILES += execinfo.h execinfo.h-t
|
||||
|
||||
EXTRA_DIST += execinfo.c execinfo.in.h
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += execinfo.c
|
||||
|
||||
## end gnulib module execinfo
|
||||
|
||||
## begin gnulib module faccessat
|
||||
|
||||
|
||||
EXTRA_DIST += at-func.c faccessat.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += at-func.c faccessat.c
|
||||
|
||||
## end gnulib module faccessat
|
||||
|
||||
## begin gnulib module fdatasync
|
||||
|
||||
|
||||
EXTRA_DIST += fdatasync.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += fdatasync.c
|
||||
|
||||
## end gnulib module fdatasync
|
||||
|
||||
## begin gnulib module fdopendir
|
||||
|
||||
|
||||
EXTRA_DIST += fdopendir.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += fdopendir.c
|
||||
|
||||
## end gnulib module fdopendir
|
||||
|
||||
## begin gnulib module filemode
|
||||
|
||||
libgnu_a_SOURCES += filemode.c
|
||||
|
||||
EXTRA_DIST += filemode.h
|
||||
|
||||
## end gnulib module filemode
|
||||
|
||||
## begin gnulib module fpending
|
||||
|
||||
|
||||
EXTRA_DIST += fpending.c fpending.h
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += fpending.c
|
||||
|
||||
## end gnulib module fpending
|
||||
|
||||
## begin gnulib module fstatat
|
||||
|
||||
|
||||
EXTRA_DIST += at-func.c fstatat.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += at-func.c fstatat.c
|
||||
|
||||
## end gnulib module fstatat
|
||||
|
||||
## begin gnulib module fsync
|
||||
|
||||
|
||||
EXTRA_DIST += fsync.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += fsync.c
|
||||
|
||||
## end gnulib module fsync
|
||||
|
||||
## begin gnulib module getgroups
|
||||
|
||||
if gl_GNULIB_ENABLED_getgroups
|
||||
|
||||
endif
|
||||
EXTRA_DIST += getgroups.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += getgroups.c
|
||||
|
||||
## end gnulib module getgroups
|
||||
|
||||
## begin gnulib module getloadavg
|
||||
|
||||
|
||||
EXTRA_DIST += getloadavg.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += getloadavg.c
|
||||
|
||||
## end gnulib module getloadavg
|
||||
|
||||
## begin gnulib module getopt-posix
|
||||
|
||||
BUILT_SOURCES += $(GETOPT_H)
|
||||
|
||||
# We need the following in order to create <getopt.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||||
-e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
|
||||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||
-e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
|
||||
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
|
||||
< $(srcdir)/getopt.in.h; \
|
||||
} > $@-t && \
|
||||
mv -f $@-t $@
|
||||
MOSTLYCLEANFILES += getopt.h getopt.h-t
|
||||
|
||||
EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += getopt.c getopt1.c
|
||||
|
||||
## end gnulib module getopt-posix
|
||||
|
||||
## begin gnulib module gettext-h
|
||||
|
||||
if gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36
|
||||
libgnu_a_SOURCES += gettext.h
|
||||
|
||||
endif
|
||||
## end gnulib module gettext-h
|
||||
|
||||
## begin gnulib module gettime
|
||||
|
||||
libgnu_a_SOURCES += gettime.c
|
||||
|
||||
## end gnulib module gettime
|
||||
|
||||
## begin gnulib module gettimeofday
|
||||
|
||||
|
||||
EXTRA_DIST += gettimeofday.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += gettimeofday.c
|
||||
|
||||
## end gnulib module gettimeofday
|
||||
|
||||
## begin gnulib module group-member
|
||||
|
||||
if gl_GNULIB_ENABLED_a9786850e999ae65a836a6041e8e5ed1
|
||||
|
||||
endif
|
||||
EXTRA_DIST += group-member.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += group-member.c
|
||||
|
||||
## end gnulib module group-member
|
||||
|
||||
## begin gnulib module ignore-value
|
||||
|
||||
|
||||
EXTRA_DIST += ignore-value.h
|
||||
|
||||
## end gnulib module ignore-value
|
||||
|
||||
## begin gnulib module intprops
|
||||
|
||||
|
||||
EXTRA_DIST += intprops.h
|
||||
|
||||
## end gnulib module intprops
|
||||
|
||||
## begin gnulib module lstat
|
||||
|
||||
|
||||
EXTRA_DIST += lstat.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += lstat.c
|
||||
|
||||
## end gnulib module lstat
|
||||
|
||||
## begin gnulib module memrchr
|
||||
|
||||
|
||||
EXTRA_DIST += memrchr.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += memrchr.c
|
||||
|
||||
## end gnulib module memrchr
|
||||
|
||||
## begin gnulib module mktime
|
||||
|
||||
|
||||
EXTRA_DIST += mktime-internal.h mktime.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += mktime.c
|
||||
|
||||
## end gnulib module mktime
|
||||
|
||||
## begin gnulib module openat-h
|
||||
|
||||
if gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7
|
||||
|
||||
endif
|
||||
EXTRA_DIST += openat.h
|
||||
|
||||
## end gnulib module openat-h
|
||||
|
||||
## begin gnulib module pathmax
|
||||
|
||||
if gl_GNULIB_ENABLED_pathmax
|
||||
|
||||
endif
|
||||
EXTRA_DIST += pathmax.h
|
||||
|
||||
## end gnulib module pathmax
|
||||
|
||||
## begin gnulib module pselect
|
||||
|
||||
|
||||
EXTRA_DIST += pselect.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += pselect.c
|
||||
|
||||
## end gnulib module pselect
|
||||
|
||||
## begin gnulib module pthread_sigmask
|
||||
|
||||
|
||||
EXTRA_DIST += pthread_sigmask.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += pthread_sigmask.c
|
||||
|
||||
## end gnulib module pthread_sigmask
|
||||
|
||||
## begin gnulib module putenv
|
||||
|
||||
|
||||
EXTRA_DIST += putenv.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += putenv.c
|
||||
|
||||
## end gnulib module putenv
|
||||
|
||||
## begin gnulib module qacl
|
||||
|
||||
libgnu_a_SOURCES += acl-errno-valid.c file-has-acl.c qcopy-acl.c
|
||||
|
||||
EXTRA_DIST += acl-internal.h acl.h acl_entries.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += acl_entries.c
|
||||
|
||||
## end gnulib module qacl
|
||||
|
||||
## begin gnulib module readlink
|
||||
|
||||
|
||||
EXTRA_DIST += readlink.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += readlink.c
|
||||
|
||||
## end gnulib module readlink
|
||||
|
||||
## begin gnulib module readlinkat
|
||||
|
||||
|
||||
EXTRA_DIST += at-func.c readlinkat.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += at-func.c readlinkat.c
|
||||
|
||||
## end gnulib module readlinkat
|
||||
|
||||
## begin gnulib module root-uid
|
||||
|
||||
if gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c
|
||||
|
||||
endif
|
||||
EXTRA_DIST += root-uid.h
|
||||
|
||||
## end gnulib module root-uid
|
||||
|
||||
## begin gnulib module sig2str
|
||||
|
||||
|
||||
EXTRA_DIST += sig2str.c sig2str.h
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += sig2str.c
|
||||
|
||||
## end gnulib module sig2str
|
||||
|
||||
## begin gnulib module snippet/_Noreturn
|
||||
|
||||
# Because this Makefile snippet defines a variable used by other
|
||||
# gnulib Makefile snippets, it must be present in all Makefile.am that
|
||||
# need it. This is ensured by the applicability 'all' defined above.
|
||||
|
||||
_NORETURN_H=$(top_srcdir)/build-aux/snippet/_Noreturn.h
|
||||
|
||||
EXTRA_DIST += $(top_srcdir)/build-aux/snippet/_Noreturn.h
|
||||
|
||||
## end gnulib module snippet/_Noreturn
|
||||
|
||||
## begin gnulib module snippet/arg-nonnull
|
||||
|
||||
# The BUILT_SOURCES created by this Makefile snippet are not used via #include
|
||||
# statements but through direct file reference. Therefore this snippet must be
|
||||
# present in all Makefile.am that need it. This is ensured by the applicability
|
||||
# 'all' defined above.
|
||||
|
||||
BUILT_SOURCES += arg-nonnull.h
|
||||
# The arg-nonnull.h that gets inserted into generated .h files is the same as
|
||||
# build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut
|
||||
# off.
|
||||
arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
sed -n -e '/GL_ARG_NONNULL/,$$p' \
|
||||
< $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
|
||||
> $@-t && \
|
||||
mv $@-t $@
|
||||
MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t
|
||||
|
||||
ARG_NONNULL_H=arg-nonnull.h
|
||||
|
||||
EXTRA_DIST += $(top_srcdir)/build-aux/snippet/arg-nonnull.h
|
||||
|
||||
## end gnulib module snippet/arg-nonnull
|
||||
|
||||
## begin gnulib module snippet/c++defs
|
||||
|
||||
# The BUILT_SOURCES created by this Makefile snippet are not used via #include
|
||||
# statements but through direct file reference. Therefore this snippet must be
|
||||
# present in all Makefile.am that need it. This is ensured by the applicability
|
||||
# 'all' defined above.
|
||||
|
||||
BUILT_SOURCES += c++defs.h
|
||||
# The c++defs.h that gets inserted into generated .h files is the same as
|
||||
# build-aux/snippet/c++defs.h, except that it has the copyright header cut off.
|
||||
c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
sed -n -e '/_GL_CXXDEFS/,$$p' \
|
||||
< $(top_srcdir)/build-aux/snippet/c++defs.h \
|
||||
> $@-t && \
|
||||
mv $@-t $@
|
||||
MOSTLYCLEANFILES += c++defs.h c++defs.h-t
|
||||
|
||||
CXXDEFS_H=c++defs.h
|
||||
|
||||
EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h
|
||||
|
||||
## end gnulib module snippet/c++defs
|
||||
|
||||
## begin gnulib module snippet/warn-on-use
|
||||
|
||||
BUILT_SOURCES += warn-on-use.h
|
||||
# The warn-on-use.h that gets inserted into generated .h files is the same as
|
||||
# build-aux/snippet/warn-on-use.h, except that it has the copyright header cut
|
||||
# off.
|
||||
warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
sed -n -e '/^.ifndef/,$$p' \
|
||||
< $(top_srcdir)/build-aux/snippet/warn-on-use.h \
|
||||
> $@-t && \
|
||||
mv $@-t $@
|
||||
MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t
|
||||
|
||||
WARN_ON_USE_H=warn-on-use.h
|
||||
|
||||
EXTRA_DIST += $(top_srcdir)/build-aux/snippet/warn-on-use.h
|
||||
|
||||
## end gnulib module snippet/warn-on-use
|
||||
|
||||
## begin gnulib module stat
|
||||
|
||||
if gl_GNULIB_ENABLED_stat
|
||||
|
||||
endif
|
||||
EXTRA_DIST += stat.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += stat.c
|
||||
|
||||
## end gnulib module stat
|
||||
|
||||
## begin gnulib module stat-time
|
||||
|
||||
libgnu_a_SOURCES += stat-time.c
|
||||
|
||||
EXTRA_DIST += stat-time.h
|
||||
|
||||
## end gnulib module stat-time
|
||||
|
||||
## begin gnulib module stdalign
|
||||
|
||||
BUILT_SOURCES += $(STDALIGN_H)
|
||||
|
||||
# We need the following in order to create <stdalign.h> when the system
|
||||
# doesn't have one that works.
|
||||
if GL_GENERATE_STDALIGN_H
|
||||
stdalign.h: stdalign.in.h $(top_builddir)/config.status
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||
cat $(srcdir)/stdalign.in.h; \
|
||||
} > $@-t && \
|
||||
mv $@-t $@
|
||||
else
|
||||
stdalign.h: $(top_builddir)/config.status
|
||||
rm -f $@
|
||||
endif
|
||||
MOSTLYCLEANFILES += stdalign.h stdalign.h-t
|
||||
|
||||
EXTRA_DIST += stdalign.in.h
|
||||
|
||||
## end gnulib module stdalign
|
||||
|
||||
## begin gnulib module stdarg
|
||||
|
||||
BUILT_SOURCES += $(STDARG_H)
|
||||
|
||||
# We need the following in order to create <stdarg.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
if GL_GENERATE_STDARG_H
|
||||
stdarg.h: stdarg.in.h $(top_builddir)/config.status
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||||
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||
-e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \
|
||||
< $(srcdir)/stdarg.in.h; \
|
||||
} > $@-t && \
|
||||
mv $@-t $@
|
||||
else
|
||||
stdarg.h: $(top_builddir)/config.status
|
||||
rm -f $@
|
||||
endif
|
||||
MOSTLYCLEANFILES += stdarg.h stdarg.h-t
|
||||
|
||||
EXTRA_DIST += stdarg.in.h
|
||||
|
||||
## end gnulib module stdarg
|
||||
|
||||
## begin gnulib module stdbool
|
||||
|
||||
BUILT_SOURCES += $(STDBOOL_H)
|
||||
|
||||
# We need the following in order to create <stdbool.h> when the system
|
||||
# doesn't have one that works.
|
||||
if GL_GENERATE_STDBOOL_H
|
||||
stdbool.h: stdbool.in.h $(top_builddir)/config.status
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||
sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
|
||||
} > $@-t && \
|
||||
mv $@-t $@
|
||||
else
|
||||
stdbool.h: $(top_builddir)/config.status
|
||||
rm -f $@
|
||||
endif
|
||||
MOSTLYCLEANFILES += stdbool.h stdbool.h-t
|
||||
|
||||
EXTRA_DIST += stdbool.in.h
|
||||
|
||||
## end gnulib module stdbool
|
||||
|
||||
## begin gnulib module stddef
|
||||
|
||||
BUILT_SOURCES += $(STDDEF_H)
|
||||
|
||||
# We need the following in order to create <stddef.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
if GL_GENERATE_STDDEF_H
|
||||
stddef.h: stddef.in.h $(top_builddir)/config.status
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||||
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||
-e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
|
||||
-e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
|
||||
-e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
|
||||
< $(srcdir)/stddef.in.h; \
|
||||
} > $@-t && \
|
||||
mv $@-t $@
|
||||
else
|
||||
stddef.h: $(top_builddir)/config.status
|
||||
rm -f $@
|
||||
endif
|
||||
MOSTLYCLEANFILES += stddef.h stddef.h-t
|
||||
|
||||
EXTRA_DIST += stddef.in.h
|
||||
|
||||
## end gnulib module stddef
|
||||
|
||||
## begin gnulib module stdint
|
||||
|
||||
BUILT_SOURCES += $(STDINT_H)
|
||||
|
||||
# We need the following in order to create <stdint.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
if GL_GENERATE_STDINT_H
|
||||
stdint.h: stdint.in.h $(top_builddir)/config.status
|
||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||||
-e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
|
||||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||
-e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
|
||||
-e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
|
||||
-e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
|
||||
-e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
|
||||
-e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
|
||||
-e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
|
||||
-e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
|
||||
-e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
|
||||
-e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
|
||||
-e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
|
||||
-e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
|
||||
-e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
|
||||
-e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
|
||||
-e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
|
||||
-e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
|
||||
< $(srcdir)/stdint.in.h; \
|
||||
} > $@-t && \
|
||||
mv $@-t $@
|
||||
else
|
||||
stdint.h: $(top_builddir)/config.status
|
||||
rm -f $@
|
||||
endif
|
||||
MOSTLYCLEANFILES += stdint.h stdint.h-t
|
||||
|
||||
EXTRA_DIST += stdint.in.h
|
||||
|
||||
## end gnulib module stdint
|
||||
|
||||
## begin gnulib module strftime
|
||||
|
||||
libgnu_a_SOURCES += strftime.c
|
||||
|
||||
EXTRA_DIST += strftime.h
|
||||
|
||||
## end gnulib module strftime
|
||||
|
||||
## begin gnulib module strtoimax
|
||||
|
||||
|
||||
EXTRA_DIST += strtoimax.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += strtoimax.c
|
||||
|
||||
## end gnulib module strtoimax
|
||||
|
||||
## begin gnulib module strtoll
|
||||
|
||||
if gl_GNULIB_ENABLED_strtoll
|
||||
|
||||
endif
|
||||
EXTRA_DIST += strtol.c strtoll.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += strtol.c strtoll.c
|
||||
|
||||
## end gnulib module strtoll
|
||||
|
||||
## begin gnulib module strtoull
|
||||
|
||||
if gl_GNULIB_ENABLED_strtoull
|
||||
|
||||
endif
|
||||
EXTRA_DIST += strtol.c strtoul.c strtoull.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += strtol.c strtoul.c strtoull.c
|
||||
|
||||
## end gnulib module strtoull
|
||||
|
||||
## begin gnulib module strtoumax
|
||||
|
||||
|
||||
EXTRA_DIST += strtoimax.c strtoumax.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += strtoimax.c strtoumax.c
|
||||
|
||||
## end gnulib module strtoumax
|
||||
|
||||
## begin gnulib module symlink
|
||||
|
||||
|
||||
EXTRA_DIST += symlink.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += symlink.c
|
||||
|
||||
## end gnulib module symlink
|
||||
|
||||
## begin gnulib module time_r
|
||||
|
||||
|
||||
EXTRA_DIST += time_r.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += time_r.c
|
||||
|
||||
## end gnulib module time_r
|
||||
|
||||
## begin gnulib module timespec
|
||||
|
||||
libgnu_a_SOURCES += timespec.c
|
||||
|
||||
EXTRA_DIST += timespec.h
|
||||
|
||||
## end gnulib module timespec
|
||||
|
||||
## begin gnulib module timespec-add
|
||||
|
||||
libgnu_a_SOURCES += timespec-add.c
|
||||
|
||||
## end gnulib module timespec-add
|
||||
|
||||
## begin gnulib module timespec-sub
|
||||
|
||||
libgnu_a_SOURCES += timespec-sub.c
|
||||
|
||||
## end gnulib module timespec-sub
|
||||
|
||||
## begin gnulib module u64
|
||||
|
||||
libgnu_a_SOURCES += u64.c
|
||||
|
||||
EXTRA_DIST += u64.h
|
||||
|
||||
## end gnulib module u64
|
||||
|
||||
## begin gnulib module unsetenv
|
||||
|
||||
|
||||
EXTRA_DIST += unsetenv.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += unsetenv.c
|
||||
|
||||
## end gnulib module unsetenv
|
||||
|
||||
## begin gnulib module utimens
|
||||
|
||||
libgnu_a_SOURCES += utimens.c
|
||||
|
||||
EXTRA_DIST += utimens.h
|
||||
|
||||
## end gnulib module utimens
|
||||
|
||||
## begin gnulib module verify
|
||||
|
||||
if gl_GNULIB_ENABLED_verify
|
||||
|
||||
endif
|
||||
EXTRA_DIST += verify.h
|
||||
|
||||
## end gnulib module verify
|
||||
|
||||
## begin gnulib module xalloc-oversized
|
||||
|
||||
if gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec
|
||||
|
||||
endif
|
||||
EXTRA_DIST += xalloc-oversized.h
|
||||
|
||||
## end gnulib module xalloc-oversized
|
||||
|
||||
|
||||
mostlyclean-local: mostlyclean-generic
|
||||
@for dir in '' $(MOSTLYCLEANDIRS); do \
|
||||
if test -n "$$dir" && test -d $$dir; then \
|
||||
echo "rmdir $$dir"; rmdir $$dir; \
|
||||
fi; \
|
||||
done; \
|
||||
:
|
|
@ -67,7 +67,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#endif
|
||||
|
||||
#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
|
||||
#define HAVE___BUILTIN_UNWIND_INIT 1
|
||||
# ifndef HAVE___BUILTIN_UNWIND_INIT
|
||||
# define HAVE___BUILTIN_UNWIND_INIT 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* This isn't perfect, as some systems might have the page file in
|
||||
|
@ -99,8 +101,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
# define restrict __restrict__
|
||||
/* config.h may have defined already. */
|
||||
# ifndef restrict
|
||||
# define restrict __restrict__
|
||||
# endif
|
||||
#else
|
||||
/* FIXME: should we define to __restrict, which MSVC supports? */
|
||||
# define restrict
|
||||
#endif
|
||||
|
||||
|
@ -138,9 +144,6 @@ extern char *getenv ();
|
|||
/* Make a leaner executable. */
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
|
||||
#ifdef HAVE_STRINGS_H
|
||||
#include "strings.h"
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifndef MAXPATHLEN
|
||||
|
@ -148,8 +151,12 @@ extern char *getenv ();
|
|||
#endif
|
||||
|
||||
#ifdef HAVE_NTGUI
|
||||
#define HAVE_WINDOW_SYSTEM 1
|
||||
#define HAVE_MENUS 1
|
||||
# ifndef HAVE_WINDOW_SYSTEM
|
||||
# define HAVE_WINDOW_SYSTEM 1
|
||||
# endif
|
||||
# ifndef HAVE_MENUS
|
||||
# define HAVE_MENUS 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Get some redefinitions in place. */
|
||||
|
@ -248,9 +255,6 @@ extern int sys_unlink (const char *);
|
|||
#define execvp _execvp
|
||||
#define fdatasync _commit
|
||||
#define fdopen _fdopen
|
||||
#ifndef fileno
|
||||
#define fileno _fileno
|
||||
#endif
|
||||
#define fsync _commit
|
||||
#define ftruncate _chsize
|
||||
#define getpid _getpid
|
||||
|
@ -266,9 +270,6 @@ typedef int pid_t;
|
|||
#define popen _popen
|
||||
#define pclose _pclose
|
||||
#define umask _umask
|
||||
#ifndef _MSC_VER
|
||||
#define utimbuf _utimbuf
|
||||
#endif
|
||||
#define strdup _strdup
|
||||
#define strupr _strupr
|
||||
#define strnicmp _strnicmp
|
||||
|
@ -285,10 +286,6 @@ int _getpid (void);
|
|||
array, and triggers an error message. */
|
||||
#include <time.h>
|
||||
#define tzname _tzname
|
||||
#if !defined (_MSC_VER) || (_MSC_VER < 1400)
|
||||
#undef utime
|
||||
#define utime _utime
|
||||
#endif
|
||||
|
||||
/* 'struct timespec' is used by time-related functions in lib/ and
|
||||
elsewhere, but we don't use lib/time.h where the structure is
|
||||
|
@ -327,6 +324,9 @@ extern struct tm *localtime_r (time_t const * restrict, struct tm * restrict);
|
|||
#include <io.h>
|
||||
#include <stdio.h>
|
||||
#endif /* !_MSC_VER */
|
||||
#ifndef fileno
|
||||
#define fileno _fileno
|
||||
#endif
|
||||
|
||||
/* Defines that we need that aren't in the standard signal.h. */
|
||||
#define SIGHUP 1 /* Hang up */
|
||||
|
@ -346,20 +346,21 @@ extern struct tm *localtime_r (time_t const * restrict, struct tm * restrict);
|
|||
#define ENOTSUP ENOSYS
|
||||
#endif
|
||||
|
||||
/* WINDOWSNT <errno.h> doesn't define EOPNOTSUPP, and we don't have
|
||||
'configure' working yet so we can't rely on the Gnulib replacement
|
||||
errno.h defining EOPNOTSUPP. Work around the problem by defining
|
||||
it here. */
|
||||
/* In case lib/errno.h is not used. */
|
||||
#ifndef EOPNOTSUPP
|
||||
#define EOPNOTSUPP 130
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
typedef int sigset_t;
|
||||
typedef int ssize_t;
|
||||
#endif
|
||||
|
||||
#ifndef _POSIX /* MinGW64 */
|
||||
#ifdef _W64 /* MinGW64 */
|
||||
#ifndef _POSIX
|
||||
typedef _sigset_t sigset_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef void (_CALLBACK_ *signal_handler) (int);
|
||||
extern signal_handler sys_signal (int, signal_handler);
|
||||
|
@ -395,10 +396,12 @@ extern int sys_kill (int, int);
|
|||
#define getdefdir(_drv, _buf) _getdcwd (_drv, _buf, MAXPATHLEN)
|
||||
#endif
|
||||
|
||||
#ifndef EMACS_CONFIGURATION
|
||||
extern char *get_emacs_configuration (void);
|
||||
extern char *get_emacs_configuration_options (void);
|
||||
#define EMACS_CONFIGURATION get_emacs_configuration ()
|
||||
#define EMACS_CONFIG_OPTIONS get_emacs_configuration_options ()
|
||||
#endif
|
||||
|
||||
/* Define this so that winsock.h definitions don't get included with
|
||||
windows.h. For this to have proper effect, config.h must always be
|
||||
|
@ -452,10 +455,14 @@ extern void * memrchr (void const *, int, size_t);
|
|||
#if defined (__MINGW32__)
|
||||
|
||||
/* Define to 1 if the system has the type `long long int'. */
|
||||
# define HAVE_LONG_LONG_INT 1
|
||||
# ifndef HAVE_LONG_LONG_INT
|
||||
# define HAVE_LONG_LONG_INT 1
|
||||
# endif
|
||||
|
||||
/* Define to 1 if the system has the type `unsigned long long int'. */
|
||||
# define HAVE_UNSIGNED_LONG_LONG_INT 1
|
||||
# ifndef HAVE_UNSIGNED_LONG_LONG_INT
|
||||
# define HAVE_UNSIGNED_LONG_LONG_INT 1
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -43,8 +43,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#undef FD_ZERO
|
||||
#endif
|
||||
|
||||
/* avoid duplicate definition of timeval */
|
||||
#ifdef HAVE_TIMEVAL
|
||||
/* Avoid duplicate definition of timeval. MinGW uses _TIMEVAL_DEFINED
|
||||
in sys/time.h to avoid that. */
|
||||
#if defined (HAVE_TIMEVAL) && defined (_MSC_VER)
|
||||
#define timeval ws_timeval
|
||||
#endif
|
||||
|
||||
|
@ -62,7 +63,9 @@ typedef unsigned short uint16_t;
|
|||
#undef MUST_REDEF_SELECT
|
||||
#endif
|
||||
|
||||
/* revert to our version of FD_SET */
|
||||
/* Revert to our version of FD_SET, but not when included from test
|
||||
programs run by configure. */
|
||||
#ifdef EMACS_CONFIG_H
|
||||
#undef FD_SET
|
||||
#undef FD_CLR
|
||||
#undef FD_ISSET
|
||||
|
@ -71,8 +74,9 @@ typedef unsigned short uint16_t;
|
|||
/* allow us to provide our own version of fd_set */
|
||||
#define fd_set ws_fd_set
|
||||
#include "w32.h"
|
||||
#endif /* EMACS_CONFIG_H */
|
||||
|
||||
#ifdef HAVE_TIMEVAL
|
||||
#if defined (HAVE_TIMEVAL) && defined (_MSC_VER)
|
||||
#undef timeval
|
||||
#endif
|
||||
|
||||
|
|
|
@ -83,6 +83,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define S_TYPEISSHM(p) 0
|
||||
#define S_TYPEISTMO(p) 0
|
||||
|
||||
#define UTIME_NOW (-1)
|
||||
#define UTIME_OMIT (-2)
|
||||
|
||||
struct stat {
|
||||
unsigned __int64 st_ino; /* ino_t in sys/types.h is too narrow */
|
||||
dev_t st_dev;
|
||||
|
@ -99,6 +102,39 @@ struct stat {
|
|||
char st_gname[260];
|
||||
};
|
||||
|
||||
/* These are here to avoid compiler warnings when using wchar.h. */
|
||||
struct _stat
|
||||
{
|
||||
_dev_t st_dev; /* Equivalent to drive number 0=A 1=B ... */
|
||||
_ino_t st_ino; /* Always zero ? */
|
||||
_mode_t st_mode; /* See above constants */
|
||||
short st_nlink; /* Number of links. */
|
||||
short st_uid; /* User: Maybe significant on NT ? */
|
||||
short st_gid; /* Group: Ditto */
|
||||
_dev_t st_rdev; /* Seems useless (not even filled in) */
|
||||
_off_t st_size; /* File size in bytes */
|
||||
time_t st_atime; /* Accessed date (always 00:00 hrs local
|
||||
* on FAT) */
|
||||
time_t st_mtime; /* Modified time */
|
||||
time_t st_ctime; /* Creation time */
|
||||
};
|
||||
|
||||
#if defined (__MSVCRT__)
|
||||
struct _stati64 {
|
||||
_dev_t st_dev;
|
||||
_ino_t st_ino;
|
||||
_mode_t st_mode;
|
||||
short st_nlink;
|
||||
short st_uid;
|
||||
short st_gid;
|
||||
_dev_t st_rdev;
|
||||
__int64 st_size;
|
||||
time_t st_atime;
|
||||
time_t st_mtime;
|
||||
time_t st_ctime;
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Internal variable for asking 'stat'/'lstat' to produce accurate
|
||||
info about owner and group of files. */
|
||||
extern int w32_stat_get_owner_group;
|
||||
|
|
|
@ -9,12 +9,23 @@
|
|||
/* The guards are for MinGW64, which defines these structs on its
|
||||
system headers which are included by ms-w32.h. */
|
||||
#ifndef _W64
|
||||
/* Allow inclusion of sys/time.h and winsock2.h in any order. Needed
|
||||
for running the configure test, which is only relevant to MinGW. */
|
||||
#ifndef _TIMEVAL_DEFINED
|
||||
#define _TIMEVAL_DEFINED
|
||||
struct timeval
|
||||
{
|
||||
long tv_sec; /* seconds */
|
||||
long tv_usec; /* microseconds */
|
||||
};
|
||||
#endif
|
||||
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
|
||||
#define timercmp(tvp, uvp, cmp) \
|
||||
(((tvp)->tv_sec != (uvp)->tv_sec) ? \
|
||||
((tvp)->tv_sec cmp (uvp)->tv_sec) : \
|
||||
((tvp)->tv_usec cmp (uvp)->tv_usec))
|
||||
#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
|
||||
#endif /* _TIMEVAL_DEFINED */
|
||||
#endif /* _W64 */
|
||||
|
||||
#ifndef _TIMEZONE_DEFINED
|
||||
struct timezone
|
||||
|
@ -24,7 +35,10 @@ struct timezone
|
|||
};
|
||||
#endif
|
||||
|
||||
void gettimeofday (struct timeval *, struct timezone *);
|
||||
/* This needs to be compatible with Posix signature, in order to pass
|
||||
the configure test for the type of the second argument. See
|
||||
m4/gettimeofday.m4. */
|
||||
int gettimeofday (struct timeval *restrict, struct timezone *restrict);
|
||||
|
||||
#define ITIMER_REAL 0
|
||||
#define ITIMER_PROF 1
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
#ifndef _UNISTD_H
|
||||
#define _UNISTD_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
|
||||
/* On Microsoft platforms, <stdlib.h> declares 'environ'; on POSIX
|
||||
platforms, <unistd.h> does. Every file in Emacs that includes
|
||||
<unistd.h> also includes <stdlib.h>, so there's no need to declare
|
||||
|
|
|
@ -29,6 +29,8 @@ TMP_DIST_DIR = emacs-$(VERSION)
|
|||
TRES = $(BLD)/emacs.res
|
||||
CLIENTRES = $(BLD)/emacsclient.res
|
||||
|
||||
LOCAL_FLAGS = -DOLD_PATHS=1
|
||||
|
||||
XMFLAGS =
|
||||
|
||||
ALL = $(BLD)/addpm.exe $(BLD)/ddeclient.exe $(BLD)/runemacs.exe \
|
||||
|
|
106
nt/mingw-cfg.site
Normal file
106
nt/mingw-cfg.site
Normal file
|
@ -0,0 +1,106 @@
|
|||
#! /bin/sh
|
||||
# Site defaults for the MinGW configuration of GNU Emacs.
|
||||
#
|
||||
# This file's purpose is to short-circuit configure-time tests for
|
||||
# which we want to provide the results instead of letting the
|
||||
# 'configure' script do that. This is mainly for features that
|
||||
# 'configure' tests that are implemented as part of Emacs sources, not
|
||||
# as part of system libraries. The idea is to set shell variables
|
||||
# that appear to the script as cached values.
|
||||
#
|
||||
# For each header file foo.h you want to supply test results, set the
|
||||
# value of a shell variable ac_cv_header_foo_h. The value should be
|
||||
# yes if the header is deemed to exist, no otherwise. Or it could be
|
||||
# something else, if the value computed by 'configure' requires that.
|
||||
# In general, since nt/msysconfig.sh instructs GCC to use header files
|
||||
# in nt/inc, you should not need to futz with header file tests. But
|
||||
# there are exceptions, like with getopt.h below (which is a MinGW
|
||||
# system header, but we do not want to use it).
|
||||
#
|
||||
# For each library function foo you want to supply test results, set
|
||||
# the value of a shell variable ac_cv_func_foo. Again, the value is
|
||||
# determined by what 'configure' expects; sometimes it could be "not
|
||||
# needed" or whatever, see the examples below. In addition, you may
|
||||
# need to set the various gl_cv_* variables for those tests that come
|
||||
# from gnulib.
|
||||
#
|
||||
# In short, examine the test in 'configure' and push the knobs that
|
||||
# are necessary to steer the test in the direction you need, by
|
||||
# judicioulsy setting variables that control the test results.
|
||||
|
||||
# We want to use getopt.h from gnulib
|
||||
ac_cv_header_getopt_h=no
|
||||
|
||||
# ACL functions are implemented in w32.c
|
||||
ac_cv_search_acl_get_file="none required"
|
||||
ac_cv_func_acl_get_file=yes
|
||||
ac_cv_func_acl_set_file=yes
|
||||
ac_cv_func_acl_free=yes
|
||||
ac_cv_func_acl_from_text=yes
|
||||
gl_cv_func_working_acl_get_file=yes
|
||||
# Autoconf's test program is not smart enough, and fails to detect gethostname
|
||||
ac_cv_func_gethostname=yes
|
||||
# Implemented as sys_select in w32proc.c
|
||||
ac_cv_func_select=yes
|
||||
ac_cv_func_pselect=yes
|
||||
gl_cv_sig_pselect=yes
|
||||
gl_cv_func_pselect_detects_ebadf=yes
|
||||
# Implemented as sys_shutdown in w32.c
|
||||
ac_cv_func_shutdown=yes
|
||||
# Implemented in w32proc.c
|
||||
ac_cv_func_setitimer=yes
|
||||
# Implemented as sys_sendto in w32.c
|
||||
ac_cv_func_sendto=yes
|
||||
# Implemented as sys_recvfrom in w32.c
|
||||
ac_cv_func_recvfrom=yes
|
||||
# Implemented as sys_getsockname in w32.c
|
||||
ac_cv_func_getsockname=yes
|
||||
# Implemented as sys_getpeername in w32.c
|
||||
ac_cv_func_getpeername=yes
|
||||
# Implemented as sys_socket in w32.c
|
||||
ac_cv_func_socket=yes
|
||||
# Implemented in w32.c
|
||||
ac_cv_func_readlink=yes
|
||||
ac_cv_func_symlink=yes
|
||||
# Avoid run-time tests of readlink and symlink, which will fail
|
||||
gl_cv_func_readlink_works=yes
|
||||
gl_cv_func_symlink_works=yes
|
||||
ac_cv_func_readlinkat=yes
|
||||
ac_cv_func_faccessat=yes
|
||||
# We don't need fdopendir
|
||||
ac_cv_func_fdopendir="not-needed"
|
||||
gl_cv_func_fdopendir_works="no-but-not-needed-so-yes"
|
||||
# Implemented in w32.c
|
||||
ac_cv_func_lstat=yes
|
||||
gl_cv_func_lstat_dereferences_slashed_symlink=yes
|
||||
ac_cv_func_fstatat=yes
|
||||
gl_cv_func_fstatat_zero_flag=yes
|
||||
# Aliased to _commit in ms-w32.h
|
||||
ac_cv_func_fsync=yes
|
||||
ac_cv_func_fdatasync=yes
|
||||
# Implemented in w32proc.c
|
||||
ac_cv_func_pthread_sigmask=yes
|
||||
# Avoid gnulib replacement
|
||||
gl_threads_api=posix
|
||||
gl_cv_func_pthread_sigmask_return_works=yes
|
||||
gl_cv_func_pthread_sigmask_unblock_works="not relevant"
|
||||
# Implemented in w32proc.c
|
||||
emacs_cv_langinfo_codeset=yes
|
||||
# Declared in ms-w32.h
|
||||
ac_cv_have_decl_alarm=yes
|
||||
# Avoid including the gnulib dup2 module
|
||||
gl_cv_func_dup2_works=yes
|
||||
# Defined in w32.c
|
||||
ac_cv_func_getloadavg=yes
|
||||
# Avoid compiling gnulib mktime
|
||||
gl_cv_func_working_mktime=yes
|
||||
# Implemented in w32.c
|
||||
ac_cv_have_decl_unsetenv=yes
|
||||
ac_cv_func_unsetenv=yes
|
||||
gt_cv_func_unsetenv_ret='int'
|
||||
gl_cv_func_unsetenv_works=yes
|
||||
gl_cv_func_stat_dir_slash=yes
|
||||
gl_cv_func_stat_file_slash=yes
|
||||
ac_cv_func_random=yes
|
||||
# Implemented in w32.c as sys_putenv
|
||||
gl_cv_func_svid_putenv=yes
|
39
nt/msysconfig.sh
Normal file
39
nt/msysconfig.sh
Normal file
|
@ -0,0 +1,39 @@
|
|||
#! /bin/sh
|
||||
### msysconfig.sh - Run the top-level 'configure' script as approriate
|
||||
### for the MinGW/MSYS build of a native MS-Windows port of Emacs.
|
||||
|
||||
## Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
## 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/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
## The Posix 'configure' script needs a few tweaks to produce desired
|
||||
## results when running under MSYS with the purpose of configuring
|
||||
## Emacs for the MinGW MS-Windows build. Rather than asking users to
|
||||
## type these tweaks every time they configure the package, we provide
|
||||
## this helper script which takes care of the mundane things.
|
||||
|
||||
### Code:
|
||||
|
||||
srcdir=`dirname "$0"`
|
||||
parent=`dirname "$srcdir"`
|
||||
|
||||
## The nt/mingw-cfg.site file provides various autoconf variables that
|
||||
## are needed for a successful MinGW build.
|
||||
CONFIG_SITE="$srcdir/mingw-cfg.site" $parent/configure "$@"
|
|
@ -1,3 +1,27 @@
|
|||
2013-05-16 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* w32.c: Include epaths.h.
|
||||
(init_environment): Use cmdproxy.exe without leading directories.
|
||||
Support emacs.exe in src; point SHELL to cmdproxy in ../nt in that
|
||||
case.
|
||||
(gettimeofday): Adjust signature and return value to Posix
|
||||
expectations.
|
||||
|
||||
* unexw32.c (open_output_file): Delete the existing emacs.exe
|
||||
before creating it, to break the hard link to the versioned
|
||||
executable.
|
||||
|
||||
* Makefile.in (EMACS_MANIFEST, CM_OBJ, TEMACS_POST_LINK)
|
||||
(ADDSECTION, EMACS_HEAPSIZE, MINGW_TEMACS_POST_LINK)
|
||||
(FIRSTFILE_OBJ): New variables.
|
||||
(W32_RES): Rename to EMACSRES. All users changed.
|
||||
(base_obj): Use $(CM_OBJ).
|
||||
(ALLOBJS): Use $(FIRSTFILE_OBJ).
|
||||
(emacs$(EXEEXT)): Depend on $(ADDSECTION).
|
||||
(temacs$(EXEEXT)): Use $(TEMACS_POST_LINK), and move
|
||||
$(W32_RES_LINK) before $(LIBES).
|
||||
(emacs.res): Depend on $(EMACS_MANIFEST). Put emacs.rc in nt.
|
||||
|
||||
2013-05-15 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* makefile.w32-in (DOC): Use just "DOC".
|
||||
|
|
|
@ -267,10 +267,13 @@ W32_OBJ=@W32_OBJ@
|
|||
W32_LIBS=@W32_LIBS@
|
||||
|
||||
## emacs.res if HAVE_W32
|
||||
W32_RES=@W32_RES@
|
||||
EMACSRES = @EMACSRES@
|
||||
## emacs-*.manifest if HAVE_W32
|
||||
EMACS_MANIFEST = @EMACS_MANIFEST@
|
||||
## If HAVE_W32, compiler arguments for including
|
||||
## the resource file in the binary.
|
||||
## XXX -Wl,-b -Wl,pe-i386 -Wl,emacs.res
|
||||
## Cygwin: -Wl,emacs.res
|
||||
## MinGW: emacs.res
|
||||
W32_RES_LINK=@W32_RES_LINK@
|
||||
|
||||
## Empty if !HAVE_X_WINDOWS
|
||||
|
@ -279,6 +282,9 @@ W32_RES_LINK=@W32_RES_LINK@
|
|||
## else xfont.o
|
||||
FONT_OBJ=@FONT_OBJ@
|
||||
|
||||
## Empty for MinGW, cm.o for the rest.
|
||||
CM_OBJ=@CM_OBJ@
|
||||
|
||||
LIBGPM = @LIBGPM@
|
||||
|
||||
## -lresolv, or empty.
|
||||
|
@ -297,6 +303,14 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
|||
|
||||
RUN_TEMACS = `/bin/pwd`/temacs
|
||||
|
||||
## Invoke ../nt/addsection for MinGW, ":" elsewhere.
|
||||
TEMACS_POST_LINK = @TEMACS_POST_LINK@
|
||||
ADDSECTION = @ADDSECTION@
|
||||
EMACS_HEAPSIZE = @EMACS_HEAPSIZE@
|
||||
MINGW_TEMACS_POST_LINK = \
|
||||
mv temacs$(EXEEXT) temacs.tmp; \
|
||||
../nt/addsection temacs.tmp temacs$(EXEEXT) EMHEAP $(EMACS_HEAPSIZE)
|
||||
|
||||
UNEXEC_OBJ = @UNEXEC_OBJ@
|
||||
|
||||
CANNOT_DUMP=@CANNOT_DUMP@
|
||||
|
@ -339,7 +353,7 @@ ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
|
|||
## be dumped as pure by dump-emacs.
|
||||
base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
|
||||
charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
|
||||
cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
|
||||
$(CM_OBJ) term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
|
||||
emacs.o keyboard.o macros.o keymap.o sysdep.o \
|
||||
buffer.o filelock.o insdel.o marker.o \
|
||||
minibuf.o fileio.o dired.o \
|
||||
|
@ -377,9 +391,9 @@ VMLIMIT_OBJ=@VMLIMIT_OBJ@
|
|||
## ralloc.o if !SYSTEM_MALLOC && REL_ALLOC, else empty.
|
||||
RALLOC_OBJ=@RALLOC_OBJ@
|
||||
|
||||
## Empty on Cygwin, lastfile.o elsewhere.
|
||||
## Empty on Cygwin and MinGW, lastfile.o elsewhere.
|
||||
PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
|
||||
## lastfile.o on Cygwin, empty elsewhere.
|
||||
## lastfile.o on Cygwin and MinGW, empty elsewhere.
|
||||
POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
|
||||
|
||||
## List of object files that make-docfile should not be told about.
|
||||
|
@ -387,7 +401,9 @@ otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
|
|||
$(POST_ALLOC_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
|
||||
|
||||
## All object files linked into temacs. $(VMLIMIT_OBJ) should be first.
|
||||
ALLOBJS = $(VMLIMIT_OBJ) $(obj) $(otherobj)
|
||||
## (On MinGW, firstfile.o should be before vm-limit.o.)
|
||||
FIRSTFILE_OBJ=@FIRSTFILE_OBJ@
|
||||
ALLOBJS = $(FIRSTFILE_OBJ) $(VMLIMIT_OBJ) $(obj) $(otherobj)
|
||||
|
||||
## Configure inserts the file lisp.mk at this point, defining $lisp.
|
||||
@lisp_frag@
|
||||
|
@ -416,7 +432,8 @@ $(leimdir)/leim-list.el: bootstrap-emacs$(EXEEXT)
|
|||
## Strictly speaking, emacs does not depend directly on all of $lisp,
|
||||
## since not all pieces are used on all platforms. But DOC depends
|
||||
## on all of $lisp, and emacs depends on DOC, so it is ok to use $lisp here.
|
||||
emacs$(EXEEXT): temacs$(EXEEXT) $(etc)/DOC $(lisp) $(leimdir)/leim-list.el
|
||||
emacs$(EXEEXT): temacs$(EXEEXT) $(ADDSECTION) \
|
||||
$(etc)/DOC $(lisp) $(leimdir)/leim-list.el
|
||||
if test "$(CANNOT_DUMP)" = "yes"; then \
|
||||
rm -f emacs$(EXEEXT); \
|
||||
ln temacs$(EXEEXT) emacs$(EXEEXT); \
|
||||
|
@ -468,10 +485,10 @@ $(lib)/libgnu.a: $(config_h)
|
|||
cd $(lib) && $(MAKE) libgnu.a
|
||||
|
||||
temacs$(EXEEXT): stamp-oldxmenu $(ALLOBJS) \
|
||||
$(lib)/libgnu.a $(W32_RES)
|
||||
$(lib)/libgnu.a $(EMACSRES)
|
||||
$(CC) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(LDFLAGS) \
|
||||
-o temacs $(ALLOBJS) $(lib)/libgnu.a $(LIBES) \
|
||||
$(W32_RES_LINK)
|
||||
-o temacs $(ALLOBJS) $(lib)/libgnu.a $(W32_RES_LINK) $(LIBES)
|
||||
$(TEMACS_POST_LINK)
|
||||
test "$(CANNOT_DUMP)" = "yes" || \
|
||||
test "X$(PAXCTL)" = X || $(PAXCTL) -r temacs$(EXEEXT)
|
||||
|
||||
|
@ -514,8 +531,9 @@ doc.o: buildobj.h
|
|||
|
||||
emacs.res: $(ntsource)/emacs.rc \
|
||||
$(ntsource)/icons/emacs.ico \
|
||||
$(ntsource)/emacs-x86.manifest
|
||||
$(WINDRES) -O COFF -o $@ $(ntsource)/emacs.rc
|
||||
$(ntsource)/$(EMACS_MANIFEST)
|
||||
$(WINDRES) -O COFF --include-dir=$(srcdir)/../nt \
|
||||
-o $@ $(ntsource)/emacs.rc
|
||||
|
||||
ns-app: emacs$(EXEEXT)
|
||||
cd ../nextstep && $(MAKE) $(MFLAGS) all
|
||||
|
|
|
@ -159,6 +159,14 @@ open_output_file (file_data *p_file, char *filename, unsigned long size)
|
|||
HANDLE file_mapping;
|
||||
void *file_base;
|
||||
|
||||
/* We delete any existing FILENAME because loadup.el will create a
|
||||
hard link to it under the name emacs-XX.YY.ZZ.nn.exe. Evidently,
|
||||
overwriting a file on Unix breaks any hard links to it, but that
|
||||
doesn't happen on Windows. If we don't delete the file before
|
||||
creating it, all the emacs-XX.YY.ZZ.nn.exe end up being hard
|
||||
links to the same file, which defeats the purpose of these hard
|
||||
links: being able to run previous builds. */
|
||||
DeleteFile (filename);
|
||||
file = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
|
||||
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
|
||||
if (file == INVALID_HANDLE_VALUE)
|
||||
|
|
72
src/w32.c
72
src/w32.c
|
@ -65,6 +65,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#undef localtime
|
||||
|
||||
#include "lisp.h"
|
||||
#include "epaths.h" /* for SHELL */
|
||||
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
|
@ -2018,7 +2019,7 @@ init_environment (char ** argv)
|
|||
{"PRELOAD_WINSOCK", NULL},
|
||||
{"emacs_dir", "C:/emacs"},
|
||||
{"EMACSLOADPATH", NULL},
|
||||
{"SHELL", "%emacs_dir%/bin/cmdproxy.exe"},
|
||||
{"SHELL", "cmdproxy.exe"}, /* perhaps it is somewhere on PATH */
|
||||
{"EMACSDATA", NULL},
|
||||
{"EMACSPATH", NULL},
|
||||
{"INFOPATH", NULL},
|
||||
|
@ -2094,9 +2095,12 @@ init_environment (char ** argv)
|
|||
emacs_abort ();
|
||||
*p = 0;
|
||||
|
||||
if ((p = _mbsrchr (modname, '\\')) && xstrcasecmp (p, "\\bin") == 0)
|
||||
if ((p = _mbsrchr (modname, '\\'))
|
||||
/* From bin means installed Emacs, from src means uninstalled. */
|
||||
&& (xstrcasecmp (p, "\\bin") == 0 || xstrcasecmp (p, "\\src") == 0))
|
||||
{
|
||||
char buf[SET_ENV_BUF_SIZE];
|
||||
int within_build_tree = xstrcasecmp (p, "\\src") == 0;
|
||||
|
||||
*p = 0;
|
||||
for (p = modname; *p; p = CharNext (p))
|
||||
|
@ -2104,6 +2108,15 @@ init_environment (char ** argv)
|
|||
|
||||
_snprintf (buf, sizeof (buf)-1, "emacs_dir=%s", modname);
|
||||
_putenv (strdup (buf));
|
||||
/* If we are running from the Posix-like build tree, define
|
||||
SHELL to point to our own cmdproxy. The loop below will
|
||||
then disregard PATH_EXEC and the default value. */
|
||||
if (within_build_tree)
|
||||
{
|
||||
_snprintf (buf, sizeof (buf) - 1,
|
||||
"SHELL=%s/nt/cmdproxy.exe", modname);
|
||||
_putenv (strdup (buf));
|
||||
}
|
||||
}
|
||||
/* Handle running emacs from the build directory: src/oo-spd/i386/ */
|
||||
|
||||
|
@ -2139,16 +2152,60 @@ init_environment (char ** argv)
|
|||
if (!getenv (env_vars[i].name))
|
||||
{
|
||||
int dont_free = 0;
|
||||
char bufc[SET_ENV_BUF_SIZE];
|
||||
|
||||
if ((lpval = w32_get_resource (env_vars[i].name, &dwType)) == NULL
|
||||
/* Also ignore empty environment variables. */
|
||||
|| *lpval == 0)
|
||||
{
|
||||
xfree (lpval);
|
||||
lpval = env_vars[i].def_value;
|
||||
dwType = REG_EXPAND_SZ;
|
||||
dont_free = 1;
|
||||
if (!strcmp (env_vars[i].name, "HOME") && !appdata)
|
||||
if (strcmp (env_vars[i].name, "SHELL") == 0)
|
||||
{
|
||||
/* Look for cmdproxy.exe in every directory in
|
||||
PATH_EXEC. FIXME: This does not find cmdproxy
|
||||
in nt/ when we run uninstalled. */
|
||||
char fname[MAX_PATH];
|
||||
const char *pstart = PATH_EXEC, *pend;
|
||||
|
||||
do {
|
||||
pend = _mbschr (pstart, ';');
|
||||
if (!pend)
|
||||
pend = pstart + strlen (pstart);
|
||||
/* Be defensive against series of ;;; characters. */
|
||||
if (pend > pstart)
|
||||
{
|
||||
strncpy (fname, pstart, pend - pstart);
|
||||
fname[pend - pstart] = '/';
|
||||
strcpy (&fname[pend - pstart + 1], "cmdproxy.exe");
|
||||
ExpandEnvironmentStrings ((LPSTR) fname, bufc,
|
||||
sizeof (bufc));
|
||||
if (check_existing (bufc))
|
||||
{
|
||||
lpval = bufc;
|
||||
dwType = REG_SZ;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (*pend)
|
||||
pstart = pend + 1;
|
||||
else
|
||||
pstart = pend;
|
||||
if (!*pstart)
|
||||
{
|
||||
/* If not found in any directory, use the
|
||||
default as the last resort. */
|
||||
lpval = env_vars[i].def_value;
|
||||
dwType = REG_EXPAND_SZ;
|
||||
}
|
||||
} while (*pstart);
|
||||
}
|
||||
else
|
||||
{
|
||||
lpval = env_vars[i].def_value;
|
||||
dwType = REG_EXPAND_SZ;
|
||||
}
|
||||
if (strcmp (env_vars[i].name, "HOME") == 0 && !appdata)
|
||||
Vdelayed_warnings_list
|
||||
= Fcons (listn (CONSTYPE_HEAP, 2,
|
||||
intern ("initialization"),
|
||||
|
@ -2394,8 +2451,8 @@ get_emacs_configuration_options (void)
|
|||
#include <sys/timeb.h>
|
||||
|
||||
/* Emulate gettimeofday (Ulrich Leodolter, 1/11/95). */
|
||||
void
|
||||
gettimeofday (struct timeval *tv, struct timezone *tz)
|
||||
int
|
||||
gettimeofday (struct timeval *restrict tv, struct timezone *restrict tz)
|
||||
{
|
||||
struct _timeb tb;
|
||||
_ftime (&tb);
|
||||
|
@ -2413,6 +2470,7 @@ gettimeofday (struct timeval *tv, struct timezone *tz)
|
|||
tz->tz_minuteswest = tb.timezone; /* minutes west of Greenwich */
|
||||
tz->tz_dsttime = tb.dstflag; /* type of dst correction */
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Emulate fdutimens. */
|
||||
|
|
Loading…
Add table
Reference in a new issue