GNU bug report logs - #9960
Compiling Emacs trunk with MSVC

Previous Next

Packages: emacs, w32;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Sat, 5 Nov 2011 11:24:02 UTC

Severity: normal

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Fabrice Popineau <fabrice.popineau <at> supelec.fr>
Cc: cschol2112 <at> googlemail.com, 9960 <at> debbugs.gnu.org
Subject: bug#9960: Compiling Emacs trunk with MSVC
Date: Fri, 11 Nov 2011 11:39:56 +0200
> From: Fabrice Popineau <fabrice.popineau <at> supelec.fr>
> Date: Thu, 10 Nov 2011 20:56:11 +0100
> Cc: cschol2112 <at> googlemail.com, 9960 <at> debbugs.gnu.org
> 
> Sure. feel free to adapt on the basis of the attached patch.
> Status is :
> - completely functional 32 bits version with xpm, gif, jpeg, tiff. Able to
> boostrap itself.

Great news, thanks.

> Is there any interest in having a 64bits windows emacs ?

Yes, though if the changes are significant, they will probably not
make it into Emacs 24.1.  Plus, I think you will need to sign legal
papers to contribute more than what you already have.  (I can
currently find on file your assignment only to Gnus.)

> I have added two other files : a 64bits manifest for emacs.exe and a
> w32compat.h header file that is needed to compile the above mentioned
> libraries. In my case, this w32compat.h is included while compiling image.c
> for example.

Is this for a 64-bit build, or is this needed for a 32-bit build as
well?  If for a 32-bit built, then what exactly are the problems with
image.c that requires w32compat.h?

> +#ifndef _MSC_VER
>        extern char **environ;
> +#endif

Which MSVC header has the necessary declaration, and what is that
declaration?

> --- lib/strftime.c	2011-03-31 04:24:03 +0000
> +++ lib/strftime.c	2011-11-10 17:39:37 +0000
> @@ -36,9 +36,14 @@
>  #include <ctype.h>
>  #include <time.h>
>  
> +#ifdef _MSC_VER
> +#define tzname _tzname
> +#else
>  #if HAVE_TZNAME && !HAVE_DECL_TZNAME
>  extern char *tzname[];

Can we instead modify the #define on src/s/ms-w32.h so as to include
versions of MSVC above 1400?  Or does that not work for some reason?

I'd like to avoid changing source files in lib/, since they are
imported from gnulib.

> --- lisp/bindings.el	2011-10-08 16:37:46 +0000
> +++ lisp/bindings.el	2011-11-10 17:49:35 +0000
> @@ -824,13 +824,13 @@
>  ;; Define control-digits.
>  (let ((i ?0))
>    (while (<= i ?9)
> -    (define-key global-map (read (format "[?\\C-%c]" i)) 'digit-argument)
> +;    (define-key global-map (read (format "[?\\C-%c]" i)) 'digit-argument)
>      (setq i (1+ i))))
>  (define-key global-map [?\C--] 'negative-argument)
>  ;; Define control-meta-digits.
>  (let ((i ?0))
>    (while (<= i ?9)
> -    (define-key esc-map (read (format "[?\\C-%c]" i)) 'digit-argument)
> +;    (define-key esc-map (read (format "[?\\C-%c]" i)) 'digit-argument)
>      (setq i (1+ i))))
>  (define-key global-map [?\C-\M--] 'negative-argument)

Why is this part needed?

> === modified file 'src/makefile.w32-in'
> --- src/makefile.w32-in	2011-11-05 22:55:08 +0000
> +++ src/makefile.w32-in	2011-11-10 02:16:49 +0000
> @@ -177,7 +177,7 @@
>  $(TEMACS):      $(TLIB0) $(TLIB1) $(TLIB2) $(TLASTLIB) $(TOBJ) $(TRES) \
>  		  ../nt/$(BLD)/addsection.exe $(GNULIB)
>  	$(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
> -	"$(THISDIR)/../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 21
> +	"$(THISDIR)/../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 42

Is such a large heap really needed for a 32-bit MSVC build?  Or is it
for the 64-bit build?

> -#if (defined(_MSC_VER) && defined(emacs)) || defined(USE_CRT_DLL)
> +#if (defined(_MSC_VER) && defined(emacs))
>  #define malloc e_malloc
>  #define free   e_free
>  #define realloc e_realloc

What was the problem that required this change?

Thanks.




This bug report was last modified 13 years and 61 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.