Don't require Lua sources for modules in build system
This commit is contained in:
parent
7db7526a08
commit
1807fa789c
10
.github/workflows/main.yml
vendored
10
.github/workflows/main.yml
vendored
|
@ -39,7 +39,7 @@ jobs:
|
||||||
|
|
||||||
build_aarch64_cross_macos:
|
build_aarch64_cross_macos:
|
||||||
name: Cross-compile to aarch64-apple-darwin
|
name: Cross-compile to aarch64-apple-darwin
|
||||||
runs-on: macos-11.0
|
runs-on: macos-latest
|
||||||
needs: build
|
needs: build
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
|
@ -186,8 +186,8 @@ jobs:
|
||||||
- uses: Swatinem/rust-cache@v1
|
- uses: Swatinem/rust-cache@v1
|
||||||
- name: Run ${{ matrix.lua }} module tests
|
- name: Run ${{ matrix.lua }} module tests
|
||||||
run: |
|
run: |
|
||||||
(cd examples/module && cargo build --release --features "${{ matrix.lua }},vendored")
|
(cd tests/module && cargo build --release --features "${{ matrix.lua }}")
|
||||||
(cd tests/module && cargo test --release --features "${{ matrix.lua }},vendored")
|
(cd tests/module/loader && cargo test --release --features "${{ matrix.lua }},vendored")
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
test_modules_windows:
|
test_modules_windows:
|
||||||
|
@ -208,8 +208,8 @@ jobs:
|
||||||
pacman -S --noconfirm mingw-w64-x86_64-rust mingw-w64-x86_64-lua mingw-w64-x86_64-luajit mingw-w64-x86_64-pkg-config
|
pacman -S --noconfirm mingw-w64-x86_64-rust mingw-w64-x86_64-lua mingw-w64-x86_64-luajit mingw-w64-x86_64-pkg-config
|
||||||
- name: Run ${{ matrix.lua }} module tests
|
- name: Run ${{ matrix.lua }} module tests
|
||||||
run: |
|
run: |
|
||||||
(cd examples/module && cargo build --release --features "${{ matrix.lua }}")
|
(cd tests/module && cargo build --release --features "${{ matrix.lua }}")
|
||||||
(cd tests/module && cargo test --release --features "${{ matrix.lua }}")
|
(cd tests/module/loader && cargo test --release --features "${{ matrix.lua }}")
|
||||||
|
|
||||||
rustfmt:
|
rustfmt:
|
||||||
name: Rustfmt
|
name: Rustfmt
|
||||||
|
|
|
@ -23,8 +23,6 @@ rustdoc-args = ["--cfg", "docsrs"]
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = [
|
||||||
"mlua_derive",
|
"mlua_derive",
|
||||||
"examples/module",
|
|
||||||
"tests/module",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
pub fn probe_lua() -> Option<PathBuf> {
|
pub fn probe_lua() -> Option<PathBuf> {
|
||||||
unreachable!()
|
None
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#![allow(dead_code)]
|
||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::ops::Bound;
|
use std::ops::Bound;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#![allow(dead_code)]
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
pub fn probe_lua() -> Option<PathBuf> {
|
pub fn probe_lua() -> Option<PathBuf> {
|
||||||
|
@ -20,7 +22,6 @@ pub fn probe_lua() -> Option<PathBuf> {
|
||||||
#[cfg(feature = "luau")]
|
#[cfg(feature = "luau")]
|
||||||
let artifacts = luau0_src::Build::new().build();
|
let artifacts = luau0_src::Build::new().build();
|
||||||
|
|
||||||
#[cfg(not(feature = "module"))]
|
|
||||||
artifacts.print_cargo_metadata();
|
artifacts.print_cargo_metadata();
|
||||||
|
|
||||||
Some(artifacts.include_dir().to_owned())
|
Some(artifacts.include_dir().to_owned())
|
||||||
|
|
|
@ -105,6 +105,10 @@ fn main() {
|
||||||
+ "Please, use `pkg-config` or custom mode to link to a Lua dll."
|
+ "Please, use `pkg-config` or custom mode to link to a Lua dll."
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#[cfg(all(feature = "luau", feature = "module"))]
|
||||||
|
compile_error!("Luau does not support module mode");
|
||||||
|
|
||||||
|
#[cfg(any(not(feature = "module"), target_os = "windows"))]
|
||||||
find::probe_lua();
|
find::probe_lua();
|
||||||
|
|
||||||
println!("cargo:rerun-if-changed=build");
|
println!("cargo:rerun-if-changed=build");
|
||||||
|
|
|
@ -7,13 +7,14 @@ edition = "2018"
|
||||||
[lib]
|
[lib]
|
||||||
crate-type = ["cdylib"]
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
|
[workspace]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
lua54 = ["mlua/lua54"]
|
lua54 = ["mlua/lua54"]
|
||||||
lua53 = ["mlua/lua53"]
|
lua53 = ["mlua/lua53"]
|
||||||
lua52 = ["mlua/lua52"]
|
lua52 = ["mlua/lua52"]
|
||||||
lua51 = ["mlua/lua51"]
|
lua51 = ["mlua/lua51"]
|
||||||
luajit = ["mlua/luajit"]
|
luajit = ["mlua/luajit"]
|
||||||
vendored = ["mlua/vendored"]
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
mlua = { path = "../..", features = ["module"] }
|
mlua = { path = "../..", features = ["module"] }
|
||||||
|
|
|
@ -8,32 +8,10 @@ fn used_memory(lua: &Lua, _: ()) -> LuaResult<usize> {
|
||||||
Ok(lua.used_memory())
|
Ok(lua.used_memory())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_userdata(_: &Lua, ud: MyUserData) -> LuaResult<i32> {
|
|
||||||
Ok(ud.0)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[mlua::lua_module]
|
#[mlua::lua_module]
|
||||||
fn rust_module(lua: &Lua) -> LuaResult<LuaTable> {
|
fn rust_module(lua: &Lua) -> LuaResult<LuaTable> {
|
||||||
let exports = lua.create_table()?;
|
let exports = lua.create_table()?;
|
||||||
exports.set("sum", lua.create_function(sum)?)?;
|
exports.set("sum", lua.create_function(sum)?)?;
|
||||||
exports.set("used_memory", lua.create_function(used_memory)?)?;
|
exports.set("used_memory", lua.create_function(used_memory)?)?;
|
||||||
exports.set("check_userdata", lua.create_function(check_userdata)?)?;
|
|
||||||
Ok(exports)
|
Ok(exports)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy)]
|
|
||||||
struct MyUserData(i32);
|
|
||||||
|
|
||||||
impl LuaUserData for MyUserData {}
|
|
||||||
|
|
||||||
#[mlua::lua_module]
|
|
||||||
fn rust_module_second(lua: &Lua) -> LuaResult<LuaTable> {
|
|
||||||
let exports = lua.create_table()?;
|
|
||||||
exports.set("userdata", lua.create_userdata(MyUserData(123))?)?;
|
|
||||||
Ok(exports)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[mlua::lua_module]
|
|
||||||
fn rust_module_error(_: &Lua) -> LuaResult<LuaTable> {
|
|
||||||
Err("custom module error".to_lua_err())
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
[target.x86_64-apple-darwin]
|
[target.x86_64-apple-darwin]
|
||||||
rustflags = ["-C", "link-args=-rdynamic"]
|
rustflags = [
|
||||||
|
"-C", "link-arg=-undefined",
|
||||||
|
"-C", "link-arg=dynamic_lookup",
|
||||||
|
]
|
||||||
|
|
||||||
[target.aarch64-apple-darwin]
|
[target.aarch64-apple-darwin]
|
||||||
rustflags = ["-C", "link-args=-rdynamic"]
|
rustflags = [
|
||||||
|
"-C", "link-arg=-undefined",
|
||||||
[target.x86_64-unknown-linux-gnu]
|
"-C", "link-arg=dynamic_lookup",
|
||||||
rustflags = ["-C", "link-args=-rdynamic"]
|
]
|
||||||
|
|
|
@ -1,16 +1,23 @@
|
||||||
[package]
|
[package]
|
||||||
name = "module_runner"
|
name = "rust_module"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
authors = ["Aleksandr Orlenko <zxteam@pm.me>"]
|
authors = ["Aleksandr Orlenko <zxteam@pm.me>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
|
[workspace]
|
||||||
|
members = [
|
||||||
|
"loader",
|
||||||
|
]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
lua54 = ["mlua/lua54"]
|
lua54 = ["mlua/lua54"]
|
||||||
lua53 = ["mlua/lua53"]
|
lua53 = ["mlua/lua53"]
|
||||||
lua52 = ["mlua/lua52"]
|
lua52 = ["mlua/lua52"]
|
||||||
lua51 = ["mlua/lua51"]
|
lua51 = ["mlua/lua51"]
|
||||||
luajit = ["mlua/luajit"]
|
luajit = ["mlua/luajit"]
|
||||||
vendored = ["mlua/vendored"]
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
mlua = { path = "../.." }
|
mlua = { path = "../..", features = ["module"] }
|
||||||
|
|
8
tests/module/loader/.cargo/config
Normal file
8
tests/module/loader/.cargo/config
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[target.x86_64-apple-darwin]
|
||||||
|
rustflags = ["-C", "link-args=-rdynamic"]
|
||||||
|
|
||||||
|
[target.aarch64-apple-darwin]
|
||||||
|
rustflags = ["-C", "link-args=-rdynamic"]
|
||||||
|
|
||||||
|
[target.x86_64-unknown-linux-gnu]
|
||||||
|
rustflags = ["-C", "link-args=-rdynamic"]
|
16
tests/module/loader/Cargo.toml
Normal file
16
tests/module/loader/Cargo.toml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[package]
|
||||||
|
name = "module_loader"
|
||||||
|
version = "0.0.0"
|
||||||
|
authors = ["Aleksandr Orlenko <zxteam@pm.me>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
lua54 = ["mlua/lua54"]
|
||||||
|
lua53 = ["mlua/lua53"]
|
||||||
|
lua52 = ["mlua/lua52"]
|
||||||
|
lua51 = ["mlua/lua51"]
|
||||||
|
luajit = ["mlua/luajit"]
|
||||||
|
vendored = ["mlua/vendored"]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
mlua = { path = "../../.." }
|
39
tests/module/src/lib.rs
Normal file
39
tests/module/src/lib.rs
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
use mlua::prelude::*;
|
||||||
|
|
||||||
|
fn sum(_: &Lua, (a, b): (i64, i64)) -> LuaResult<i64> {
|
||||||
|
Ok(a + b)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn used_memory(lua: &Lua, _: ()) -> LuaResult<usize> {
|
||||||
|
Ok(lua.used_memory())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn check_userdata(_: &Lua, ud: MyUserData) -> LuaResult<i32> {
|
||||||
|
Ok(ud.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[mlua::lua_module]
|
||||||
|
fn rust_module(lua: &Lua) -> LuaResult<LuaTable> {
|
||||||
|
let exports = lua.create_table()?;
|
||||||
|
exports.set("sum", lua.create_function(sum)?)?;
|
||||||
|
exports.set("used_memory", lua.create_function(used_memory)?)?;
|
||||||
|
exports.set("check_userdata", lua.create_function(check_userdata)?)?;
|
||||||
|
Ok(exports)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy)]
|
||||||
|
struct MyUserData(i32);
|
||||||
|
|
||||||
|
impl LuaUserData for MyUserData {}
|
||||||
|
|
||||||
|
#[mlua::lua_module]
|
||||||
|
fn rust_module_second(lua: &Lua) -> LuaResult<LuaTable> {
|
||||||
|
let exports = lua.create_table()?;
|
||||||
|
exports.set("userdata", lua.create_userdata(MyUserData(123))?)?;
|
||||||
|
Ok(exports)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[mlua::lua_module]
|
||||||
|
fn rust_module_error(_: &Lua) -> LuaResult<LuaTable> {
|
||||||
|
Err("custom module error".to_lua_err())
|
||||||
|
}
|
Loading…
Reference in a new issue