if (HB_HAVE_GLIB)
  file (READ "${CMAKE_CURRENT_SOURCE_DIR}/Makefile.am" MAKEFILEAM)
  extract_make_variable (TEST_PROGS ${MAKEFILEAM})

  list (APPEND TEST_PROGS
    test-ot-color
    test-ot-name
    test-ot-tag
    test-c
    test-cplusplus
  )

  if (HB_HAVE_FREETYPE)
    list (APPEND TEST_PROGS test-ot-math)
  endif ()

  foreach (test_name IN ITEMS ${TEST_PROGS})
    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 harfbuzz-subset)
    if (WIN32)
      set_property (TARGET ${test_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
      add_test (NAME ${test_name} COMMAND ${test_name})
    else (WIN32)
      add_test (${test_name} ${test_name})
    endif (WIN32)
  endforeach ()
  set_tests_properties (${TEST_PROGS} PROPERTIES ENVIRONMENT
    "G_TEST_SRCDIR=${CMAKE_CURRENT_SOURCE_DIR};G_TEST_BUILDDIR=${CMAKE_CURRENT_BINARY_DIR}"
  )
endif ()
