aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2012-12-29 22:52:27 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2012-12-29 22:52:27 +0200
commit7d56a2fe0076665c84097fcf207dae4d9bf04430 (patch)
treef7d63b95a3070b6fb10d39ee41749fcf8593198b
parent231c2c2bc176cd56a5e5c688e7bbac4430181e51 (diff)
downloadmeson-7d56a2fe0076665c84097fcf207dae4d9bf04430.zip
meson-7d56a2fe0076665c84097fcf207dae4d9bf04430.tar.gz
meson-7d56a2fe0076665c84097fcf207dae4d9bf04430.tar.bz2
Parse pkg-config dependencies.
-rwxr-xr-xenvironment.py59
1 files changed, 58 insertions, 1 deletions
diff --git a/environment.py b/environment.py
index 622f174..ee1a952 100755
--- a/environment.py
+++ b/environment.py
@@ -155,5 +155,62 @@ class Environment():
def get_object_suffix(self):
return self.object_suffix
+class PkgConfigDependency():
+ pkgconfig_found = False
+
+ def __init__(self, name):
+ if not PkgConfigDependency.pkgconfig_found:
+ self.check_pkgconfig()
+
+ p = subprocess.Popen(['pkg-config', '--modversion', name], stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ (out, err) = p.communicate()
+ if p.returncode != 0:
+ raise RuntimeError('Dependency %s not known to pkg-config.' % name)
+ self.modversion = out.decode().strip()
+ p = subprocess.Popen(['pkg-config', '--cflags', name], stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ (out, err) = p.communicate()
+ if p.returncode != 0:
+ raise RuntimeError('Could not generate cflags for %s.' % name)
+ self.cflags = out.decode().split()
+
+ p = subprocess.Popen(['pkg-config', '--libs', name], stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ (out, err) = p.communicate()
+ if p.returncode != 0:
+ raise RuntimeError('Could not generate libs for %s.' % name)
+ self.libs = out.decode().split()
+
+ def get_modversion(self):
+ return self.modversion
+
+ def get_compile_flags(self):
+ return self.cflags
+
+ def get_link_flags(self):
+ return self.libs
+
+ def check_pkgconfig(self):
+ p = subprocess.Popen(['pkg-config', '--version'], stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ (out, err) = p.communicate()
+ if p.returncode != 0:
+ raise RuntimeError('Pkg-config not found.')
+ print('Found pkg-config version %s\n', out.strip())
+ PkgConfigDependency.pkgconfig_found = True
+
+def find_external_dependency(self, name):
+ # Add detectors for non-pkg-config deps (e.g. Boost) etc here.
+ return PkgConfigDependency(name)
+
+def test_pkg_config():
+ name = 'gtk+-3.0'
+ dep = PkgConfigDependency(name)
+ print(dep.get_modversion())
+ print(dep.get_compile_flags())
+ print(dep.get_link_flags())
+
if __name__ == '__main__':
- test_cmd_line_building()
+ #test_cmd_line_building()
+ test_pkg_config()