r15b - instalar android ndk
Defina un sÃmbolo para un archivo fuente de ensamblaje(.s) en Android.mk? (2)
Los archivos de ensamblaje deben finalizar con mayúscula S ( .S
o .sx
) para ser .sx
por gcc
. Consulte el documento GCC, 3.2 Opciones que controlan el tipo de salida sobre eso.
Creo que puedes hacer trampa con las fuentes Bionic
, por ejemplo desde libc / arch-arm / bionic / memcpy.S .
¿Existe una manera simple de definir un símbolo para el ensamblador de la herramienta de Android NDK desde el archivo Android.mk
?
Mi objetivo es poder construir una biblioteca nativa compuesta de varios archivos .C y .s (ensamblador) compilados y ajustados para EABIS ARMV6 o ARMV7A, con toda la compilación condicional requerida impulsada simplemente modificando el valor de APP_ABI en la Aplicación archivo .mk
Primero, utilicé con éxito las directivas ifeq()
disponibles en Android.mk
para consultar el valor del valor APP_ABI y luego ejecutar condicionalmente diferentes partes del script de compilación.
Luego traté de usar esta funcionalidad para inyectar condicionalmente un símbolo (vía -D), como este:
# 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
Los archivos de código fuente C encuentran el símbolo TARGET_ARMEABI correctamente definido, sin embargo, los archivos del ensamblador no lo hacen. (Lo necesito para definir los atributos EABI correctos según la arquitectura). Este es un ejemplo de cómo intento definir condicionalmente los atributos EABI en los archivos de lenguaje ensamblador:
.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
Cualquier puntero o sugerencia es muy apreciada.
Para hacer que TARGET_ARMEABI defina su visibilidad en el archivo de ensamblaje, compile con la opción '' -x assembler-with-cpp '' y use la directiva estándar # predefensor #ifdef en el archivo de ensamblaje.