#!/bin/bash
m68k-coff-gcc -O -S -c -v -m68040 -I/usr/local/m68k/include $1.c
m68k-coff-as -R -m68040 -o$1.o $1.s
m68k-coff-ld -N -M -Ttext 80000 -Tbss C0000 -o.$1.obj start.o bios.o $1.o -lc >$1.map
m68k-coff-objcopy -Osrec $1.obj $1.mot
m68k-coff-gcc -O -S -c -v -m68040 -I/usr/local/m68k/include $1.c
m68k-coff-as -R -m68040 -o$1.o $1.s
m68k-coff-ld -N -M -Ttext 80000 -Tbss C0000 -o.$1.obj start.o bios.o $1.o -lc >$1.map
m68k-coff-objcopy -Osrec $1.obj $1.mot
といってもいままでDjgppで使っていたMSDOS用バッチファイルとオプション等は何ら変わりません
テスト用ソースコードtest.cは簡単にこんなものを書いておきます
で、testを引数にしてスクリプトを実行。
$ ./gc.sh test
: No such file or directory
Reading specs from /usr/local/m68k/lib/gcc/m68k-coff/3.4.2/specs
Configured with: ./configure --prefix=/usr/local/m68k --target=m68k-coff --with-newlib
Thread model: single
gcc version 3.4.2
: No such file or directory
Reading specs from /usr/local/m68k/lib/gcc/m68k-coff/3.4.2/specs
Configured with: ./configure --prefix=/usr/local/m68k --target=m68k-coff --with-newlib
Thread model: single
gcc version 3.4.2
・・? いきなり対象ファイルなし?
これは「Cygwin No such file or directory」で調べたらすぐに原因判明。
Unix系OSで扱う改行コードはCR/LFではなくLFだけのようです。
DOSのバッチファイルをそのまま編集したので拡張子の後に^M(CR)と余計なコードがついてしまいファイル名がマッチしなかったようです
$ cat -A gc.sh
#!/bin/bash^M$
m68k-coff-gcc -O -S -c -v -m68040 -I/usr/local/m68k/include $1.c^M$
m68k-coff-as -R -m68040 -o$1.o $1.s^M$
m68k-coff-ld -N -M -Ttext 80000 -Tbss C0000 -o.$1.obj start.o bios.o $1.o -lc >$1.map^M$
m68k-coff-objcopy -Osrec $1.obj $1.mot^M$
^Z