# 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)