api.h

gnuツールチェーンへの移植が進行中です。perl ../configureにつづいて、make dependの作業。それほど難渋しないと思っていたのですが、どっこい、api.hで大量警告です。api.hは、TOPPERS/JSPのサービスコール毎に使う・使わないを決めるためのマクロ宣言ファイルです。たとえば__slp_tskマクロを宣言すれば、カーネルソースの#ifdefでslp_tsk()が有効になります*1
このような場合の常套手段として二度読み対策は当然しています。ところが発生する警告は二重定義の山。ファイル検索を行っても、二重定義されているとは思えず、ほとほと困ってしまいました。で、グーグル先生です。見つかったのはこのメール投稿

ifdefに使う定義は,実際にはMakefile中に記述されています.
正確には,jsp/obj/Makefileから,jsp/kernel/Makefile.kernelという
ファイルが参照されていて,その中に定義されています.
このMakefileは,libkernel.aを作成するための定義の一部を持っています.
定義はgccコマンドラインオプション経由で直接指定されます.
slp_tsk.o というファイルを作成するときは,
gcc -D__slp_tsk -O2 -wall -c -O slp_tsk.o task_sync.c
といったコマンドを実行します

うーん、もうapi.hはいらないって事ですね。VisualDSP++は使わない関数を勝手に消してくれますから、このファイルはいらないようです。念のために残しておきますが、インクルードはコメントアウトする事にしました。

*1:読みやすくタグ付けされたソースコードがあるので一読をお勧めする