[PATCH] Introduced --with-gtk option for configure.ac

Peter Hatina phatina at redhat.com
Mon May 28 23:27:03 PDT 2012


On 05/28/2012 10:14 PM, Andrew Hughes wrote:
> 
> 
> ----- Original Message -----
>> Hi,
>>
>> On 05/28/2012 05:03 PM, Andrew Hughes wrote:
>>> ----- Original Message -----
>>>> Hi,
>>>>
>>>> I fixed few things Jiri Vanek suggested and send the patch for
>>>> another review.
>>>>
>>>> Thanks,
>>>>
>>>> Peter Hatina
>>>> EMEA ENG-Desktop Development
>>>> Red Hat Czech, Brno
>>>>
>>>> ---
>>>>  ChangeLog    |    8 ++++++++
>>>>  NEWS         |    1 +
>>>>  acinclude.m4 |   54
>>>>  +++++++++++++++++++++++++++++++++++++++++++++++++++++-
>>>>  3 files changed, 62 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/ChangeLog b/ChangeLog
>>>> index 82c0feb..d6f7e0c 100644
>>>> --- a/ChangeLog
>>>> +++ b/ChangeLog
>>>> @@ -1,3 +1,11 @@
>>>> +2012-05-28  Peter Hatina <phatina at redhat.com>
>>>> +
>>>> +	Introduced configure option --with-gtk=2.0|3.0 to be able to
>>>> compile
>>>> +	against different version of GTK+ (2.x or 3.x).
>>>> +	*NEWS: mentioned bug fix
>>>> +	*acinclude.m4: (GTK_SET_CXX_VARS) macro for settings GTK+ CFLAGS
>>>> +	               (GTK_CHECK) macro for checking GTK+ version
>>>> +
>>>>  2012-05-02  Jiri Vanek  <jvanek at redhat.com>
>>>>  
>>>>  	Introduced new annotations Bug (to connect test/reproducer with
>>>>  	documentation)
>>>> diff --git a/NEWS b/NEWS
>>>> index 8397639..30eb055 100644
>>>> --- a/NEWS
>>>> +++ b/NEWS
>>>> @@ -16,6 +16,7 @@ New in release 1.3 (2012-XX-XX):
>>>>    - PR895: IcedTea-Web searches for missing classes on each
>>>>    loadClass or findClass
>>>>  * Common
>>>>    - PR918: java applet windows uses a low resulution black/white
>>>>    icon
>>>> +  - RHX720836: project can be compiled against GTK+ 2 or 3
>>>> libraries
>>>>  
>>>>  New in release 1.2 (2011-XX-XX):
>>>>  * Security updates:
>>>> diff --git a/acinclude.m4 b/acinclude.m4
>>>> index a330d0f..f3ed46f 100644
>>>> --- a/acinclude.m4
>>>> +++ b/acinclude.m4
>>>> @@ -359,13 +359,65 @@ AC_ARG_ENABLE([plugin],
>>>>  AC_MSG_RESULT(${enable_plugin})
>>>>  ])
>>>>  
>>>> +dnl GTK_CHECK_VERSION([gtk version], [ACTION-IF-FOUND],
>>>> [ACTION-IF-NOT])
>>>> +AC_DEFUN([GTK_CHECK_VERSION],
>>>> +[
>>>> +  if pkg-config --modversion gtk+-$1 &> /dev/null; then
>>>> +    $2
>>>> +  else
>>>> +    $3
>>>> +  fi
>>>> +])
>>>> +
>>>> +dnl GTK_SET_CXX_VARS([gtk version])
>>>> +AC_DEFUN([GTK_SET_CXX_VARS],
>>>> +[
>>>> +  GTK_CFLAGS=`pkg-config --cflags gtk+-$1`
>>>> +  GTK_LIBS=`pkg-config --libs gtk+-$1`
>>>> +])
>>>> +
>>>> +dnl GTK_CHECK([gtk version])
>>>> +AC_DEFUN([GTK_CHECK],
>>>> +[
>>>> +  AC_CACHE_CHECK([for GTK+], [gtk_cv_version],
>>>> +  [
>>>> +    case "$1" in
>>>> +      default)
>>>> +        GTK_CHECK_VERSION(["3.0"],
>>>> +          [echo -n "3.0"
>>>> +           GTK_SET_CXX_VARS(["3.0"])],
>>>> +          [GTK_CHECK_VERSION(["2.0"],
>>>> +             [echo -n "2.0"
>>>> +              GTK_SET_CXX_VARS(["2.0"])],
>>>> +             [AC_MSG_RESULT([no])
>>>> +              AC_MSG_ERROR([GTK+ not found])])])
>>>> +          ;;
>>>> +      *)
>>>> +        GTK_CHECK_VERSION([$1],
>>>> +          [echo -n "$1"
>>>> +           GTK_SET_CXX_VARS([$1])],
>>>> +          [AC_MSG_RESULT([no])
>>>> +           AC_MSG_ERROR([GTK+ $1 not found])])
>>>> +        ;;
>>>> +    esac
>>>> +  ])
>>>> +])
>>>> +
>>>>  AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES],
>>>>  [
>>>>  dnl Check for plugin support headers and libraries.
>>>>  dnl FIXME: use unstable
>>>>  AC_REQUIRE([IT_CHECK_PLUGIN])
>>>>  if test "x${enable_plugin}" = "xyes" ; then
>>>> -  PKG_CHECK_MODULES(GTK, gtk+-2.0)
>>>> +  AC_ARG_WITH([gtk],
>>>> +    [AS_HELP_STRING([--with-gtk=2.0|3.0],
>>>> +    [the GTK+ version to use (default: 3.0)])],
>>>> +    [case "$with_gtk" in
>>>> +       2.0|3.0) ;;
>>>> +       *) AC_MSG_ERROR([invalid GTK+ version specified]) ;;
>>>> +    esac],
>>>> +    [with_gtk=default])
>>>> +  GTK_CHECK([$with_gtk])
>>>>    PKG_CHECK_MODULES(GLIB, glib-2.0)
>>>>    AC_SUBST(GLIB_CFLAGS)
>>>>    AC_SUBST(GLIB_LIBS)
>>>> --
>>>> 1.7.10.2
>>>>
>>>>
>>>
>>> Thanks for the patch.
>>>
>>> Two main points and two minor ones.
>>>
>>> Main ones:
>>>
>>> 1.  Why are we manually calling 'pkg-config' (hard-coded
>>> to rely on $PATH) rather than using the existing macros, as the
>>> code
>>> being replaced does.  For example, these use $PKG_CONFIG and
>>> support
>>> $PKG_CONFIG_PATH.
>>
>> I have "stolen" this from existing code.
>>
> 
> Please explain.  I see no reason not to use the appropriate pkg-config macros
> rather than adding all this.

