Подтвердить что ты не робот

Android NDK: Как получить архитектуру компилятора в Android.mk динамически

Я пытаюсь настроить Android.mk для перекрестного компиляции собственного кода для поддержки различных чипсетов, а именно armeabi, mips и x86. Я знаю, что я могу настроить Application.mk следующим образом, чтобы скомпилировать исходный код для другого набора микросхем:

APP_ABI := all

Это приведет к созданию Android-NDK build script для компиляции исходного кода для всех наборов микросхем. Тем не менее, я хочу динамически сообщать Android.mk о поиске разных статических зависимостей библиотек, скомпилированных с использованием разных наборов микросхем.

# Get the architecture info
ARCH := ????

include $(CLEAR_VARS)
LOCAL_MODULE:= mylib
LOCAL_SRC_FILES:= build/lib/libxxx_$(ARCH).a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)

Можно ли это сделать? Если да, можете ли кто-нибудь советовать, как это сделать?

Обновление. Я попробовал что-то вроде этого в Application.mk:

 APP_ABI := armeabi armeabi-v7a mips x64

с Android.mk:

# Get the architecture info
ARCH := $(APP_ABI)

include $(CLEAR_VARS)
LOCAL_MODULE:= mylib
LOCAL_SRC_FILES:= build/lib/libxxx_$(ARCH).a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)

но это ошибки со следующим:

 The LOCAL_SRC_FILES for a prebuilt static library should only contain one item

что имеет смысл. Я хочу передать APP_ABI: = all в Application.mk и уметь динамически ссылаться на него. Любые идеи?

4b9b3361

Ответ 1

Существует переменная TARGET_ARCH, которая содержит значение текущего ABI, который строится. Вы можете использовать его следующим образом:

ifeq ($(TARGET_ARCH),x86)
    LOCAL_CFLAGS   := $(COMMON_FLAGS_LIST)
else
    LOCAL_CFLAGS   := -mfpu=vfp -mfloat-abi=softfp $(COMMON_FLAGS_LIST)
endif

Если вы укажете APP_ABI := armeabi-v7a armeabi mips x86 или APP_ABI := all в своем Application.mk, вы получите каждое отдельное значение ABI.

Ответ 2

Проверьте TARGET_ARCH_ABI:

ifeq($(TARGET_ARCH_ABI), armeabi-v7a)
  # v7a-specific stuff
endif