Есть ли простой способ определить символ для ассемблера toolchain для Android NDK из файла Android.mk
?Определить символ для исходного файла сборки (.s) в Android.mk?
Моя цель - создать встроенную библиотеку, состоящую из нескольких файлов .C и .s (ассемблера), скомпилированных и настроенных для ARMV6 или ARMV7A EABIS со всей необходимой условной компиляцией, управляемой простым изменением APP_ABI в файле Application.mk.
Сначала я успешно использовал директивы ifeq()
, доступные в Android.mk
, чтобы запросить значение значения APP_ABI, а затем условно выполнить различные части скрипта сборки.
Затем я попытался использовать эту функцию, чтобы условно впрыснуть символ (через -D), например:
# Compilation Flags
ifeq ($(TARGET_ARCH_ABI),armeabi)
LOCAL_CFLAGS += -DTARGET_ARMEABI -marm -mtune='arm1136jf-s' -ffast-math -O3 -march=armv6 -fvisibility=hidden
else
#armeabi-v7a
LOCAL_CFLAGS += -marm -ffast-math -O3 -march=armv7-a -fvisibility=hidden
endif
Исходные файлы C код найти символ TARGET_ARMEABI правильно определен, однако ассемблер файлов нет. (Я требую этого, чтобы определить надлежащие атрибуты EABI в соответствии с архитектурой). Это пример того, как я пытаюсь условно определить EABI атрибуты в ассемблере файлов:
.ifdef TARGET_ARMEABI
.arch armv6
.fpu softvfp
.eabi_attribute 23, 1
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 2
.eabi_attribute 18, 4
.else
.arch armv7-a
.eabi_attribute 27, 3
.fpu vfp
.eabi_attribute 23, 1
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 2
.eabi_attribute 18, 4
.endif
Любые указатели или предложения очень ценятся.
Выполняется ли 'CFLAGS' для ассемблера? Может быть, есть соответствующие 'ASMFLAGS'? Можете ли вы показать полные командные строки, отправляемые соответственно вашему компилятору и ассемблеру? –