#!/bin/sh

cat <<'EOF' | "${R_HOME}/bin${R_ARCH_BIN}/Rscript" -

source("tools/cargo_run.R")

setwd("src/rust")
if ( ! dir.exists("vendor") ) untar("vendor.tar.xz", tar="internal")

triple <- target()

con <- file("../../inst/cargo.log", "w")
okay <- run('build', '--offline', '--release', '--target', triple, '--jobs', '2', minimum_version='../..', leave_no_trace=TRUE, verbose=con) == 0
close(con)

if ( okay ) {

    file.copy(paste0("target/",triple,"/release/librust.a"), "..", overwrite=TRUE)
    message("Built Rust static library.")

} else {

    message("No suitable version of Cargo was found.\n")
    if ( ( Sys.getenv("MY_UNIVERSE","<unset>") == "<unset>" ) && ( Sys.getenv("NOT_CRAN","<unset>") == "<unset>" ) ) {
        message(paste0(readLines("../../INSTALL"), collapse="\n"))
    } else {
        message("Downloading prebuild static library.\n")
        desc <- read.dcf("../../DESCRIPTION")
        url_base <- "https://dahl.byu.edu/public"
        url <- file.path(url_base, "r_cargo_cross_compile", desc[,"Package"], desc[,"Version"], triple, "librust.a")
        download.file(url, "../librust.a", mode="wb")
    }

}

EOF
