summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2021-01-14 11:37:34 +0700
committerGitHub <[email protected]>2021-01-14 11:37:34 +0700
commit7aaccd94d2e11ee2329353b4119526c75279b3ba (patch)
tree32b428648fcbdaadb1ade3269f6a2b5c76e8dee7
parent05728e2b189b228a7b51f359dc207f54b85811ef (diff)
parentd7cfd8b91db127459d61aa8b8d091cb08e732208 (diff)
Merge pull request #590 from kkitayam/support_for_cmd
Add support for Windows10 Command Prompt as a shell on GNU make.
-rw-r--r--examples/make.mk5
-rw-r--r--examples/rules.mk15
-rw-r--r--hw/bsp/adafruit_clue/board.mk6
-rw-r--r--hw/bsp/arduino_nano33_ble/board.mk6
-rw-r--r--hw/bsp/circuitplayground_bluefruit/board.mk6
-rw-r--r--hw/bsp/da14695_dk_usb/board.mk2
-rw-r--r--hw/bsp/da1469x_dk_pro/board.mk2
-rw-r--r--hw/bsp/double_m33_express/board.mk2
-rw-r--r--hw/bsp/feather_nrf52840_express/board.mk6
-rw-r--r--hw/bsp/feather_nrf52840_sense/board.mk6
-rw-r--r--hw/bsp/itsybitsy_nrf52840/board.mk6
-rw-r--r--hw/bsp/nrf52840_mdk_dongle/board.mk6
-rw-r--r--hw/bsp/pca10056/board.mk6
-rw-r--r--hw/bsp/pca10059/board.mk6
-rw-r--r--hw/bsp/pca10100/board.mk6
-rw-r--r--hw/bsp/raytac_mdbt50q_rx/board.mk6
-rw-r--r--tools/top.mk15
17 files changed, 96 insertions, 11 deletions
diff --git a/examples/make.mk b/examples/make.mk
index 6743044fd..992a4e60e 100644
--- a/examples/make.mk
+++ b/examples/make.mk
@@ -34,9 +34,14 @@ CXX = $(CROSS_COMPILE)g++
OBJCOPY = $(CROSS_COMPILE)objcopy
SIZE = $(CROSS_COMPILE)size
MKDIR = mkdir
+ifeq ($(CMDEXE),1)
+CP = copy
+RM = del
+else
SED = sed
CP = cp
RM = rm
+endif
#-------------- Source files and compiler flags --------------
diff --git a/examples/rules.mk b/examples/rules.mk
index 37e0e7a19..2274d1cd2 100644
--- a/examples/rules.mk
+++ b/examples/rules.mk
@@ -81,7 +81,11 @@ uf2: $(BUILD)/$(BOARD)-firmware.uf2
OBJ_DIRS = $(sort $(dir $(OBJ)))
$(OBJ): | $(OBJ_DIRS)
$(OBJ_DIRS):
+ifeq ($(CMDEXE),1)
+ @$(MKDIR) $(subst /,\,$@)
+else
@$(MKDIR) -p $@
+endif
$(BUILD)/$(BOARD)-firmware.elf: $(OBJ)
@echo LINK $@
@@ -107,13 +111,6 @@ vpath %.c . $(TOP)
$(BUILD)/obj/%.o: %.c
@echo CC $(notdir $@)
@$(CC) $(CFLAGS) -c -MD -o $@ $<
- @# The following fixes the dependency file.
- @# See http://make.paulandlesley.org/autodep.html for details.
- @# Regex adjusted from the above to play better with Windows paths, etc.
- @$(CP) $(@:.o=.d) $(@:.o=.P); \
- $(SED) -e 's/#.*//' -e 's/^.*: *//' -e 's/ *\\$$//' \
- -e '/^$$/ d' -e 's/$$/ :/' < $(@:.o=.d) >> $(@:.o=.P); \
- $(RM) $(@:.o=.d)
# ASM sources lower case .s
vpath %.s . $(TOP)
@@ -134,7 +131,11 @@ size: $(BUILD)/$(BOARD)-firmware.elf
.PHONY: clean
clean:
+ifeq ($(CMDEXE),1)
+ rd /S /Q $(subst /,\,$(BUILD))
+else
$(RM) -rf $(BUILD)
+endif
# Print out the value of a make variable.
# https://stackoverflow.com/questions/16467718/how-to-print-out-a-variable-in-makefile
diff --git a/hw/bsp/adafruit_clue/board.mk b/hw/bsp/adafruit_clue/board.mk
index d5f7c7cd4..3db045ac0 100644
--- a/hw/bsp/adafruit_clue/board.mk
+++ b/hw/bsp/adafruit_clue/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/bsp/$(BOARD)/nrf52840_s140_v6.ld
diff --git a/hw/bsp/arduino_nano33_ble/board.mk b/hw/bsp/arduino_nano33_ble/board.mk
index d1d62bdf2..1ee8867e6 100644
--- a/hw/bsp/arduino_nano33_ble/board.mk
+++ b/hw/bsp/arduino_nano33_ble/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
#LD_FILE = hw/bsp/$(BOARD)/linker_script.ld
diff --git a/hw/bsp/circuitplayground_bluefruit/board.mk b/hw/bsp/circuitplayground_bluefruit/board.mk
index d5f7c7cd4..3db045ac0 100644
--- a/hw/bsp/circuitplayground_bluefruit/board.mk
+++ b/hw/bsp/circuitplayground_bluefruit/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/bsp/$(BOARD)/nrf52840_s140_v6.ld
diff --git a/hw/bsp/da14695_dk_usb/board.mk b/hw/bsp/da14695_dk_usb/board.mk
index 8fef7d10f..b097262dc 100644
--- a/hw/bsp/da14695_dk_usb/board.mk
+++ b/hw/bsp/da14695_dk_usb/board.mk
@@ -21,7 +21,7 @@ SRC_C += \
$(MCU_FAMILY_DIR)/src/da1469x_clock.c \
$(MCU_FAMILY_DIR)/src/hal_gpio.c \
-SRC_S += $(TOP)/hw/bsp/$(BOARD)/gcc_startup_da1469x.S
+SRC_S += hw/bsp/$(BOARD)/gcc_startup_da1469x.S
INC += \
$(TOP)/hw/bsp/$(BOARD) \
diff --git a/hw/bsp/da1469x_dk_pro/board.mk b/hw/bsp/da1469x_dk_pro/board.mk
index 60a62378c..16bd6de6b 100644
--- a/hw/bsp/da1469x_dk_pro/board.mk
+++ b/hw/bsp/da1469x_dk_pro/board.mk
@@ -21,7 +21,7 @@ SRC_C += \
$(MCU_FAMILY_DIR)/src/da1469x_clock.c \
$(MCU_FAMILY_DIR)/src/hal_gpio.c \
-SRC_S += $(TOP)/hw/bsp/$(BOARD)/gcc_startup_da1469x.S
+SRC_S += hw/bsp/$(BOARD)/gcc_startup_da1469x.S
INC += \
$(TOP)/hw/bsp/$(BOARD) \
diff --git a/hw/bsp/double_m33_express/board.mk b/hw/bsp/double_m33_express/board.mk
index 6cc2495de..c3401e5b2 100644
--- a/hw/bsp/double_m33_express/board.mk
+++ b/hw/bsp/double_m33_express/board.mk
@@ -26,7 +26,7 @@ SRC_C += \
$(MCU_DIR)/drivers/fsl_reset.c \
$(MCU_DIR)/drivers/fsl_usart.c \
$(MCU_DIR)/drivers/fsl_flexcomm.c \
- $(TOP)/lib/sct_neopixel/sct_neopixel.c
+ lib/sct_neopixel/sct_neopixel.c
INC += \
$(TOP)/hw/bsp/ \
diff --git a/hw/bsp/feather_nrf52840_express/board.mk b/hw/bsp/feather_nrf52840_express/board.mk
index 6cc972835..059e55dff 100644
--- a/hw/bsp/feather_nrf52840_express/board.mk
+++ b/hw/bsp/feather_nrf52840_express/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/bsp/$(BOARD)/nrf52840_s140_v6.ld
diff --git a/hw/bsp/feather_nrf52840_sense/board.mk b/hw/bsp/feather_nrf52840_sense/board.mk
index d5f7c7cd4..3db045ac0 100644
--- a/hw/bsp/feather_nrf52840_sense/board.mk
+++ b/hw/bsp/feather_nrf52840_sense/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/bsp/$(BOARD)/nrf52840_s140_v6.ld
diff --git a/hw/bsp/itsybitsy_nrf52840/board.mk b/hw/bsp/itsybitsy_nrf52840/board.mk
index 6cc972835..059e55dff 100644
--- a/hw/bsp/itsybitsy_nrf52840/board.mk
+++ b/hw/bsp/itsybitsy_nrf52840/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/bsp/$(BOARD)/nrf52840_s140_v6.ld
diff --git a/hw/bsp/nrf52840_mdk_dongle/board.mk b/hw/bsp/nrf52840_mdk_dongle/board.mk
index 8ce8929b8..3c44e402c 100644
--- a/hw/bsp/nrf52840_mdk_dongle/board.mk
+++ b/hw/bsp/nrf52840_mdk_dongle/board.mk
@@ -13,9 +13,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/bsp/$(BOARD)/$(BOARD).ld
diff --git a/hw/bsp/pca10056/board.mk b/hw/bsp/pca10056/board.mk
index 8f4887dcb..b8691525b 100644
--- a/hw/bsp/pca10056/board.mk
+++ b/hw/bsp/pca10056/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/mcu/nordic/nrfx/mdk/nrf52840_xxaa.ld
diff --git a/hw/bsp/pca10059/board.mk b/hw/bsp/pca10059/board.mk
index bd7a80c0e..178f09474 100644
--- a/hw/bsp/pca10059/board.mk
+++ b/hw/bsp/pca10059/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/bsp/$(BOARD)/$(BOARD).ld
diff --git a/hw/bsp/pca10100/board.mk b/hw/bsp/pca10100/board.mk
index 4b5be082e..8ada94ba0 100644
--- a/hw/bsp/pca10100/board.mk
+++ b/hw/bsp/pca10100/board.mk
@@ -14,9 +14,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/mcu/nordic/nrfx/mdk/nrf52833_xxaa.ld
diff --git a/hw/bsp/raytac_mdbt50q_rx/board.mk b/hw/bsp/raytac_mdbt50q_rx/board.mk
index e153aab0b..2c29acfa6 100644
--- a/hw/bsp/raytac_mdbt50q_rx/board.mk
+++ b/hw/bsp/raytac_mdbt50q_rx/board.mk
@@ -13,9 +13,15 @@ CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
# due to tusb_hal_nrf_power_event
GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
+ifeq ($(CMDEXE),1)
+ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
+CFLAGS += -Wno-error=cast-function-type
+endif
+else
ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
CFLAGS += -Wno-error=cast-function-type
endif
+endif
# All source paths should be relative to the top level.
LD_FILE = hw/mcu/nordic/nrfx/mdk/nrf52840_xxaa.ld
diff --git a/tools/top.mk b/tools/top.mk
index be51b3f4f..84523a557 100644
--- a/tools/top.mk
+++ b/tools/top.mk
@@ -2,6 +2,12 @@ ifneq ($(lastword a b),b)
$(error This Makefile require make 3.81 or newer)
endif
+# Detect whether shell style is windows or not
+# https://stackoverflow.com/questions/714100/os-detecting-makefile/52062069#52062069
+ifeq '$(findstring ;,$(PATH))' ';'
+CMDEXE := 1
+endif
+
# Set TOP to be the path to get from the current directory (where make was
# invoked) to the top of the tree. $(lastword $(MAKEFILE_LIST)) returns
# the name of this makefile relative to where make was invoked.
@@ -9,9 +15,16 @@ endif
THIS_MAKEFILE := $(lastword $(MAKEFILE_LIST))
TOP := $(patsubst %/tools/top.mk,%,$(THIS_MAKEFILE))
+ifeq ($(CMDEXE),1)
+TOP := $(subst \,/,$(shell for %%i in ( $(TOP) ) do echo %%~fi))
+else
TOP := $(shell realpath $(TOP))
-
+endif
#$(info Top directory is $(TOP))
+ifeq ($(CMDEXE),1)
+CURRENT_PATH := $(subst $(TOP)/,,$(subst \,/,$(shell echo %CD%)))
+else
CURRENT_PATH := $(shell realpath --relative-to=$(TOP) `pwd`)
+endif
#$(info Path from top is $(CURRENT_PATH))