[Gc] Win64 GCC support

NightStrike nightstrike at gmail.com
Sun Jun 21 07:10:18 PDT 2009

On Sun, Jun 21, 2009 at 3:00 AM, Petter Urkedal<urkedal at nbi.dk> wrote:
> On 2009-06-20, NightStrike wrote:
>> 2009/6/19 Ivan Maidanski <ivmai at mail.ru>:
>> > I guess current configure won't work for mingw-w64.
>> >
>> > The problem (You are seeing) with malloc.x is:
>> > 1. mingw-w64 defines _DLL (same as VC++ but not MinGW),
>> > 2. configure should supply -DGC_NOT_DLL (but don't),
>> > 3. gc_config_macros.h defines GC_API as dll_import (as _DLL present but no GC_BUILD and no GC_NOT_DLL),
>> > 4. GC_arrays is semi-private (as used by test) and tagged with GC_API,
>> > 5. you get "initializer element is not const" error (is this because of .rel.ro missing on Win32?)
>> >
>> > Are there any volunteers to get configure up-to-date and working on GNU/Win32 systems?
>> You guys are using automake, so it should be very easy to do this.
>> Unfortunately, it appears to be an old version of automake, one that
>> I've never even used before.  Are you averse to stepping up to a more
>> recent version?  1.11 is current.
> I normally refresh the generated files with "autoreconf -vif" when
> building from CVS, and the current HEAD works for me with Automake-1.10.
> There is, however, a number of warnings which can be silenced by
> removing the outdated libtool.m4.  I've suggested a pending correction
> (the last two posts):

The first line of Makefile.in is:
# Makefile.in generated by automake 1.9.6 from Makefile.am.

So it must not have been committed if you built it from 1.10.

> http://blog.gmane.org/gmane.comp.programming.garbage-collection.boehmgc/day=20090516
> Your seem to be familiar with Automake, so you probably know what to do,
> but since bdwgc takes a mostly architecture-based approach, my bet is:
>  * Check how ./config.guess identifies the platform.
>  * Add a $host case in configure.ac.
>  * Add the corresponding AC_DEFINEs.

Going the AC_DEFINE route suggests that configure will handle the
definitions and put the #defines in config.h.  However, you guys don't
use config.h.  Do you instead use the DEFS variable, or something?
This would also fall into autoconf realm, which is in a weird state.
You seem to be generating configure with 2.61, but you have 2.53
listed in your PREREQ line:

# Generated by GNU Autoconf 2.61 for gc 7.2alpha3.

> Doing this, it's unlikely that you'll introduce anything that doesn't
> also work on older Automake.  I don't have a Windows machine, so I'll
> have to pass on the actual work.

I can do the work, as it should be very easy.  It's just that I want
to be clear how you guys want it done.  Going the AC_DEFINE route is
handling it all at configure time instead of make time.  Both work
fine, just tell me which to do and I'll do it.

More information about the Gc mailing list