May 16, 2004

h8300-elf Makefile

H8のelf版コンパイラの作成に成功しましたが、いちいちコマンドを入力するのがあまりに面倒くさいと思うので、Makefile(一連の処理をまとめたもの)を作成しました。公開します。

やっていることは前回書いたことと同じです。ただし、Windows上のCygwinでこのMakefileを動作させ開発環境を構築するには、wgetとmake、gcc(ネイティブコンパイラ)が必要です。以下の手順をとってください。

『コンパイラ導入方法(Cygwin)』を参考にCygwinを導入します。基本は同じなのですが、

Select Packages[インストールするソフトを選択してください。ここが重要です。All+Develの中にあるgcc: GCC C compilergcc-g77: GCC Fortran compilerのNewのところにバージョンが表示されているかどうか確認してください。なければSkipとかなっているところクリックすればバージョンが表示されるはずです。]

のところで、All+Develにあるmake: The GNU version of the 'make' utilityAll+Webにあるwget: Utility to retrieve files from the WWW via HTTP and FTPもチェックしてバージョンが表示されるようにしてください。

Cygwinがインストールされたら以下の手順を実行してください。

$ if ! [ -d /usr/local/src ]; then mkdir /usr/local/src; fi
$ cd /usr/local/src
$ wget https://fenrir.naruoka.org/download/embedded/h8devel.makefile
$ make -f h8devel.makefile

これで開発環境が構築されます。

ちなみにですが、開発は秋月の3069FのLANなしモデル(開発環境付)でやっています。このキットに付属の開発環境はh8300-hms(coff)でベースgccが2.95なので、とってもいけていません。開発環境なしモデルを買って、上記の方法で再構築することをお勧めします。

いちおうソースを書いておきます。
Makefile

TARGET = h8300-elf
BUILD_DIR = BUILD_$(TARGET)

BINUTILS = binutils-2.14
GCC = gcc-3.3.2
NEWLIB = newlib-1.11.0

all : binutils gcc newlib

$(BINUTILS).tar.bz2 :
    wget http://ftp.gnu.org/gnu/binutils/$(BINUTILS).tar.bz2

$(BINUTILS) : $(BINUTILS).tar.bz2
    tar jvxf $(BINUTILS).tar.bz2

$(GCC).tar.gz :
    wget ftp://ftp.ring.gr.jp/pub/GNU/gcc/$(GCC).tar.gz

$(GCC) : $(GCC).tar.gz
    tar zvxf $(GCC).tar.gz

$(NEWLIB).tar.gz :
    wget ftp://sources.redhat.com/pub/newlib/$(NEWLIB).tar.gz

$(NEWLIB) : $(NEWLIB).tar.gz
    tar zvxf $(NEWLIB).tar.gz

binutils : $(BINUTILS)
    cd $(BINUTILS); \
    if ! [ -d $(BUILD_DIR) ]; then mkdir $(BUILD_DIR); fi; \
    cd $(BUILD_DIR); \
    if ! [ -f Makefile ]; then ../configure --target=$(TARGET); fi; \
    make; \
    make install

gcc : $(GCC) $(NEWLIB)
    cd $(GCC); \
    if ! [ -d $(BUILD_DIR) ]; then mkdir $(BUILD_DIR); fi; \
    cd $(BUILD_DIR); \
    if ! [ -f Makefile ]; then ../configure --target=$(TARGET) --enable-languages="c++" --with-newlib --with-headers=../../$(NEWLIB)/newlib/libc/include; fi; \
    make LANGUAGES="c c++"; \
    make install

newlib : $(NEWLIB)
    cd $(NEWLIB); \
    if ! [ -d $(BUILD_DIR) ]; then mkdir $(BUILD_DIR); fi; \
    cd $(BUILD_DIR); \
    if ! [ -f Makefile ]; then ../configure --target=$(TARGET); fi; \
    make; \
    make install

あと備考ですが、h8300-elf(elf形式)ではなくh8300-hms(coff形式)を作るにはTARGET=h8300-hmsとすればOKだと思います。binutils、gcc、newlibの組み合わせを変えるには、それぞれBINUTILS、GCC、NEWLIBの値を変えてください。今のところ、この組み合わせでうまくいっています。

09:51 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/257
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。