summaryrefslogtreecommitdiff
path: root/tmk_core
diff options
context:
space:
mode:
authorKonstantin Đorđević <vomindoraan@gmail.com>2020-04-09 01:18:30 +0200
committerFlorian Didron <fdidron@users.noreply.github.com>2020-06-12 17:00:27 +0900
commit7ec087183b4d79d998fca72d6a5d6aefea32c0d6 (patch)
treec11226d901c00332ffeaec5183b4a1f2f4c2fd87 /tmk_core
parent4f5c76bfbefe0141858ec7eec15f790318c2e477 (diff)
Fix compile issues related to NO_ACTION_MACRO/FUNCTION and LTO_ENABLE (#8663)
* Define NO_ACTION_MACRO/FUNCTION in header instead of makefile when LTO is enabled Currently, boards and keymaps that define NO_ACTION_MACRO/FUNCTION unconditionally will not compile with LTO_ENABLE (#8604). This fixes the issue by moving the definitions from common.mk to action.h, which enables us to check for previous definitions of those macros (this cannot be done in a makefile). * Remove LTO checks in templates Since now NO_ACTION_MACRO/FUNCTION are defined as needed in action.h (which is included by quantum.h), checking for LTO in keyboard and user code is no longer required. * Update LTO_ENABLE docs
Diffstat (limited to 'tmk_core')
-rw-r--r--tmk_core/common.mk2
-rw-r--r--tmk_core/common/action.h10
2 files changed, 10 insertions, 2 deletions
diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index a998a8a02d..ae3f111f7b 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -167,8 +167,6 @@ ifeq ($(strip $(LINK_TIME_OPTIMIZATION_ENABLE)), yes)
endif
EXTRAFLAGS += -flto
TMK_COMMON_DEFS += -DLINK_TIME_OPTIMIZATION_ENABLE
- TMK_COMMON_DEFS += -DNO_ACTION_MACRO
- TMK_COMMON_DEFS += -DNO_ACTION_FUNCTION
endif
# Search Path
diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h
index dd22023f9b..c82c9c81be 100644
--- a/tmk_core/common/action.h
+++ b/tmk_core/common/action.h
@@ -28,6 +28,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
extern "C" {
#endif
+/* Disable macro and function features when LTO is enabled, since they break */
+#ifdef LINK_TIME_OPTIMIZATION_ENABLE
+# ifndef NO_ACTION_MACRO
+# define NO_ACTION_MACRO
+# endif
+# ifndef NO_ACTION_FUNCTION
+# define NO_ACTION_FUNCTION
+# endif
+#endif
+
/* tapping count and state */
typedef struct {
bool interrupted : 1;