summaryrefslogtreecommitdiff
path: root/examples/make.mk
diff options
context:
space:
mode:
Diffstat (limited to 'examples/make.mk')
-rw-r--r--examples/make.mk48
1 files changed, 34 insertions, 14 deletions
diff --git a/examples/make.mk b/examples/make.mk
index 992a4e60e..bf3b36a62 100644
--- a/examples/make.mk
+++ b/examples/make.mk
@@ -2,14 +2,8 @@
# Common make definition for all examples
# ---------------------------------------
-#-------------- Select the board to build for. ------------
-BOARD_LIST = $(sort $(subst /.,,$(subst $(TOP)/hw/bsp/,,$(wildcard $(TOP)/hw/bsp/*/.))))
-
-ifeq ($(filter $(BOARD),$(BOARD_LIST)),)
- $(info You must provide a BOARD parameter with 'BOARD=', supported boards are:)
- $(foreach b,$(BOARD_LIST),$(info - $(b)))
- $(error Invalid BOARD specified)
-endif
+# Build directory
+BUILD = _build/build-$(BOARD)
# Handy check parameter function
check_defined = \
@@ -19,11 +13,37 @@ __check_defined = \
$(if $(value $1),, \
$(error Undefined make flag: $1$(if $2, ($2))))
-# Build directory
-BUILD = _build/build-$(BOARD)
+#-------------- Select the board to build for. ------------
+#BOARD_LIST = $(sort $(subst /.,,$(subst $(TOP)/hw/bsp/,,$(wildcard $(TOP)/hw/bsp/*/.))))
+#ifeq ($(filter $(BOARD),$(BOARD_LIST)),)
+# $(info You must provide a BOARD parameter with 'BOARD=', supported boards are:)
+# $(foreach b,$(BOARD_LIST),$(info - $(b)))
+# $(error Invalid BOARD specified)
+#endif
-# Board specific define
-include $(TOP)/hw/bsp/$(BOARD)/board.mk
+# Board without family
+BOARD_PATH := $(subst $(TOP)/,,$(wildcard $(TOP)/hw/bsp/$(BOARD)))
+FAMILY :=
+
+# Board within family
+ifeq ($(BOARD_PATH),)
+ BOARD_PATH := $(subst $(TOP)/,,$(wildcard $(TOP)/hw/bsp/*/boards/$(BOARD)))
+ FAMILY := $(word 3, $(subst /, ,$(BOARD_PATH)))
+ FAMILY_PATH = hw/bsp/$(FAMILY)
+endif
+
+ifeq ($(BOARD_PATH),)
+ $(error Invalid BOARD specified)
+endif
+
+ifeq ($(FAMILY),)
+ include $(TOP)/hw/bsp/$(BOARD)/board.mk
+else
+ # Include Family and Board specific defs
+ include $(TOP)/$(FAMILY_PATH)/family.mk
+
+ SRC_C += $(subst $(TOP)/,,$(wildcard $(TOP)/$(FAMILY_PATH)/*.c))
+endif
#-------------- Cross Compiler ------------
# Can be set by board, default to ARM GCC
@@ -45,9 +65,9 @@ endif
#-------------- Source files and compiler flags --------------
-# Include all source C in board folder
+# Include all source C in family & board folder
SRC_C += hw/bsp/board.c
-SRC_C += $(subst $(TOP)/,,$(wildcard $(TOP)/hw/bsp/$(BOARD)/*.c))
+SRC_C += $(subst $(TOP)/,,$(wildcard $(TOP)/$(BOARD_PATH)/*.c))
# Compiler Flags
CFLAGS += \