1 unstable release
0.1.0 | Feb 25, 2021 |
---|
#664 in Embedded development
49KB
1K
SLoC
Mega Drive toolkit for Rust
This repository hosts a few packages for use with the SEGA Mega Drive.
Using these packages
At the moment, these packages only work with a fork of LLVM & Rust. To use them you will need to build both.
Building LLVM
-
Checkout the
llvm-12
branch from LLVM project fork. -
Build the toolchain with cmake:
- Generate the project with the M68k backend enabled:
cd M68x0-mono-repo mkdir build cd build cmake -G Ninja "-DLLVM_USE_LINKER=lld" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DLLVM_ENABLE_ASSERTIONS=ON" "-DLLVM_PARALLEL_LINK_JOBS=1" "-DLLVM_TARGETS_TO_BUILD=X86" "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=M68k" "-DLLVM_ENABLE_PROJECTS=clang;lld" ..
- Build:
(This step can take along time and a lot of memory if used with a lot of threads.)ninja -j16
- You should now have all of the LLVM binaries in
build/bin
.
- Generate the project with the M68k backend enabled:
Building Rust
-
Checkout the Rust fork (clone the m68k-linux branch).
-
Copy
config.toml.example
toconfig.toml
and edit:- Set
[build] target = ["x86_64-unknown-linux-gnu", "m68k-unknown-linux-gnu"
- Set
[target.x86_64-unknown-linux-gnu] llvm-config = "path/to/build/bin/llvm-config"
- Set
-
Build:
./x.py build --stage=2 rustc cargo
-
You should now have a Rust toolchain in
build/x86_64-unknown-linux-gnu/stage2
. -
Link the toolchain in rustup so it is easier to use:
rustup toolchain link m68k "path/to/build/x86_64-unknown-linux-gnu/stage2"
Building this repository
- Set the required environment variables:
export MEGADRIVE_HOME=path/to/repo export RUSTUP_TOOLCHAIN=m68k export LLVM_CONFIG=path=/to/llvm/build/bin/llvm-config
- Build the tools & libraries:
cargo build --release
- Install the cargo tool:
cd tools/cargo-megadrive cargo install --path=.
- Build the example Mega Drive image:
cd examples/megapong cargo megadrive build
- You should now have an example megadrive image in
target/m68k-none-eabi/release/megapong.md
.
License
This suite is distributed under the terms of the MIT license. The full license text can be read in LICENSE.