ビルドスイッチ (Build Switch)

SDK のビルド時の環境変数

以下の表は irisSDK ツリーのビルド条件を変更するための環境変数の一覧です.これらの値は通常の環境変数で設定するほかに make コマンドの引数として make IRIS_DEBUG=True などと受け渡すことや Makefile などで IRIS_DEBUG=True などと記述することで設定可能です.無設定時は初期値が使用されます.

CWFolder_IRIS
または
CWFOLDER_IRIS
CodeWarrior のインストールされているディレクトリです.
CodeWarrior for IRIS をインストールすると自動的に設定されます.
cygwin の bash で設定するときは
% export CWFolder_IRIS='D:/Program Files/Metrowerks/CodeWarrior' 
とシングルクウォートで囲む必要があります.
Windows の環境変数で設定するときは
D:/Program Files/Metrowerks/CodeWarrior
となります.パスの区切り文字として / と \ の両方が使用できます.
初期値: C:\Program Files\Metrowerks\CodeWarrior for IRIS V0.1
LM_LICENSE_FILE CodeWarrior のライセンスファイルが入っているディレクトリ.
初期値:なし.通常は必要ありません
IRISSDK_ROOT
★重要
IRISSDK がインストールされているディレクトリであり、
$cvsroot/irisSDK が展開されているディレクトリです.
パスの区切り文字として / と \ の両方が使用できますが、CodeWarrior の IDE では \ であることが望まれる場合が多いため \ を使うほうことをお勧めします.
初期値:C:\irisSDK
IRIS_PLATFORM IRISのコンパイルターゲットを以下のように指定します.
BB ブレッドボード
TEG TEG ボード
TS TS
初期値:TEG
IRIS_MEMSIZE IRISのコンパイルターゲットのメインメモリサイズを指定します.
4M 4Mバイト
8M 8Mバイト
初期値:4M
IRIS_CCTYPE コンパイラの指定. ただし現状では CodeWarrior のみサポートします.
CW CodeWarrior
ARM ARM ADS
GCC GNU C Compiler
初期値:CW
IRIS_DEBUG
IRIS_RELEASE
IRIS_FINALROM
★重要
ターゲットのコンパイルターゲットを DEBUG 版か RELEASE 版か FINALROM 版から選べます.この設定によって make コマンド実行時にコンパイルオプションやリンクされるライブラリが変わります.この変数は他の変数と異なり3つのうちのどれかひとつに適当な値を設定することで有効になります.
初期値:IRIS_RELEASE
IRIS_LINK_ISD IS IRIS EMULATOR ライブラリをリンクしたいときに何か値を設定します.
初期値: 値なし (=リンクせず)
IS_IRIS_DIR IS IRIS EMULATOR 関連ファイルのインストールされているディレクトリです.
IS IRIS EMULATOR をインストールすると自動的に設定されます.
IRIS_LINK_ISD が定義されているときのみ意味を持ちます.
初期値: C:/Program Files/INTELLIGENT SYSTEMS/IS-IRIS-EMULATOR

ソースで利用できるマクロスイッチ

以下の表は irisSDK ツリーのビルド条件を #ifdef 〜 #endif 構文などによってソース側から知るためのマクロ変数の一覧です.基本的には前項での環境変数による設定によってコントロールされます.
すべての名称が SDK_ で始まります.

SDK_BB
SDK_TEG
SDK_TS
IRISのコンパイルターゲットの指定(環境変数 IRIS_PLATFORM) に応じてどれか一つが定義されます.
SDK_BB ブレッドボード
SDK_TEG TEG ボード
SDK_TS TS
初期値:SDK_TEG
SDK_4M
SDK_8M
IRISのコンパイルターゲットのメインメモリサイズの指定(環境変数 IRIS_MEMSIZE)に応じてどちらかが定義される.
SDK_4M 4Mバイト
SDK_8M 8Mバイト
初期値:SDK_4M
SDK_ARM9
SDK_ARM7
どちらのプロセッサ向けのコンパイル・アセンブルが行われているかによってどちらかが定義される.
SDK_ARM9 メインプロセッサ用ビルド
SDK_ARM7 サブプロセッサ用ビルド
初期値:SDK_ARM9
SDK_CODE_ARM
SDK_CODE_THUMB
コンパイラオプションで ARM コードか Thumb コードのどちらを生成するように設定されているかを示します.
これはあくまで「初期設定」を示すものです.実際にどちらのコードの生成が行われているかはコンパイラに組み込まれている定義マクロを参照する必要があります.(CW の場合 __thumb__)
pragma を使いソースの一部の範囲で明示的にでコードの生成を切り換えた場合、その範囲の終了時にはコード生成をこの値で示される設定に戻しておくことを推奨します.
SDK_CODE_ARM ARM 用命令セット
SDK_CODE_THUMB THUMB 用命令セット
初期値:CODEGEN_CC/CODEGEN_AS の設定
SDK_CW
SDK_ADS
SDK_GCC
使用されているコンパイラに応じてどれか一つが定義される.
SDK_CW CodeWarrior
SDK_ADS ARM ADS
SDK_GCC GNU C Compiler
初期値:SDK_CW
SDK_ASM アセンブラによってアセンブルされている場合に定義されます.
Cのヘッダファイルを共用する場合にアセンブラではエラーになる記述を書きたいときに利用できる.
SDK_DEBUG
SDK_RELEASE
SDK_FINALROM
★重要
ターゲットのコンパイルターゲットを DEBUG 版か RELEASE 版か FINALROM 版かどれするかという指定に応じてどれか一つが定義されます.
SDK_DEBUG DEBUG版
SDK_RELEASE RELEASE版
SDK_FINALROM FINALROM版
初期値:SDK_RELEASE
その他 その他以下のような一時的なコンパイルスイッチが準備されています.これらのユーザによるコンパイルの切り替えについての汎用的な方法は現状では用意されていません.検索時のキーワードとしてご使用ください.
SDK_NO_THREAD THREAD 機能を使用しないライブラリを作成します
SDK_BB_ICE ICE接続のブレッドボードのためのパッチを有効にします
SDK_CWBUG_* CodeWarrior のバグ対策のためのスイッチです.
SDK_NO_INTERWORKING Thumb/ARM 切り替えを考慮しないライブラリを作成します

