THRIFT-3918 Run subset of make cross

This closes #1079
diff --git a/.travis.yml b/.travis.yml
index fc5f953..81a88c3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -42,15 +42,25 @@
     - BUILD_LIBS="CPP C_GLIB HASKELL JAVA PYTHON TESTING TUTORIALS"  # only meaningful for CMake builds
 
   matrix:
-    # TODO: Break up by protocol types to avoid 50min limit
-    - TEST_NAME="Cross Language Tests"
+    - TEST_NAME="Cross Language Tests (Binary and Header Protocols)"
       SCRIPT="cross-test.sh"
-      BUILD_ARG="--enable-tutorial=no"
+      BUILD_ARG="-'(binary|header)'"
       BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
 
-    - TEST_NAME="Cross Language Tests (Debian)"
+    - TEST_NAME="Cross Language Tests (Debian) (Binary and Header Protocols)"
       SCRIPT="cross-test.sh"
-      BUILD_ARG="--enable-tutorial=no"
+      BUILD_ARG="-'(binary|header)'"
+      BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
+      DISTRO=debian
+
+    - TEST_NAME="Cross Language Tests (Compact and JSON Protocols)"
+      SCRIPT="cross-test.sh"
+      BUILD_ARG="-'(compact|json)'"
+      BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
+
+    - TEST_NAME="Cross Language Tests (Debian) (Compact and JSON Protocols)"
+      SCRIPT="cross-test.sh"
+      BUILD_ARG="-'(compact|json)'"
       BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
       DISTRO=debian
 
diff --git a/Makefile.am b/Makefile.am
index 10fe49a..38dd8c9 100755
--- a/Makefile.am
+++ b/Makefile.am
@@ -56,15 +56,18 @@
 endif
 
 if WITH_PYTHON
-cross: precross
+crossfeature: precross
 	$(CROSS_PY) test/test.py --retry-count 3 --features .* --skip-known-failures --server $(CROSS_LANGS_COMMA_SEPARATED)
-	$(CROSS_PY) test/test.py --retry-count 3 --skip-known-failures --server $(CROSS_LANGS_COMMA_SEPARATED) --client $(CROSS_LANGS_COMMA_SEPARATED)
 else
 # feature test needs python build
-cross: precross
-	$(CROSS_PY) test/test.py -s --server $(CROSS_LANGS_COMMA_SEPARATED) --client $(CROSS_LANGS_COMMA_SEPARATED)
+crossfeature:
 endif
 
+cross-%: precross crossfeature
+	$(CROSS_PY) test/test.py --retry-count 3 --skip-known-failures --server $(CROSS_LANGS_COMMA_SEPARATED) --client $(CROSS_LANGS_COMMA_SEPARATED) --regex "$*"
+
+cross: cross-.*
+
 TIMES = 1 2 3
 fail: precross
 	$(CROSS_PY) test/test.py || true
diff --git a/build/docker/scripts/cross-test.sh b/build/docker/scripts/cross-test.sh
index 4da7813..43581a5 100755
--- a/build/docker/scripts/cross-test.sh
+++ b/build/docker/scripts/cross-test.sh
@@ -6,7 +6,7 @@
 make -j3 precross
 
 set +e
-make cross
+make cross$1
 
 RET=$?
 if [ $RET -ne 0 ]; then