~ruther/qmk_firmware

147865cf57feaf9dfb59aeeffa8b1d541c064d93 — Joel Challis 1 year, 6 months ago 4e577cb
Migrate some common features to generic (#22403)

M builddefs/common_features.mk => builddefs/common_features.mk +12 -60
@@ 75,10 75,7 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes)
endif

ifeq ($(strip $(SEQUENCER_ENABLE)), yes)
    OPT_DEFS += -DSEQUENCER_ENABLE
    MUSIC_ENABLE = yes
    SRC += $(QUANTUM_DIR)/sequencer/sequencer.c
    SRC += $(QUANTUM_DIR)/process_keycode/process_sequencer.c
endif

ifeq ($(strip $(MIDI_ENABLE)), yes)


@@ 94,11 91,6 @@ ifeq ($(strip $(MIDI_ENABLE)), yes)
    SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
endif

MUSIC_ENABLE ?= no
ifeq ($(MUSIC_ENABLE), yes)
    SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
endif

VALID_STENO_PROTOCOL_TYPES := geminipr txbolt all
STENO_PROTOCOL ?= all
ifeq ($(strip $(STENO_ENABLE)), yes)


@@ 124,14 116,8 @@ ifeq ($(strip $(STENO_ENABLE)), yes)
    endif
endif

ifeq ($(strip $(VIRTSER_ENABLE)), yes)
    OPT_DEFS += -DVIRTSER_ENABLE
endif

ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
    OPT_DEFS += -DMOUSEKEY_ENABLE
    MOUSE_ENABLE := yes
    SRC += $(QUANTUM_DIR)/mousekey.c
endif

VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 pmw3320 pmw3360 pmw3389 pimoroni_trackball custom


