aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-04-10 22:41:46 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2013-04-10 22:41:46 +0300
commit2c3d35802f738d003a983378ae408716a707e8ec (patch)
tree8e25135fdaf8671ceb68c154179e209bc5df82ae
parent0ae280ce77cae787b6cc809a7130d746a0bbd261 (diff)
downloadmeson-2c3d35802f738d003a983378ae408716a707e8ec.zip
meson-2c3d35802f738d003a983378ae408716a707e8ec.tar.gz
meson-2c3d35802f738d003a983378ae408716a707e8ec.tar.bz2
Can use Apple frameworks with Objective C.
-rw-r--r--dependencies.py22
-rwxr-xr-xinterpreter.py11
-rw-r--r--test cases/objc/2 nsstring/meson.build6
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)