tmk_keyboard/converter/ibmpc_usb/Makefile

159 lines
4.4 KiB
Makefile
Raw Normal View History

# Target file name (without extension).
TARGET ?= ibmpc_usb
# Directory common source filess exist
TMK_DIR ?= ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR ?= .
# project specific files
#SRC ?= protocol/ibmpc.c \
# ibmpc_usb.c
SRC ?= protocol/ibmpc.cpp \
ibmpc_usb.cpp
CONFIG_H ?= config.h
# MCU name
MCU ?= atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU ?= 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH ?= AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB ?= $(F_CPU)
# This improves response of keyboard when wakeup
OPT_DEFS += -DSUSPEND_MODE_STANDBY
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
2019-12-05 08:57:41 +09:00
# Bootloader size can be calculated from fuse bits
#BOOTLOADER_SIZE ?= 4096
#OPT_DEFS += -DBOOTLOADER_SIZE=$(BOOTLOADER_SIZE)
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1150)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+2200)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+400)
CONSOLE_ENABLE ?= yes # Console for debug(+4150)
COMMAND_ENABLE ?= yes # Commands for debug and configuration(+3600)
NKRO_ENABLE ?= yes # USB Nkey Rollover(+350)
2020-05-06 15:59:49 +09:00
KEYMAP_SECTION_ENABLE ?= yes
UNIMAP_ENABLE ?= yes
# IBMPC Options
IBMPC_SECONDARY ?= yes # enable secondary interface(+800)
IBMPC_MOUSE_ENABLE ?= yes # enable mouse support(+2000)
# Size optimization
# https://github.com/obdev/v-usb/blob/master/usbdrv/Readme.txt
# https://p5r.uk/blog/2008/avr-gcc-optimisations.html
# Confirmed 5.4.0, 7.3.0 and 8-12
GCC_MAJOR = $(shell avr-gcc -dumpversion | cut -d. -f1)
EXTRALDFLAGS = -Wl,--relax
# GCC8-12: disable LTO with function-sections
ifeq ($(GCC_MAJOR),$(filter $(GCC_MAJOR),8 9 10 11 12))
# disable feature to reduce size
COMMAND_ENABLE = no
EXTRACFLAGS += -fno-lto
EXTRACFLAGS += -ffunction-sections
EXTRACFLAGS += -fdata-sections
else
EXTRACFLAGS += -fno-function-sections
EXTRACFLAGS += -fno-data-sections
endif
EXTRACFLAGS += -fno-move-loop-invariants
EXTRACFLAGS += -fno-tree-scev-cprop
EXTRACFLAGS += -fno-inline-small-functions
# GCC8-9: disable LTO
ifeq ($(GCC_MAJOR),$(filter $(GCC_MAJOR),8 9))
EXTRACPPFLAGS += -fno-lto
endif
EXTRACPPFLAGS += -fno-function-sections
EXTRACPPFLAGS += -fno-data-sections
EXTRACPPFLAGS += -fno-move-loop-invariants
EXTRACPPFLAGS += -fno-tree-scev-cprop
EXTRACPPFLAGS += -fno-inline-small-functions
#
# Keymap file
#
ifdef UNIMAP_ENABLE
KEYMAP_FILE = unimap
else
ifdef ACTIONMAP_ENABLE
KEYMAP_FILE = actionmap
else
KEYMAP_FILE = keymap
endif
endif
ifdef KEYMAP
SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC)
else
SRC := $(KEYMAP_FILE)_plain.c $(SRC)
endif
ifeq (yes,$(strip $(IBMPC_SECONDARY)))
OPT_DEFS += -DIBMPC_SECONDARY
endif
ifeq (yes,$(strip $(IBMPC_MOUSE_ENABLE)))
OPT_DEFS += -DIBMPC_MOUSE_ENABLE
OPT_DEFS += -DMOUSE_ENABLE
endif
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk