aboutsummaryrefslogtreecommitdiffstats
path: root/wirish/rules.mk
diff options
context:
space:
mode:
Diffstat (limited to 'wirish/rules.mk')
-rw-r--r--wirish/rules.mk33
1 files changed, 23 insertions, 10 deletions
diff --git a/wirish/rules.mk b/wirish/rules.mk
index 1cac74a..13da229 100644
--- a/wirish/rules.mk
+++ b/wirish/rules.mk
@@ -4,15 +4,25 @@ dirstack_$(sp) := $(d)
d := $(dir)
BUILDDIRS += $(BUILD_PATH)/$(d)
-# Add board directory and MCU-specific directory to BUILDDIRS. These
-# are in subdirectories, but they're logically part of the Wirish
-# submodule.
+# Add board directory and target-specific directory to
+# BUILDDIRS. These are in subdirectories, but they're logically part
+# of the Wirish submodule. That's a bit inconsistent with libmaple
+# proper, and should be fixed.
+# Optionally support out-of-tree board files if WIRISH_BOARD_PATH was exported
+ifeq ($(WIRISH_BOARD_PATH),)
WIRISH_BOARD_PATH := boards/$(BOARD)
+WIRISH_BOARD_INCLUDE := $(d)/$(WIRISH_BOARD_PATH)/include
+WIRISH_BOARD_CPP_FILE := $(d)/$(WIRISH_BOARD_PATH)/board.cpp
BUILDDIRS += $(BUILD_PATH)/$(d)/$(WIRISH_BOARD_PATH)
-BUILDDIRS += $(BUILD_PATH)/$(d)/$(MCU_SERIES)
+else
+WIRISH_BOARD_INCLUDE := $(WIRISH_BOARD_PATH)/include
+WIRISH_BOARD_CPP_FILE := $(WIRISH_BOARD_PATH)/board.cpp
+BUILDDIRS += $(BUILD_PATH)/$(WIRISH_BOARD_PATH)
+endif
+BUILDDIRS += $(BUILD_PATH)/$(d)/$(TARGET_SERIES_MODULE)
# Safe includes for Wirish.
-WIRISH_INCLUDES := -I$(d)/include -I$(d)/$(WIRISH_BOARD_PATH)/include
+WIRISH_INCLUDES := -I$(d)/include -I$(WIRISH_BOARD_INCLUDE)
# Local flags. Add -I$(d) to allow for private includes.
CFLAGS_$(d) := $(LIBMAPLE_INCLUDES) $(WIRISH_INCLUDES) -I$(d)
@@ -21,7 +31,7 @@ CFLAGS_$(d) := $(LIBMAPLE_INCLUDES) $(WIRISH_INCLUDES) -I$(d)
sSRCS_$(d) := start.S
cSRCS_$(d) := start_c.c
cSRCS_$(d) += syscalls.c
-cSRCS_$(d) += $(MCU_SERIES)/util_hooks.c
+cSRCS_$(d) += $(TARGET_SERIES_MODULE)/util_hooks.c
cppSRCS_$(d) := boards.cpp
cppSRCS_$(d) += cxxabi-compat.cpp
cppSRCS_$(d) += ext_interrupts.cpp
@@ -38,15 +48,18 @@ cppSRCS_$(d) += wirish_digital.cpp
cppSRCS_$(d) += wirish_math.cpp
cppSRCS_$(d) += wirish_shift.cpp
cppSRCS_$(d) += wirish_time.cpp
-cppSRCS_$(d) += $(MCU_SERIES)/boards_setup.cpp
-cppSRCS_$(d) += $(MCU_SERIES)/wirish_digital.cpp
-cppSRCS_$(d) += $(MCU_SERIES)/wirish_debug.cpp
-cppSRCS_$(d) += $(WIRISH_BOARD_PATH)/board.cpp
+cppSRCS_$(d) += $(TARGET_SERIES_MODULE)/boards_setup.cpp
+cppSRCS_$(d) += $(TARGET_SERIES_MODULE)/wirish_digital.cpp
+cppSRCS_$(d) += $(TARGET_SERIES_MODULE)/wirish_debug.cpp
sFILES_$(d) := $(sSRCS_$(d):%=$(d)/%)
cFILES_$(d) := $(cSRCS_$(d):%=$(d)/%)
cppFILES_$(d) := $(cppSRCS_$(d):%=$(d)/%)
+# board.cpp is a special case, because it may be out of tree
+cppSRCS_$(d) += $(WIRISH_BOARD_PATH)/board.cpp
+cppFILES_$(d) += $(WIRISH_BOARD_CPP_FILE)
+
OBJS_$(d) := $(sFILES_$(d):%.S=$(BUILD_PATH)/%.o) \
$(cFILES_$(d):%.c=$(BUILD_PATH)/%.o) \
$(cppFILES_$(d):%.cpp=$(BUILD_PATH)/%.o)