diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-04-02 23:40:04 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-04-02 23:40:04 +0300 |
commit | 948f500aa1c30cbfba4d780500fb42c488521b25 (patch) | |
tree | cf6819097df8b5c28505dd1b3fca03284496a211 /xcodebackend.py | |
parent | 4ee484a3b40ea5a814f929d4ccb3c67d268c447a (diff) | |
download | meson-948f500aa1c30cbfba4d780500fb42c488521b25.zip meson-948f500aa1c30cbfba4d780500fb42c488521b25.tar.gz meson-948f500aa1c30cbfba4d780500fb42c488521b25.tar.bz2 |
OSX shared library versioning works.
Diffstat (limited to 'xcodebackend.py')
-rw-r--r-- | xcodebackend.py | 15 |
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;') |