# Copyright 2007 The Android Open Source Project
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
# List of test cases. Note that closures are not supported on ARM, so
# none of "closure*" or "cls*" will work there.
FFI_TEST_BASE := $(LOCAL_PATH)
FFI_TEST_FILES := \
closure_fn0.c \
closure_fn1.c \
closure_fn2.c \
closure_fn3.c \
closure_fn4.c \
closure_fn5.c \
closure_fn6.c \
cls_12byte.c \
cls_16byte.c \
cls_18byte.c \
cls_19byte.c \
cls_1_1byte.c \
cls_20byte.c \
cls_20byte1.c \
cls_24byte.c \
cls_2byte.c \
cls_3_1byte.c \
cls_3byte1.c \
cls_3byte2.c \
cls_4_1byte.c \
cls_4byte.c \
cls_5_1_byte.c \
cls_5byte.c \
cls_64byte.c \
cls_6_1_byte.c \
cls_6byte.c \
cls_7_1_byte.c \
cls_7byte.c \
cls_8byte.c \
cls_9byte1.c \
cls_9byte2.c \
cls_align_double.c \
cls_align_float.c \
cls_align_longdouble.c \
cls_align_pointer.c \
cls_align_sint16.c \
cls_align_sint32.c \
cls_align_sint64.c \
cls_align_uint16.c \
cls_align_uint32.c \
cls_align_uint64.c \
cls_double.c \
cls_float.c \
cls_multi_schar.c \
cls_multi_sshort.c \
cls_multi_sshortchar.c \
cls_multi_uchar.c \
cls_multi_ushort.c \
cls_multi_ushortchar.c \
cls_schar.c \
cls_sint.c \
cls_sshort.c \
cls_uchar.c \
cls_uint.c \
cls_ulonglong.c \
cls_ushort.c \
float.c \
float1.c \
float2.c \
float3.c \
float4.c \
many.c \
negint.c \
nested_struct.c \
nested_struct1.c \
nested_struct10.c \
nested_struct2.c \
nested_struct3.c \
nested_struct4.c \
nested_struct5.c \
nested_struct6.c \
nested_struct7.c \
nested_struct8.c \
nested_struct9.c \
problem1.c \
promotion.c \
pyobjc-tc.c \
return_dbl.c \
return_dbl1.c \
return_dbl2.c \
return_fl.c \
return_fl1.c \
return_fl2.c \
return_fl3.c \
return_ll.c \
return_ll1.c \
return_sc.c \
return_uc.c \
return_ul.c \
strlen.c \
struct1.c \
struct2.c \
struct3.c \
struct4.c \
struct5.c \
struct6.c \
struct7.c \
struct8.c \
struct9.c
# many_win32.c \
# strlen_win32.c \
#
# define this to make it stop on the first error
#FFI_EXIT := exit 1
FFI_EXIT := true
#
# Build and run each test individually. This doesn't work for device builds.
# The alternative is to build and install all of the little tests on the
# device, but that seems silly.
#
ffitests:
@echo "Testing with LD_LIBRARY_PATH=$(TARGET_OUT_SHARED_LIBRARIES) /tmp/android-ffi-test"
@(for file in $(FFI_TEST_FILES); do \
echo -n $$file ;\
$(CC) -g -Iexternal/libffi/$(TARGET_OS)-$(TARGET_ARCH) \
-o /tmp/android-ffi-test \
$(FFI_TEST_BASE)/libffi.call/$$file \
-L$(TARGET_OUT_SHARED_LIBRARIES) -lffi ;\
LD_LIBRARY_PATH=$(TARGET_OUT_SHARED_LIBRARIES) /tmp/android-ffi-test > /tmp/android-ffi-out ;\
if [ "$$?" -eq 0 ]; then \
echo " OK" ;\
else \
echo " FAIL" ;\
cat /tmp/android-ffi-out ;\
$(FFI_EXIT) ;\
fi ;\
done ;\
)
rm -f /tmp/android-ffi-test
#
# Build and install one test, so we have something to try on the device.
#
LOCAL_MODULE := ffitest_struct5
LOCAL_SRC_FILES := libffi.call/struct5.c
LOCAL_C_INCLUDES := external/libffi/$(TARGET_OS)-$(TARGET_ARCH)
LOCAL_SHARED_LIBRARIES := libffi
LOCAL_MODULE_TAGS := tests
include $(BUILD_EXECUTABLE)