431 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
		
		
			
		
	
	
			431 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Author: Harald Baumgart DL4SAI
							 | 
						||
| 
								 | 
							
								# everybody may  copy, use or modify this file
							 | 
						||
| 
								 | 
							
								# there is no guarantee for anything by the author
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# HB 20.8.2015
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Rev. 09/08/2015 corrected by Andreas Richter DF8OE 
							 | 
						||
| 
								 | 
							
								# Rev. 2016-04-06 cleanup - Stephan HB9ocq
							 | 
						||
| 
								 | 
							
								# Rev. 06/12/2016 possibility of choosing individual toolchain - Andreas Richter DF8OE
							 | 
						||
| 
								 | 
							
								# Rev. 2017-01-06 HB9ocq - added versioning of build: extracted from source, propagated to env.vars
							 | 
						||
| 
								 | 
							
								# Rev. 20/11/2018 RV9YW (m-chichikalov) - fixed limitation of parameter length on cmd.exe windows by passing all obj. as one file to linker
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#  -*- makefile -*-
							 | 
						||
| 
								 | 
							
								# if you want to build in a different directory than this one
							 | 
						||
| 
								 | 
							
								# go to the directory, figure out the path from the new diretory you are in to this one and call make like this
							 | 
						||
| 
								 | 
							
								# make -f replace_with_pfad_to_makefile/Makefile ROOTLOC=replace_with_pfad_to_makefile desired_maketarget
							 | 
						||
| 
								 | 
							
								# for example to build the bootloader in the build-bl folder inside this directory
							 | 
						||
| 
								 | 
							
								# make -f ../Makefile ROOTLOC=".." bootloader 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# to invoke asserts into the build use make with DEBUG=1; -> make -f "../Makefile" ROOTLOC=".." DEBUG=1 all
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# you can set the MCU you want to build for here or via environment variable (F4 or F4-512KB or F7 or H7)
							 | 
						||
| 
								 | 
							
								ifndef BUILDFOR
							 | 
						||
| 
								 | 
							
								  BUILDFOR=F4
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# default value for building the mcHF UI board.
							 | 
						||
| 
								 | 
							
								ifndef CONFIGFLAGS
							 | 
						||
| 
								 | 
							
								  CONFIGFLAGS=-DUI_BRD_MCHF -DRF_BRD_MCHF
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# We have to use "override" since we pass some of these things from
							 | 
						||
| 
								 | 
							
								# the commandline but then change / append to it
							 | 
						||
| 
								 | 
							
								# see https://www.gnu.org/software/make/manual/html_node/Override-Directive.html#Override-Directive
							 | 
						||
| 
								 | 
							
								# BUILDFOR, CONFIGFLAGS are affected by this
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# F4-512KB results in "small build for F4"
							 | 
						||
| 
								 | 
							
								ifeq ($(BUILDFOR),F4-512KB)
							 | 
						||
| 
								 | 
							
								  FW_LINKERFILE_F4=arm-gcc-link_f4_flash512k.ld
							 | 
						||
| 
								 | 
							
								  override BUILDFOR=F4
							 | 
						||
| 
								 | 
							
								  override CONFIGFLAGS +=-DIS_SMALL_BUILD
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								  FW_LINKERFILE_F4=arm-gcc-link_f4_flash1024k.ld
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifdef DEBUG
							 | 
						||
| 
								 | 
							
								  override CONFIGFLAGS += -DDEBUG -DUSE_FULL_ASSERT -DTRACE
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								  override CONFIGFLAGS += -DNDEBUG
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifeq ($(BUILDFOR),F7)
							 | 
						||
| 
								 | 
							
								  TRX_NAME="OVI40 F7"
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								ifeq ($(BUILDFOR),H7)
							 | 
						||
| 
								 | 
							
								  TRX_NAME="OVI40 H7"
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ROOTLOC=.
							 | 
						||
| 
								 | 
							
								vpath %.c $(ROOTLOC)
							 | 
						||
| 
								 | 
							
								vpath %.cpp $(ROOTLOC)
							 | 
						||
| 
								 | 
							
								vpath %.S $(ROOTLOC)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# you can set these environment to your individual values here or via environment variables
							 | 
						||
