rlua-lua53-sys 0.1.7

Bindings to lua's C API
Documentation
extern crate cc;

use std::env;
use std::path::PathBuf;

fn main() {
    let lua_folder = "lua-5.3.6";

    let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap());

    if cfg!(feature = "lua53-pkg-config") {
        let _library = pkg_config::Config::new().probe("lua5.3").unwrap();
    } else {
        let lua_dir = PathBuf::from(lua_folder).join("src");
        let target_os = env::var("CARGO_CFG_TARGET_OS");
        let target_family = env::var("CARGO_CFG_TARGET_FAMILY");

        let mut cc_config = cc::Build::new();
        cc_config.warnings(false);

        if target_os == Ok("linux".to_string()) {
            cc_config.define("LUA_USE_LINUX", None);
        } else if target_os == Ok("macos".to_string()) {
            cc_config.define("LUA_USE_MACOSX", None);
        } else if target_family == Ok("unix".to_string()) {
            cc_config.define("LUA_USE_POSIX", None);
        } else if target_family == Ok("windows".to_string()) {
            cc_config.define("LUA_USE_WINDOWS", None);
        }

        let mut cc_config_build = cc_config.include(&lua_dir);

        cc_config_build = cc_config_build
            .file(lua_dir.join("lapi.c"))
            .file(lua_dir.join("lauxlib.c"))
            .file(lua_dir.join("lbaselib.c"))
            .file(lua_dir.join("lbitlib.c"))
            .file(lua_dir.join("lcode.c"))
            .file(lua_dir.join("lcorolib.c"))
            .file(lua_dir.join("lctype.c"))
            .file(lua_dir.join("ldblib.c"))
            .file(lua_dir.join("ldebug.c"))
            .file(lua_dir.join("ldo.c"))
            .file(lua_dir.join("ldump.c"))
            .file(lua_dir.join("lfunc.c"))
            .file(lua_dir.join("lgc.c"))
            .file(lua_dir.join("liolib.c"))
            .file(lua_dir.join("llex.c"))
            .file(lua_dir.join("lmathlib.c"))
            .file(lua_dir.join("lmem.c"))
            .file(lua_dir.join("loadlib.c"))
            .file(lua_dir.join("lobject.c"))
            .file(lua_dir.join("lopcodes.c"))
            .file(lua_dir.join("lparser.c"))
            .file(lua_dir.join("lstate.c"))
            .file(lua_dir.join("lstring.c"))
            .file(lua_dir.join("lstrlib.c"))
            .file(lua_dir.join("ltable.c"))
            .file(lua_dir.join("ltablib.c"))
            .file(lua_dir.join("ltm.c"))
            .file(lua_dir.join("lundump.c"))
            .file(lua_dir.join("lutf8lib.c"))
            .file(lua_dir.join("lvm.c"))
            .file(lua_dir.join("lzio.c"));

        if !cfg!(feature = "lua-no-oslib") {
            cc_config_build = cc_config_build
                .file(lua_dir.join("loslib.c"))
                .file(lua_dir.join("linit.c"));
        }

        cc_config_build
            .out_dir(dst.join("lib"))
            .compile("liblua5.3.a");
    }
}