TEST
Dependencies: max32630fthr Adafruit_FeatherOLED USBDevice
Diff: Makefile
- Revision:
- 1:f60eafbf009a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Wed Apr 10 14:56:25 2019 +0300 @@ -0,0 +1,439 @@ +PROJECT_PATH=$(realpath ./) +PROJECT_NAME=$(shell basename $(realpath ./)) +PROJECT_BUILD_PATH=$(realpath BUILD/) +PROJECT_TOOLS_PATH=$(realpath tools/) +PROJECT_CONFIGS_PATH=$(realpath configs/) +PROJECT_TOOLCHAIN=GCC_ARM +PROJECT_SCM_BRANCH=$(shell git rev-parse --abbrev-ref HEAD) +PROJECT_SCM_HASH=$(shell git rev-parse HEAD) +-include .config + +STACK_SIZE ?= 0x30000 +HEAP_SIZE ?= 0x30000 + +$(info STACK_SIZE: ${STACK_SIZE}, HEAP_SIZE: ${HEAP_SIZE}) + +ALGO_DIR = Algorithms/ +DRIVERS_DIR = Drivers/ +INTERFACES_DIR = Interfaces/ +SCOMMS_DIR = $(INTERFACES_DIR)/SensorComm/ +DSINT_DIR = $(INTERFACES_DIR)/DeviceStudio/ +SSCOMMS_DIR = $(SCOMMS_DIR)/SmartSensorComm/ +SSINT_DIR = $(INTERFACES_DIR)/SmartSensor/ +PLATFORMS_DIR = Platforms/ + +EXTERNAL_SOURCES += mbed-os +EXTERNAL_SOURCES += $(DRIVERS_DIR)USBDevice +PROJECT_SOURCES += $(wildcard *.cpp) +PROJECT_SOURCES += $(wildcard *.h) +PROJECT_SOURCES += $(SCOMMS_DIR)/SensorComm +PROJECT_SOURCES += $(DSINT_DIR) +PROJECT_SOURCES += $(DRIVERS_DIR)MaximSensor +PROJECT_SOURCES += Utilities + +## BEGIN PLATFORM ## +ifeq ($(CONFIG_PLATFORM_MAX32600MBED), y) +CONFIG_FLAGS += PLATFORM_MAX32600MBED +CONFIG_PLATFORM_NAME=MAX32600MBED + +else ifeq ($(CONFIG_PLATFORM_MAX32625MBED), y) +CONFIG_FLAGS += PLATFORM_MAX32625MBED +CONFIG_PLATFORM_NAME=MAX32625MBED +PROJECT_SOURCES += $(PLATFORMS_DIR)max32625mbed + +else ifeq ($(CONFIG_PLATFORM_MAX32630FTHR), y) +CONFIG_FLAGS += PLATFORM_MAX32630FTHR +CONFIG_PLATFORM_NAME=MAX32630FTHR +EXTERNAL_SOURCES += $(PLATFORMS_DIR)max32630fthr + +else ifeq ($(CONFIG_PLATFORM_MAX32630HSP), y) +CONFIG_FLAGS += PLATFORM_MAX32630HSP +CONFIG_PLATFORM_NAME=MAX32630FTHR +EXTERNAL_SOURCES += $(PLATFORMS_DIR)max32630hsp +PROJECT_SOURCES += $(PLATFORMS_DIR)max32630hsp + +else ifeq ($(CONFIG_PLATFORM_MAX32625PICO), y) +CONFIG_FLAGS += PLATFORM_MAX32625PICO +CONFIG_PLATFORM_NAME=MAX32625PICO + +else +$(warning NO MAXIM PLATFORM SELECTED) +endif +CONFIG_FLAGS += MAXIM_PLATFORM_NAME=\"$(CONFIG_MAXIM_PLATFORM_NAME)\" + + +ifeq ($(CONFIG_ENABLE_LED_STATUS), y) +CONFIG_FLAGS += ENABLE_LED_STATUS +endif + +ifeq ($(CONFIG_ENABLE_EVENTSTATS), y) +CONFIG_FLAGS += ENABLE_EVENTSTATS +endif +## END PLATFORM ## + +## BEGIN PPG SENSOR ## +ifeq ($(CONFIG_ENABLE_PPG), y) +CONFIG_FLAGS += ENABLE_PPG +PROJECT_SOURCES += $(SCOMMS_DIR)PpgComm/ +endif + +ifeq ($(CONFIG_PPG_MAX3011X), y) +CONFIG_FLAGS += PPG_MAX3011X +PROJECT_SOURCES += $(DRIVERS_DIR)MAX3011X +endif + +ifeq ($(CONFIG_PPG_MAX8614X), y) +CONFIG_FLAGS += PPG_MAX8614X +PROJECT_SOURCES += $(DRIVERS_DIR)MAX8614X +endif +## END PPG SENSOR ## + +## BEGIN ECG SENSOR ## +ifeq ($(CONFIG_ENABLE_ECG), y) +CONFIG_FLAGS += ENABLE_ECG +PROJECT_SOURCES += $(SCOMMS_DIR)EcgComm/ +endif + +ifeq ($(CONFIG_ECG_MAX30001), y) +CONFIG_FLAGS += ECG_MAX30001 +PROJECT_SOURCES += $(DRIVERS_DIR)MAX30001 +endif +## END PPG SENSOR ## + +## BEGIN TEMP SENSOR +ifeq ($(CONFIG_ENABLE_TP), y) +CONFIG_FLAGS += ENABLE_TP +PROJECT_SOURCES += $(SCOMMS_DIR)TempComm/ +endif + +ifeq ($(CONFIG_TP_MAX30205), y) +CONFIG_FLAGS += TP_MAX30205 +PROJECT_SOURCES += $(DRIVERS_DIR)MAX30205 +endif +## END TEMP SENSOR + +## BEGIN PRESSURE SENSOR +ifeq ($(CONFIG_ENABLE_BMP280), y) +CONFIG_FLAGS +=ENABLE_BMP280 +PROJECT_SOURCES += $(DRIVERS_DIR)BMP280 +endif +## END PRESSURE SENSOR + +## BEGIN FLASH CONFIGURATION +ifeq ($(CONFIG_ENABLE_MX25U), y) +CONFIG_FLAGS +=ENABLE_MX25U +PROJECT_SOURCES += $(DRIVERS_DIR)SPIBlockDevice +$(info flash driver is included) +endif +## END FLASH CONFIGURATION + +## BEGIN USBMSD CONFIGURATION +ifeq ($(CONFIG_ENABLE_USBMSD), y) +CONFIG_FLAGS +=ENABLE_USBMSD +PROJECT_SOURCES += $(DRIVERS_DIR)USBMSD_BD +$(info USBMSD feature enabled) +endif +## END USBMSD CONFIGURATION + +## BEGIN ACCEL ## +ifeq ($(CONFIG_ENABLE_ACCEL), y) +CONFIG_FLAGS += ENABLE_ACCEL +PROJECT_SOURCES += $(DRIVERS_DIR)BMI160 +endif + +ifeq ($(CONFIG_ACCEL_BMA160), y) +CONFIG_FLAGS += ACCEL_BMA160 +PROJECT_SOURCES += $(DRIVERS_DIR)BMA160 +endif + +ifeq ($(CONFIG_ACCEL_BMA280), y) +CONFIG_FLAGS += ACCEL_BMA280 +PROJECT_SOURCES += $(DRIVERS_DIR)BMA280 +endif + +ifeq ($(CONFIG_ACCEL_LIS2DH), y) +CONFIG_FLAGS += ACCEL_LIS2DH +PROJECT_SOURCES += $(DRIVERS_DIR)LIS2DH +endif +## END ACCEL ## + +## BEGIN SMARTSENSOR ## +ifeq ($(CONFIG_ENABLE_SMARTSENSOR), y) +CONFIG_FLAGS += ENABLE_SMARTSENSOR +PROJECT_SOURCES += $(SSINT_DIR) +endif + +ifeq ($(CONFIG_ENABLE_SS_BOOTLOADER), y) +CONFIG_FLAGS += ENABLE_SS_BOOTLOADER +PROJECT_SOURCES += $(SSCOMMS_DIR)SSBootloader +endif + +ifeq ($(CONFIG_ENABLE_SS_MAX30101), y) +CONFIG_FLAGS += ENABLE_SS_MAX30101 +PROJECT_SOURCES += $(SSCOMMS_DIR)SSMAX30101 +endif + +ifeq ($(CONFIG_ENABLE_SS_MAX8614X), y) +CONFIG_FLAGS += ENABLE_SS_MAX8614X +PROJECT_SOURCES += $(SSCOMMS_DIR)SSMAX8614X +endif +## END SMARTSENSOR ## + +## BEGIN SMARTSENSOR ## +ifeq ($(CONFIG_BOOTLOADER_USES_MFIO), y) +CONFIG_FLAGS += BOOTLOADER_USES_MFIO +endif + +## BEGIN DISPLAY ## +ifeq ($(CONFIG_ENABLE_DISPLAY), y) +CONFIG_FLASG += ENABLE_DISPLAY +endif + +ifeq ($(CONFIG_OLED_ADAFRUIT_SSD1306), y) +CONFIG_FLAGS += OLED_ADAFRUIT_SSD1306 +EXTERNAL_SOURCES += $(DRIVERS_DIR)Adafruit_FeatherOLED +endif +ifeq ($(CONFIG_LCD_WATCHINTERFACE), y) +CONFIG_FLAGS += LCD_WATCHINTERFACE +endif +ifeq ($(CONFIG_LCD_LS013B7DH03), y) +CONFIG_FLAGS += LCD_LS013B7DH03 +PROJECT_SOURCES += $(DRIVERS_DIR)LS013B7DH03 +endif +## END DISPLAY ## + +## BEGIN ALGORITHMS ## +#ifeq ($(CONFIG_ENABLE_WHRM), y) +#CONFIG_FLAGS += ENABLE_WHRM +#PROJECT_SOURCES += $(ALGO_DIR)WHRM +#endif + +ifeq ($(CONFIG_ENABLE_WHRM_AND_SPO2), y) +CONFIG_FLAGS += ENABLE_WHRM_AND_SPO2 +#PROJECT_SOURCES += $(ALGO_DIR)WHRM +endif + +#ifeq ($(CONFIG_ENABLE_BPT), y) +#CONFIG_FLAGS += ENABLE_BPT +#PROJECT_SOURCES += $(ALGO_DIR)WHRM +#endif +## END ALGORITHMS ## + +## SPO2 ## +ifeq ($(CONFIG_ENABLE_SPO2), y) +CONFIG_FLAGS += ENABLE_SPO2 +endif +## END ## + + +## BEGIN BLE ## +ifeq ($(CONFIG_ENABLE_BLE), y) +CONFIG_FLAGS += ENABLE_BLE +PROJECT_SOURCES += $(DRIVERS_DIR)BLE_ICARUS + +#ifeq ("$(CONFIG_BLE_ADV_NAME)", "") +#$(error BLE Avertisement name must be specified with CONFIG_BLE_ADV_NAME) +#else +#CONFIG_FLAGS += BLE_ADV_NAME=\"$(CONFIG_BLE_ADV_NAME)\" +#endif + +ifeq ($(CONFIG_USE_BLE_TICKER_TO_CHECK_TRANSFER), y) +CONFIG_FLAGS += USE_BLE_TICKER_TO_CHECK_TRANSFER +endif + +endif +## END BLE ## + +## BEGIN DATA STREAMING DEBUG ## +ifeq ($(CONFIG_ASCII_COMM), y) +CONFIG_FLAGS += ASCII_COMM +endif + +ifeq ($(CONFIG_ENABLE_BLETEST_COMM), y) +CONFIG_FLAGS += ENABLE_BLETEST_COMM +PROJECT_SOURCES += $(SCOMMS_DIR)BleTestComm +endif + +ifeq ($(CONFIG_ENABLE_SS_GENERICCMDCOMM), y) +CONFIG_FLAGS += ENABLE_SS_GENERICMDCOMM +PROJECT_SOURCES += $(SSCOMMS_DIR)SSGenericCmd +endif +## END DATA STREAMING DEBUG ## + +## BEGIN TEST FIRMWARE +ifeq ($(CONFIG_ENABLE_TESTCOMM), y) +CONFIG_FLAGS += ENABLE_TESTCOMM +PROJECT_SOURCES += $(SCOMMS_DIR)TestComm +endif +# END TEST FIRMWARE + +## BEGIN MEMORY DEBUG ## +ifeq ($(CONFIG_ENABLE_MEMORY_DEBUG), y) +CONFIG_FLAGS += ENABLE_MEMORY_DEBUG +endif + +ifeq ($(CONFIG_MBED_HEAP_STATS_ENABLED), y) +CONFIG_FLAGS += MBED_HEAP_STATS_ENABLED +endif + +ifeq ($(CONFIG_MBED_MEM_TRACING_ENABLED), y) +CONFIG_FLAGS += MBED_MEM_TRACING_ENABLED +endif + +ifeq ($(CONFIG_MBED_STACK_STATS_ENABLED), y) +CONFIG_FLAGS += MBED_STACK_STATS_ENABLED +endif +## END MEMORY DEBUG ## + + +## BEGIN DEBUG MSGS TOGGLE +ifeq ($(CONFIG_SHOW_DEBUG_MSGS), y) +CONFIG_FLAGS += SHOW_DEBUG_MSGS +endif +ifeq ($(CONFIG_SHOW_INFO_MSGS), y) +CONFIG_FLAGS += SHOW_INFO_MSGS +endif +ifeq ($(CONFIG_SHOW_I2C_DEBUG_MESSAGES), y) +CONFIG_FLAGS += SHOW_I2C_DEBUG_MESSAGES +endif + +ifeq ($(V), 1) +BUILD_VERBOSE = -v +endif + +SRC_ARGS += $(addprefix --source $(PROJECT_PATH)/, $(EXTERNAL_SOURCES)) +SRC_ARGS += $(addprefix --source $(PROJECT_PATH)/, $(PROJECT_SOURCES)) +CFG_ARGS = $(addprefix -D, $(CONFIG_FLAGS)) + +###$(info SELECTED_CONFIG=$(CONFIG_CONFIG_NAME)) +$(info CONFIG_PLATFORM_NAME=$(CONFIG_PLATFORM_NAME) CONFIG_MAXIM_PLATFORM_NAME=$(CONFIG_MAXIM_PLATFORM_NAME) CONFIG_FLAGS=$(CONFIG_FLAGS)) +$(info PROJECT_SOURCES=$(PROJECT_SOURCES)) +$(info EXTERNAL_SOURCES=$(EXTERNAL_SOURCES)) +$(info PROJECT_SCM=$(PROJECT_SCM_BRANCH) ($(PROJECT_SCM_HASH))) + +## BEGIN MAKEFILE RULES ## +all: pre_build +### @if [ -f $(CONFIG_CONFIG_NAME) ]; then \ +### printf "NO CONFIG SELECTED!\n"; \ +### exit 1; \ +### fi; + @if [ ! -f .checkout ]; then \ + $(MAKE) checkout ; \ + fi; + mbed compile -t $(PROJECT_TOOLCHAIN) -m $(CONFIG_PLATFORM_NAME) -D__STACK_SIZE=$(STACK_SIZE) -D__HEAP_SIZE=$(HEAP_SIZE) $(BUILD_VERBOSE) $(CFG_ARGS) $(SRC_ARGS) +debug_build: + mbed compile -t $(PROJECT_TOOLCHAIN) -m $(CONFIG_PLATFORM_NAME) -D__STACK_SIZE=$(STACK_SIZE) -D__HEAP_SIZE=$(HEAP_SIZE) $(BUILD_VERBOSE) $(CFG_ARGS) $(SRC_ARGS) --profile $(PROJECT_PATH)/mbed-os/tools/profiles/debug.json + +clean_build: + mbed compile -t $(PROJECT_TOOLCHAIN) -m $(CONFIG_PLATFORM_NAME) -D__STACK_SIZE=$(STACK_SIZE) -D__HEAP_SIZE=$(HEAP_SIZE) -c $(BUILD_VERBOSE) $(CFG_ARGS) $(SRC_ARGS) + +werror_build: + mbed compile -t $(PROJECT_TOOLCHAIN) -m $(CONFIG_PLATFORM_NAME) -D__STACK_SIZE=$(STACK_SIZE) -D__HEAP_SIZE=$(HEAP_SIZE) -c $(BUILD_VERBOSE) $(CFG_ARGS) $(SRC_ARGS) --profile $(PROJECT_PATH)/werror_build_profile.json + +clean: + rm -rf $(PROJECT_BUILD_PATH) + +menuconfig: + ${PROJECT_TOOLS_PATH}/windows_kconfig/kconfig-mconf.exe Kconfig + +run: + python ${PROJECT_TOOLS_PATH}/mbed_run.py ${PROJECT_BUILD_PATH}/${CONFIG_PLATFORM_NAME}/$(PROJECT_TOOLCHAIN)/mbed-os.bin + +co: checkout + +checkout: + @echo "Downloading libraries" + mbed deploy + $(MAKE) apply_mbedos_patches + @touch .$@ + +applypatches: + @echo "Applying patches" +# cd mbed-os; \ +# git am ../patches/0001-porting-MAX32625PICO-to-mbed-os-5.patch +# cd USBDevice; \ +# hg import --no-commit --force ../patches/USBDevice.patch + +apply_mbedos_patches: + @echo "Applying mbed-os patches" + @cd ./mbed_os_patches; \ + for i in *.patch ; do \ + [ -f "$$i" ] || break ; \ + echo "$$i"; \ + cp "$$i" ../mbed-os; \ + cd ../mbed-os; \ + git apply "$$i"; \ + rm -f "$$i"; \ + cd ..; \ + cd ./mbed_os_patches; \ + done; \ + +selectconfig.%: + @if [ -f $(PROJECT_CONFIGS_PATH)/$(word 2,$(subst ., ,$@)).config ]; then \ + cp $(PROJECT_CONFIGS_PATH)/$(word 2,$(subst ., ,$@)).config $(PROJECT_PATH)/.config; \ + printf "\n$(word 2,$(subst ., ,$@)).config selected\n"; \ + else \ + printf "\nConfig [$(word 2,$(subst ., ,$@))] is not found!\n"; \ + printf "Available configs are:\n\n"; \ + ls $(PROJECT_CONFIGS_PATH) | cut -d "." -f 1; \ + printf "\n"; \ + fi; + +saveconfig: +### cp $(PROJECT_PATH)/.config $(PROJECT_CONFIGS_PATH)/$(CONFIG_CONFIG_NAME).config + +staticcheck: + @printf "\n\nRATS-2.4 Staic Analyzer\n" + @printf "=========== BEGIN =============\n" + ${PROJECT_TOOLS_PATH}/Rats-2.4/rats.exe --quiet -w 3 --db ${PROJECT_TOOLS_PATH}/Rats-2.4/rats-c.xml $(PROJECT_SOURCES) + @printf "============ END ==============\n" + @printf "\n\nCppcheck-1.78 Static Analyzer\n" + @printf "=========== BEGIN =============\n" + ${PROJECT_TOOLS_PATH}/Cppcheck-1.78/cppcheck.exe -q --enable=all --force $(PROJECT_SOURCES) + @printf "============ END ==============\n" + @printf "\n\nVisualCodeGrepper-2.1.0 Static Analyzer\n" + @printf "=========== BEGIN =============\n" + @cd ${PROJECT_TOOLS_PATH}/VisualCodeGrepper-2.1.0; \ + for src in $(PROJECT_SOURCES) ; do \ + ${PROJECT_TOOLS_PATH}/VisualCodeGrepper-2.1.0/VisualCodeGrepper.exe -c -t $(PROJECT_PATH)/$$src -r $(PROJECT_PATH)/.tmp_VCG_step.txt ; \ + echo "" >> $(PROJECT_PATH)/.tmp_VCG_result.txt ; \ + echo "$$src:" >> $(PROJECT_PATH)/.tmp_VCG_result.txt ; \ + cat $(PROJECT_PATH)/.tmp_VCG_step.txt >> $(PROJECT_PATH)/.tmp_VCG_result.txt ; \ + rm -rf $(PROJECT_PATH)/.tmp_VCG_step.txt ;\ + done ; \ + cat $(PROJECT_PATH)/.tmp_VCG_result.txt ; \ + rm -rf $(PROJECT_PATH)/.tmp_VCG_result.txt + @printf "============ END ==============\n" + +doxygen: + mkdir -p $(PROJECT_BUILD_PATH) + export PROJECT_SOURCES="$(PROJECT_SOURCES)"; \ + export PROJECT_SCM_HASH="$(PROJECT_SCM_HASH)"; \ + doxygen doxygen.conf + start $(PROJECT_BUILD_PATH)/doc/html/index.html + +astyle: + @printf "=========== BEGIN ASTYLE =============\n" + ${PROJECT_TOOLS_PATH}/AStyle_2.06_windows/bin/AStyle.exe --options=${PROJECT_TOOLS_PATH}/AStyle_2.06_windows/file/custom.ini "*.cpp"; + ${PROJECT_TOOLS_PATH}/AStyle_2.06_windows/bin/AStyle.exe --options=${PROJECT_TOOLS_PATH}/AStyle_2.06_windows/file/custom.ini "*.h"; + @for src in $(PROJECT_SOURCES); do \ + if [[ -d $$src ]]; then \ + ${PROJECT_TOOLS_PATH}/AStyle_2.06_windows/bin/AStyle.exe --options=${PROJECT_TOOLS_PATH}/AStyle_2.06_windows/file/custom.ini --recursive "$$src/*.cpp" ; \ + ${PROJECT_TOOLS_PATH}/AStyle_2.06_windows/bin/AStyle.exe --options=${PROJECT_TOOLS_PATH}/AStyle_2.06_windows/file/custom.ini --recursive "$$src/*.h" ; \ + fi; \ + done; + @printf "============ END ASTYLE ==============\n" + +help: + start https://confluence.maxim-ic.com/x/VSAkB + +create_flags: + python ./scripts/py/mbed_convertconfigtoflags.py + +pre_build: + @echo "#ifndef __BUILD_VERSION_H__" > build_version.h + @echo "#define __BUILD_VERSION_H__" >> build_version.h + @echo "#define BUILD_SOURCE_BRANCH \"$(PROJECT_SCM_BRANCH)\"" >> build_version.h + @echo "#define BUILD_SOURCE_HASH \"$(PROJECT_SCM_HASH)\"" >> build_version.h + @echo "#endif" >> build_version.h +## END MAKEFILE RULES ##