https://github.com/andwn/marsdev
Cross platform Mega Drive / 32X toolchain
https://github.com/andwn/marsdev
gnu-toolchain mega-drive-toolchains megadrive sega-32x sega-genesis sega-mega-drive sgdk
Last synced: 4 months ago
JSON representation
Cross platform Mega Drive / 32X toolchain
- Host: GitHub
- URL: https://github.com/andwn/marsdev
- Owner: andwn
- License: mit
- Created: 2017-07-24T16:45:04.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-02T12:00:35.000Z (about 2 years ago)
- Last Synced: 2025-06-24T23:03:14.846Z (12 months ago)
- Topics: gnu-toolchain, mega-drive-toolchains, megadrive, sega-32x, sega-genesis, sega-mega-drive, sgdk
- Language: Makefile
- Homepage:
- Size: 343 KB
- Stars: 181
- Watchers: 12
- Forks: 18
- Open Issues: 6
-
Metadata Files:
- Readme: README-ja.md
- License: LICENSE
Awesome Lists containing this project
- awesome-megadrive - Marsdev - Cross platform Mega Drive / 32X toolchain (Programming / Toolchains)
README
# Marsdev
クロスプラットフォームなメガドライブ用ツールチェーンです。
[English](README.md) | 日本語
## ビルドとインストール
### 1. 前提条件
OSによって、以下のパッケージをインストールしてください:
* Debian: `apt install build-essential texinfo wget`
* RedHat: `yum install gcc gcc-c++ texinfo-tex wget`
* Arch: `pacman -S base-devel texinfo wget`
* Gentoo: `emerge sys-apps/texinfo net-misc/wget`
* macOS: `xcode-select --install && brew install wget`
### 2. GCC ツールチェーン
GitHubからクローンして:
- `git clone https://github.com/andwn/marsdev --recurse-submodules`
- `cd marsdev`
---
**注意**
Marsdevがどのディレクトリでビルドされ、インストールされるかを制御する2つの変数がある:
- `MARS_BUILD_DIR` = (このリポジトリのROOT)/mars
- `MARS_INSTALL_DIR` = /opt/toolchains/mars
どちらかの場所を変更したいの場合は、次のエクスポートコマンドとかを使用できる:
- `export MARS_INSTALL_DIR=/path/to/mars`
また、`-j8`のように、8をCPUコア数に置き換えて使用することを**強く推奨**します。
私は`-j`だけでは説明のつかない奇妙な問題に遭遇したことがあるので、数を指定してください。
---
GCCをビルドするには2つの選択肢がある:
- `make m68k-toolchain` - Newlibがない
- `make m68k-toolchain-newlib` - Newlibがある
32Xためビルドしたければ、`sh-toolchain` も必要です。
選択肢は同じで、上記のコマンドの `m68k` を `sh` に置き換えられる。
別のGCCのバージョンが必要、または特定の言語をビルドしたいなら:
- `make m68k-toolchain-newlib GCC_VER=12.4.0 LANGS=c,c++`
### 3. (自由に選択) SGDK
SGDKはJavaを必要とするので、インストールして:
* Debian: `apt install openjdk-11-jre`
* RedHat: `yum install java-11-openjdk`
* Arch: `pacman -S jdk11-openjdk`
* Gentoo: `emerge dev-java/openjdk`
* macOS: `brew install java`
---
**注意:macOSについて**
OpenJDKはPATHに追加しなければならない:
- `~/.zshrc` (まだbashを使用していれば `~/.bashrc`) を開き、次の行を追加して:
- `export PATH="/usr/local/opt/openjdk/bin:$PATH"`
- ターミナルを再起動してか、`source ~/.zshrc` を実行して
---
SGDKをビルドして:
- `make sgdk`
SGDKの特定のバージョンは、`SGDK_VER=` で指定できる。
しかし、デフォルト以外のバージョンでの動作は保証できない。
最新の変更をテストしたい冒険者は、`SGDK_VER=master`も指定できる。
### 4.1 (自由に選択) 他のツール
以下のターゲットも用意されています:
- `make x68k-tools` - シャープX68000の互換性
- `make mdtools-sik` - mdtiler といくつかの Echo を含む (libpng が必要)。
- `make mdtools-flamewing` - 各種圧縮ツール (boost が必要)。
### 4.2 (実験的) LLVM
cmake、ninjaとpython3が必要:
- Debian: `apt install cmake ninja-build python3`
- (TODO: 他のOS)
M68k用のclang付きLLVMをビルド:
- `make m68k-llvm`
テストはまだ行われておらず、サンプルやスケルトン・プロジェクトはまだ作られる必要があります。
### 5. インストール
`sudo make install`だけ必要。
説明書のパスを覚えておいて、`~/.bashrc`(または`~/.zshrc`)に追加することを検討してください。
## 例プロジェクト
`examples`というディレクトリには、自分のプロジェクトの基盤となる様々なサンプル・プロジェクトが含まれています。
それぞれの詳細については、[例プロジェクトのREADME](examples/README.md)を参照してください。
ビルドするには、`make`コマンドを実行するのような簡単なはずです。
## 時々聞く質問
### LinuxでSGDKを使いたいだけ。読むのはつまらないなぁ
- `sudo apt install -y git build-essential texinfo wget openjdk-11-jre`
- `git clone https://github.com/andwn/marsdev && cd marsdev`
- `make sgdk -j8`
- `sudo make install`
- そして `examples/sgdk-skeleton` をどこかにコーピーしてコーぢングして始まって。
### どうやってIDEと使えるのだろうか?
色々なIDEがあるんだから、独特の説明できません。
でも、もし設定が見つけられていたら、以下のフォルダーを記入してください。
* GCC Headers: `$(MARSDEV)/m68k-elf/lib/gcc/m68k-elf/$(GCC_VER)/include`
* SGDK Headers: `$(MARSDEV)/m68k-elf/include`
* Newlib Headers: `$(MARSDEV)/m68k-elf/m68k-elf/include`
IDEでビルドとランボタンの動作を設定できるのであれば、以下のように実行させればよい。
* Build: `make MARSDEV=/path/to/mars`
* Run: `/path/to/an/emulator out.bin`
### What about Windows?
Windows10か11を持っていれば、[WSL](https://learn.microsoft.com/ja-jp/windows/wsl/install)
でインストールしたほうが良いです。
古い方法は[MSYS2](doc/install_msys_legacy.md)ですけど、私は使ってやめた。
### コンパイルにすごく時間がかかるんだよ
GCCはとても大きいので、我慢しかできないです。
# 予定こと
- [ ] Finish porting the important parts of libdos and getting Newlib to work with it