Patchwork build: compile gtk.c with special CFLAGS

login
register
mail settings
Submitter Blue Swirl
Date March 3, 2013, 9:36 a.m.
Message ID <7aa6a5e5b2f013994380033374deec4370dea9e5.1362303363.git.blauwirbel@gmail.com>
Download mbox | patch
Permalink /patch/224537/
State New
Headers show

Comments

Blue Swirl - March 3, 2013, 9:36 a.m.
Compile gtk.c with special CFLAGS instead of disabling -Werror globally.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
 configure        |   12 +++++++++++-
 ui/Makefile.objs |    2 +-
 2 files changed, 12 insertions(+), 2 deletions(-)
Anthony Liguori - March 3, 2013, 9:03 p.m.
Blue Swirl <blauwirbel@gmail.com> writes:

> Compile gtk.c with special CFLAGS instead of disabling -Werror globally.
>
> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>

I thought Kevin's pragma trick solved this problem?

Are you attempting to avoid disabling Werror when prgram isn't
available?  That seems to defeat the purpose of doing the pragma thing
to begin with.

Regards,

Anthony Liguori

> ---
>  configure        |   12 +++++++++++-
>  ui/Makefile.objs |    2 +-
>  2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index 19738ac..2a043d6 100755
> --- a/configure
> +++ b/configure
> @@ -3139,6 +3139,7 @@ fi
>  # the build doesn't fail anyway.
>  
>  pragma_disable_unused_but_set=no
> +gtk_special_cflags=no
>  cat > $TMPC << EOF
>  #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
>  #pragma GCC diagnostic ignored "-Wstrict-prototypes"
> @@ -3150,7 +3151,7 @@ EOF
>  if compile_prog "-Werror" "" ; then
>      pragma_diagnostic_available=yes
>  else
> -    werror=no
> +    gtk_special_cflags=yes
>  fi
>  
>  ########################################
> @@ -3845,6 +3846,15 @@ echo "WINDRES=$windres" >> $config_host_mak
>  echo "LIBTOOL=$libtool" >> $config_host_mak
>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
>  echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
> +if test "$gtk_special_cflags" = "yes"; then
> +  # Our compiler doesn't support #pragmas to suppress warnings and GTK
> +  # can't be fixed, so compile GTK files with special CFLAGS
> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" | \
> +    sed -e 's/-Wstrict-prototypes//g' \
> +        -e 's/-Wunused-but-set-variable//g' >> $config_host_mak
> +else
> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
> +fi
>  echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
>  if test "$sparse" = "yes" ; then
>    echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
> diff --git a/ui/Makefile.objs b/ui/Makefile.objs
> index 6ddc0de..c9aa1e6 100644
> --- a/ui/Makefile.objs
> +++ b/ui/Makefile.objs
> @@ -19,4 +19,4 @@ $(obj)/sdl.o $(obj)/sdl_zoom.o: QEMU_CFLAGS += $(SDL_CFLAGS)
>  
>  $(obj)/cocoa.o: $(SRC_PATH)/$(obj)/cocoa.m
>  
> -$(obj)/gtk.o: QEMU_CFLAGS += $(GTK_CFLAGS) $(VTE_CFLAGS)
> +$(obj)/gtk.o: QEMU_CFLAGS = $(GTK_SPECIAL_CFLAGS) $(GTK_CFLAGS) $(VTE_CFLAGS)
> -- 
> 1.7.2.5
Blue Swirl - March 4, 2013, 8:17 p.m.
On Sun, Mar 3, 2013 at 9:03 PM, Anthony Liguori <aliguori@us.ibm.com> wrote:
> Blue Swirl <blauwirbel@gmail.com> writes:
>
>> Compile gtk.c with special CFLAGS instead of disabling -Werror globally.
>>
>> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
>
> I thought Kevin's pragma trick solved this problem?

Not in all cases it seems.

>
> Are you attempting to avoid disabling Werror when prgram isn't
> available?  That seems to defeat the purpose of doing the pragma thing
> to begin with.

When the pragma works, there should not be any need to disable -Werror
or other flags. If the pragmas are not available, we can disable the
offending flags only for gtk.c and keep them for the rest of the
build.

