Add API tests to cmake build
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2357609..24ccb6f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,7 @@
 cmake_minimum_required(VERSION 2.8.0)
 project(harfbuzz)
 
+enable_testing()
 
 ## Limit framework build to Xcode generator
 if (BUILD_FRAMEWORK)
@@ -683,3 +684,7 @@
     endif ()
   endif ()
 endif ()
+
+# Needs to come last so that variables defined above are passed to
+# subdirectories.
+add_subdirectory(test)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000..53d257b
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory(api)
diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt
new file mode 100644
index 0000000..4e786ba
--- /dev/null
+++ b/test/api/CMakeLists.txt
@@ -0,0 +1,39 @@
+macro (_add_tests)
+  foreach(test_name ${ARGV})
+    if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${test_name}.c)
+      add_executable (${test_name} ${test_name}.c)
+    elseif (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${test_name}.cc)
+      add_executable (${test_name} ${test_name}.cc)
+    else ()
+      message(FATAL_ERROR "No source file found for test ${test_name}")
+    endif ()
+    target_link_libraries (${test_name} harfbuzz)
+    add_test (${test_name} ${test_name})
+  endforeach ()
+  set_tests_properties (${ARGV} PROPERTIES ENVIRONMENT
+    "G_TEST_SRCDIR=${CMAKE_CURRENT_SOURCE_DIR};G_TEST_BUILDDIR=${CMAKE_CURRENT_BINARY_DIR}"
+    )
+endmacro ()
+
+if (HB_HAVE_GLIB)
+  _add_tests (
+    test-blob
+    test-buffer
+    test-common
+    test-font
+    test-object
+    test-set
+    test-shape
+    test-unicode
+    test-version
+    test-ot-tag
+    test-c
+    test-cplusplus
+    )
+
+  if (HB_HAVE_FREETYPE)
+    _add_tests (
+      test-ot-math
+      )
+  endif (HB_HAVE_FREETYPE)
+endif (HB_HAVE_GLIB)
diff --git a/test/api/hb-test.h b/test/api/hb-test.h
index 4d41218..040f0c2 100644
--- a/test/api/hb-test.h
+++ b/test/api/hb-test.h
@@ -27,7 +27,9 @@
 #ifndef HB_TEST_H
 #define HB_TEST_H
 
+#ifdef HAVE_CONFIG_H
 #include <config.h>
+#endif
 
 #include <hb-glib.h>
 
diff --git a/test/api/test-c.c b/test/api/test-c.c
index 6e8602f..4b43b83 100644
--- a/test/api/test-c.c
+++ b/test/api/test-c.c
@@ -27,7 +27,9 @@
 /* This file tests that all headers can be included from .c files */
 
 
+#ifdef HAVE_CONFIG_H
 #include <config.h>
+#endif
 
 #include <hb.h>