diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt
index 578c14b..8e4fe31 100644
--- a/demos/CMakeLists.txt
+++ b/demos/CMakeLists.txt
@@ -21,101 +21,91 @@
 # Support library
 add_library(safeside cache_sidechannel.cc instr.cc utils.cc)
 
+# Takes care of the common case for demo programs: an executable target
+# that compiles a file of the same name and links against the Safeside
+# support library.
+function(add_demo demo_name)
+  add_executable(${demo_name} ${demo_name}.cc)
+  target_link_libraries(${demo_name} safeside)
+endfunction(add_demo)
+
 # Spectre V1 PHT SA -- mistraining PHT in the same address space
-add_executable(spectre_v1_pht_sa spectre_v1_pht_sa.cc)
-target_link_libraries(spectre_v1_pht_sa safeside)
+add_demo(spectre_v1_pht_sa)
 
 # Spectre V1 BTB SA -- mistraining BTB in the same address space
-add_executable(spectre_v1_btb_sa spectre_v1_btb_sa.cc)
-target_link_libraries(spectre_v1_btb_sa safeside)
+add_demo(spectre_v1_btb_sa)
 
 # Spectre V4 -- speculative store bypass
-add_executable(spectre_v4 spectre_v4.cc)
-target_link_libraries(spectre_v4 safeside)
+add_demo(spectre_v4)
 
 # Ret2Spec -- rewriting the RSB using recursion in the same address space
-add_executable(ret2spec_sa ret2spec_sa.cc)
-target_link_libraries(ret2spec_sa safeside)
+add_demo(ret2spec_sa)
 
 if(${CMAKE_SYSTEM_NAME} MATCHES "^(Linux)$")
   # Spectre V1 BTB CA - mistraining BTB from another address space
-  add_executable(spectre_v1_btb_ca spectre_v1_btb_ca.cc)
-  target_link_libraries(spectre_v1_btb_ca safeside)
+  add_demo(spectre_v1_btb_ca)
 endif()
 
 if((${CMAKE_SYSTEM_NAME} MATCHES "^(Linux)|(Darwin)$") AND
    (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(i.86)|(x86_64)|(aarch64)$"))
   # Ret2Spec -- speculative execution using return stack buffers creating a
   # call-ret disparity by inline assembly
-  add_executable(ret2spec_callret_disparity ret2spec_callret_disparity.cc)
+  add_demo(ret2spec_callret_disparity)
   target_compile_options(ret2spec_callret_disparity PRIVATE -fomit-frame-pointer)
-  target_link_libraries(ret2spec_callret_disparity safeside)
 endif()
 
 if((${CMAKE_SYSTEM_NAME} MATCHES "^(Linux)$") AND
    (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(i.86)|(x86_64)|(ppc64le)$"))
   # Spectre V3 / Meltdown
-  add_executable(meltdown meltdown.cc)
-  target_link_libraries(meltdown safeside)
+  add_demo(meltdown)
 
   # L1 terminal fault -- Foreshadow OS -- Meltdown P
-  add_executable(l1tf l1tf.cc)
-  target_link_libraries(l1tf safeside)
+  add_demo(l1tf)
 endif()
 
 if((${CMAKE_SYSTEM_NAME} MATCHES "^(Linux)$") AND
    (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(aarch64)$"))
   # Speculation over ERET, HVC and SMC instructions
-  add_executable(eret_hvc_smc_wrapper eret_hvc_smc_wrapper.cc)
-  target_link_libraries(eret_hvc_smc_wrapper safeside)
+  add_demo(eret_hvc_smc_wrapper)
 
   # Speculation over syscall
-  add_executable(speculation_over_syscall speculation_over_syscall.cc)
-  target_link_libraries(speculation_over_syscall safeside)
+  add_demo(speculation_over_syscall)
 
   # Meltdown UD -- speculation over an undefined instruction
-  add_executable(meltdown_ud meltdown_ud.cc)
-  target_link_libraries(meltdown_ud safeside)
+  add_demo(meltdown_ud)
 endif()
 
 if((${CMAKE_SYSTEM_NAME} MATCHES "^(Linux)|(Darwin)$") AND
    (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(i.86)$"))
    # Meltdown BR - speculation over the ia32 bounds check instruction
-  add_executable(meltdown_br meltdown_br.cc)
-  target_link_libraries(meltdown_br safeside)
+  add_demo(meltdown_br)
 endif()
 
 if((${CMAKE_SYSTEM_NAME} MATCHES "^(Linux)$") AND
    (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(i.86)$"))
   # Meltdown SS -- speculative reading from non present segments and outside of
   # segment limits
-  add_executable(meltdown_ss meltdown_ss.cc)
-  target_link_libraries(meltdown_ss safeside)
+  add_demo(meltdown_ss)
 endif()
 
 if((${CMAKE_SYSTEM_NAME} MATCHES "^(Linux)|(Darwin)$") AND
    (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(i.86)$"))
   # Meltdown OF -- speculative fetching from an overflowing address after an
   # INTO check
-  add_executable(meltdown_of meltdown_of.cc)
-  target_link_libraries(meltdown_of safeside)
+  add_demo(meltdown_of)
 endif()
 
 if((${CMAKE_SYSTEM_NAME} MATCHES "^(Linux)$") AND
    (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(i.86)|(x86_64)$"))
   # Speculation over hardware breakpoint trap (read watcher)
-  add_executable(speculation_over_read_hw_breakpoint speculation_over_read_hw_breakpoint.cc)
-  target_link_libraries(speculation_over_read_hw_breakpoint safeside)
+  add_demo(speculation_over_read_hw_breakpoint)
 
   # Speculation over hardware breakpoint fault (execution watcher)
-  add_executable(speculation_over_exec_hw_breakpoint speculation_over_exec_hw_breakpoint.cc)
-  target_link_libraries(speculation_over_exec_hw_breakpoint safeside)
+  add_demo(speculation_over_exec_hw_breakpoint)
 
   # Meltdown AC -- speculative fetching of unaligned data
-  add_executable(meltdown_ac meltdown_ac.cc)
-  target_link_libraries(meltdown_ac safeside)
+  add_demo(meltdown_ac)
 
   # Meltdown DE -- speculative computation with division by zero remainder
-  add_executable(meltdown_de meltdown_de.cc)
-  target_link_libraries(meltdown_de safeside)
+  add_demo(meltdown_de)
 endif()
