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



commit 4faee311078a5c20794cd0601c0fdbc86f3c354c
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 15933d8..5a729be 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -874,12 +874,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(
@@ -887,7 +888,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]