rust: Use Cargo to build the Rust portion
Pros: Ability to use Rust libraries from crates.io Problems: Need to lock library versions and document their reproducible building, either via Cargo.lock or vendoring.
This commit is contained in:
@ -56,25 +56,27 @@ deps = [
|
||||
# dependency('libxklavier'), # FIXME remove
|
||||
]
|
||||
|
||||
# Replacement for eekboard-server
|
||||
rslib = static_library(
|
||||
'rslib',
|
||||
sources: ['lib.rs'],
|
||||
rust_crate_type: 'staticlib'
|
||||
cargo = find_program('cargo')
|
||||
cargo_script = find_program('../cargo.sh')
|
||||
|
||||
rslibs = custom_target(
|
||||
'rslibs',
|
||||
build_by_default: true,
|
||||
build_always_stale: true,
|
||||
output: ['librs.a'],
|
||||
install: false,
|
||||
command: [cargo_script, '@CURRENT_SOURCE_DIR@', '@OUTPUT@', 'build']
|
||||
)
|
||||
|
||||
rstests = executable(
|
||||
'rstests',
|
||||
sources: ['lib.rs'],
|
||||
rust_args: ['--test'],
|
||||
install: false
|
||||
test(
|
||||
'rstest',
|
||||
cargo_script,
|
||||
args: [meson.source_root(), '', 'test']
|
||||
)
|
||||
|
||||
test('rstests', rstests)
|
||||
|
||||
libsqueekboard = static_library('libsqueekboard',
|
||||
sources,
|
||||
link_with: rslib,
|
||||
link_with: [rslibs],
|
||||
include_directories: [include_directories('..'), include_directories('../eek')],
|
||||
dependencies: deps,
|
||||
c_args: [
|
||||
|
||||
Reference in New Issue
Block a user