aboutsummaryrefslogtreecommitdiff
path: root/xcodebackend.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-04-02 23:40:04 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-04-02 23:40:04 +0300
commit948f500aa1c30cbfba4d780500fb42c488521b25 (patch)
treecf6819097df8b5c28505dd1b3fca03284496a211 /xcodebackend.py
parent4ee484a3b40ea5a814f929d4ccb3c67d268c447a (diff)
downloadmeson-948f500aa1c30cbfba4d780500fb42c488521b25.zip
meson-948f500aa1c30cbfba4d780500fb42c488521b25.tar.gz
meson-948f500aa1c30cbfba4d780500fb42c488521b25.tar.bz2
OSX shared library versioning works.
Diffstat (limited to 'xcodebackend.py')
-rw-r--r--xcodebackend.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/xcodebackend.py b/xcodebackend.py
index 2d27baa..95f5f5d 100644
--- a/xcodebackend.py
+++ b/xcodebackend.py
@@ -267,6 +267,11 @@ class XCodeBackend(backends.Backend):
if isinstance(t, build.Executable):
typestr = 'compiled.mach-o.executable'
path = t.get_filename()
+ if isinstance(t, build.SharedLibrary):
+ # OSX has a completely different shared library
+ # naming scheme so do this manually.
+ typestr = self.get_xcodetype('dummy.dylib')
+ path = t.get_osx_filename()
else:
typestr = self.get_xcodetype(fname)
path = '"%s"' % t.get_filename()
@@ -599,12 +604,18 @@ class XCodeBackend(backends.Backend):
links_dylib = True
if links_dylib:
dep_libs = ['-Wl,-search_paths_first', '-Wl,-headerpad_max_install_names'] + dep_libs
+ dylib_version = None
if isinstance(target, build.SharedLibrary):
ldargs = ['-dynamiclib', '-Wl,-headerpad_max_install_names'] + dep_libs
install_path = os.path.join(self.environment.get_build_dir(), target.subdir, buildtype)
+ dylib_version = target.version
else:
ldargs = dep_libs
install_path = ''
+ if dylib_version is not None:
+ product_name = target_name + '.' + dylib_version
+ else:
+ product_name = target_name
ldargs += target.link_flags
ldstr = ' '.join(ldargs)
valid = self.buildconfmap[target_name][buildtype]
@@ -624,6 +635,8 @@ class XCodeBackend(backends.Backend):
self.write_line('buildSettings = {')
self.indent_level += 1
self.write_line('COMBINE_HIDPI_IMAGES = YES;')
+ if dylib_version is not None:
+ self.write_line('DYLIB_CURRENT_VERSION = "%s";' % dylib_version)
self.write_line('EXECUTABLE_PREFIX = "%s";' % target.prefix)
if target.suffix == '':
suffix = ''
@@ -647,7 +660,7 @@ class XCodeBackend(backends.Backend):
self.write_line('OTHER_%sFLAGS = "%s";' % (langname, flagstr))
self.write_line('OTHER_LDFLAGS = "%s";' % ldstr)
self.write_line('OTHER_REZFLAGS = "";')
- self.write_line('PRODUCT_NAME = %s;' % target_name)
+ self.write_line('PRODUCT_NAME = %s;' % product_name)
self.write_line('SECTORDER_FLAGS = "";')
self.write_line('SYMROOT = "%s";' % symroot)
self.write_line('USE_HEADERMAP = NO;')