>
> Regards,
>
> Anthony Liguori
>
>> ---
>>  configure        |   12 +++++++++++-
>>  ui/Makefile.objs |    2 +-
>>  2 files changed, 12 insertions(+), 2 deletions(-)
>>
>> diff --git a/configure b/configure
>> index 19738ac..2a043d6 100755
>> --- a/configure
>> +++ b/configure
>> @@ -3139,6 +3139,7 @@ fi
>>  # the build doesn't fail anyway.
>>
>>  pragma_disable_unused_but_set=no
>> +gtk_special_cflags=no
>>  cat > $TMPC << EOF
>>  #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
>>  #pragma GCC diagnostic ignored "-Wstrict-prototypes"
>> @@ -3150,7 +3151,7 @@ EOF
>>  if compile_prog "-Werror" "" ; then
>>      pragma_diagnostic_available=yes
>>  else
>> -    werror=no
>> +    gtk_special_cflags=yes
>>  fi
>>
>>  ########################################
>> @@ -3845,6 +3846,15 @@ echo "WINDRES=$windres" >> $config_host_mak
>>  echo "LIBTOOL=$libtool" >> $config_host_mak
>>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
>>  echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
>> +if test "$gtk_special_cflags" = "yes"; then
>> +  # Our compiler doesn't support #pragmas to suppress warnings and GTK
>> +  # can't be fixed, so compile GTK files with special CFLAGS
>> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" | \
>> +    sed -e 's/-Wstrict-prototypes//g' \
>> +        -e 's/-Wunused-but-set-variable//g' >> $config_host_mak
>> +else
>> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
>> +fi
>>  echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
>>  if test "$sparse" = "yes" ; then
>>    echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
>> diff --git a/ui/Makefile.objs b/ui/Makefile.objs
>> index 6ddc0de..c9aa1e6 100644
>> --- a/ui/Makefile.objs
>> +++ b/ui/Makefile.objs
>> @@ -19,4 +19,4 @@ $(obj)/sdl.o $(obj)/sdl_zoom.o: QEMU_CFLAGS += $(SDL_CFLAGS)
>>
>>  $(obj)/cocoa.o: $(SRC_PATH)/$(obj)/cocoa.m
>>
>> -$(obj)/gtk.o: QEMU_CFLAGS += $(GTK_CFLAGS) $(VTE_CFLAGS)
>> +$(obj)/gtk.o: QEMU_CFLAGS = $(GTK_SPECIAL_CFLAGS) $(GTK_CFLAGS) $(VTE_CFLAGS)
>> --
>> 1.7.2.5
>
Anthony Liguori - March 4, 2013, 8:29 p.m.
Blue Swirl <blauwirbel@gmail.com> writes:

> On Sun, Mar 3, 2013 at 9:03 PM, Anthony Liguori <aliguori@us.ibm.com> wrote:
>> Blue Swirl <blauwirbel@gmail.com> writes:
>>
>>> Compile gtk.c with special CFLAGS instead of disabling -Werror globally.
>>>
>>> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
>>
>> I thought Kevin's pragma trick solved this problem?
>
> Not in all cases it seems.
>
>>
>> Are you attempting to avoid disabling Werror when prgram isn't
>> available?  That seems to defeat the purpose of doing the pragma thing
>> to begin with.
>
> When the pragma works, there should not be any need to disable -Werror
> or other flags. If the pragmas are not available, we can disable the
> offending flags only for gtk.c and keep them for the rest of the
> build.

The idea of the pragma is that gtk.c is the only place that will need
this in the future.

So either we like the pragma approach and just live with disabling
Werror on older GCCs or there's no point in doing the pragma approach in
the first place.

Since this is an issue only with older GCCs, I see no reason to care
about disabling Werror really.  It's a problem that solves itself over time.

Regards,

Anthony Liguori

