diff --git a/meson.build b/meson.build
index fc2d29f9e86551ebb332876d50950e0935b87bce..c425afea09016c6334231bd3e426d605f05fd329 100644
--- a/meson.build
+++ b/meson.build
@@ -76,25 +76,8 @@ ftcommon_lib = static_library('ftcommon',
   link_with: [common_lib, graph_lib],
 )
 
-executable('fttimer',
-  'src/fttimer.c',
-  dependencies: libfreetype2_dep,
-  install: false)
-
-executable('ftchkwd',
-  'src/ftchkwd.c',
-  dependencies: libfreetype2_dep,
-  install: false)
 
-executable('ftmemchk',
-  'src/ftmemchk.c',
-  dependencies: libfreetype2_dep,
-  install: false)
-
-executable('ftpatchk',
-  'src/ftpatchk.c',
-  dependencies: libfreetype2_dep,
-  install: false)
+# programs
 
 executable('ftbench',
   'src/ftbench.c',
@@ -102,17 +85,10 @@ executable('ftbench',
   link_with: common_lib,
   install: true)
 
-executable('ftdump',
-  'src/ftdump.c',
-  dependencies: libfreetype2_dep,
-  link_with: [common_lib, output_lib],
-  install: true)
-
-executable('ftlint',
-  'src/ftlint.c',
+executable('ftchkwd',
+  'src/ftchkwd.c',
   dependencies: libfreetype2_dep,
-  link_with: common_lib,
-  install: true)
+  install: false)
 
 executable('ftdiff',
   'src/ftdiff.c',
@@ -121,6 +97,12 @@ executable('ftdiff',
   link_with: ftcommon_lib,
   install: true)
 
+executable('ftdump',
+  'src/ftdump.c',
+  dependencies: libfreetype2_dep,
+  link_with: [common_lib, output_lib],
+  install: true)
+
 executable('ftgamma',
   'src/ftgamma.c',
   dependencies: [libfreetype2_dep, math_dep],
@@ -135,6 +117,17 @@ executable('ftgrid',
   link_with: [ftcommon_lib, output_lib],
   install: true)
 
+executable('ftlint',
+  'src/ftlint.c',
+  dependencies: libfreetype2_dep,
+  link_with: common_lib,
+  install: true)
+
+executable('ftmemchk',
+  'src/ftmemchk.c',
+  dependencies: libfreetype2_dep,
+  install: false)
+
 executable('ftmulti',
   'src/ftmulti.c',
   dependencies: libfreetype2_dep,
@@ -142,6 +135,11 @@ executable('ftmulti',
   link_with: ftcommon_lib,
   install: true)
 
+executable('ftpatchk',
+  'src/ftpatchk.c',
+  dependencies: libfreetype2_dep,
+  install: false)
+
 executable('ftsdf',
   'src/ftsdf.c',
   dependencies: libfreetype2_dep,
@@ -156,12 +154,10 @@ executable('ftstring',
   link_with: ftcommon_lib,
   install: true)
 
-executable('ftview',
-  'src/ftview.c',
+executable('fttimer',
+  'src/fttimer.c',
   dependencies: libfreetype2_dep,
-  include_directories: graph_include_dir,
-  link_with: ftcommon_lib,
-  install: true)
+  install: false)
 
 executable('ftvalid',
   'src/ftvalid.c',
@@ -169,6 +165,14 @@ executable('ftvalid',
   link_with: common_lib,
   install: true)
 
+executable('ftview',
+  'src/ftview.c',
+  dependencies: libfreetype2_dep,
+  include_directories: graph_include_dir,
+  link_with: ftcommon_lib,
+  install: true)
+
+
 install_man([
   'man/ftbench.1',
   'man/ftdiff.1',
diff --git a/meson.build b/meson.build
index c425afea09016c6334231bd3e426d605f05fd329..36d0309ed75c5e3a3cfa79276800832e2e9eae7c 100644
--- a/meson.build
+++ b/meson.build
@@ -172,6 +172,19 @@ executable('ftview',
   link_with: ftcommon_lib,
   install: true)
 
+# This program only works if FreeType has been compiled with enabled option
+# `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` (which is the default).
+#
+# We need a path into FreeType's `src/truetype` directory.  This is
+# something normal applications should never need.
+executable('ttdebug',
+  'src/ttdebug.c',
+  dependencies: libfreetype2_dep,
+  c_args: '-DFT2_BUILD_LIBRARY=1',
+  include_directories: 'subprojects/freetype2/src/truetype',
+  link_with: common_lib,
+  install: true)
+
 
 install_man([
   'man/ftbench.1',
