solaさんのところからgit cloneしたものでは、ビルドされなかった。
なにかが、何かが違うようだ。
build/ 以下をgrepすると、build/core/user_tags.mkのGRANDFATHERED_USER_MODULESに含まれていた。
でも他のもたくさんあるので、libstagefrighthwだけ除外することはできない。
なにか抑制する手段があるということか。
GRANDFATHERED_USER_MODULESは、base_rules.mkで使われている。
長いけど引用。
ifneq ($(filter $(LOCAL_MODULE_TAGS),user),)
ifeq ($(filter $(GRANDFATHERED_USER_MODULES),$(LOCAL_MODULE)),)
$(warning *** Module name: $(LOCAL_MODULE))
$(warning *** Makefile location: $(LOCAL_PATH))
$(warning * )
$(warning * Each module must use a LOCAL_MODULE_TAGS in its)
$(warning * Android.mk. Possible tags declared by a module:)
$(warning * )
$(warning * optional, debug, eng, tests, samples)
$(warning * )
$(warning * If the module is expected to be in all builds)
$(warning * of a product, then it should use the)
$(warning * "optional" tag: )
$(warning * )
$(warning * Add "LOCAL_MODULE_TAGS := optional" in the)
$(warning * Android.mk for the affected module, and add)
$(warning * the LOCAL_MODULE value for that component)
$(warning * into the PRODUCT_PACKAGES section of product)
$(warning * makefile(s) where it's necessary, if)
$(warning * appropriate.)
$(warning * )
$(warning * If the component should be in EVERY build of ALL)
$(warning * products, then add its LOCAL_MODULE value to the)
$(warning * PRODUCT_PACKAGES section of)
$(warning * build/target/product/core.mk)
$(warning * )
$(error user tag detected on new module - user tags are only supported on legacy modules)
endif
endif
これは、Android.mkにLOCAL_MODULE_TAGSを指定してないときに出てくるメッセージだ。
ここにあったんだ。
(2011/09/17)
最後のコンマを見逃していた。
ifneq ($(filter $(LOCAL_MODULE_TAGS),user),)
なので、 「LOCAL_MODULE_TAGS」から「user」と一致する文字列を抜き出し、それが空文字列ではなかったらtrue、ということになる。
つまり、LOCAL_MODULE_TAGSにuserが含まれていた場合はtrue、か。
ifeq ($(filter $(GRANDFATHERED_USER_MODULES),$(LOCAL_MODULE)),)
これも同じだ。
GRANDFATHERED_USER_MODULESの中からLOCAL_MODULEと一致する文字列を抜き出し、それが空文字だったらtrue、ということになる。
つまり、GRANDFATHERED_USER_MODULESにLOCAL_MODULEが含まれていなかった場合はtrue、か。
全然違ったわ・・・すまん。
試していないが、デフォルトではLOCAL_MODULE_TAGSはuserで、システムとしてビルドさせようと思っているモジュール名はGRANDFATHERED_USER_MODULESにあらかじめ書いてあるってことではないだろうかね。
けど、user以外で指定していれば出てこないメッセージなので、これより前にフィルタリングするしくみがあるのだろう。
ってことは、GRANDFATHERED_USER_MODULESは単なるリストで、あまり意味がないということか。
device/以下も見てみたが、crespoにしかない。
うーん、ということは、やはり自動的にビルドしているのか。。。
しかし、solaさん環境でlibstagefrighthwのAndroid.mkでエラーを出すようにしても、ビルドがうまくいく。
つまり、ビルドしようとすらしてないのだ。
ということは、その上に答えがあるはず。
1つ上のhardware/ti/omap3にもAndroid.mkがある。
ifeq ($(TARGET_BOARD_PLATFORM),omap3)
include $(all-subdir-makefiles)
endif
ほほう。
私は自分のところで、指定している。
TARGET_BOARD_PLATFORM := omap3
solaさんのところには、ない。
これか~。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。