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.
This commit is contained in:
Emmanuele Bassi 2017-04-18 14:51:25 +01:00
parent 47bcf66af8
commit 482f34006e
2 changed files with 20 additions and 2 deletions

View File

@ -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

View File

@ -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')