diff --git a/tests/build/check-armeabi-v7a-prebuilts/jni/Android.mk b/tests/build/check-armeabi-v7a-prebuilts/jni/Android.mk
new file mode 100644
index 0000000..2f42ab6
--- /dev/null
+++ b/tests/build/check-armeabi-v7a-prebuilts/jni/Android.mk
@@ -0,0 +1 @@
+LOCAL_PATH:= $(call my-dir)
diff --git a/tests/build/check-armeabi-v7a-prebuilts/jni/Application.mk b/tests/build/check-armeabi-v7a-prebuilts/jni/Application.mk
new file mode 100644
index 0000000..af9052a
--- /dev/null
+++ b/tests/build/check-armeabi-v7a-prebuilts/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := armeabi-v7a
\ No newline at end of file
diff --git a/tests/build/mips-fp4/build.sh b/tests/build/mips-fp4/build.sh
index b07e8ae..4bad419 100755
--- a/tests/build/mips-fp4/build.sh
+++ b/tests/build/mips-fp4/build.sh
@@ -1,32 +1,5 @@
 cd $(dirname "$0")
 
-# check if this test should be skipped
-get_build_var ()
-{
-    if [ -z "$GNUMAKE" ] ; then
-        GNUMAKE=make
-    fi
-    $GNUMAKE --no-print-dir -f $NDK/build/core/build-local.mk DUMP_$1 | tail -1
-}
-
-if [ -f "BROKEN_BUILD" ] ; then
-    TESTPATH=`pwd`
-    if [ ! -s "BROKEN_BUILD" ] ; then
-        # skip all
-        echo "Skipping `basename $TESTPATH`: (build)"
-        exit 0
-    else
-        # only skip listed in file
-        TARGET_TOOLCHAIN=`get_build_var TARGET_TOOLCHAIN`
-        TARGET_TOOLCHAIN_VERSION=`echo $TARGET_TOOLCHAIN | tr '-' '\n' | tail -1`
-        grep -q -w -e "$TARGET_TOOLCHAIN_VERSION" "BROKEN_BUILD"
-        if [ $? = 0 ] ; then
-            echo "Skipping `basename $TESTPATH`: (no build for $TARGET_TOOLCHAIN_VERSION)"
-            exit 0
-        fi
-    fi
-fi
-
 $NDK/ndk-build -B "$@"
 
 # Find instruction in file
diff --git a/tests/build/warn-noabi/jni/Android.mk b/tests/build/warn-noabi/jni/Android.mk
new file mode 100644
index 0000000..2f42ab6
--- /dev/null
+++ b/tests/build/warn-noabi/jni/Android.mk
@@ -0,0 +1 @@
+LOCAL_PATH:= $(call my-dir)
diff --git a/tests/build/warn-noabi/jni/Application.mk b/tests/build/warn-noabi/jni/Application.mk
new file mode 100644
index 0000000..d0a1e39
--- /dev/null
+++ b/tests/build/warn-noabi/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := armeabi armeabi-v7a
\ No newline at end of file
diff --git a/tests/run-tests.sh b/tests/run-tests.sh
index 0ed414f..690e911 100755
--- a/tests/run-tests.sh
+++ b/tests/run-tests.sh
@@ -459,6 +459,31 @@
     return 1
 }
 
+# check if $ABI is incompatible and shouldn't be built
+# $1: project directory
+is_incompatible_abi ()
+{
+    local PROJECT="$1"
+
+    if [ "$ABI" != "default" ] ; then
+        # check APP_ABI
+        local APP_ABIS=`get_build_var $PROJECT APP_ABI`
+        APP_ABIS=$APP_ABIS" "
+        if [ "$APP_ABIS" != "${APP_ABIS%%all*}" ] ; then
+        # replace the first "all" with all available ABIs
+          ALL_ABIS=`get_build_var $PROJECT NDK_ALL_ABIS`
+          APP_ABIS_FRONT="${APP_ABIS%%all*}"
+          APP_ABIS_BACK="${APP_ABIS#*all}"
+          APP_ABIS="${APP_ABIS_FRONT}${ALL_ABIS}${APP_ABIS_BACK}"
+        fi
+        if [ "$APP_ABIS" = "${APP_ABIS%$ABI *}" ] ; then
+            echo "Skipping `basename $PROJECT`: incompatible ABI, needs $APP_ABIS"
+            return 0
+        fi
+    fi
+    return 1
+}
+
 build_project ()
 {
     local NAME=`basename $1`
@@ -468,23 +493,12 @@
     if is_broken_build $1; then
         return 0;
     fi
-    rm -rf "$DIR" && cp -r "$1" "$DIR"
-    if [ "$ABI" != "default" -a "$CHECK_ABI" = "yes" ] ; then
-        # check APP_ABI
-        local APP_ABIS=`get_build_var $DIR APP_ABI`
-        APP_ABIS=$APP_ABIS" "
-        if [ "$APP_ABIS" != "${APP_ABIS%%all*}" ] ; then
-        # replace the first "all" with all available ABIs
-          ALL_ABIS=`get_build_var $DIR NDK_ALL_ABIS`
-          APP_ABIS_FRONT="${APP_ABIS%%all*}"
-          APP_ABIS_BACK="${APP_ABIS#*all}"
-          APP_ABIS="${APP_ABIS_FRONT}${ALL_ABIS}${APP_ABIS_BACK}"
-        fi
-        if [ "$APP_ABIS" = "${APP_ABIS%$ABI *}" ] ; then
-            echo "Skipping `basename $1`: incompatible ABI, needs $APP_ABIS"
+    if [ "$CHECK_ABI" = "yes" ] ; then
+        if is_incompatible_abi $1 ; then
             return 0
         fi
     fi
+    rm -rf "$DIR" && cp -r "$1" "$DIR"
     # build it
     (run cd "$DIR" && run_ndk_build $NDK_BUILD_FLAGS)
     RET=$?
@@ -567,6 +581,15 @@
         echo "Building NDK build test: `basename $1`"
         if [ -f $1/build.sh ]; then
             local DIR="$BUILD_DIR/$NAME"
+            if [ -f "$1/jni/Android.mk" -a -f "$1/jni/Application.mk" ] ; then
+                # exclude jni/Android.mk with import-module because it needs NDK_MODULE_PATH
+                grep -q  "call import-module" "$1/jni/Android.mk"
+                if [ $? != 0 ] ; then
+                    if (is_broken_build $1 || is_incompatible_abi $1) then
+                        return 0;
+                    fi
+                fi
+            fi
             rm -rf "$DIR" && cp -r "$1" "$DIR"
             export NDK
             (cd "$DIR" && run ./build.sh $NDK_BUILD_FLAGS)
