automakeにおけるVALAFLAGSの制限
valacは出力.cファイルの名前を変更することができない。 その影響で、automakeでは、 同じソースを複数のターゲット(PROGRAMSやLIBRARIES)で 使用することができなくなっている。
なぜなら、automakeのvala言語対応においては、 .valaを.cにリネームしたターゲット(以下cターゲット)を 自動生成するからである。
複数のターゲットで同じ.valaソースを指定すると、 同名のcターゲットが複数生成されてしまう。
生成ルールの異なる同名ターゲットが複数生成されるため、 正常にmakeできなくなる。 (正確には後の定義が優先される旨の警告が出る)
vala言語以外(少なくともC言語)では、 フラグ設定の有無に応じて、ターゲット(オブジェクトファイル)名のリネームを 自動的に行ってくれる。
しかし、vala言語においては、 C言語で対応しているようなリネームによる衝突回避を実施してくれない。
このことは(直接ではないが)automakeのマニュアルにも記載されている。
http://www.gnu.org/software/automake/manual/html_node/Vala-Support.html
Note that currently, you cannot use per-target *_VALAFLAGS (see Renamed Objects) to produce different C files from one Vala source file.