>
>>
>> Regards,
>>
>> Anthony Liguori
>>
>>> ---
>>>  configure        |   12 +++++++++++-
>>>  ui/Makefile.objs |    2 +-
>>>  2 files changed, 12 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/configure b/configure
>>> index 19738ac..2a043d6 100755
>>> --- a/configure
>>> +++ b/configure
>>> @@ -3139,6 +3139,7 @@ fi
>>>  # the build doesn't fail anyway.
>>>
>>>  pragma_disable_unused_but_set=no
>>> +gtk_special_cflags=no
>>>  cat > $TMPC << EOF
>>>  #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
>>>  #pragma GCC diagnostic ignored "-Wstrict-prototypes"
>>> @@ -3150,7 +3151,7 @@ EOF
>>>  if compile_prog "-Werror" "" ; then
>>>      pragma_diagnostic_available=yes
>>>  else
>>> -    werror=no
>>> +    gtk_special_cflags=yes
>>>  fi
>>>
>>>  ########################################
>>> @@ -3845,6 +3846,15 @@ echo "WINDRES=$windres" >> $config_host_mak
>>>  echo "LIBTOOL=$libtool" >> $config_host_mak
>>>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
>>>  echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
>>> +if test "$gtk_special_cflags" = "yes"; then
>>> +  # Our compiler doesn't support #pragmas to suppress warnings and GTK
>>> +  # can't be fixed, so compile GTK files with special CFLAGS
>>> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" | \
>>> +    sed -e 's/-Wstrict-prototypes//g' \
>>> +        -e 's/-Wunused-but-set-variable//g' >> $config_host_mak
>>> +else
>>> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
>>> +fi
>>>  echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
>>>  if test "$sparse" = "yes" ; then
>>>    echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
>>> diff --git a/ui/Makefile.objs b/ui/Makefile.objs
>>> index 6ddc0de..c9aa1e6 100644
>>> --- a/ui/Makefile.objs
>>> +++ b/ui/Makefile.objs
>>> @@ -19,4 +19,4 @@ $(obj)/sdl.o $(obj)/sdl_zoom.o: QEMU_CFLAGS += $(SDL_CFLAGS)
>>>
>>>  $(obj)/cocoa.o: $(SRC_PATH)/$(obj)/cocoa.m
>>>
>>> -$(obj)/gtk.o: QEMU_CFLAGS += $(GTK_CFLAGS) $(VTE_CFLAGS)
>>> +$(obj)/gtk.o: QEMU_CFLAGS = $(GTK_SPECIAL_CFLAGS) $(GTK_CFLAGS) $(VTE_CFLAGS)
>>> --
>>> 1.7.2.5
>>
Blue Swirl - March 4, 2013, 8:56 p.m.
On Mon, Mar 4, 2013 at 8:29 PM, Anthony Liguori <aliguori@us.ibm.com> wrote:
> Blue Swirl <blauwirbel@gmail.com> writes:
>
>> On Sun, Mar 3, 2013 at 9:03 PM, Anthony Liguori <aliguori@us.ibm.com> wrote:
>>> Blue Swirl <blauwirbel@gmail.com> writes:
>>>
>>>> Compile gtk.c with special CFLAGS instead of disabling -Werror globally.
>>>>
>>>> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
>>>
>>> I thought Kevin's pragma trick solved this problem?
>>
>> Not in all cases it seems.
>>
>>>
>>> Are you attempting to avoid disabling Werror when prgram isn't
>>> available?  That seems to defeat the purpose of doing the pragma thing
>>> to begin with.
>>
>> When the pragma works, there should not be any need to disable -Werror
>> or other flags. If the pragmas are not available, we can disable the
>> offending flags only for gtk.c and keep them for the rest of the
>> build.
>
> The idea of the pragma is that gtk.c is the only place that will need
> this in the future.

It's also the only file that needs GTK_CFLAGS. For simplicity, that
could contain also QEMU_CFLAGS, filtered for offending flags.