| 
								 | 
							
								# TRX_ID maximum lenght is 5 characters!!
							 | 
						||
| 
								 | 
							
								ifndef TRX_ID
							 | 
						||
| 
								 | 
							
								  TRX_ID=mchf
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								ifeq ($(TRX_NAME),mcHF)
							 | 
						||
| 
								 | 
							
								  TRX_NAME='mcHF QRP'
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								ifndef TRX_NAME
							 | 
						||
| 
								 | 
							
								  TRX_NAME='mcHF QRP'
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# If you want to hold different toolchains on Linux in /opt you can get them from
							 | 
						||
| 
								 | 
							
								# https://launchpad.net/gcc-arm-embedded . Copy unpacked files as 'root' to /opt .
							 | 
						||
| 
								 | 
							
								# If you want to use other toolchain than system-wide  installed proceed as following:
							 | 
						||
| 
								 | 
							
								# Type on a terminal
							 | 
						||
| 
								 | 
							
								# OPT_GCC_ARM=/opt/folder-of-your-toolchain
							 | 
						||
| 
								 | 
							
								# export OPT_GCC_ARM
							 | 
						||
| 
								 | 
							
								# Now 'make all' uses choosen toolchain instead of system wide installed.
							 | 
						||
| 
								 | 
							
								# If yu want to switch back to system wide type
							 | 
						||
| 
								 | 
							
								# OPT_GCC_ARM=
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifdef OPT_GCC_ARM
							 | 
						||
| 
								 | 
							
								  PREFIX = $(OPT_GCC_ARM)/bin/
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								  PREFIX = 
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Under MacOS we have to use gsed instead of sed
							 | 
						||
| 
								 | 
							
								# This mechanism can be used also for other flavours
							 | 
						||
| 
								 | 
							
								OS := $(shell uname)
							 | 
						||
| 
								 | 
							
								SED = sed
							 | 
						||
| 
								 | 
							
								ifeq ($(OS),Darwin)
							 | 
						||
| 
								 | 
							
								  SED = gsed
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								COMPILEFLAGS := -D_GNU_SOURCE -DTRX_ID=\"$(TRX_ID)\" -DTRX_NAME=\"$(TRX_NAME)\" $(CONFIGFLAGS) -DUSE_HAL_DRIVER\
							 | 
						||
| 
								 | 
							
									-DFDV_ARM_MATH -DFREEDV_MODE_EN_DEFAULT=0 -DFREEDV_MODE_1600_EN=1 -DCODEC2_MODE_EN_DEFAULT=0 -DCODEC2_MODE_1300_EN=1\
							 | 
						||
| 
								 | 
							
									-ffunction-sections -fdata-sections -flto -Wall -Wuninitialized -Wextra -Wno-unused-parameter -Wno-unused-function -Wno-sign-compare -g3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# identifying of "official builds by DF8OE"
							 | 
						||
| 
								 | 
							
								ifneq (,$(wildcard ../DF8OE))
							 | 
						||
| 
								 | 
							
								  COMPILEFLAGS += -DOFFICIAL_BUILD=\"1\"
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# compilation options
							 | 
						||
| 
								 | 
							
								MACHFLAGS_F4 := -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -DARM_MATH_CM4 -DCORTEX_M4 -DSTM32F407xx -D__FPU_PRESENT=1U
							 | 
						||
| 
								 | 
							
								MACHFLAGS_F7 := -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16    -mthumb -DARM_MATH_CM7 -DCORTEX_M7 -DSTM32F767xx -D__FPU_PRESENT=1
							 | 
						||
| 
								 | 
							
								MACHFLAGS_H7 := -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16    -mthumb -DARM_MATH_CM7 -DCORTEX_M7 -DSTM32H743xx -D__FPU_PRESENT=1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BASECFLAGS_F4  = $(MACHFLAGS_F4)  $(COMPILEFLAGS) $(EXTRACFLAGS)
							 | 
						||
| 
								 | 
							
								BASECFLAGS_F7  = $(MACHFLAGS_F7)  $(COMPILEFLAGS) $(EXTRACFLAGS) -DFREEDV_MODE_700D_EN=1 -DCODEC2_MODE_700C_EN=1
							 | 
						||
