Xavier Claessens 5f0493d33a meson: Set install_tag on some targets
Trying to follow recommendation from Meson documentation:
https://mesonbuild.com/Installing.html#installation-tags

Move tools into 'bin' or 'bin-devel' categories to keep only libs and
plugins in the default 'runtime' category. This simplifies distribution
of GStreamer application skipping parts that are not needed, similarly
to what Cerbero does by hardcoding huge list of files.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3017>
2022-09-20 10:08:15 +00:00

155 lines
5.9 KiB
Meson

exe = executable('gst-plugin-scanner',
'gst-plugin-scanner.c',
c_args : gst_c_args,
include_directories : [configinc],
dependencies : [gst_dep, mathlib, gmodule_dep,],
install_dir : helpers_install_dir,
install: true,
)
meson.add_devenv({'GST_PLUGIN_SCANNER': exe.full_path()})
# Used in test env setup to make tests find plugin scanner in build tree
gst_scanner_dir = meson.current_build_dir()
if bashcomp_found
executable('gst-completion-helper',
'gst-completion-helper.c',
c_args : gst_c_args,
include_directories : [configinc],
dependencies : [gst_dep],
install_dir : helpers_install_dir,
install_tag : 'bin',
install: true,
)
endif
# Check PTP support
have_ptp = false
if host_system == 'android'
message('PTP not supported on Android because of permissions.')
elif host_system == 'windows'
message('PTP not supported on Windows, not ported yet.')
elif host_system == 'ios'
message('PTP not supported on iOS because of permissions.')
elif ['linux', 'darwin', 'netbsd', 'freebsd', 'openbsd', 'kfreebsd', 'dragonfly', 'sunos', 'gnu', 'gnu/kfreebsd'].contains(host_system)
message('PTP supported on ' + host_system + '.')
have_ptp = true
else
message('PTP not supported on ' + host_system + ', not ported yet.')
endif
if have_ptp
cdata.set('HAVE_PTP', 1, description : 'PTP support available')
if cc.compiles('''#include <sys/ioctl.h>
#include <net/if.h>
int some_func (void) {
struct ifreq ifr;
struct ifconf ifc;
ioctl(0, SIOCGIFCONF, &ifc);
ioctl(0, SIOCGIFFLAGS, &ifr);
ioctl(0, SIOCGIFHWADDR, &ifr);
return ifr.ifr_hwaddr.sa_data[0];
}''',
name : 'SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR available')
cdata.set('HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR', 1,
description : 'SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR is available')
endif
if cc.compiles('''#include <ifaddrs.h>
#include <net/if.h>
#include <net/if_dl.h>
int some_func (void) {
struct ifaddrs *ifaddr;
getifaddrs(&ifaddr);
return (ifaddr->ifa_flags & IFF_LOOPBACK) && ifaddr->ifa_addr->sa_family != AF_LINK;
}''', name : 'getifaddrs() and AF_LINK available')
cdata.set('HAVE_GETIFADDRS_AF_LINK', 1,
description : 'getifaddrs() and AF_LINK is available')
endif
setcap_prog = find_program('setcap', '/usr/sbin/setcap', '/sbin/setcap', required : false)
cap_dep = dependency('libcap', required: false)
# user/group to change to in gst-ptp-helper
ptp_helper_setuid_user = get_option('ptp-helper-setuid-user')
if ptp_helper_setuid_user != ''
cdata.set_quoted('HAVE_PTP_HELPER_SETUID_USER', ptp_helper_setuid_user,
description : 'PTP helper setuid user')
endif
ptp_helper_setuid_group = get_option('ptp-helper-setuid-group')
if ptp_helper_setuid_group != ''
cdata.set_quoted('HAVE_PTP_HELPER_SETUID_GROUP', ptp_helper_setuid_group,
description : 'PTP helper setuid group')
endif
# how to install gst-ptp-helper
with_ptp_helper_permissions = get_option('ptp-helper-permissions')
if with_ptp_helper_permissions == 'auto'
if setcap_prog.found() and cap_dep.found()
with_ptp_helper_permissions = 'capabilities'
else
with_ptp_helper_permissions = 'setuid-root'
endif
endif
message('How to install gst-ptp-helper: ' + with_ptp_helper_permissions)
if with_ptp_helper_permissions == 'none'
# nothing to do
elif with_ptp_helper_permissions == 'setuid-root'
cdata.set('HAVE_PTP_HELPER_SETUID', 1,
description : 'Use setuid-root for permissions in PTP helper')
elif with_ptp_helper_permissions == 'capabilities'
if not setcap_prog.found()
error('capabilities-based ptp-helper-permissions requested, but could not find setcap tool.')
elif not cap_dep.found()
error('capabilities-based ptp-helper-permissions requested, but could not find libcap.')
endif
cdata.set('HAVE_PTP_HELPER_CAPABILITIES', 1,
description : 'Use capabilities for permissions in PTP helper')
else
error('Unexpected ptp helper permissions value: ' + with_ptp_helper_permissions)
endif
exe = executable('gst-ptp-helper', 'gst-ptp-helper.c',
c_args : gst_c_args,
include_directories : [configinc, libsinc],
dependencies : [gst_dep, gio_dep, mathlib, cap_dep],
install_dir : helpers_install_dir,
install : true)
meson.add_install_script('ptp_helper_post_install.sh',
helpers_install_dir, with_ptp_helper_permissions,
setcap_prog.found() ? setcap_prog.full_path() : '')
meson.add_devenv({'GST_PTP_HELPER': exe.full_path()})
endif
install_data(['gst_gdb.py', 'glib_gobject_helper.py'],
install_dir : join_paths(get_option('datadir'), 'gstreamer-@0@'.format(apiversion), 'gdb'),
install_tag : 'devel')
# This is needed to make gdb find gst_gdb.py
env = environment()
env.prepend('PYTHONPATH', meson.current_source_dir())
meson.add_devenv(env)
gdbconf = configuration_data()
gdbconf.set('GST_API_VERSION', apiversion)
gdbconf.set('DATADIR', '@0@/@1@'.format(get_option('prefix'), get_option('datadir')))
if host_system != 'windows'
# XXX: We add a leading './' because prefix is an absolute path and we
# need it to be a relative path so that join_paths appends it to the end.
gdb_install_dir = join_paths(get_option('datadir'), 'gdb', 'auto-load', './' + get_option('prefix'), get_option('libdir'))
else
# FIXME: Cannot install on Windows because the path will contain a drive
# letter and colons are not allowed in paths.
gdb_install_dir = disabler()
endif
configure_file(input : 'libgstreamer-gdb.py.in',
output : 'libgstreamer-@0@.so.@1@-gdb.py'.format(apiversion, libversion),
install_dir : gdb_install_dir,
install_tag : 'devel',
configuration : gdbconf)