aboutsummaryrefslogtreecommitdiff
path: root/builddefs/converters.mk
blob: 20ecea5cb9d2d3f16de3efad128c460206e5524f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
ifneq (,$(filter $(MCU),atmega32u4))
    # TODO: opt in rather than assume everything uses a pro micro
    PIN_COMPATIBLE ?= promicro
endif

# Remove whitespace from any rule.mk provided vars
#   - env cannot be overwritten but cannot have whitespace anyway
CONVERT_TO:=$(strip $(CONVERT_TO))
ifneq ($(CONVERT_TO),)

    # stash so we can overwrite env provided vars if needed
    ACTIVE_CONVERTER=$(CONVERT_TO)

    ifeq ($(PIN_COMPATIBLE),)
        $(call CATASTROPHIC_ERROR,Converting to '$(CONVERT_TO)' not possible!)
    endif

    # glob to search each platfrorm and/or check for valid converter
    CONVERTER := $(wildcard $(PLATFORM_PATH)/*/converters/$(PIN_COMPATIBLE)_to_$(CONVERT_TO)/)
    ifeq ($(CONVERTER),)
        $(call CATASTROPHIC_ERROR,Converting from '$(PIN_COMPATIBLE)' to '$(CONVERT_TO)' not possible!)
    endif

    -include $(CONVERTER)/pre_converter.mk

    PLATFORM_KEY = $(shell echo $(CONVERTER) | cut -d "/" -f2)

    # Configure any defaults
    OPT_DEFS += -DCONVERT_TO_$(shell echo $(CONVERT_TO) | tr '[:lower:]' '[:upper:]')
    OPT_DEFS += -DCONVERTER_TARGET=\"$(CONVERT_TO)\"
    OPT_DEFS += -DCONVERTER_ENABLED
    VPATH += $(CONVERTER)

    # Configure for "alias" - worst case it produces an idential define
    OPT_DEFS += -DCONVERT_TO_$(shell echo $(ACTIVE_CONVERTER) | tr '[:lower:]' '[:upper:]')

    # Finally run any converter specific logic
    include $(CONVERTER)/converter.mk
endif