オプション・マッピングの構成

gxlc および gxlc++ ユーティリティーは構成ファイル gxlc.cfg を使用して GNU C および C++オプションを XL C/C++ オプションに変換します。 gxlc.cfg の各項目は、ユーティリティーがどのように GNU C または C++ オプションを XL C/C++ オプションにマップし、それを処理するかを記述しています。

1 つの項目は、処理命令のフラグのストリング、GNU C オプションのストリング、および XL C/C++ オプションのストリングで構成されています。この 3 つのフィールドは空白文字で区切られている必要があります。項目に最初の 2 つのフィールドだけが含まれていて、XL C/C++ オプションのストリングが抜けている場合は、2 番目のフィールドの GNU C オプションが gxlc によって認識され、無音で無視されます。

構成ファイルにコメントを挿入するためには、# 文字が使用されます。コメントはそのコメント独自の行、または項目の最後に入れることができます。

以下の構文が gxlc.cfg 内の項目に使用されます。

abcd    "gcc_or_g++_option"    "xlc_or_xlc++_option"

ここで、

a
no- をプレフィックスとして追加することによりオプションを使用不可にできます。この値は yes を表す y か、no を表す n のいずれかになります。例えば、フラグが y に設定されている場合は、finlinefno-inline として使用不可にすることができ、項目は以下のようになります。
ynn*        "-finline"                  "-qinline"
-fno-inline が指定されていると、gxlc はそれを -qnoinline に変換します。
b
XL C/C++ オプションに関連した値があることをユーティリティーに通知します。この値は yes を表す y か、no を表す n のいずれかになります。例えば、 オプション -fmyvalue=n-qmyvalue=n にマップされている場合は、フラグは y に設定され、項目は以下のようになります。
nyn*        "-fmyvalue"            "-qmyvalue"
そして、gxlc および gxlc++ はこれらのオプションの値を予期します。
c
オプションの処理を制御します。値は以下の通りです。 例えば、gcc オプション -I- がサポートされていないため、gxlc および gxlc++ によって無視されなければならない場合。この場合、フラグは i に設定され、項目は以下のようになります。
nni*        "-I-"
gxlc および gxlc++ はこのオプションを入力として検出すると、処理を行わず、警告を生成します。
d
gxlc および gxlc++ はコンパイラーのタイプを基にオプションを組み込んだり無視することができます。 値は以下の通りです。 例えば、-fwritable-strings は両方のコンパイラーによってサポートされており、 -qnoro にマップされます。項目は以下のようになります。
nnn*        "-fwritable-strings"        "-qnoro"
"gcc_or_g++_option"
gcc or g++ オプションを表すストリングです。
"xlc_or_xlc++_option"
XL C/C++ オプションを表すストリングです。このフィールドはオプショナルであり、 指定する場合は、二重引用符で囲む必要があります。ブランクのままにすると、gxlc および gxlc++ は その項目の gcc_or_g++_option を無視します。

ある範囲のオプションをマップする項目を作成することが可能です。これはアスタリスク (*) とワイルドカードを使用して実行できます。例えば、gcc -D オプションにはユーザー定義名が必須で、オプションの値を取ることができます。以下のオプションのシリーズを持つことが可能です。

-DCOUNT1=100
-DCOUNT2=200
-DCOUNT3=300
-DCOUNT4=400

このオプションの各バージョンごとに項目を作成する代わりに、以下のような単一項目を作成することができます。

nnn*        "-D*"                       "-D*"

ここで、アスタリスクは -D オプションに続く任意のストリングによって置換されます。

逆に、アスタリスクを使用してある範囲のオプションを除外することができます。例えば、gxlc または gxlc++ にすべての -std オプションを無視させたい場合は、以下のような項目を作成することができます。

nni*       "-std*"

アスタリスクがオプション定義の中で使用された場合、オプション・フラグ a および b はこれらの項目には適用されません。

文字 % は GNU C または GNU C++ オプションと共に使用して、そのオプションに関連パラメーターがあることを示します。これは、無視されるオプションと関連したパラメーターを、gxlc または gxlc++ が無視することを保証するために使用されます。例えば、-isystem オプションはサポートされておらず、パラメーターを使用しています。両方ともアプリケーションによって無視されなければなりません。この場合、項目は以下のようになります。

nni*        "-isystem %"

GNU C および C++ と XL C/C++ オプションのマッピングの完全リストについては、以下を参照してください。

http://www.ibm.com/support/search.wss?q=gxlcppoptionmaptabl&tc=SSJT9L&
rs=2030&apar=include

関連情報