diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-04-10 22:41:46 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-04-10 22:41:46 +0300 |
commit | 2c3d35802f738d003a983378ae408716a707e8ec (patch) | |
tree | 8e25135fdaf8671ceb68c154179e209bc5df82ae | |
parent | 0ae280ce77cae787b6cc809a7130d746a0bbd261 (diff) | |
download | meson-2c3d35802f738d003a983378ae408716a707e8ec.zip meson-2c3d35802f738d003a983378ae408716a707e8ec.tar.gz meson-2c3d35802f738d003a983378ae408716a707e8ec.tar.bz2 |
Can use Apple frameworks with Objective C.
-rw-r--r-- | dependencies.py | 22 | ||||
-rwxr-xr-x | interpreter.py | 11 | ||||
-rw-r--r-- | test cases/objc/2 nsstring/meson.build | 6 |
3 files changed, 35 insertions, 4 deletions
diff --git a/dependencies.py b/dependencies.py index 7ed1b9d..94c1e28 100644 --- a/dependencies.py +++ b/dependencies.py @@ -23,6 +23,7 @@ import os, stat, glob, subprocess, shutil from coredata import MesonException +import environment class DependencyException(MesonException): def __init__(self, *args, **kwargs): @@ -414,6 +415,26 @@ class GnuStepDependency(Dependency): def get_link_flags(self): return self.libs +class AppleFrameworks(Dependency): + def __init__(self, kwargs): + Dependency.__init__(self) + modules = kwargs.get('modules', []) + if isinstance(modules, str): + modules = [modules] + if len(modules) == 0: + raise DependencyException("AppleFrameworks dependency requires at least one module.") + self.frameworks = modules + + def get_link_flags(self): + flags = [] + for f in self.frameworks: + flags.append('-framework') + flags.append(f) + return flags + + def found(self): + return environment.is_osx() + def get_dep_identifier(name, kwargs): elements = [name] modlist = kwargs.get('modules', []) @@ -431,4 +452,5 @@ packages = {'boost': BoostDependency, 'qt5': Qt5Dependency, 'Qt5': Qt5Dependency, # Qt people sure do love their upper case. 'gnustep': GnuStepDependency, + 'appleframeworks': AppleFrameworks, } diff --git a/interpreter.py b/interpreter.py index d00a52d..2f2c3ff 100755 --- a/interpreter.py +++ b/interpreter.py @@ -921,15 +921,20 @@ class Interpreter(): print(node.get_clause()) print(result) raise InvalidCode('Line %d: If clause does not evaluate to true or false.' % node.lineno()) - + + def is_elementary_type(self, v): + if isinstance(v, int) or isinstance(v, str) or isinstance(v, bool): + return True + return False + def evaluate_comparison(self, node): v1 = self.evaluate_statement(node.get_first()) v2 = self.evaluate_statement(node.get_second()) - if isinstance(v1, int): + if self.is_elementary_type(v1): val1 = v1 else: val1 = v1.get_value() - if(isinstance(v2, int)): + if self.is_elementary_type(v2): val2 = v2 else: val2 = v2.get_value() diff --git a/test cases/objc/2 nsstring/meson.build b/test cases/objc/2 nsstring/meson.build index 9edd646..7340326 100644 --- a/test cases/objc/2 nsstring/meson.build +++ b/test cases/objc/2 nsstring/meson.build @@ -1,5 +1,9 @@ project('nsstring', 'objc') -dep = find_dep('gnustep', required : true) +if host.name() == 'darwin' + dep = find_dep('appleframeworks', modules : 'foundation', required : true) +else + dep = find_dep('gnustep', required : true) +endif exe = executable('stringprog', 'stringprog.m', deps : dep) add_test('stringtest', exe) |