@@ 360,10 346,7 @@ ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
    endif
    OPT_DEFS += -DLED_MATRIX_ENABLE
    OPT_DEFS += -DLED_MATRIX_$(strip $(shell echo $(LED_MATRIX_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
    # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
    OPT_DEFS += -DLIB8_ATTINY
endif

    COMMON_VPATH += $(QUANTUM_DIR)/led_matrix
    COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations
    COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations/runners


@@ 371,7 354,7 @@ endif
    SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
    SRC += $(QUANTUM_DIR)/led_matrix/led_matrix.c
    SRC += $(QUANTUM_DIR)/led_matrix/led_matrix_drivers.c
    SRC += $(LIB_PATH)/lib8tion/lib8tion.c
    LIB8TION_ENABLE := yes
    CIE1931_CURVE := yes

    ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3218)


@@ 463,10 446,7 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
    endif
    OPT_DEFS += -DRGB_MATRIX_ENABLE
    OPT_DEFS += -DRGB_MATRIX_$(strip $(shell echo $(RGB_MATRIX_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
    # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
    OPT_DEFS += -DLIB8_ATTINY
endif

    COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix
    COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations
    COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations/runners


@@ 474,7 454,7 @@ endif
    SRC += $(QUANTUM_DIR)/color.c
    SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix.c
    SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix_drivers.c
    SRC += $(LIB_PATH)/lib8tion/lib8tion.c
    LIB8TION_ENABLE := yes
    CIE1931_CURVE := yes
    RGB_KEYCODES_ENABLE := yes



@@ 632,8 612,6 @@ ifeq ($(strip $(VIA_ENABLE)), yes)
    RAW_ENABLE := yes
    BOOTMAGIC_ENABLE := yes
    TRI_LAYER_ENABLE := yes
    SRC += $(QUANTUM_DIR)/via.c
    OPT_DEFS += -DVIA_ENABLE
endif

VALID_MAGIC_TYPES := yes


@@ 718,17 696,20 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
    COMMON_VPATH += $(QUANTUM_PATH)/split_common
endif

ifeq ($(strip $(CRC_ENABLE)), yes)
    OPT_DEFS += -DCRC_ENABLE
    SRC += crc.c
endif

ifeq ($(strip $(FNV_ENABLE)), yes)
    OPT_DEFS += -DFNV_ENABLE
    VPATH += $(LIB_PATH)/fnv
    SRC += qmk_fnv_type_validation.c hash_32a.c hash_64a.c
endif

ifeq ($(strip $(LIB8TION_ENABLE)), yes)
    ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
        # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
        OPT_DEFS += -DLIB8_ATTINY
    endif
    SRC += $(LIB_PATH)/lib8tion/lib8tion.c
endif

VALID_HAPTIC_DRIVER_TYPES := drv2605l solenoid
ifeq ($(strip $(HAPTIC_ENABLE)),yes)
    ifeq ($(filter $(HAPTIC_DRIVER),$(VALID_HAPTIC_DRIVER_TYPES)),)


@@ 819,27 800,6 @@ ifeq ($(strip $(UNICODE_COMMON)), yes)
           $(QUANTUM_DIR)/unicode/utf8.c
endif

MAGIC_ENABLE ?= yes
ifeq ($(strip $(MAGIC_ENABLE)), yes)
    SRC += $(QUANTUM_DIR)/process_keycode/process_magic.c
    OPT_DEFS += -DMAGIC_KEYCODE_ENABLE
endif

SEND_STRING_ENABLE ?= yes
ifeq ($(strip $(SEND_STRING_ENABLE)), yes)
    OPT_DEFS += -DSEND_STRING_ENABLE
    COMMON_VPATH += $(QUANTUM_DIR)/send_string
    SRC += $(QUANTUM_DIR)/send_string/send_string.c
endif

ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
    SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
    OPT_DEFS += -DAUTO_SHIFT_ENABLE
    ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
        OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
    endif
endif

ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes)
    PS2_ENABLE := yes
    MOUSE_ENABLE := yes


@@ 946,14 906,6 @@ ifeq ($(strip $(ENCODER_ENABLE)), yes)
    endif
endif

ifeq ($(strip $(OS_DETECTION_ENABLE)), yes)
    SRC += $(QUANTUM_DIR)/os_detection.c
    OPT_DEFS += -DOS_DETECTION_ENABLE
    ifeq ($(strip $(OS_DETECTION_DEBUG_ENABLE)), yes)
        OPT_DEFS += -DOS_DETECTION_DEBUG_ENABLE
    endif
endif

VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor

WS2812_DRIVER ?= bitbang

M builddefs/generic_features.mk => builddefs/generic_features.mk +15 -3
@@ 13,33 13,45 @@
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

SPACE_CADET_ENABLE ?= yes
GRAVE_ESC_ENABLE ?= yes
MAGIC_ENABLE ?= yes
SEND_STRING_ENABLE ?= yes
SPACE_CADET_ENABLE ?= yes

GENERIC_FEATURES = \
    AUTO_SHIFT \
    AUTOCORRECT \
    CAPS_WORD \
    COMBO \
    COMMAND \
    CRC \
    DEFERRED_EXEC \
    DIGITIZER \
    DIP_SWITCH \
    DYNAMIC_KEYMAP \
    DYNAMIC_MACRO \
    DYNAMIC_TAPPING_TERM \
    GRAVE_ESC \
    HAPTIC \
    KEY_LOCK \
    KEY_OVERRIDE \
    LEADER \
    MAGIC \
    MOUSEKEY \
    MUSIC \
    OS_DETECTION \
    PROGRAMMABLE_BUTTON \
    REPEAT_KEY \
    SECURE \
    SEND_STRING \
    SEQUENCER \
    SPACE_CADET \
    SWAP_HANDS \
    TAP_DANCE \
    TRI_LAYER \
    VIA \
    VIRTSER \
    WPM \
    DYNAMIC_TAPPING_TERM \
    TRI_LAYER

define HANDLE_GENERIC_FEATURE
    # $$(info "Processing: $1_ENABLE $2.c")

M builddefs/show_options.mk => builddefs/show_options.mk +0 -1
@@ 37,7 37,6 @@ OTHER_OPTION_NAMES = \
  UNICODEMAP_ENABLE \
  UNICODE_COMMON \
  AUTO_SHIFT_ENABLE \
  AUTO_SHIFT_MODIFIERS \
  DYNAMIC_TAPPING_TERM_ENABLE \
  COMBO_ENABLE \
  KEY_LOCK_ENABLE \

M docs/feature_os_detection.md => docs/feature_os_detection.md +7 -2
@@ 36,10 36,15 @@ This time is quite short, probably hundreds of milliseconds, but this data may b

If OS is guessed incorrectly, you may want to collect data about USB setup packets to refine the detection logic.

To do so in your `rules.mk` add:
To do so in your `config.h` add:

```c
#define OS_DETECTION_DEBUG_ENABLE
```

And in your `rules.mk` add:

```make
OS_DETECTION_DEBUG_ENABLE = yes
CONSOLE_ENABLE = yes
```


M keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk => keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk +0 -1
@@ 31,7 31,6 @@ SWAP_HANDS_ENABLE = no  # Allow swapping hands of keyboard.
# POINTING_DEVICE_ENABLE = no

# AUTO_SHIFT_ENABLE    = no
# AUTO_SHIFT_MODIFIERS = no

# This don't need argument?
# CUSTOM_MATRIX    # Custom matrix file for the ErgoDox EZ

M keyboards/keebio/levinson/keymaps/drogglbecher/rules.mk => keyboards/keebio/levinson/keymaps/drogglbecher/rules.mk +0 -1
@@ 1,5 1,4 @@
AUTO_SHIFT_ENABLE = no
AUTO_SHIFT_MODIFIERS = no
RGBLIGHT_ENABLE = no
BACKLIGHT_ENABLE = no
UNICODE_ENABLE = yes

M keyboards/planck/keymaps/sascha/rules.mk => keyboards/planck/keymaps/sascha/rules.mk +0 -1
@@ 1,5 1,4 @@
AUTO_SHIFT_ENABLE = no
AUTO_SHIFT_MODIFIERS = no
UNICODE_ENABLE = yes
LTO_ENABLE = yes


M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk +0 -1
@@ 10,7 10,6 @@ OLED_ENABLE = yes

MOUSEKEY_ENABLE = yes
AUTO_SHIFT_ENABLE = yes
AUTO_SHIFT_MODIFIERS = no
COMBO_ENABLE = yes
LEADER_ENABLE = yes


M quantum/quantum.c => quantum/quantum.c +2 -2
@@ 40,7 40,7 @@
#    include "process_leader.h"
#endif

#ifdef MAGIC_KEYCODE_ENABLE
#ifdef MAGIC_ENABLE
#    include "process_magic.h"
#endif



@@ 366,7 366,7 @@ bool process_record_quantum(keyrecord_t *record) {
#ifdef SPACE_CADET_ENABLE
            process_space_cadet(keycode, record) &&
#endif
#ifdef MAGIC_KEYCODE_ENABLE
#ifdef MAGIC_ENABLE
            process_magic(keycode, record) &&
#endif
#ifdef GRAVE_ESC_ENABLE

Do not follow this link