diff mbox

[2/5] Add support for the MinGW platform

Message ID 519BC816.3000304@ramsay1.demon.co.uk (mailing list archive)
State Rejected, archived
Headers show

Commit Message

Ramsay Jones May 21, 2013, 7:16 p.m. UTC
Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
---
 cgcc | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Josh Triplett May 21, 2013, 10:09 p.m. UTC | #1
On Tue, May 21, 2013 at 08:16:38PM +0100, Ramsay Jones wrote:
> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>

I believe this will match both 32-bit and 64-bit MinGW, which seems
wrong.  Please do check the architecture strings for 32-bit and 64-bit
MinGW, and handle them separately.

> ---
>  cgcc | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/cgcc b/cgcc
> index c075e5f..e94a965 100755
> --- a/cgcc
> +++ b/cgcc
> @@ -226,6 +226,19 @@ sub add_specs {
>  	    ' -D__OpenBSD__=1';
>      } elsif ($spec eq 'unix') {
>  	return ' -Dunix=1 -D__unix=1 -D__unix__=1';
> +    } elsif ($spec =~ /^mingw/) {
> +	return ' -isystem /mingw/include' .
> +	    ' -D__MINGW32__=1' .
> +	    ' -D__MSVCRT__=1' .
> +	    ' -DWIN32=1 -D_WIN32=1 -D__WIN32=1 -D__WIN32__=1' .
> +	    ' -DWINNT=1 -D__WINNT=1 -D__WINNT__=1' .
> +	    " -D'_cdecl=__attribute__((__cdecl__))'" .
> +	    " -D'__cdecl=__attribute__((__cdecl__))'" .
> +	    " -D'_stdcall=__attribute__((__stdcall__))'" .
> +	    " -D'__stdcall=__attribute__((__stdcall__))'" .
> +	    " -D'_fastcall=__attribute__((__fastcall__))'" .
> +	    " -D'__fastcall=__attribute__((__fastcall__))'" .
> +	    " -D'__declspec(x)=__attribute__((x))'";
>      } elsif ( $spec =~ /^cygwin/) {
>  	return &add_specs ('unix') .
>  	    ' -D__CYGWIN__=1 -D__CYGWIN32__=1' .
> -- 
> 1.8.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ramsay Jones May 22, 2013, 10:07 p.m. UTC | #2
Josh Triplett wrote:
> On Tue, May 21, 2013 at 08:16:38PM +0100, Ramsay Jones wrote:
>> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
> 
> I believe this will match both 32-bit and 64-bit MinGW, which seems
> wrong.  Please do check the architecture strings for 32-bit and 64-bit
> MinGW, and handle them separately.

Yes, given that, for me:

  $ uname -a
  MINGW32_NT-5.1 TOSHIBA 1.0.12(0.46/3/2) 2010-02-05 01:08 i686 unknown
  $

I'm hoping that the following change will be sufficient (I don't have
access to a 64-bit MinGW, so I don't know what 'uname -a' returns, but
I think this will work ... ;-):

  $ git diff
  diff --git a/cgcc b/cgcc
  index e94a965..68f96b9 100755
  --- a/cgcc
  +++ b/cgcc
  @@ -226,7 +226,7 @@ sub add_specs {
              ' -D__OpenBSD__=1';
       } elsif ($spec eq 'unix') {
          return ' -Dunix=1 -D__unix=1 -D__unix__=1';
  -    } elsif ($spec =~ /^mingw/) {
  +    } elsif ($spec =~ /^mingw32/) {
          return ' -isystem /mingw/include' .
              ' -D__MINGW32__=1' .
              ' -D__MSVCRT__=1' .
  $


ATB,
Ramsay Jones


--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Josh Triplett May 23, 2013, 12:46 a.m. UTC | #3
On Wed, May 22, 2013 at 11:07:27PM +0100, Ramsay Jones wrote:
> Josh Triplett wrote:
> > On Tue, May 21, 2013 at 08:16:38PM +0100, Ramsay Jones wrote:
> >> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
> > 
> > I believe this will match both 32-bit and 64-bit MinGW, which seems
> > wrong.  Please do check the architecture strings for 32-bit and 64-bit
> > MinGW, and handle them separately.
> 
> Yes, given that, for me:
> 
>   $ uname -a
>   MINGW32_NT-5.1 TOSHIBA 1.0.12(0.46/3/2) 2010-02-05 01:08 i686 unknown
>   $
> 
> I'm hoping that the following change will be sufficient (I don't have
> access to a 64-bit MinGW, so I don't know what 'uname -a' returns, but
> I think this will work ... ;-):
> 
>   $ git diff
>   diff --git a/cgcc b/cgcc
>   index e94a965..68f96b9 100755
>   --- a/cgcc
>   +++ b/cgcc
>   @@ -226,7 +226,7 @@ sub add_specs {
>               ' -D__OpenBSD__=1';
>        } elsif ($spec eq 'unix') {
>           return ' -Dunix=1 -D__unix=1 -D__unix__=1';
>   -    } elsif ($spec =~ /^mingw/) {
>   +    } elsif ($spec =~ /^mingw32/) {

Unfortunately, I don't think that suffices; I've seen a few different
architecture triples used for 64-bit MinGW, some of which include
"mingw32".  I *think* it might work to match i[3-6]86-.*-mingw.

- Josh Triplett
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ramsay Jones May 25, 2013, 7:37 p.m. UTC | #4
Josh Triplett wrote:
> On Wed, May 22, 2013 at 11:07:27PM +0100, Ramsay Jones wrote:
>> Josh Triplett wrote:
>>> On Tue, May 21, 2013 at 08:16:38PM +0100, Ramsay Jones wrote:
>>>> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
>>>
>>> I believe this will match both 32-bit and 64-bit MinGW, which seems
>>> wrong.  Please do check the architecture strings for 32-bit and 64-bit
>>> MinGW, and handle them separately.
>>
>> Yes, given that, for me:
>>
>>   $ uname -a
>>   MINGW32_NT-5.1 TOSHIBA 1.0.12(0.46/3/2) 2010-02-05 01:08 i686 unknown
>>   $
>>
>> I'm hoping that the following change will be sufficient (I don't have
>> access to a 64-bit MinGW, so I don't know what 'uname -a' returns, but
>> I think this will work ... ;-):
>>
>>   $ git diff
>>   diff --git a/cgcc b/cgcc
>>   index e94a965..68f96b9 100755
>>   --- a/cgcc
>>   +++ b/cgcc
>>   @@ -226,7 +226,7 @@ sub add_specs {
>>               ' -D__OpenBSD__=1';
>>        } elsif ($spec eq 'unix') {
>>           return ' -Dunix=1 -D__unix=1 -D__unix__=1';
>>   -    } elsif ($spec =~ /^mingw/) {
>>   +    } elsif ($spec =~ /^mingw32/) {
> 
> Unfortunately, I don't think that suffices; I've seen a few different
> architecture triples used for 64-bit MinGW, some of which include
> "mingw32".

You are kidding, right?

>              I *think* it might work to match i[3-6]86-.*-mingw.

Is this pattern to be matched against "uname -s"?

Maybe I could match "uname -m" to i?86 *in addition* to the above?

At this point I'm guessing. Again, I don't have access to a 64-bit
MinGW system. Maybe support for 64-bit MinGW should be implemented
by a patch on top of this one (by someone who uses 64-bit MinGW).

ATB,
Ramsay Jones


--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/cgcc b/cgcc
index c075e5f..e94a965 100755
--- a/cgcc
+++ b/cgcc
@@ -226,6 +226,19 @@  sub add_specs {
 	    ' -D__OpenBSD__=1';
     } elsif ($spec eq 'unix') {
 	return ' -Dunix=1 -D__unix=1 -D__unix__=1';
+    } elsif ($spec =~ /^mingw/) {
+	return ' -isystem /mingw/include' .
+	    ' -D__MINGW32__=1' .
+	    ' -D__MSVCRT__=1' .
+	    ' -DWIN32=1 -D_WIN32=1 -D__WIN32=1 -D__WIN32__=1' .
+	    ' -DWINNT=1 -D__WINNT=1 -D__WINNT__=1' .
+	    " -D'_cdecl=__attribute__((__cdecl__))'" .
+	    " -D'__cdecl=__attribute__((__cdecl__))'" .
+	    " -D'_stdcall=__attribute__((__stdcall__))'" .
+	    " -D'__stdcall=__attribute__((__stdcall__))'" .
+	    " -D'_fastcall=__attribute__((__fastcall__))'" .
+	    " -D'__fastcall=__attribute__((__fastcall__))'" .
+	    " -D'__declspec(x)=__attribute__((x))'";
     } elsif ( $spec =~ /^cygwin/) {
 	return &add_specs ('unix') .
 	    ' -D__CYGWIN__=1 -D__CYGWIN32__=1' .