Skip to content

Commit

Permalink
Fix compile issues related to NO_ACTION_MACRO/FUNCTION and LTO_ENABLE (
Browse files Browse the repository at this point in the history
…qmk#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 (qmk#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
  • Loading branch information
vomindoraan authored and fdidron committed Jun 12, 2020
1 parent 4f5c76b commit 7ec0871
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 3 deletions.
4 changes: 4 additions & 0 deletions quantum/template/avr/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION

/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION

/*
* MIDI options
*/
Expand Down
4 changes: 3 additions & 1 deletion quantum/template/ps2avrgb/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS

#define NO_UART 1
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION

/* key combination for magic key command */
/* defined by default; to change, uncomment and set to the combination you want */
Expand Down
2 changes: 0 additions & 2 deletions tmk_core/common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions tmk_core/common/action.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 7ec0871

Please sign in to comment.