[FreeBSD-users-jp 95875] ports の Makefile で条件コンパイルを指定する方法

User Ribbon ribbon @ ns.ribbon.or.jp
2016年 7月 15日 (金) 13:56:45 UTC


taskwarrior というソフトがあります。これは、portsになっています。
ただ、このソフトはメッセージを標準の英語以外、8つの言語で表示させる
ことができます。しかし、その方法は、コンパイル時に言語を指定する
方式なのですね。最近の、gettextを使ったような方法ではありません。

そこで、portsのMakefile に手を入れて、言語の設定が出来るようにしてみようと
思いました。他のports の例を参考にして、

OPTIONS_SINGLE= LANGUAGE
OPTIONS_SINGLE_LANGUAGE= LANGUAGE_USA LANGUAGE_ESP LANGUAGE_FRA LANGUAGE_DEU \
                         LANGUAGE_ITA LANGUAGE_PRT LANGUAGE_RUS LANGUAGE_POL \
                         LANGUAGE_JPN
OPTIONS_DEFAULT= LANGUAGE_USA
LANGUAGE_DESC= Language select
LANGUAGE_USA_DESC= English    message support
(以下略)
という記述を追加してみました。この状態で、 make config を実行するとメニューが出ます。
ここまでは良いのですが、この結果をコンパイラに渡す方法が分かりません。

Makefile中に if文を記述して、CMAKE_ARGS に追加パラメータを渡すようにすれば
良いはずなのですが、if文の書き方が分からないのです。

.if ${OSVERSION} < 1000000
BUILD_DEPENDS+= ${LOCALBASE}/bin/clang36:${PORTSDIR}/lang/clang36
CPP=    ${LOCALBASE}/bin/clang-cpp36
CC=     ${LOCALBASE}/bin/clang36
CXX=    ${LOCALBASE}/bin/clang++36
.endif

と言う部分はあるので、おそらく .if がif文に相当するものだと思います。
しかし、選択された結果(上記だとLANGUAGE_USA)をif文の引数にどうやって
指定したら良いでしょうか?

ribbon


freebsd-users-jp メーリングリストの案内