Project

General

Profile

Bug #10651

pkg_config does not report required include headers

Added by anatolik (Anatol Pomozov) over 4 years ago. Updated 9 days ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
[ruby-core:67137]

Description

pkg_config behavior seems incorrect in 2.2.0. I am testing following script in Linux Arch:

require 'mkmf'
puts pkg_config("xft")

In 2.1.5 it gives
["-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz", "", "-lXft"]

In 2.2.0 it gives
["", "", "-lXft"]

pkg-config command line tool gives.

$ pkg-config --cflags xft
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz

So it points that new pkg_config implementation is incorrect.

Here is content of the pc file itself:

$ cat /usr/lib/pkgconfig/xft.pc
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: Xft
Description: X FreeType library
Version: 2.3.2
Requires: xproto
Requires.private: xrender, fontconfig, freetype2
Cflags: -I${includedir}
Libs: -L${libdir} -lXft


Files

mkmf-pkgconfig-return-value.patch (1.48 KB) mkmf-pkgconfig-return-value.patch jeremyevans0 (Jeremy Evans), 07/08/2019 03:19 AM

History

Updated by anatolik (Anatol Pomozov) over 4 years ago

The commit that produced this behavior change is 097c3e9cbbf23718371f08c24b2d2297b039f63f in particular this part:

     orig_ldflags = $LDFLAGS
     if get and option
       get[option]
     elsif get and try_ldflags(ldflags = get['libs'])
-      cflags = get['cflags']
+      if incflags = get['cflags-only-I']
+        $INCFLAGS << " " << incflags
+        cflags = get['cflags-only-other']
+      else
+        cflags = get['cflags']
+      end
       libs = get['libs-only-l']
       ldflags = (Shellwords.shellwords(ldflags) - Shellwords.shellwords(libs)).quote.join(" ")
       $CFLAGS += " " << cflags

Could anyone explain what this change tries to do?

Updated by jeremyevans0 (Jeremy Evans) 9 days ago

anatolik (Anatol Pomozov) wrote:

Could anyone explain what this change tries to do?

It tries to separate the -I cflags from the non -I ones, as they are stored in different global variables. In general it probably doesn't cause problems in mkmf because it is used for the side effect of modifying the global variables. However, the return value should probably be fixed to include the -I cflags. Attached is a patch that does that.

Also available in: Atom PDF