xref: /aosp_15_r20/external/crosvm/rutabaga_gfx/ffi/meson.build (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2024 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker
5*bb4ee6a4SAndroid Build Coastguard Workerproject('rutabaga_gfx_ffi', ['rust', 'c'],
6*bb4ee6a4SAndroid Build Coastguard Worker         version: '0.1.3')
7*bb4ee6a4SAndroid Build Coastguard Worker
8*bb4ee6a4SAndroid Build Coastguard Workertarget_os = host_machine.system()
9*bb4ee6a4SAndroid Build Coastguard Worker
10*bb4ee6a4SAndroid Build Coastguard Worker# By default cargo would generate rutabaga_gfx_ffi.dll (without the lib
11*bb4ee6a4SAndroid Build Coastguard Worker# prefix) for a Windows cdylib
12*bb4ee6a4SAndroid Build Coastguard Workerif target_os == 'windows'
13*bb4ee6a4SAndroid Build Coastguard Worker  shared_lib = 'rutabaga_gfx_ffi.dll'
14*bb4ee6a4SAndroid Build Coastguard Workerendif
15*bb4ee6a4SAndroid Build Coastguard Workerif target_os == 'darwin'
16*bb4ee6a4SAndroid Build Coastguard Worker  shared_lib = 'librutabaga_gfx_ffi.dylib'
17*bb4ee6a4SAndroid Build Coastguard Workerendif
18*bb4ee6a4SAndroid Build Coastguard Workerif target_os == 'linux'
19*bb4ee6a4SAndroid Build Coastguard Worker  shared_lib = 'librutabaga_gfx_ffi.so'
20*bb4ee6a4SAndroid Build Coastguard Workerendif
21*bb4ee6a4SAndroid Build Coastguard Worker
22*bb4ee6a4SAndroid Build Coastguard Workershared_lib_major = '@[email protected]'.format(shared_lib)
23*bb4ee6a4SAndroid Build Coastguard Workershared_lib_full_ver = '@0@.@1@'.format(shared_lib, meson.project_version())
24*bb4ee6a4SAndroid Build Coastguard Worker
25*bb4ee6a4SAndroid Build Coastguard Workerbuild_script = find_program('build.sh')
26*bb4ee6a4SAndroid Build Coastguard Workerwith_gfxstream = get_option('gfxstream')
27*bb4ee6a4SAndroid Build Coastguard Workerfeatures = ''
28*bb4ee6a4SAndroid Build Coastguard Workerif with_gfxstream
29*bb4ee6a4SAndroid Build Coastguard Worker  features += 'gfxstream'
30*bb4ee6a4SAndroid Build Coastguard Workerendif
31*bb4ee6a4SAndroid Build Coastguard Worker
32*bb4ee6a4SAndroid Build Coastguard Workerbuildtype = 'debug'
33*bb4ee6a4SAndroid Build Coastguard Workercargo_release = ''
34*bb4ee6a4SAndroid Build Coastguard Workerif get_option('buildtype') == 'release'
35*bb4ee6a4SAndroid Build Coastguard Worker  buildtype = 'release'
36*bb4ee6a4SAndroid Build Coastguard Worker  cargo_release = '--release'
37*bb4ee6a4SAndroid Build Coastguard Workerendif
38*bb4ee6a4SAndroid Build Coastguard Worker
39*bb4ee6a4SAndroid Build Coastguard Workerrutabaga_gfx_ffi_ct = custom_target(
40*bb4ee6a4SAndroid Build Coastguard Worker  'rutabaga_gfx_ffi_build',
41*bb4ee6a4SAndroid Build Coastguard Worker  output: [shared_lib, shared_lib_major, shared_lib_full_ver],
42*bb4ee6a4SAndroid Build Coastguard Worker  input: ['src/lib.rs', 'Cargo.toml', 'build.rs', 'build.sh'],
43*bb4ee6a4SAndroid Build Coastguard Worker  command: [build_script, features, meson.current_build_dir(),
44*bb4ee6a4SAndroid Build Coastguard Worker            shared_lib, meson.project_version(), buildtype, cargo_release],
45*bb4ee6a4SAndroid Build Coastguard Worker  install: true,
46*bb4ee6a4SAndroid Build Coastguard Worker  install_dir: get_option('libdir'),
47*bb4ee6a4SAndroid Build Coastguard Worker)
48*bb4ee6a4SAndroid Build Coastguard Worker
49*bb4ee6a4SAndroid Build Coastguard Workerpkg = import('pkgconfig')
50*bb4ee6a4SAndroid Build Coastguard Workerpkg.generate(
51*bb4ee6a4SAndroid Build Coastguard Worker  libraries: '-L${libdir} -lrutabaga_gfx_ffi',
52*bb4ee6a4SAndroid Build Coastguard Worker  name: 'rutabaga_gfx_ffi',
53*bb4ee6a4SAndroid Build Coastguard Worker  version: meson.project_version(),
54*bb4ee6a4SAndroid Build Coastguard Worker  description: 'C FFI bindings to Rutabaga VGI',
55*bb4ee6a4SAndroid Build Coastguard Worker)
56*bb4ee6a4SAndroid Build Coastguard Worker
57*bb4ee6a4SAndroid Build Coastguard Workerrutabaga_gfx_ffi_h = files('src/include/rutabaga_gfx_ffi.h')
58*bb4ee6a4SAndroid Build Coastguard Workerinstall_headers(rutabaga_gfx_ffi_h,
59*bb4ee6a4SAndroid Build Coastguard Worker                subdir: 'rutabaga_gfx')
60