diff options
author | Konstantin Đorđević <vomindoraan@gmail.com> | 2020-04-09 01:18:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-09 00:18:30 +0100 |
commit | be2f5816b6cf6513591f825df1d0438729b83388 (patch) | |
tree | 86d00fbf766521955ab50706b8d109d800e4b052 /tmk_core | |
parent | ff213d5fe1a74f345dd2263c6fb4bc9280f74e0f (diff) | |
download | qmk_firmware-be2f5816b6cf6513591f825df1d0438729b83388.tar.gz qmk_firmware-be2f5816b6cf6513591f825df1d0438729b83388.zip |
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.mk | 2 | ||||
-rw-r--r-- | tmk_core/common/action.h | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 4d4272d26..3d0b83a01 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk | |||
@@ -162,8 +162,6 @@ ifeq ($(strip $(LINK_TIME_OPTIMIZATION_ENABLE)), yes) | |||
162 | endif | 162 | endif |
163 | EXTRAFLAGS += -flto | 163 | EXTRAFLAGS += -flto |
164 | TMK_COMMON_DEFS += -DLINK_TIME_OPTIMIZATION_ENABLE | 164 | TMK_COMMON_DEFS += -DLINK_TIME_OPTIMIZATION_ENABLE |
165 | TMK_COMMON_DEFS += -DNO_ACTION_MACRO | ||
166 | TMK_COMMON_DEFS += -DNO_ACTION_FUNCTION | ||
167 | endif | 165 | endif |
168 | 166 | ||
169 | # Search Path | 167 | # Search Path |
diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h index dd22023f9..c82c9c81b 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/>. | |||
28 | extern "C" { | 28 | extern "C" { |
29 | #endif | 29 | #endif |
30 | 30 | ||
31 | /* Disable macro and function features when LTO is enabled, since they break */ | ||
32 | #ifdef LINK_TIME_OPTIMIZATION_ENABLE | ||
33 | # ifndef NO_ACTION_MACRO | ||
34 | # define NO_ACTION_MACRO | ||
35 | # endif | ||
36 | # ifndef NO_ACTION_FUNCTION | ||
37 | # define NO_ACTION_FUNCTION | ||
38 | # endif | ||
39 | #endif | ||
40 | |||
31 | /* tapping count and state */ | 41 | /* tapping count and state */ |
32 | typedef struct { | 42 | typedef struct { |
33 | bool interrupted : 1; | 43 | bool interrupted : 1; |