私は非常に処理集約的なアプリを持っているので、 NEON / Advanced SIMDをサポートするバリアントを構築したいと考えています。また、アルゴリズムを含む複数のソース ファイルがあるため、ファイルごとに個別にネオンを有効にしたくありません。の重要な部分に続いてAndroid.mk
:
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
include $(CLEAR_VARS)
# Build Advanced SIMD variant
LOCAL_MODULE := mymod-neon
LOCAL_ARM_NEON := true
LOCAL_ARM_MODE := $(MY_ARM_MODE)
LOCAL_SRC_FILES := $(MY_SRC_FILES)
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_SHARED_LIBRARIES := $(MY_SHARED_LIBRARIES)
include $(BUILD_SHARED_LIBRARY)
endif
include $(CLEAR_VARS)
# Build regular variant
LOCAL_MODULE := mymod
LOCAL_ARM_MODE := $(MY_ARM_MODE)
LOCAL_SRC_FILES := $(MY_SRC_FILES)
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_SHARED_LIBRARIES := $(MY_SHARED_LIBRARIES)
include $(BUILD_SHARED_LIBRARY)
ARMv7a用に 2 つのライブラリをビルドしようとしましたが、残念ながら「高度な」Makefile ツールを使用しているため、2 つの異なるライブラリをコンパイルしているとは言えません。
.o
ターゲットをオーバーライドします。
/android-ndk/build/core/build-binary.mk:272: warning: overriding commands for target `obj/local/armeabi-v7a/objs/myalg.o'
悲しいことに、ネオン オブジェクトを のobjs-neon
代わりに強制的に組み込む方法を見つけられませんでしobj
た。
エレガントな問題でこれを解決できる方法はありますか?