> So either we like the pragma approach and just live with disabling
> Werror on older GCCs or there's no point in doing the pragma approach in
> the first place.
>
> Since this is an issue only with older GCCs, I see no reason to care
> about disabling Werror really.  It's a problem that solves itself over time.
>
> Regards,
>
> Anthony Liguori
>
>>
>>>
>>> Regards,
>>>
>>> Anthony Liguori
>>>
>>>> ---
>>>>  configure        |   12 +++++++++++-
>>>>  ui/Makefile.objs |    2 +-
>>>>  2 files changed, 12 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/configure b/configure
>>>> index 19738ac..2a043d6 100755
>>>> --- a/configure
>>>> +++ b/configure
>>>> @@ -3139,6 +3139,7 @@ fi
>>>>  # the build doesn't fail anyway.
>>>>
>>>>  pragma_disable_unused_but_set=no
>>>> +gtk_special_cflags=no
>>>>  cat > $TMPC << EOF
>>>>  #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
>>>>  #pragma GCC diagnostic ignored "-Wstrict-prototypes"
>>>> @@ -3150,7 +3151,7 @@ EOF
>>>>  if compile_prog "-Werror" "" ; then
>>>>      pragma_diagnostic_available=yes
>>>>  else
>>>> -    werror=no
>>>> +    gtk_special_cflags=yes
>>>>  fi
>>>>
>>>>  ########################################
>>>> @@ -3845,6 +3846,15 @@ echo "WINDRES=$windres" >> $config_host_mak
>>>>  echo "LIBTOOL=$libtool" >> $config_host_mak
>>>>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
>>>>  echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
>>>> +if test "$gtk_special_cflags" = "yes"; then
>>>> +  # Our compiler doesn't support #pragmas to suppress warnings and GTK
>>>> +  # can't be fixed, so compile GTK files with special CFLAGS
>>>> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" | \
>>>> +    sed -e 's/-Wstrict-prototypes//g' \
>>>> +        -e 's/-Wunused-but-set-variable//g' >> $config_host_mak
>>>> +else
>>>> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
>>>> +fi
>>>>  echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
>>>>  if test "$sparse" = "yes" ; then
>>>>    echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
>>>> diff --git a/ui/Makefile.objs b/ui/Makefile.objs
>>>> index 6ddc0de..c9aa1e6 100644
>>>> --- a/ui/Makefile.objs
>>>> +++ b/ui/Makefile.objs
>>>> @@ -19,4 +19,4 @@ $(obj)/sdl.o $(obj)/sdl_zoom.o: QEMU_CFLAGS += $(SDL_CFLAGS)
>>>>
>>>>  $(obj)/cocoa.o: $(SRC_PATH)/$(obj)/cocoa.m
>>>>
>>>> -$(obj)/gtk.o: QEMU_CFLAGS += $(GTK_CFLAGS) $(VTE_CFLAGS)
>>>> +$(obj)/gtk.o: QEMU_CFLAGS = $(GTK_SPECIAL_CFLAGS) $(GTK_CFLAGS) $(VTE_CFLAGS)
>>>> --
>>>> 1.7.2.5
>>>
>
Anthony Liguori - March 4, 2013, 10:22 p.m.
Blue Swirl <blauwirbel@gmail.com> writes:

> On Mon, Mar 4, 2013 at 8:29 PM, Anthony Liguori <aliguori@us.ibm.com> wrote:
>> Blue Swirl <blauwirbel@gmail.com> writes:
>>
>>> On Sun, Mar 3, 2013 at 9:03 PM, Anthony Liguori <aliguori@us.ibm.com> wrote:
>>>> Blue Swirl <blauwirbel@gmail.com> writes:
>>>>
>>>>> Compile gtk.c with special CFLAGS instead of disabling -Werror globally.
>>>>>
>>>>> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
>>>>
>>>> I thought Kevin's pragma trick solved this problem?
>>>
>>> Not in all cases it seems.
>>>
>>>>
>>>> Are you attempting to avoid disabling Werror when prgram isn't
>>>> available?  That seems to defeat the purpose of doing the pragma thing
>>>> to begin with.
>>>
>>> When the pragma works, there should not be any need to disable -Werror
>>> or other flags. If the pragmas are not available, we can disable the
>>> offending flags only for gtk.c and keep them for the rest of the
>>> build.
>>
>> The idea of the pragma is that gtk.c is the only place that will need
>> this in the future.
>
> It's also the only file that needs GTK_CFLAGS. For simplicity, that
> could contain also QEMU_CFLAGS, filtered for offending flags.

I mistyped--sorry.  gtk.c is *not* the only place that will need this in the
future.

Regards,

Anthony Liguori

