aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Colascione2012-12-09 23:11:21 -0800
committerDaniel Colascione2012-12-09 23:11:21 -0800
commit1cf1bbd51e91f02a1d3fabb4f7ea4b1322c4259c (patch)
tree6a1f7358551d0ce22522ba9dbf816a75a0321bec
parentf433306af510e86a614e9f9f082b6d2d5f56a968 (diff)
downloademacs-1cf1bbd51e91f02a1d3fabb4f7ea4b1322c4259c.tar.gz
emacs-1cf1bbd51e91f02a1d3fabb4f7ea4b1322c4259c.zip
Compile Windows resources into cygw32 Emacs
-rw-r--r--ChangeLog6
-rw-r--r--configure.ac10
-rw-r--r--nt/ChangeLog6
-rw-r--r--nt/emacs.rc4
-rw-r--r--src/ChangeLog21
-rw-r--r--src/Makefile.in21
-rw-r--r--src/emacs.c8
-rw-r--r--src/unexw32.c16
-rw-r--r--src/w32fns.c4
-rw-r--r--src/w32gui.h3
10 files changed, 73 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index 965c7882a86..2c786dca69b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
12012-12-10 Daniel Colascione <dancol@dancol.org>
2
3 * configure.ac (W32_RES, W32_RES_LINK, WINDRES): Teach the cygw32
4 build how to compile Windows resource files; use these variables
5 to tell src/Makefile.in how and whether to compile resources.
6
12012-12-05 Glenn Morris <rgm@gnu.org> 72012-12-05 Glenn Morris <rgm@gnu.org>
2 8
3 * configure.ac: Handle info/ files with or without ".info" extension. 9 * configure.ac: Handle info/ files with or without ".info" extension.
diff --git a/configure.ac b/configure.ac
index 594fe94214d..3bfa7c9443b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1584,6 +1584,8 @@ AC_SUBST(LIB_STANDARD)
1584HAVE_W32=no 1584HAVE_W32=no
1585W32_OBJ= 1585W32_OBJ=
1586W32_LIBS= 1586W32_LIBS=
1587W32_RES=
1588W32_RES_LINK=
1587if test "${with_w32}" != no; then 1589if test "${with_w32}" != no; then
1588 if test "${opsys}" != "cygwin"; then 1590 if test "${opsys}" != "cygwin"; then
1589 AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin.]) 1591 AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin.])
@@ -1592,13 +1594,21 @@ if test "${with_w32}" != no; then
1592 [AC_MSG_ERROR([`--with-w32' was specified, but windows.h 1594 [AC_MSG_ERROR([`--with-w32' was specified, but windows.h
1593 cannot be found.])]) 1595 cannot be found.])])
1594 AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.]) 1596 AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
1597 AC_CHECK_TOOL(WINDRES, [windres],
1598 [AC_MSG_ERROR([No resource compiler found.])])
1595 W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o" 1599 W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
1596 W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o" 1600 W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
1597 W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32" 1601 W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
1598 W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool" 1602 W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
1603 W32_RES="emacs.res"
1604 # Tell the linker that emacs.res is an object (which we compile from
1605 # the rc file), not a linker script.
1606 W32_RES_LINK="-Wl,-bpe-i386 -Wl,emacs.res"
1599fi 1607fi
1600AC_SUBST(W32_OBJ) 1608AC_SUBST(W32_OBJ)
1601AC_SUBST(W32_LIBS) 1609AC_SUBST(W32_LIBS)
1610AC_SUBST(W32_RES)
1611AC_SUBST(W32_RES_LINK)
1602 1612
1603if test "${HAVE_W32}" = "yes"; then 1613if test "${HAVE_W32}" = "yes"; then
1604 window_system=w32 1614 window_system=w32
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 20789c75ec3..a70e6c08453 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,9 @@
12012-12-10 Daniel Colascione <dancol@dancol.org>
2
3 * emacs.rc: Use forward slashes in relative paths in order to
4 avoid complaints from Cygwin. (Forward slashes work perfectly
5 well in the NT build.)
6
12012-11-24 Paul Eggert <eggert@cs.ucla.edu> 72012-11-24 Paul Eggert <eggert@cs.ucla.edu>
2 8
3 Revert recent change for Bug#8855; see ../src/ChangeLog. 9 Revert recent change for Bug#8855; see ../src/ChangeLog.
diff --git a/nt/emacs.rc b/nt/emacs.rc
index cc93da0ffd2..1653dfd1391 100644
--- a/nt/emacs.rc
+++ b/nt/emacs.rc
@@ -1,5 +1,5 @@
1Emacs ICON icons\emacs.ico 1Emacs ICON icons/emacs.ico
232649 CURSOR icons\hand.cur 232649 CURSOR icons/hand.cur
3#ifdef WIN64 3#ifdef WIN64
41 24 "emacs-x64.manifest" 41 24 "emacs-x64.manifest"
5#else 5#else
diff --git a/src/ChangeLog b/src/ChangeLog
index 9d9c1fdaff5..be2d3dd6a6f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,24 @@
12012-12-10 Daniel Colascione <dancol@dancol.org>
2
3 * w32gui.h (hprevinst, lpCmdLine, nCmdShow): Remove unused
4 declarations.
5
6 * w32fns.c (cache_system_info): Initialize the global hinst
7 variable here so various initialization calls DTRT.
8
9 * unexw32.c (hprevinst, lpCmdLine, nCmdShow): Remove unused
10 variables.
11 (hinst): Remove unneeded extern declaration.
12 (_start): Remove initialization of above variables; remove
13 initialization of hinst, as cache_system_info now does that.
14
15 * emacs.c (main): Call cache_system_info early in startup; we
16 previously weren't calling it in Cygwin builds.
17
18 * Makefile.in (ntsource, WINDRES, W32_RES, W#@_RES_LINK): Teach
19 the autoconf build system how to compile a Windows resource file
20 and link it to Emacs.
21
12012-12-08 Jan Djärv <jan.h.d@swipnet.se> 222012-12-08 Jan Djärv <jan.h.d@swipnet.se>
2 23
3 * nsterm.m (fd_handler:): FD_ZERO fds (Bug#13103). 24 * nsterm.m (fd_handler:): FD_ZERO fds (Bug#13103).
diff --git a/src/Makefile.in b/src/Makefile.in
index c24e421bbbc..75624dc0631 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -28,9 +28,11 @@ SHELL = /bin/sh
28# Here are the things that we expect ../configure to edit. 28# Here are the things that we expect ../configure to edit.
29# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH. 29# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
30srcdir = @srcdir@ 30srcdir = @srcdir@
31ntsource = $(srcdir)/../nt
31abs_builddir = @abs_builddir@ 32abs_builddir = @abs_builddir@
32VPATH = $(srcdir) 33VPATH = $(srcdir)
33CC = @CC@ 34CC = @CC@
35WINDRES = @WINDRES@
34CFLAGS = @CFLAGS@ 36CFLAGS = @CFLAGS@
35CPPFLAGS = @CPPFLAGS@ 37CPPFLAGS = @CPPFLAGS@
36LDFLAGS = @LDFLAGS@ 38LDFLAGS = @LDFLAGS@
@@ -266,6 +268,13 @@ W32_OBJ=@W32_OBJ@
266## --lwinspool if HAVE_W32, else empty. 268## --lwinspool if HAVE_W32, else empty.
267W32_LIBS=@W32_LIBS@ 269W32_LIBS=@W32_LIBS@
268 270
271## emacs.res if HAVE_W32
272W32_RES=@W32_RES@
273## If HAVE_W32, compiler arguments for including
274## the resource file in the binary.
275## XXX -Wl,-b -Wl,pe-i386 -Wl,emacs.res
276W32_RES_LINK=@W32_RES_LINK@
277
269## Empty if !HAVE_X_WINDOWS 278## Empty if !HAVE_X_WINDOWS
270## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT 279## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT
271## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE 280## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE
@@ -328,7 +337,6 @@ ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
328 @$(MKDEPDIR) 337 @$(MKDEPDIR)
329 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $< 338 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
330 339
331
332## lastfile must follow all files whose initialized data areas should 340## lastfile must follow all files whose initialized data areas should
333## be dumped as pure by dump-emacs. 341## be dumped as pure by dump-emacs.
334base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ 342base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
@@ -462,9 +470,11 @@ $(obj) $(otherobj): globals.h
462$(lib)/libgnu.a: $(config_h) 470$(lib)/libgnu.a: $(config_h)
463 cd $(lib) && $(MAKE) libgnu.a 471 cd $(lib) && $(MAKE) libgnu.a
464 472
465temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) $(lib)/libgnu.a 473temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) \
474 $(lib)/libgnu.a $(W32_RES)
466 $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \ 475 $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \
467 -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES) 476 -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES) \
477 $(W32_RES_LINK)
468 test "$(CANNOT_DUMP)" = "yes" || \ 478 test "$(CANNOT_DUMP)" = "yes" || \
469 test "X$(PAXCTL)" = X || $(PAXCTL) -r temacs$(EXEEXT) 479 test "X$(PAXCTL)" = X || $(PAXCTL) -r temacs$(EXEEXT)
470 480
@@ -505,11 +515,14 @@ $(OLDXMENU): $(OLDXMENU_TARGET)
505 515
506doc.o: buildobj.h 516doc.o: buildobj.h
507 517
518emacs.res: $(ntsource)/emacs.rc \
519 $(ntsource)/icons/emacs.ico \
520 $(ntsource)/emacs-x86.manifest
521 $(WINDRES) -O COFF -o $@ $(ntsource)/emacs.rc
508 522
509ns-app: emacs$(EXEEXT) 523ns-app: emacs$(EXEEXT)
510 cd ../nextstep && $(MAKE) $(MFLAGS) all 524 cd ../nextstep && $(MAKE) $(MFLAGS) all
511 525
512
513.PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean 526.PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean
514.PHONY: versionclean extraclean frc 527.PHONY: versionclean extraclean frc
515 528
diff --git a/src/emacs.c b/src/emacs.c
index f533c3ae983..4f5044db1c5 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -40,6 +40,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
40#if defined WINDOWSNT || defined HAVE_NTGUI 40#if defined WINDOWSNT || defined HAVE_NTGUI
41#include "w32select.h" 41#include "w32select.h"
42#include "w32font.h" 42#include "w32font.h"
43#include "w32common.h"
43#endif 44#endif
44 45
45#if defined HAVE_NTGUI && defined CYGWIN 46#if defined HAVE_NTGUI && defined CYGWIN
@@ -720,6 +721,13 @@ main (int argc, char **argv)
720 } 721 }
721#endif 722#endif
722 723
724#if defined WINDOWSNT || defined HAVE_NTGUI
725 /* Set global variables used to detect Windows version. Do this as
726 early as possible. (unexw32.c calls this function as well, but
727 the additional call here is harmless.) */
728 cache_system_info ();
729#endif
730
723#ifdef RUN_TIME_REMAP 731#ifdef RUN_TIME_REMAP
724 if (initialized) 732 if (initialized)
725 run_time_remap (argv[0]); 733 run_time_remap (argv[0]);
diff --git a/src/unexw32.c b/src/unexw32.c
index 1e591a78b73..ee1deb5f92e 100644
--- a/src/unexw32.c
+++ b/src/unexw32.c
@@ -85,13 +85,6 @@ DWORD_PTR extra_bss_size_static = 0;
85 85
86PIMAGE_SECTION_HEADER heap_section; 86PIMAGE_SECTION_HEADER heap_section;
87 87
88#ifdef HAVE_NTGUI
89extern HINSTANCE hinst;
90HINSTANCE hprevinst = NULL;
91LPSTR lpCmdLine = "";
92int nCmdShow = 0;
93#endif /* HAVE_NTGUI */
94
95/* Startup code for running on NT. When we are running as the dumped 88/* Startup code for running on NT. When we are running as the dumped
96 version, we need to bootstrap our heap and .bss section into our 89 version, we need to bootstrap our heap and .bss section into our
97 address space before we can actually hand off control to the startup 90 address space before we can actually hand off control to the startup
@@ -121,15 +114,6 @@ _start (void)
121 /* Prevent Emacs from being locked up (eg. in batch mode) when 114 /* Prevent Emacs from being locked up (eg. in batch mode) when
122 accessing devices that aren't mounted (eg. removable media drives). */ 115 accessing devices that aren't mounted (eg. removable media drives). */
123 SetErrorMode (SEM_FAILCRITICALERRORS); 116 SetErrorMode (SEM_FAILCRITICALERRORS);
124
125 /* Invoke the NT CRT startup routine now that our housecleaning
126 is finished. */
127#ifdef HAVE_NTGUI
128 /* determine WinMain args like crt0.c does */
129 hinst = GetModuleHandle (NULL);
130 lpCmdLine = GetCommandLine ();
131 nCmdShow = SW_SHOWDEFAULT;
132#endif
133 mainCRTStartup (); 117 mainCRTStartup ();
134} 118}
135 119
diff --git a/src/w32fns.c b/src/w32fns.c
index de5cee1d7a7..90bbc61eec6 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -1828,7 +1828,6 @@ static LRESULT CALLBACK w32_wnd_proc (HWND, UINT, WPARAM, LPARAM);
1828static BOOL 1828static BOOL
1829w32_init_class (HINSTANCE hinst) 1829w32_init_class (HINSTANCE hinst)
1830{ 1830{
1831
1832 if (w32_unicode_gui) 1831 if (w32_unicode_gui)
1833 { 1832 {
1834 WNDCLASSW uwc; 1833 WNDCLASSW uwc;
@@ -7020,6 +7019,9 @@ cache_system_info (void)
7020 DWORD data; 7019 DWORD data;
7021 } version; 7020 } version;
7022 7021
7022 /* Cache the module handle of Emacs itself. */
7023 hinst = GetModuleHandle (NULL);
7024
7023 /* Cache the version of the operating system. */ 7025 /* Cache the version of the operating system. */
7024 version.data = GetVersion (); 7026 version.data = GetVersion ();
7025 w32_major_version = version.info.major; 7027 w32_major_version = version.info.major;
diff --git a/src/w32gui.h b/src/w32gui.h
index 0da8de97f23..fe2bb2334b5 100644
--- a/src/w32gui.h
+++ b/src/w32gui.h
@@ -79,9 +79,6 @@ typedef struct _XImage
79#define FACE_DEFAULT (~0) 79#define FACE_DEFAULT (~0)
80 80
81extern HINSTANCE hinst; 81extern HINSTANCE hinst;
82extern HINSTANCE hprevinst;
83extern LPSTR lpCmdLine;
84extern int nCmdShow;
85 82
86/* Bit Gravity */ 83/* Bit Gravity */
87 84