NICMx / Jool

SIIT and NAT64 for Linux
GNU General Public License v2.0
328 stars 66 forks source link

Make sure we're using pkg-config correctly #228

Closed ydahhrk closed 7 years ago

ydahhrk commented 8 years ago

See #227

ydahhrk commented 7 years ago

pkg-config is a helper that simply tells the building environment where dependencies can be found. It is optional; one can provide this information manually.

Most configure scripts, particularly the ones made by autoconf, can be queried for info on how to do this:

ydahhrk@ubuntu16:~/Jool/usr$ ./configure --help
...
Some influential environment variables:
...
  LIBNLGENL3_CFLAGS
          C compiler flags for LIBNLGENL3, overriding pkg-config
  LIBNLGENL3_LIBS
          linker flags for LIBNLGENL3, overriding pkg-config

Therefore,

./configure LIBNLGENL3_CFLAGS=-I/usr/include/libnl3 LIBNLGENL3_LIBS="-lnl-genl-3 -lnl-3"

Gets the job done without installing pkg-config.

All that's left hanging is, "how do I know the exact value of CFLAGS and LIBS for my library/system?" The answer is "library documentation", apparently. Though in this case, libnl's documentation suggests just installing pkg-config and calling it a day.

Hmm.

I would also have expected autoconf to blow up on Jool 3.4 too. I mean the mechanism pkg-config uses to check libnl-genl-3 (Jool 3.5) is AFAIK the same it used to validate libnl-3 (3.4).

It does blow up as well.

Even on top of that, I would have expected pkg-config to be installed by default on Ubuntu 16.04 anyway.

It is apparently installed by default in Ubuntu Desktop. It is not installed by default in Ubuntu Server.

Ok, going to include this in the docs.

@pierky