>
>> So either we like the pragma approach and just live with disabling
>> Werror on older GCCs or there's no point in doing the pragma approach in
>> the first place.
>>
>> Since this is an issue only with older GCCs, I see no reason to care
>> about disabling Werror really.  It's a problem that solves itself over time.
>>
>> Regards,
>>
>> Anthony Liguori
>>
>>>
>>>>
>>>> Regards,
>>>>
>>>> Anthony Liguori
>>>>
>>>>> ---
>>>>>  configure        |   12 +++++++++++-
>>>>>  ui/Makefile.objs |    2 +-
>>>>>  2 files changed, 12 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/configure b/configure
>>>>> index 19738ac..2a043d6 100755
>>>>> --- a/configure
>>>>> +++ b/configure
>>>>> @@ -3139,6 +3139,7 @@ fi
>>>>>  # the build doesn't fail anyway.
>>>>>
>>>>>  pragma_disable_unused_but_set=no
>>>>> +gtk_special_cflags=no
>>>>>  cat > $TMPC << EOF
>>>>>  #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
>>>>>  #pragma GCC diagnostic ignored "-Wstrict-prototypes"
>>>>> @@ -3150,7 +3151,7 @@ EOF
>>>>>  if compile_prog "-Werror" "" ; then
>>>>>      pragma_diagnostic_available=yes
>>>>>  else
>>>>> -    werror=no
>>>>> +    gtk_special_cflags=yes
>>>>>  fi
>>>>>
>>>>>  ########################################
>>>>> @@ -3845,6 +3846,15 @@ echo "WINDRES=$windres" >> $config_host_mak
>>>>>  echo "LIBTOOL=$libtool" >> $config_host_mak
>>>>>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
>>>>>  echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
>>>>> +if test "$gtk_special_cflags" = "yes"; then
>>>>> +  # Our compiler doesn't support #pragmas to suppress warnings and GTK
>>>>> +  # can't be fixed, so compile GTK files with special CFLAGS
>>>>> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" | \
>>>>> +    sed -e 's/-Wstrict-prototypes//g' \
>>>>> +        -e 's/-Wunused-but-set-variable//g' >> $config_host_mak
>>>>> +else
>>>>> +  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
>>>>> +fi
>>>>>  echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
>>>>>  if test "$sparse" = "yes" ; then
>>>>>    echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
>>>>> diff --git a/ui/Makefile.objs b/ui/Makefile.objs
>>>>> index 6ddc0de..c9aa1e6 100644
>>>>> --- a/ui/Makefile.objs
>>>>> +++ b/ui/Makefile.objs
>>>>> @@ -19,4 +19,4 @@ $(obj)/sdl.o $(obj)/sdl_zoom.o: QEMU_CFLAGS += $(SDL_CFLAGS)
>>>>>
>>>>>  $(obj)/cocoa.o: $(SRC_PATH)/$(obj)/cocoa.m
>>>>>
>>>>> -$(obj)/gtk.o: QEMU_CFLAGS += $(GTK_CFLAGS) $(VTE_CFLAGS)
>>>>> +$(obj)/gtk.o: QEMU_CFLAGS = $(GTK_SPECIAL_CFLAGS) $(GTK_CFLAGS) $(VTE_CFLAGS)
>>>>> --
>>>>> 1.7.2.5
>>>>
>>

Patch

diff --git a/configure b/configure
index 19738ac..2a043d6 100755
--- a/configure
+++ b/configure
@@ -3139,6 +3139,7 @@  fi
 # the build doesn't fail anyway.
 
 pragma_disable_unused_but_set=no
+gtk_special_cflags=no
 cat > $TMPC << EOF
 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
@@ -3150,7 +3151,7 @@  EOF
 if compile_prog "-Werror" "" ; then
     pragma_diagnostic_available=yes
 else
-    werror=no
+    gtk_special_cflags=yes
 fi
 
 ########################################
@@ -3845,6 +3846,15 @@  echo "WINDRES=$windres" >> $config_host_mak
 echo "LIBTOOL=$libtool" >> $config_host_mak
 echo "CFLAGS=$CFLAGS" >> $config_host_mak
 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
+if test "$gtk_special_cflags" = "yes"; then
+  # Our compiler doesn't support #pragmas to suppress warnings and GTK
+  # can't be fixed, so compile GTK files with special CFLAGS
+  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" | \
+    sed -e 's/-Wstrict-prototypes//g' \
+        -e 's/-Wunused-but-set-variable//g' >> $config_host_mak
+else
+  echo "GTK_SPECIAL_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
+fi
 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
 if test "$sparse" = "yes" ; then
   echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
diff --git a/ui/Makefile.objs b/ui/Makefile.objs
index 6ddc0de..c9aa1e6 100644
--- a/ui/Makefile.objs
+++ b/ui/Makefile.objs
@@ -19,4 +19,4 @@  $(obj)/sdl.o $(obj)/sdl_zoom.o: QEMU_CFLAGS += $(SDL_CFLAGS)
 
 $(obj)/cocoa.o: $(SRC_PATH)/$(obj)/cocoa.m
 
-$(obj)/gtk.o: QEMU_CFLAGS += $(GTK_CFLAGS) $(VTE_CFLAGS)
+$(obj)/gtk.o: QEMU_CFLAGS = $(GTK_SPECIAL_CFLAGS) $(GTK_CFLAGS) $(VTE_CFLAGS)