From 0c87e2e7025140ca6105b7fec2639c78c3cd8109 Mon Sep 17 00:00:00 2001
From: Joel Challis <git@zvecr.com>
Date: Thu, 28 Oct 2021 21:02:22 +0100
Subject: [PATCH] Move LTO logic from common.mk (#14973)

---
 keyboards/hub20/config.h                             |  6 ++----
 keyboards/latin17rgb/config.h                        |  6 ++----
 keyboards/latin6rgb/config.h                         |  6 ++----
 keyboards/smallkeyboard/config.h                     |  6 ++----
 .../thevankeyboards/minivan/keymaps/josjoha/config.h |  4 ++--
 tmk_core/common.mk                                   | 12 ------------
 tmk_core/rules.mk                                    |  9 +++++++++
 7 files changed, 19 insertions(+), 30 deletions(-)

diff --git a/keyboards/hub20/config.h b/keyboards/hub20/config.h
index f8e5d6be8d..fa78db3d97 100644
--- a/keyboards/hub20/config.h
+++ b/keyboards/hub20/config.h
@@ -108,7 +108,5 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define LOCKING_RESYNC_ENABLE
 
 /* disable these deprecated features by default */
-#ifndef LINK_TIME_OPTIMIZATION_ENABLE
-  #define NO_ACTION_MACRO
-  #define NO_ACTION_FUNCTION
-#endif
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/latin17rgb/config.h b/keyboards/latin17rgb/config.h
index 6a7ea8e781..1f52f9a651 100644
--- a/keyboards/latin17rgb/config.h
+++ b/keyboards/latin17rgb/config.h
@@ -49,10 +49,8 @@
 #define DEBOUNCE 3
 
 /* disable these deprecated features by default */
-//#ifndef LINK_TIME_OPTIMIZATION_ENABLE
-//#    define NO_ACTION_MACRO
-//#    define NO_ACTION_FUNCTION
-//#endif
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
 
 #ifdef RGB_MATRIX_ENABLE
 #    define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
diff --git a/keyboards/latin6rgb/config.h b/keyboards/latin6rgb/config.h
index fa9abbea6c..b356ded816 100644
--- a/keyboards/latin6rgb/config.h
+++ b/keyboards/latin6rgb/config.h
@@ -50,10 +50,8 @@
 #define DEBOUNCE 3
 
 /* disable these deprecated features by default */
-//#ifndef LINK_TIME_OPTIMIZATION_ENABLE
-//#    define NO_ACTION_MACRO
-//#    define NO_ACTION_FUNCTION
-//#endif
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
 
 #ifdef RGB_MATRIX_ENABLE
 #    define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
diff --git a/keyboards/smallkeyboard/config.h b/keyboards/smallkeyboard/config.h
index 24c81258c7..a343d767ff 100644
--- a/keyboards/smallkeyboard/config.h
+++ b/keyboards/smallkeyboard/config.h
@@ -50,10 +50,8 @@
 #define DEBOUNCE 3
 
 /* disable these deprecated features by default */
-//#ifndef LINK_TIME_OPTIMIZATION_ENABLE
-//#    define NO_ACTION_MACRO
-//#    define NO_ACTION_FUNCTION
-//#endif
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
 
 #ifdef RGB_MATRIX_ENABLE
 #    define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h
index 8098422784..9db4d596de 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h
+++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h
@@ -24,7 +24,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // place overrides here
 
 // Some defines meant to decrease the firmware size. The firmware is otherwise over the maximum (atmega32u4)
-//# ifndef LINK_TIME_OPTIMIZATION_ENABLE
+//# ifndef LTO_ENABLE
      //Disable old style macro handling: MACRO() & action_get_macro
 //#     define NO_ACTION_MACRO // This saves 320 bytes
       //disable calling of action_function() from the fn_actions array (deprecated)
@@ -40,7 +40,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 // Attempts to reduce firmware size:
-    //#define LINK_TIME_OPTIMIZATION_ENABLE // Did not decrease firmware size when tested on 26 Jan 2020 
+    //#define LTO_ENABLE // Did not decrease firmware size when tested on 26 Jan 2020 
     //#define NO_DEBUG //disable debugging (already defined)
     //#define NO_PRINT JJdisable printing/debugging using hid_listen (already defined)
     //#define NO_ACTION_LAYER //disable layers (obviously need layers)
diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index f0faa2dc3e..ce335f0d3c 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -100,18 +100,6 @@ ifeq ($(strip $(SHARED_EP_ENABLE)), yes)
     TMK_COMMON_DEFS += -DSHARED_EP_ENABLE
 endif
 
-ifeq ($(strip $(LTO_ENABLE)), yes)
-    ifeq ($(PLATFORM),CHIBIOS)
-        $(info Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.)
-        $(info If unsure, set LTO_ENABLE = no.)
-    endif
-    EXTRAFLAGS += -flto
-    TMK_COMMON_DEFS += -DLTO_ENABLE
-    TMK_COMMON_DEFS += -DLINK_TIME_OPTIMIZATON_ENABLE
-else ifdef LINK_TIME_OPTIMIZATION_ENABLE
-    $(error The LINK_TIME_OPTIMIZATION_ENABLE flag has been renamed to LTO_ENABLE.)
-endif
-
 # Search Path
 VPATH += $(TMK_PATH)/$(COMMON_DIR)
 VPATH += $(TMK_PATH)/$(PLATFORM_COMMON_DIR)
diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk
index 56a331e288..b17f85d375 100644
--- a/tmk_core/rules.mk
+++ b/tmk_core/rules.mk
@@ -82,6 +82,15 @@ endif
 #  -Wall...:     warning level
 #  -Wa,...:      tell GCC to pass this to the assembler.
 #    -adhlns...: create assembler listing
+ifeq ($(strip $(LTO_ENABLE)), yes)
+    ifeq ($(PLATFORM),CHIBIOS)
+        $(info Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.)
+        $(info If unsure, set LTO_ENABLE = no.)
+    endif
+    CDEFS += -flto
+    CDEFS += -DLTO_ENABLE
+endif
+
 DEBUG_ENABLE ?= yes
 ifeq ($(strip $(SKIP_DEBUG_INFO)),yes)
   DEBUG_ENABLE=no