1 # UCW Library configuration system: pkg-config and friends
2 # (c) 2008 Martin Mares <mj@ucw.cz>
4 package UCW::Configure::Pkg;
11 our @ISA = qw(Exporter);
12 our @EXPORT = qw(&TryCmd &PkgConfig &TrivConfig);
17 defined $res or return;
19 return $res unless $?;
23 sub maybe_manually($) {
26 if (Get("$n")) { Log "YES (set manually)\n"; }
27 else { Log "NO (set manually)\n"; }
34 Log "Checking for pkg-config ... ";
35 if (!maybe_manually("CONFIG_HAVE_PKGCONFIG")) {
36 my $ver = TryCmd("pkg-config --version 2>/dev/null");
39 Set("CONFIG_HAVE_PKGCONFIG", 0);
41 Log("YES: version $ver\n");
42 Set("CONFIG_HAVE_PKGCONFIG", 1);
43 Set("CONFIG_VER_PKGCONFIG", $ver);
46 return Get("CONFIG_HAVE_PKGCONFIG");
52 my $upper = $pkg; $upper =~ tr/a-z/A-Z/; $upper =~ s/[^0-9A-Z]+/_/g;
53 PkgConfigTool() unless IsSet("CONFIG_HAVE_PKGCONFIG");
54 Log "Checking for package $pkg ... ";
55 maybe_manually("CONFIG_HAVE_$upper") and return Get("CONFIG_HAVE_$upper");
56 if (!Get("CONFIG_HAVE_PKGCONFIG")) {
57 Log("NONE: pkg-config missing\n");
60 my $ver = TryCmd("pkg-config --modversion $pkg 2>/dev/null");
65 if (defined($opts{minversion})) {
66 my $min = $opts{minversion};
67 if (!defined TryCmd("pkg-config --atleast-version=$min $pkg")) {
68 Log("NO: version $ver is too old (need >= $min)\n");
72 Log("YES: version $ver\n");
73 Set("CONFIG_HAVE_$upper" => 1);
74 Set("CONFIG_VER_$upper" => $ver);
75 my $cf = TryCmd("pkg-config --cflags $pkg");
76 Set("${upper}_CFLAGS" => $cf) if defined $cf;
77 my $lf = TryCmd("pkg-config --libs $pkg");
78 Set("${upper}_LIBS" => $lf) if defined $lf;
84 return join(".", map { sprintf("%05s", $_) } split(/\./, $v));
90 my $upper = $pkg; $upper =~ tr/a-z/A-Z/; $upper =~ s/[^0-9A-Z]+/_/g;
91 Log "Checking for package $pkg ... ";
92 maybe_manually("CONFIG_HAVE_$upper") and return Get("CONFIG_HAVE_$upper");
93 my $pc = $opts{script};
94 my $ver = TryCmd("$pc --version 2>/dev/null");
99 if (defined($opts{minversion})) {
100 my $min = $opts{minversion};
101 if (ver_norm($ver) lt ver_norm($min)) {
102 Log("NO: version $ver is too old (need >= $min)\n");
106 Log("YES: version $ver\n");
107 Set("CONFIG_HAVE_$upper" => 1);
108 Set("CONFIG_VER_$upper" => $ver);
110 my $want = $opts{want};
111 defined $want or $want = ["cflags", "libs"];
113 my $uw = $w; $uw =~ tr/a-z-/A-Z_/;
114 my $cf = TryCmd("$pc --$w");
115 Set("${upper}_${uw}" => $cf) if defined $cf;