mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
Problem: configures GUI auto detection favors GTK2 Solution: make configure favor GTK3 over GTK2 for the GUI when auto detecting the gui toolkit (Drew Vogel). Prior to these changes if the dev packages for both GTK2 and GTK3 were installed, the `--enable-gui=auto` would used GTK2. After these changes it will use GTK3. Users can still use `--enable-gui=gtk2` to specifically select GTK2. In addition to the prioritization change, this also brings some cleanups to the GTK autoconf code: * The `AM_PATH_GTK` macro had an unused third argument that has been removed. * The `AM_PATH_GTK` macro checked the `SKIP_GTK2` & `SKIP_GTK3` variables but the code that decided whether to call it also checked those. Now just the calling code does so. * The `AM_PATH_GTK` macro set a default minimum version based on `SKIP_GTK2` and `SKIP_GTK3` but the calling code was also expected to pass a version. Now the calling code _must_ pass a version. * The GTK test program previous used `gtk_(major|minor|micro)_version` as all of: a C variable name, a C macro provided only by GTK2, and an autoconf variable name. It also needlessly parsed a `x.y.z` version string when the same string was already parsed by autoconf + sed. Now the parsed values are used directly in the test program. * The GTK test program previous created a test program `conf.gtktest` which was cleaned up by the autoconf script. This appeared to be a crude way to debug whether an erroring configure run had actually run the test program. Instead the autoconf script now outputs more messaging and the user can check `config.log` to determine the status of the configure script. I'm not an autoconf expert and I don't have access to some of the older systems we try to support with gvim. So I would very much appreciate if anyone could run this on their systems to ensure it doesn't misbehave. While my motivation here is mainly to further establish GTK3 as the primary GUI mode, this should at least partially address the concern described in #15437. Here are a few test runs with both GTK 2 and GTK 3 installed: ``` --with-features=huge \ --enable-gui \ --enable-gtk3-check=no \ --enable-gtktest \ ``` ``` checking --enable-gui argument... yes/auto - automatic GUI support checking whether or not to look for GTK+ 2... yes checking whether or not to look for GNOME... no checking whether or not to look for GTK+ 3... no checking whether or not to look for Motif... yes checking for pkg-config... /usr/bin/pkg-config checking --disable-gtktest argument... gtk test enabled checking for pkg-config gtk+-2.0... found checking for GTK - version >= 2.2.0... yes; found version 2.24.33 checking ability to compile GTK test program... yes ``` ``` --with-features=huge \ --enable-gui \ --enable-gtk2-check=no \ --enable-gtktest \ ``` ``` checking --enable-gui argument... yes/auto - automatic GUI support checking whether or not to look for GTK+ 2... no checking whether or not to look for GTK+ 3... yes checking whether or not to look for Motif... yes checking for pkg-config... /usr/bin/pkg-config checking --disable-gtktest argument... gtk test enabled checking for pkg-config gtk+-3.0... found checking for GTK - version >= 3.0.0... yes; found version 3.24.49 checking ability to compile GTK test program... yes ``` ``` --with-features=huge \ ``` ``` checking --enable-gui argument... yes/auto - automatic GUI support checking whether or not to look for GTK+ 2... yes checking whether or not to look for GNOME... no checking whether or not to look for GTK+ 3... yes checking whether or not to look for Motif... yes checking for pkg-config... /usr/bin/pkg-config checking --disable-gtktest argument... gtk test enabled checking for pkg-config gtk+-3.0... found checking for GTK - version >= 3.0.0... yes; found version 3.24.49 checking ability to compile GTK test program... yes ``` ``` --with-features=huge \ --disable-gtktest \ ``` ``` checking --enable-gui argument... yes/auto - automatic GUI support checking whether or not to look for GTK+ 2... yes checking whether or not to look for GNOME... no checking whether or not to look for GTK+ 3... yes checking whether or not to look for Motif... yes checking for pkg-config... /usr/bin/pkg-config checking --disable-gtktest argument... gtk test disabled checking for pkg-config gtk+-3.0... found checking for GTK - version >= 3.0.0... yes; found version 3.24.49 ``` ``` --with-features=huge \ --enable-gui=gtk2 \ ``` ``` checking --enable-gui argument... GTK+ 2.x GUI support checking for pkg-config... /usr/bin/pkg-config checking --disable-gtktest argument... gtk test enabled checking for pkg-config gtk+-2.0... found checking for GTK - version >= 2.2.0... yes; found version 2.24.33 checking ability to compile GTK test program... yes ``` ``` --with-features=huge \ --enable-gui=gtk3 \ ``` ``` checking --enable-gui argument... GTK+ 3.x GUI support checking for pkg-config... /usr/bin/pkg-config checking --disable-gtktest argument... gtk test enabled checking for pkg-config gtk+-3.0... found checking for GTK - version >= 3.0.0... yes; found version 3.24.49 checking ability to compile GTK test program... yes ``` And here is a similar run with the GTK 3 dev package removed: ``` --with-features=huge \ --enable-gui=gtk3 \ --enable-fail-if-missing \ ``` ``` checking --disable-gtktest argument... gtk test enabled checking for pkg-config gtk+-3.0... no; consider installing your distro GTK -dev package configure: error: pkg-config could not find gtk+-3.0 ``` closes: #17369 Signed-off-by: Drew Vogel <dvogel@github> Signed-off-by: Christian Brabandt <cb@256bit.org>