| 
								 | 
							
								BASECFLAGS_H7  = $(MACHFLAGS_H7)  $(COMPILEFLAGS) $(EXTRACFLAGS) -DFREEDV_MODE_700D_EN=1 -DCODEC2_MODE_700C_EN=1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LINKERLOC=$(ROOTLOC)/linker
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LDFLAGS_BASE = -L$(LINKERLOC) -flto -g3 $(CFLAGS) $(CXXFLAGS)
							 | 
						||
| 
								 | 
							
								LDFLAGS_F4 = $(LDFLAGS_BASE) $(MACHFLAGS_F4)
							 | 
						||
| 
								 | 
							
								LDFLAGS_F7 = $(LDFLAGS_BASE) $(MACHFLAGS_F7) 
							 | 
						||
| 
								 | 
							
								LDFLAGS_H7 = $(LDFLAGS_BASE) $(MACHFLAGS_H7) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LIBS :=--specs=nosys.specs --specs=nano.specs
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# ------------- nothing to change below this line ---------------------- 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# propagate version info from source to environment variables
							 | 
						||
| 
								 | 
							
								PROJECT_VERSION_FILE := $(ROOTLOC)/src/uhsdr_version.h
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifdef MSYSTEM
							 | 
						||
| 
								 | 
							
								$(eval  $(shell $(SED) -n -e \'s/\"//g\' -e '/[^-]UHSDR_VER_MAJOR/{s!\#define\s*!!;   s!\s\s*!=!p}' $(PROJECT_VERSION_FILE) ))
							 | 
						||
| 
								 | 
							
								$(eval  $(shell $(SED) -n -e \'s/\"//g\' -e '/[^.]UHSDR_VER_MINOR/{s!\#define\s*!!;   s!\s\s*!=!p}' $(PROJECT_VERSION_FILE) ))
							 | 
						||
| 
								 | 
							
								$(eval  $(shell $(SED) -n -e \'s/\"//g\' -e '/[^.]UHSDR_VER_RELEASE/{s!\#define\s*!!; s!\s\s*!=!p}' $(PROJECT_VERSION_FILE) ))
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								$(eval  $(shell $(SED) -n -e 's/"//g' -e '/UHSDR_VER_MAJOR/{s!#define\s*!!;   s!\s\s*!=!p}' $(PROJECT_VERSION_FILE) ))
							 | 
						||
| 
								 | 
							
								$(eval  $(shell $(SED) -n -e 's/"//g' -e '/UHSDR_VER_MINOR/{s!#define\s*!!;   s!\s\s*!=!p}' $(PROJECT_VERSION_FILE) ))
							 | 
						||
| 
								 | 
							
								$(eval  $(shell $(SED) -n -e 's/"//g' -e '/UHSDR_VER_RELEASE/{s!#define\s*!!; s!\s\s*!=!p}' $(PROJECT_VERSION_FILE) ))
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								UHSDR_VER_TAINT := $(shell  git status . | grep --quiet 'working directory clean' && echo "" || echo "+")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BOOTLOADER=bl-$(TRX_ID)
							 | 
						||
| 
								 | 
							
								FIRMWARE=fw-$(TRX_ID)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Every subdirectory with header files must be mentioned here
							 | 
						||
| 
								 | 
							
								include $(ROOTLOC)/include.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# every source-file has to be mentioned here 
							 | 
						||
| 
								 | 
							
								include $(ROOTLOC)/files.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								include $(ROOTLOC)/bootloader.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifeq ($(BUILDFOR),F4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(BOOTLOADER).elf : CFLAGS = ${BASECFLAGS_F4} -Os -DBOOTLOADER_BUILD
							 | 
						||
| 
								 | 
							
								$(FIRMWARE).elf : CFLAGS = ${BASECFLAGS_F4} -O2
							 | 
						||
| 
								 | 
							
								$(BOOTLOADER).elf : LDFLAGS = ${LDFLAGS_F4} -T$(LINKERLOC)/arm-gcc-link-bootloader_f4.ld
							 | 
						||
| 
								 | 
							
								$(FIRMWARE).elf : LDFLAGS = ${LDFLAGS_F4} -T$(LINKERLOC)/$(FW_LINKERFILE_F4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# Every subdirectory with header files must be mentioned here
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/f4-include.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# every source-file has to be mentioned here 
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/f4-files.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/f4-bootloader.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								ifeq ($(BUILDFOR),F7)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(BOOTLOADER).elf: CFLAGS = ${BASECFLAGS_F7} -Os -DBOOTLOADER_BUILD
							 | 
						||
| 
								 | 
							
								$(FIRMWARE).elf : CFLAGS = ${BASECFLAGS_F7} -O2
							 | 
						||
| 
								 | 
							
								$(BOOTLOADER).elf : LDFLAGS = ${LDFLAGS_F7} -T$(LINKERLOC)/arm-gcc-link-bootloader_f7.ld
							 | 
						||
| 
								 | 
							
								$(FIRMWARE).elf : LDFLAGS = ${LDFLAGS_F7} -T$(LINKERLOC)/arm-gcc-link_f7.ld
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# Every subdirectory with header files must be mentioned here
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/f7-include.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# every source-file has to be mentioned here 
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/f7-files.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/f7-bootloader.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								ifeq ($(BUILDFOR),H7)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(BOOTLOADER).elf: CFLAGS = ${BASECFLAGS_H7} -Os -DBOOTLOADER_BUILD
							 | 
						||
| 
								 | 
							
								$(FIRMWARE).elf : CFLAGS = ${BASECFLAGS_H7} -O2
							 | 
						||
| 
								 | 
							
								$(BOOTLOADER).elf : LDFLAGS = ${LDFLAGS_H7} -T$(LINKERLOC)/arm-gcc-link-bootloader_h7.ld
							 | 
						||
| 
								 | 
							
								$(FIRMWARE).elf : LDFLAGS = ${LDFLAGS_H7} -T$(LINKERLOC)/arm-gcc-link_h7.ld
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# Every subdirectory with header files must be mentioned here
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/h7-include.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# every source-file has to be mentioned here 
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/h7-files.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									include $(ROOTLOC)/h7-bootloader.mak
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INC_DIRS = $(foreach d, $(SUBDIRS) $(HAL_SUBDIRS), -I$(ROOTLOC)/$d)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifdef VERBOSE
							 | 
						||
| 
								 | 
							
									VPRE:=
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
									VPRE:=@
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CC      = $(VPRE)$(PREFIX)arm-none-eabi-gcc
							 | 
						||
| 
								 | 
							
								CXX     = $(VPRE)$(PREFIX)arm-none-eabi-g++
							 | 
						||
| 
								 | 
							
								OC      = $(VPRE)$(PREFIX)arm-none-eabi-objcopy
							 | 
						||
| 
								 | 
							
								SZ      = $(VPRE)$(PREFIX)arm-none-eabi-size
							 | 
						||
| 
								 | 
							
								HEX2DFU = $(VPRE)python $(ROOTLOC)/support/hex2dfu/hex2dfu.py
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								POSTCOMPILE = @mv -f $*.Td $*.d && touch $@
							 | 
						||
| 
								 | 
							
								DEPFLAGS = -MT $@ -MMD -MP -MF $*.Td
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ECHO = @echo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifdef SystemRoot  # WINxx
							 | 
						||
| 
								 | 
							
								    RM = del /Q
							 | 
						||
| 
								 | 
							
								    FixPath = $(subst /,\,$1)
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    RM = rm -f
							 | 
						||
| 
								 | 
							
								    FixPath = $1
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# how to compile individual object files
							 | 
						||
| 
								 | 
							
								ALL_SRC:=$(SRC) $(DSPLIB_SRC) $(HAL_SRC) $(BL_SRC) $(BL_HAL_SRC)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								OBJS := $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(SRC:.cpp=.o)))
							 | 
						||
| 
								 | 
							
								DSPLIB_OBJS := $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(DSPLIB_SRC:.cpp=.o)))
							 | 
						||
| 
								 | 
							
								HAL_OBJS := $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(HAL_SRC:.cpp=.o)))
							 | 
						||
| 
								 | 
							
								BL_OBJS := $(patsubst %.S,%.o,$(patsubst %.cpp,%.o,$(BL_SRC:.c=.o)))
							 | 
						||
| 
								 | 
							
								BL_HAL_OBJS := $(patsubst %.S,%.o,$(patsubst %.cpp,%.o,$(BL_HAL_SRC:.c=.o)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ALL_OBJS := $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(ALL_SRC:.cpp=.o)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(DSPLIB_OBJS): EXTRA_CFLAGS:= -Wno-strict-aliasing
							 | 
						||
| 
								 | 
							
								basesw/%/usbh_mtp.o: CFLAGS += -Wno-implicit-fallthrough
							 | 
						||
| 
								 | 
							
								basesw/%/usbh_msc.o: CFLAGS += -Wno-implicit-fallthrough
							 | 
						||
| 
								 | 
							
								drivers/usb/%/usbh_hid.o: CFLAGS += -Wno-implicit-fallthrough
							 | 
						||
| 
								 | 
							
								basesw/%stm32h7xx_hal_spi.o: CFLAGS += -Wno-strict-aliasing
							 | 
						||
| 
								 | 
							
								basesw/%stm32f4xx_ll_usb.o: CFLAGS += -Wno-attributes
							 | 
						||
| 
								 | 
							
								basesw/%stm32f7xx_ll_usb.o: CFLAGS += -Wno-attributes
							 | 
						||
| 
								 | 
							
								basesw/%stm32h7xx_ll_usb.o: CFLAGS += -Wno-attributes
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#.S.o: %.d
							 | 
						||
| 
								 | 
							
								.S.o:
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [CC] $@"
							 | 
						||
| 
								 | 
							
									@mkdir -p $(subst $(ROOTLOC)/,,$(shell dirname $<))
							 | 
						||
| 
								 | 
							
									$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -std=gnu11 -c ${INC_DIRS} $< -o $@
							 | 
						||
| 
								 | 
							
									$(POSTCOMPILE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#.c.o: %.d
							 | 
						||
| 
								 | 
							
								.c.o:
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [CC] $@"
							 | 
						||
| 
								 | 
							
									@mkdir -p $(subst $(ROOTLOC)/,,$(shell dirname $<))
							 | 
						||
| 
								 | 
							
									$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -std=gnu11 -c ${INC_DIRS} $< -o $@
							 | 
						||
| 
								 | 
							
									$(POSTCOMPILE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#.cxx.o: %.d
							 | 
						||
| 
								 | 
							
								.cxx.o:
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [CXX] $@"
							 | 
						||
| 
								 | 
							
									@mkdir -p $(subst $(ROOTLOC)/,,$(shell dirname $<))
							 | 
						||
| 
								 | 
							
									$(CXX) $(CFLAGS) $(CXXFLAGS) $(DEPFLAGS) -std=gnu++11 -c ${INC_DIRS} $< -o $@
							 | 
						||
| 
								 | 
							
									$(POSTCOMPILE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#.cpp.o: %.d
							 | 
						||
| 
								 | 
							
								.cpp.o:
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [CXX] $@"
							 | 
						||
| 
								 | 
							
									@mkdir -p $(subst $(ROOTLOC)/,,$(shell dirname $<))
							 | 
						||
| 
								 | 
							
									$(CXX) $(CFLAGS) $(CXXFLAGS) $(DEPFLAGS) -std=gnu++11 -c ${INC_DIRS} $< -o $@
							 | 
						||
| 
								 | 
							
									$(POSTCOMPILE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%.bin: %.elf
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [OBJC] $@"
							 | 
						||
| 
								 | 
							
									$(SZ) $<
							 | 
						||
| 
								 | 
							
									$(OC) -v -O binary $< $@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%.hex: %.elf
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [BIN] $@"
							 | 
						||
| 
								 | 
							
									$(SZ) $<
							 | 
						||
| 
								 | 
							
									$(OC) -v -O ihex $< $@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%.dfu: %.hex
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [H2D] $@"
							 | 
						||
| 
								 | 
							
									$(SZ) $<
							 | 
						||
| 
								 | 
							
									$(HEX2DFU) $< $@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%.d: ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PRECIOUS: %.d
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								include $(wildcard $(patsubst %,%.d,$(basename $(ALL_SRC))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# ---------------------------------------------------------
							 | 
						||
| 
								 | 
							
								#  BUILT-IN HELP
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								define THISMAKEFILENAME
							 | 
						||
| 
								 | 
							
								$(word 2,$Workfile: Makefile $ )
							 | 
						||
| 
								 | 
							
								endef
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# default (first) make goal
							 | 
						||
| 
								 | 
							
								.PHONY: help
							 | 
						||
| 
								 | 
							
								help:  
							 | 
						||
| 
								 | 
							
									# shows all make goals of this file (the text you are reading)
							 | 
						||
| 
								 | 
							
									@grep --after-context=1 --extended-regexp '^[[:alnum:]_-]+:[[:blank:]]{2,}' $(THISMAKEFILENAME)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# ---------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: all clean docs docs-clean help
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								all:  firmware $(TRX_ID).handbook
							 | 
						||
| 
								 | 
							
									# compile the firmware ARM-executables .bin / .elf and .dfu, generate .map 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								firmware:  $(FIRMWARE) 
							 | 
						||
| 
								 | 
							
									# compile the firmware ARM-executables .bin / .elf and .dfu, generate .map 
							 | 
						||
| 
								 | 
							
									@echo "using \c"
							 | 
						||
| 
								 | 
							
									$(CC) --version | grep gcc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								bootloader:  $(BOOTLOADER)
							 | 
						||
| 
								 | 
							
									# compile the bootloader ARM-executables .bin / .elf and .dfu, generate .map 
							 | 
						||
| 
								 | 
							
									@echo "using \c"
							 | 
						||
| 
								 | 
							
									$(CC) --version | grep gcc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(FIRMWARE): $(FIRMWARE).elf $(FIRMWARE).dfu $(FIRMWARE).bin
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(BOOTLOADER):  $(BOOTLOADER).bin $(BOOTLOADER).dfu
							 | 
						||
| 
								 | 
							
									# compile the bootloader ARM-executables .bin / .elf and .dfu for mcHF SDR TRx, generate .map and .dmp
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# compilation
							 | 
						||
| 
								 | 
							
								$(FIRMWARE).elf:  $(HAL_OBJS) $(DSPLIB_OBJS) $(OBJS)
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [LD] $@"
							 | 
						||
| 
								 | 
							
									@$(file > ./firmware_obj_list.lst,$^)
							 | 
						||
| 
								 | 
							
									$(CXX) $(LDFLAGS) -Xlinker --gc-sections -Llibs -Wl,-Map,$(FIRMWARE).map -o$@ @./firmware_obj_list.lst $(LIBS)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,firmware_obj_list.lst)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# compilation
							 | 
						||
| 
								 | 
							
								$(BOOTLOADER).elf:  $(BL_HAL_OBJS) $(BL_OBJS)
							 | 
						||
| 
								 | 
							
									$(ECHO) "  [LD] $@"
							 | 
						||
| 
								 | 
							
									@$(file > ./bootloader_obj_list.lst,$^)
							 | 
						||
| 
								 | 
							
									$(CXX) $(LDFLAGS) -Xlinker --gc-sections -Llibs -Wl,-Map,$(BOOTLOADER).map -o$@ @./bootloader_obj_list.lst $(LIBS)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,bootloader_obj_list.lst)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(TRX_ID).handbook:
							 | 
						||
| 
								 | 
							
									@$(ROOTLOC)/support/ui/menu/mk-menu-handbook auto
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(TRX_ID).version:
							 | 
						||
| 
								 | 
							
									# the build artifacts SHOULD identify as
							 | 
						||
| 
								 | 
							
									@printf "Version %s.%s.%s%s\n" $(UHSDR_VER_MAJOR) $(UHSDR_VER_MINOR) $(UHSDR_VER_RELEASE) $(UHSDR_VER_TAINT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# cleaning rule
							 | 
						||
| 
								 | 
							
								clean-firmware:  
							 | 
						||
| 
								 | 
							
									# remove the firmware executables, map, dmp and all object files (.o) (except libs object files)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(OBJS))	
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(FIRMWARE).elf)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(FIRMWARE).dfu)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(FIRMWARE).bin)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(FIRMWARE).map)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								clean-bootloader:  
							 | 
						||
| 
								 | 
							
									# remove the bootloader executables, map, dmp and all object files (.o) (except libs object files)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(BL_OBJS))
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(BL_HAL_OBJS))
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(BOOTLOADER).elf)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(BOOTLOADER).dfu)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(BOOTLOADER).bin)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(BOOTLOADER).map)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								clean-libs:  
							 | 
						||
| 
								 | 
							
									# remove libs object files (.o)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(DSPLIB_OBJS))
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(HAL_OBJS))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								clean:  clean-firmware clean-bootloader clean-libs
							 | 
						||
| 
								 | 
							
									# remove the executables, map, dmp and all object files (.o)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,*~)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								docs:  
							 | 
						||
| 
								 | 
							
									# generate source docs as per "Doxyfile"
							 | 
						||
| 
								 | 
							
									doxygen Doxyfile
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								docs-clean:  
							 | 
						||
| 
								 | 
							
									# remove docs
							 | 
						||
| 
								 | 
							
									# as defined in file "Doxyfile" OUTPUT_DIRECTORY
							 | 
						||
| 
								 | 
							
									$(RM) --recursive --verbose $(call FixPath,$(ROOTLOC)/../docs)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								gcc-version:  
							 | 
						||
| 
								 | 
							
									# the build will be done using
							 | 
						||
| 
								 | 
							
									$(CC) --version | grep gcc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								handbook-test:  
							 | 
						||
| 
								 | 
							
									# extract UI Menu Descriptor data from source code and generate graph + table for handbook in different directory for test purposes
							 | 
						||
| 
								 | 
							
									@$(ROOTLOC)/support/ui/menu/mk-menu-handbook test
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								handbook-ui-menu:  
							 | 
						||
| 
								 | 
							
									# extract UI Menu Descriptor data from source code and generate graph + table for handbook
							 | 
						||
| 
								 | 
							
									@$(ROOTLOC)/support/ui/menu/mk-menu-handbook
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								handbook-ui-menu-clean:  
							 | 
						||
| 
								 | 
							
									# remove generated UI Menu files
							 | 
						||
| 
								 | 
							
									$(RM) $(ROOTLOC)/support/ui/menu/uhsdr-logo.png
							 | 
						||
| 
								 | 
							
									$(RM) $(ROOTLOC)/support/ui/menu/ui_menu_structure.py*
							 | 
						||
| 
								 | 
							
									$(RM) $(ROOTLOC)/support/ui/menu/ui_menu_structure_graph.gv
							 | 
						||
| 
								 | 
							
									$(RM) $(ROOTLOC)/support/ui/menu/ui_menu_structure_graph.svg
							 | 
						||
| 
								 | 
							
									$(RM) $(ROOTLOC)/support/ui/menu/ui_menu_structure_graph.png
							 | 
						||
| 
								 | 
							
									$(RM) $(ROOTLOC)/support/ui/menu/ui_menu_structure_mdtable.md
							 | 
						||
| 
								 | 
							
									$(RM) $(ROOTLOC)/support/ui/menu/menu-handbook-build.timestamp
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								handy:  
							 | 
						||
| 
								 | 
							
									# rm all .o (but not executables, .map and .dmp)
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,$(ALL_OBJS))
							 | 
						||
| 
								 | 
							
									$(RM) $(call FixPath,*~)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								release:  
							 | 
						||
| 
								 | 
							
									# generate quick operating guide
							 | 
						||
| 
								 | 
							
									/@inkscape --export-png=$(ROOTLOC)/useful_manuals/mcHF-quick-manual.png $(ROOTLOC)/useful_manuals/mcHF-quick-manual.svg
							 | 
						||
| 
								 | 
							
									@inkscape --export-pdf=$(ROOTLOC)/useful_manuals/mcHF-quick-manual.pdf $(ROOTLOC)/useful_manuals/mcHF-quick-manual.svg
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# EOFILE
							 |