gba 0.5.0

A crate for making GBA games with Rust.
[config]

skip_core_tasks = true



[tasks.verify-toolchain]

script_runner = "@duckscript"

script = [

'''

channel = get_env CARGO_MAKE_RUST_CHANNEL

assert_eq ${channel} nightly "Rust toolchain must be set to nightly"

'''

]





[tasks.build-examples-debug]

dependencies = ["verify-toolchain"]

command = "cargo"

args = ["build", "--examples", "--target=thumbv4t-none-eabi", "-Zbuild-std=core"]



[tasks.build-examples-release]

dependencies = ["verify-toolchain"]

command = "cargo"

args = ["build", "--examples", "--release", "--target=thumbv4t-none-eabi", "-Zbuild-std=core"]



[tasks.pack-roms]

script_runner = "@duckscript"

script = [

'''

release_target = get_env RELEASE_TARGET

examples_path = set ./target/thumbv4t-none-eabi/${release_target}/examples

examples = glob_array ./examples/*.rs

for example in ${examples}

    example = substring ${example} -3

    example = basename ${example}

    binary_exists = is_path_exists ${examples_path}/${example}



    if ${binary_exists}

        echo "Packing: ${examples_path}/${example} to ${examples_path}/${example}.gba"

        exec arm-none-eabi-objcopy -O binary ${examples_path}/${example} ${examples_path}/${example}.gba

        echo "Fixing headers: ${examples_path}/${example}.gba"

        exec gbafix ${examples_path}/${example}.gba

    else

        echo "Binary does not exist: ${examples_path}/${example}"

    end

end

'''

]



[tasks.pack-roms-release]

dependencies = ["build-examples-release"]

env = { RELEASE_TARGET = "release" }

run_task = "pack-roms"



[tasks.pack-roms-debug]

dependencies = ["build-examples-debug"]

env = { RELEASE_TARGET = "debug" }

run_task = "pack-roms"



[tasks.test]

dependencies = ["verify-toolchain"]

command = "cargo"

args = ["test", "--lib"]



[tasks.justrelease]

dependencies = ["pack-roms-release"]



[tasks.build-all]

dependencies = ["pack-roms-debug", "pack-roms-release"]



[tasks.default]

alias = "build-all"