Ok, I will use $PKG_CONFIG.

> 
>>> 2.  The new macros should also have the ITW_ prefix in their name.
>>> (I presume CHECK_PLUGIN_DEPENDENCIES only has IT_ as it originates
>>> from IcedTea).
>>
>> Ok, I will fix this.
>>
>>>
>>> Minor issues:
>>>
>>> 1.  Why not just --with-gtk=2?  Or better, --with-gtk-version=2?
>>> 2.0 is confusing because most people will have something like 2.24.
>>
>> Habit from other project, such as WebKit. The 2.0 or 3.0 is also used
>> for pkg-config gtk+-2.0 [ options ].
>>
> 
> But we can add the '.0' ourselves.  Just because some other project does
> it doesn't make it right.
> 

Ok.

>>> 2.  Shouldn't "default" be allowed through the case block in
>>> IT_CHECK_PLUGIN_DEPENDENCIES?
>>
>> I do not get this.
>>
> 
> Why 
> 
>>>> +       2.0|3.0) ;;
> 
> and not
> 
>>>> +       2.0|3.0|default) ;;
> 
> ?

Ah, I see your point, ok.

> 
>> --
>> Peter Hatina
>> EMEA ENG-Desktop Development
>> Red Hat Czech, Brno
>>
> 


-- 
Peter Hatina
EMEA ENG-Desktop Development
Red Hat Czech, Brno



More information about the distro-pkg-dev mailing list