Поскольку у меня очень интенсивное приложение, я хотел бы создать вариант с поддержкой 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)
Я попытался собрать 2 библиотеки для ARMv7a, но, к сожалению, с помощью «расширенного» инструмента 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
.
Есть ли способ решить это в элегантном вопросе?
obj/local/armeabi-v7a/objs/mymod/myalg.o
и obj/local/armeabi-v7a/objs/mymod-neon/myalg.o. Maybe you override
NDK_APP_OUT`? - person Alex Cohn   schedule 07.04.2013$(MY_SRC_FILES)
дважды перечисляет myalg.c? - person Alex Cohn   schedule 07.04.2013$(MY_SRC_FILES)
. - person abergmeier   schedule 08.04.2013$(LOCAL_MODULE)
каталогаobj/local
. - person Alex Cohn   schedule 08.04.2013