Skip to content

Instantly share code, notes, and snippets.

@takeutch-kemeco
Last active August 29, 2015 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takeutch-kemeco/d4aad7cd895836a92797 to your computer and use it in GitHub Desktop.
Save takeutch-kemeco/d4aad7cd895836a92797 to your computer and use it in GitHub Desktop.
osecpu-vm 123d を Linux 上の c_blike_01f_linux用にビルドするための Makefile
使い方:
ソースファイルパッケージのルートディレクトリ(app0100.ask などのソースファイルが置かれてる所)に、この Makefile を置いた状態で:
make osectols
これで osectols バイナリーをビルドできます。(ファイル名 osectols)
make osecpu
これで osecpu-vm バイナリーをビルドできます。(ファイル名 osecpu)
make osecpu-vm32
これで osecpu-vm32 バイナリーをビルドできます。(ファイル名 osecpu-vm32)
(x86_32bitが動作可能な環境でなければ、生成したバイナリーが動作しないかもしれません)
make osecpu-mini
これで osecpu-vm-mini バイナリーをビルドできます。(ファイル名 osecpu-mini)
make 任意の.ose
これで 任意の.ask から .ose バイナリーをビルドできます。(ファイル名 任意の.ose)
エンジョイ
また、おまけですが
sudo make install
これで /usr/bin に osectols, osecpu, osecpu-vm32, osecpu-mini バイナリーがインストールされます。
インストール後は ./osectols ではなく、osectols と書くだけで実行できるようになります。
(ウインドウズで言う所の C:\Windows\System ディレクトリーへコピーして置いたような状態)
sudo make uninstall
これで /usr/bin の osectols, osecpu, osecpu-vm32, osecpu-mini バイナリーを削除します。(アンインストール)
備考:
GitHub-gists のテキストボックス内の表示だと、”タブ”がスペースに置き換わってしまうので、ここからメモ帳などでMakefileへコピペしても正常動作しません。
(Makefileの書式はタブとスペースは、異なる意味をもちます)
GitHub-gists に"Raw"というボタンがあるので、ここを押すと無加工なプレーンな状態のテキストを得られます。それをコピペするように注意してください。
また、当然ですが、c_blike-01f_linux が予めインストールされてる環境でなければ正常動作しません。
だれか有志の方が xlib や freeglut などのもっと汎用的なライブラリー上で動くドライバー(linux上でも動くやつ)を書いてくれることを願ってます。ほんとに。マジで。誰かやって。おねがい。
DEFS =
CFLAGS = -Os -Wl,-s
LIBS =
BINDIR = /usr/bin
TOL_PROG = osectols
TOL_SRCS_DIR = tol
TOL_SRCS = $(TOL_SRCS_DIR)/osectols.c
TOL_OBJS = $(TOL_SRCS:.c=.o)
TOL_CFLAGS = $(CFLAGS) -I./$(TOL_SRCS_DIR)
TOL_LIBS = $(LIBS)
TOL_DEFS = $(DEFS)
VM_PROG = osecpu
VM_SRCS_DIR = vm
VM_SRCS = $(VM_SRCS_DIR)/osecpu-vm.c $(VM_SRCS_DIR)/osecpu-vm.h \
$(VM_SRCS_DIR)/other.c \
$(VM_SRCS_DIR)/integer.c \
$(VM_SRCS_DIR)/pointer.c \
$(VM_SRCS_DIR)/float.c \
$(VM_SRCS_DIR)/extend.c \
$(VM_SRCS_DIR)/api.c \
$(VM_SRCS_DIR)/driver.c \
$(VM_SRCS_DIR)/decode.c \
$(VM_SRCS_DIR)/tek.c \
$(VM_SRCS_DIR)/debug.c
VM_OBJS = $(VM_SRCS:.c=.o)
VM_CFLAGS = $(CFLAGS) -I./$(VM_SRCS_DIR) `pkg-config blike --cflags`
VM_LIBS = $(LIBS) `pkg-config blike --libs`
VM_DEFS = $(DEFS) -D__linux__
VM_M32_PROG = osecpu-m32
VM_M32_SRCS_DIR = vm-m32
VM_M32_SRCS = $(VM_M32_SRCS_DIR)/osecpu-vm.c $(VM_M32_SRCS_DIR)/osecpu-vm.h \
$(VM_M32_SRCS_DIR)/other.c \
$(VM_M32_SRCS_DIR)/integer.c \
$(VM_M32_SRCS_DIR)/pointer.c \
$(VM_M32_SRCS_DIR)/float.c \
$(VM_M32_SRCS_DIR)/extend.c \
$(VM_M32_SRCS_DIR)/api.c \
$(VM_M32_SRCS_DIR)/driver.c
VM_M32_OBJS = $(VM_M32_SRCS:.c=.o)
VM_M32_CFLAGS = $(CFLAGS) -I./$(VM_M32_SRCS_DIR) `pkg-config blike --cflags`
VM_M32_LIBS = $(LIBS) `pkg-config blike --libs`
VM_M32_DEFS = $(DEFS) -D__linux__
VM_MINI_PROG = osecpu-mini
VM_MINI_SRCS_DIR = vm-mini
VM_MINI_SRCS = $(VM_MINI_SRCS_DIR)/osecpu-vm.c $(VM_MINI_SRCS_DIR)/osecpu-vm.h \
$(VM_MINI_SRCS_DIR)/other.c \
$(VM_MINI_SRCS_DIR)/integer.c \
$(VM_MINI_SRCS_DIR)/pointer.c \
$(VM_MINI_SRCS_DIR)/float.c \
$(VM_MINI_SRCS_DIR)/extend.c \
$(VM_MINI_SRCS_DIR)/api.c \
$(VM_MINI_SRCS_DIR)/driver.c
VM_MINI_OBJS = $(VM_MINI_SRCS:.c=.o)
VM_MINI_CFLAGS = $(CFLAGS) -I./$(VM_MINI_SRCS_DIR) `pkg-config blike --cflags`
VM_MINI_LIBS = $(LIBS) `pkg-config blike --libs`
VM_MINI_DEFS = $(DEFS) -D__linux__
all:
%.ose:%.ask
gcc -E -o a_0ask.txt -x c $<
./osectols tool:aska in:a_0ask.txt out:a_1oas_$*.txt
gcc -E -P -o a_2cas.txt -x c a_1oas_$*.txt
./osectols tool:lbstk in:a_2cas.txt out:a_3cas.txt lst:a_3lbl.txt
./osectols tool:db2bin in:a_3cas.txt out:$@
$(TOL_PROG): $(TOL_OBJS)
gcc $(TOL_DEFS) $(TOL_CFLAGS) $(TOL_LIBS) -o $@ $(TOL_OBJS)
$(VM_PROG): $(VM_OBJS)
gcc $(VM_DEFS) $(VM_CFLAGS) $(VM_LIBS) -o $@ $(VM_OBJS)
$(VM_M32_PROG): $(VM_M32_OBJS)
gcc $(VM_M32_DEFS) $(VM_M32_CFLAGS) $(VM_M32_LIBS) -o $@ $(VM_M32_OBJS)
$(VM_MINI_PROG): $(VM_MINI_OBJS)
gcc $(VM_MINI_DEFS) $(VM_MINI_CFLAGS) $(VM_MINI_LIBS) -o $@ $(VM_MINI_OBJS)
.c.o:
gcc $(DEFS) -c -o $@ $<
clean:
rm -f $(TOL_PROG)
rm -f $(TOL_SRCS_DIR)/*.o
rm -f $(VM_PROG)
rm -f $(VM_SRCS_DIR)/*.o
rm -f $(VM_M32_PROG)
rm -f $(VM_M32_SRCS_DIR)/*.o
rm -f $(VM_MINI_PROG)
rm -f $(VM_MINI_SRCS_DIR)/*.o
install:
install $(TOL_PROG) $(VM_PROG) $(VM_M32_PROG) $(VM_MINI_PROG) $(BINDIR)
uninstall:
rm -f $(BINDIR)/$(TOL_PROG)
rm -f $(BINDIR)/$(VM_PROG)
rm -f $(BINDIR)/$(VM_M32_PROG)
rm -f $(BINDIR)/$(VM_MINI_PROG)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment