diff --git a/epicardium/meson.build b/epicardium/meson.build
index a6ba27ce781fce91b639529351cc8b07620dbeb5..ce584e64f6b54b6ae4f32ec19e81e52b98f42be4 100644
--- a/epicardium/meson.build
+++ b/epicardium/meson.build
@@ -74,7 +74,7 @@ elf = executable(
   module_sources,
   dependencies: [libcard10, max32665_startup_core0, maxusb, libff13],
   link_with: [api_dispatcher_lib, freertos],
-  link_whole: [max32665_startup_core0_lib, board_card10_lib],
+  link_whole: [max32665_startup_core0_lib, board_card10_lib, newlib_heap_lib],
   include_directories: [freertos_includes],
   link_args: [
     '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map',
diff --git a/hw-tests/dual-core/meson.build b/hw-tests/dual-core/meson.build
index 783b8775571136c97ebff152e4276600ae216a7f..c979cf080c63c1798fe850cadc2ee062ab7fe2b0 100644
--- a/hw-tests/dual-core/meson.build
+++ b/hw-tests/dual-core/meson.build
@@ -3,7 +3,7 @@ executable(
   name + '.elf',
   'main.c',
   dependencies: [libcard10, max32665_startup_core0],
-  link_whole: [max32665_startup_core0_lib, board_card10_lib],
+  link_whole: [max32665_startup_core0_lib, board_card10_lib, newlib_heap_lib],
   link_args: [
     '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map',
   ],
@@ -14,7 +14,7 @@ executable(
   name + '.elf',
   'core1.c',
   dependencies: [periphdriver, board_card10, max32665_startup_core1],
-  link_whole: [max32665_startup_core1_lib, board_card10_lib],
+  link_whole: [max32665_startup_core1_lib, board_card10_lib, newlib_heap_lib],
   link_args: [
     '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map',
   ],
diff --git a/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build b/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build
index 4fef47d4ef088c6eb51c93e7634c03d1efd6601c..99b214fd933b4af59e510259f94cd1353c618357 100644
--- a/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build
+++ b/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build
@@ -1,3 +1,16 @@
+#############################################################
+# NewLib Heap
+#############################################################
+
+sources = files(
+  './Source/heap.c',
+)
+
+newlib_heap_lib = static_library(
+  'newlib_heap',
+  sources,
+)
+
 #############################################################
 # For applications using just core0 or not dual-binaries
 #############################################################
@@ -28,7 +41,6 @@ max32665_startup = declare_dependency(
 sources = files(
   './Source/GCC/startup_max32665.S',
   './Source/system_max32665.c',
-  './Source/heap.c',
 )
 
 max32665_startup_core0_lib = static_library(
@@ -51,7 +63,6 @@ max32665_startup_core0 = declare_dependency(
 sources = files(
   './Source/GCC/startup_max32665.S',
   './Source/system_max32665_core1.c',
-  './Source/heap.c',
 )
 
 max32665_startup_core1_lib = static_library(