gps_freerunner.c (5)
Android なソースツリーに盛り込んで make してみたんですが、libhardware_legacy さえも出力されていない始末。今日ヤッた事を振り返ってみる事に。
ソースツリーへの盛り込み
まず、external 配下で git clone しました。
$ cd $ANDROID/external $ git clone git://gitorious.org/android-on-freerunner/freerunner_platform_hardware_hw.git
make 前にした事
ええと、hardware/libhardware_legacy/gps/Android.mk が以下。
# Use hardware GPS implementation if available. # ifneq ($(BOARD_GPS_LIBRARIES),) LOCAL_CFLAGS += -DHAVE_GPS_HARDWARE LOCAL_SHARED_LIBRARIES += $(BOARD_GPS_LIBRARIES) endif # Use emulator GPS implementation if QEMU_HARDWARE is set. # USE_QEMU_GPS_HARDWARE := $(QEMU_HARDWARE) ifeq ($(USE_QEMU_GPS_HARDWARE),true) LOCAL_CFLAGS += -DHAVE_QEMU_GPS_HARDWARE LOCAL_SRC_FILES += gps/gps_qemu.c endif LOCAL_SRC_FILES += gps/gps.cpp
BOARD_GPS_LIBRARIES という変数に freerunnner な共有ライブラリの名前が格納されていれば良いはず、と踏んで freerunner_platform_hardware_hw/gps/Android.mk の中身を確認してみた。
# hardware/libfreerunner_gps/Android.mk ifeq ($(strip $(BOARD_HAVE_FREERUNNER_GPS)),true) LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := \ gps_freerunner.c LOCAL_MODULE := libfreerunner_gps LOCAL_SHARED_LIBRARIES := \ libutils \ libcutils \ libdl \ libc include $(BUILD_SHARED_LIBRARY) endif
libfreerunner_gps という名前な模様。これを vendor/sola/a500fx/BoardConfig.mk にて設定されてりゃ良いはず、と見て以下を追加。
BOARD_GPS_LIBRARIES := libfreerunner_gps
もうひとつ
freerunner_platform_hardware_hw/gps/Android.mk の以下の条件分岐
ifeq ($(strip $(BOARD_HAVE_FREERUNNER_GPS)),true)
ここが真でないと freerunner なソレはコンパイルされないはず。なんで strip するのかが意味不明。なんつーか面倒臭いので条件分岐をコメントアウトしてみた方が良いのかなぁ。
アタマに BOARD_ ってある位だから BoardConfig.mk で代入されてて良いんじゃね? って思ってるんですが駄目かなぁ、というか駄目でした。
- BOARD_GPS_LIBRARIES に libfreerunner_gps
- BOARD_HAVE_FREERUNNER_GPS に true
としてたんですが、libhardware_legacy さえも出力されない始末。
それにしても
何故に libhardware_legacy な共有ライブラリが system/lib 配下に吐き出されていないか、な根拠が全然分からん。分からんとゆーか、*.mk なソレを調べるリキ不足。