crosvm/rutabaga_gfx/ffi/meson.build
Gurchetan Singh 075c7bf647 rutabaga_gfx/ffi: fix meson build
The library installed by Meson actually contains no symbols right now.
We have to:

1) Have Cargo place the libraries in the Meson build dir
2) Move the libraries from ${MESON_BUILD_DIR}/debug (where Cargo
   places them) to ${MESON_BUILD_DIR} sp Meson custom target script
   can reference them
3) Have meson install the libraries and generate pkg-config

BUG=b:344998548
TEST=link against FFI via gfxstream guest

Change-Id: I6536674fdb6ee3493433bf48ed233d6ca947e9aa
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5631146
Reviewed-by: Kaiyi Li <kaiyili@google.com>
Auto-Submit: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
2024-06-18 19:17:20 +00:00

59 lines
1.7 KiB
Meson

# Copyright 2024 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
project('rutabaga_gfx_ffi', ['rust', 'c'],
version: '0.1.3')
target_os = host_machine.system()
# By default cargo would generate rutabaga_gfx_ffi.dll (without the lib
# prefix) for a Windows cdylib
if target_os == 'windows'
shared_lib = 'rutabaga_gfx_ffi.dll'
endif
if target_os == 'darwin'
shared_lib = 'librutabaga_gfx_ffi.dylib'
endif
if target_os == 'linux'
shared_lib = 'librutabaga_gfx_ffi.so'
endif
shared_lib_major = '@0@.0'.format(shared_lib)
shared_lib_full_ver = '@0@.@1@'.format(shared_lib, meson.project_version())
build_script = find_program('build.sh')
with_gfxstream = get_option('gfxstream')
features = ''
if with_gfxstream
features += 'gfxstream'
endif
buildtype = 'debug'
cargo_release = ''
if get_option('buildtype') == 'release'
buildtype = 'release'
cargo_release = '--release'
endif
rutabaga_gfx_ffi_ct = custom_target(
'rutabaga_gfx_ffi_build',
output: [shared_lib, shared_lib_major, shared_lib_full_ver],
input: ['src/lib.rs', 'Cargo.toml', 'build.rs', 'build.sh'],
command: [build_script, features, meson.current_build_dir(),
shared_lib, meson.project_version(), buildtype, cargo_release],
install: true,
install_dir: get_option('libdir'),
)
pkg = import('pkgconfig')
pkg.generate(
libraries: '-L${libdir} -lrutabaga_gfx_ffi',
name: 'rutabaga_gfx_ffi',
version: meson.project_version(),
description: 'C FFI bindings to Rutabaga VGI',
)
rutabaga_gfx_ffi_h = files('src/include/rutabaga_gfx_ffi.h')
install_headers(rutabaga_gfx_ffi_h,
subdir: 'rutabaga_gfx')