diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5d73a12dd4de454a8ff6dd457fec2c5f4323dc14..ad7425c2dae4a7659c8f9a8d4cb61bbdd1a14154 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,3 +5,16 @@ set(IDF_TARGET esp32s3)
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 
 project(flow3r)
+
+# Make `1.1` literals into single-point precision float instead of double
+# precision. Also warn any time something gets promoted to a double. We
+# generally don't want doubles, doubles on ESP32 bad.
+idf_component_get_property(st3m_lib st3m COMPONENT_LIB)
+idf_component_get_property(flow3r_bsp_lib flow3r_bsp COMPONENT_LIB)
+if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+    target_compile_options(${st3m_lib} PRIVATE -cl-single-precision-constant -Wdouble-promotion)
+    target_compile_options(${flow3r_bsp_lib} PRIVATE -cl-single-precision-constant -Wdouble-promotion)
+else()
+    target_compile_options(${st3m_lib} PRIVATE -fsingle-precision-constant -Wdouble-promotion)
+    target_compile_options(${flow3r_bsp_lib} PRIVATE -fsingle-precision-constant -Wdouble-promotion)
+endif()