[gtk+/wip/meson: 163/181] build: Use the appropriate linker flags



commit ca33638a8ffddaac9ee1fb69b5c9360ffc04547f
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Tue Apr 18 14:51:25 2017 +0100

    build: Use the appropriate linker flags
    
    We need to check if the linker flags we use are available, depending on
    the platform, and we need to ensure that the shared library is
    versioned appropriately.

 gtk/meson.build |    5 +++--
 meson.build     |   17 +++++++++++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/gtk/meson.build b/gtk/meson.build
index 392895c..f8bf7d5 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -876,12 +876,13 @@ endforeach
 # Library
 
 libgtk = shared_library('gtk-4',
+  soversion: gtk_soversion,
   sources: [typefuncs, gtk_sources, gtkmarshal_h, gtkprivatetypebuiltins_h],
   c_args: gtk_cargs + common_cflags,
   include_directories: [confinc, gdkinc, gtkinc],
   dependencies: gtk_deps + [libgdk_dep, libgsk_dep],
   link_with: [libgdk, libgsk, included_input_modules],
-  link_args: ['-Bsymbolic'],
+  link_args: common_ldflags,
   install: true)
 
 libgtk_dep = declare_dependency(
@@ -889,7 +890,7 @@ libgtk_dep = declare_dependency(
   include_directories: [confinc, gtkinc],
   dependencies: gtk_deps + [libgdk_dep, libgsk_dep],
   link_with: libgtk,
-  link_args: ['-Bsymbolic'])
+  link_args: common_ldflags)
 
 # Installed tools
 
diff --git a/meson.build b/meson.build
index 34ba0fb..da5505e 100644
--- a/meson.build
+++ b/meson.build
@@ -68,6 +68,8 @@ gtk_binary_version = '4.0.0'
 
 gtk_binary_age = 100 * gtk_minor_version + gtk_micro_version
 
+gtk_soversion = '0.@0@.@1@'.format(gtk_binary_age - gtk_interface_age, gtk_interface_age)
+
 gtk_api_version = '4.0'
 
 x11_enabled      = get_option('enable-x11-backend')
@@ -272,6 +274,21 @@ if get_option('default_library') != 'static'
   endif
 endif
 
+common_ldflags = []
+
+if host_machine.system() == 'linux'
+  foreach ldflag: [ '-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now', ]
+    if cc.has_argument(ldflag)
+      common_ldflags += [ ldflag ]
+    endif
+  endforeach
+endif
+
+# Maintain compatibility with autotools
+if host_machine.system() == 'darwin'
+  common_ldflags += [ '-compatibility_version=1', '-current_version=1.0', ]
+endif
+
 confinc = include_directories('.')
 gdkinc = include_directories('gdk')
 gtkinc = include_directories('gtk')


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]