SDK の Makefile 内で設定するマクロスイッチ

以下の表は irisSDK の Makefile において各ディレクトリごとのビルド条件を設定するためのものです.ソースの場所や連鎖する Makefile の指定を行ないます.

SUBDIRS
★重要
make 処理を連鎖させたいディレクトリを列挙します.
初期値:なし
SRCS
★重要
コンパイル/アセンブルしたいソースファイルを列挙します.
make はそれぞれのファイルの拡張子に応じて以下の表で示したプログラミング言語のコンパイラ/アセンブラでオブジェクトファイルを生成しようと試みます.
拡張子 プログラミング言語
.c C
.cpp C++
.s アセンブラ
SRCDIR ソースファイルのディレクトリを指定します.
初期値:./src
この初期値は make を行ったディレクトリから相対パス src で指定されたディレクトリを意味します.
INCDIR
プライベートインクルードファイル(モジュール固有のインクルードファイル)がある場合はそのディレクトリを指定します.必要がなければ使用する必要はありません.
初期値:./include
OBJDIR
BINDIR
LIBDIR
書き換え禁止
make によって各一時ファイルが出力されるディレクトリです.
ソースツリーの都合で変更することがあるので個別のディレクトリのMakefile 内で上書きすることは避けてください.
LCFILE 独自のリンクコマンドファイル(.lcf)を使いたい場合は指定します.
初期値:$irisSDK/include/iris/arm9.$(IRIS_PLATFORM).lcf
TARGET_BIN
★重要
.bin 形式または .axf 形式のターゲットファイルを指定します.
SRCS で指定されたソースファイルをコンパイル/アセンブルしてできたオブジェクトファイルをリンクしターゲットファイルとします.
.bin ファイルをターゲットに指定した場合は .axf ファイルも自動的に作成されます.
TARGET_LIB ライブラリファイルを作成したいときに指定します.
SRCS で指定されたソースファイルをコンパイル/アセンブルしてできたオブジェクトファイルを連結しライブラリとします.
通常 TARGET_BIN と TARGET_LIB は同時に設定しません.
TARGET_OBJ オブジェクトファイルをターゲットとして作成したいときに指定します.
これは通常はあまり使うことはありません.ライブラリでは crt0.s をコンパイルし、ライブラリとしてインストールするときに使用しています.
CODEGEN_PROC
★ARM7 で重要
メインプロセッサとサブプロセッサのどちらのコードを生成するのかを切り替えるスイッチです.
ARM9 メインプロセッサ用コード
ARM7 サブプロセッサ用コード
初期値:ARM9 (メインプロセッサ用コード)
CODEGEN_CC
CODEGEN_AS
コンパイラおよびアセンブラに ARM コードか Thumb コードのどちらを生成するかのデフォルト値を与えます.無論ソース内で明示的に指定がなければこの設定に添ってコードが生成されます.
ARM 32bit ARM コード
THUMB 16bit THUMB コード
初期値:
CODEGEN_PROC が ARM9 のとき
  CODEGEN_CC/ CODEGEN_AS 共に ARM
CODEGEN_PROC が ARM7 のとき
  CODEGEN_CC は THUMB、CODEGEN_AS は ARM
TARGETS
書き換え禁止
TARGET_BIN と TARGET_LIB に相対パスが付いたものが自動的に設定されます..bin/.a ファイルは IRIS_PLATFORM およびIRIS_DEBUG/ IRIS_RELEASE/ IRIS_FINALROM の設定により格納されるディレクトリが変化します.この変化を吸収するためにこのマクロが用意されています.
INSTALL_TARGETS インストールしたいファイルを列挙します.この設定に上記の TARGETS が有効に機能します.
初期値:なし
INSTALL_DIR ファイルのインストール先を設定します.
初期値:なし
LINCLUDES 他のインクルードファイルがある場合はそのディレクトリを指定します.
LLIBRARY_DIRS
LLIBRARIES
他のライブラリファイルがある場合はそのディレクトリを LLIBRARY_DIRS、ライブラリファイルを LLIBRARIES でそれぞれ列挙します.