@@ -47,89 +47,28 @@ PROGEXT = .elf | |||||
PROGS = lora.gw lora.irr | PROGS = lora.gw lora.irr | ||||
SRCS.lora.gw = main.c | SRCS.lora.gw = main.c | ||||
SRCS.lora.gw+= $(SRCS.NODE151) | |||||
SRCS.lora.irr = irr_main.c | SRCS.lora.irr = irr_main.c | ||||
SRCS.lora.irr+= comms.c | SRCS.lora.irr+= comms.c | ||||
SRCS.lora.irr+= strobe_rng_init.c | SRCS.lora.irr+= strobe_rng_init.c | ||||
SRCS.lora.irr+= $(STROBE_SRCS) | SRCS.lora.irr+= $(STROBE_SRCS) | ||||
SRCS+= board.c | |||||
SRCS+= misc.c | |||||
.if 0 | |||||
SRCS+= rng_save.c | |||||
.endif | |||||
SRCS.lora.irr+= $(SRCS.NODE151) | |||||
CFLAGS+= -I$(.CURDIR) | CFLAGS+= -I$(.CURDIR) | ||||
CFLAGS+= -g | CFLAGS+= -g | ||||
#CFLAGS+= -DNDEBUG | #CFLAGS+= -DNDEBUG | ||||
CFLAGS+= -I$(.OBJDIR) # for shared_key.h | CFLAGS+= -I$(.OBJDIR) # for shared_key.h | ||||
# Strobe | |||||
.PATH: $(.CURDIR)/strobe | |||||
CFLAGS+= -I$(.CURDIR)/strobe | |||||
STROBE_SRCS+= strobe.c \ | |||||
x25519.c | |||||
# LoRamac (SX1276) radio code | |||||
LORAMAC_SRC = $(.CURDIR)/loramac/src | |||||
.PATH: $(LORAMAC_SRC)/radio/sx1276 $(LORAMAC_SRC)/system $(LORAMAC_SRC)/boards/mcu $(LORAMAC_SRC)/boards/NucleoL152 | |||||
CFLAGS+= -I$(LORAMAC_SRC)/boards | |||||
CFLAGS+= -I$(LORAMAC_SRC)/system | |||||
CFLAGS+= -I$(LORAMAC_SRC)/radio | |||||
CFLAGS+= -DUSE_HAL_DRIVER -DSX1276MB1LAS | |||||
SRCS+= sx1276.c | |||||
SRCS+= utilities.c | |||||
SRCS+= adc.c timer.c delay.c gpio.c uart.c fifo.c | |||||
SRCS+= adc-board.c delay-board.c gpio-board.c rtc-board.c lpm-board.c sx1276mb1las-board.c spi-board.c uart-board.c | |||||
# Microcontroller | |||||
STM32=$(.CURDIR)/stm32 | |||||
.PATH: $(STM32)/l151ccux | |||||
LINKER_SCRIPT=$(STM32)/l151ccux/STM32L151CCUX_FLASH.ld | |||||
SRCS+= \ | |||||
startup_stm32l151ccux.s \ | |||||
stm32l1xx_hal.c \ | |||||
stm32l1xx_hal_adc.c \ | |||||
stm32l1xx_hal_adc_ex.c \ | |||||
stm32l1xx_hal_cortex.c \ | |||||
stm32l1xx_hal_dma.c \ | |||||
stm32l1xx_hal_flash.c \ | |||||
stm32l1xx_hal_flash_ex.c \ | |||||
stm32l1xx_hal_gpio.c \ | |||||
stm32l1xx_hal_pcd.c \ | |||||
stm32l1xx_hal_pcd_ex.c \ | |||||
stm32l1xx_hal_pwr.c \ | |||||
stm32l1xx_hal_pwr_ex.c \ | |||||
stm32l1xx_hal_rcc.c \ | |||||
stm32l1xx_hal_rcc_ex.c \ | |||||
stm32l1xx_hal_rtc.c \ | |||||
stm32l1xx_hal_rtc_ex.c \ | |||||
stm32l1xx_hal_spi.c \ | |||||
stm32l1xx_hal_uart.c \ | |||||
system_stm32l1xx.c | |||||
SRCS+= \ | |||||
stm32l1xx_it.c \ | |||||
stm32l1xx_hal_msp.c | |||||
CFLAGS+= -I$(STM32) | |||||
CFLAGS+= -I$(STM32)/l151ccux | |||||
CFLAGS+= -DSTM32L151xC | |||||
# USB | |||||
.PATH: $(STM32)/usb | |||||
SRCS+= \ | |||||
stm32l1xx_ll_usb.c \ | |||||
usb_device.c \ | |||||
usbd_cdc.c \ | |||||
usbd_cdc_if.c \ | |||||
usbd_conf.c \ | |||||
usbd_core.c \ | |||||
usbd_ctlreq.c \ | |||||
usbd_desc.c \ | |||||
usbd_ioreq.c | |||||
CFLAGS+= -I$(STM32)/usb | |||||
WITH_STROBE=yes | |||||
WITH_SX1276=yes | |||||
WITH_NODE151=yes | |||||
WITH_USB_CDC=yes | |||||
.include <mk/boards.mk> | |||||
CFLAGS+= -Werror -Wall | CFLAGS+= -Werror -Wall | ||||
@@ -183,7 +122,7 @@ $(i).list: $(i)$(PROGEXT) | |||||
all: $(ALLTGTS) | all: $(ALLTGTS) | ||||
.PHONY: runbuild | .PHONY: runbuild | ||||
runbuild: $(SRCS) | |||||
runbuild: $(SRCS) Makefile mk/*.mk | |||||
for i in $(.MAKEFILE_LIST) $(.ALLSRC) $$(cat $(DEPENDS) | gsed ':x; /\\$$/ { N; s/\\\n//; tx }' | sed -e 's/^[^:]*://'); do if [ "$$i" != ".." ]; then echo $$i; fi; done | sort -u | entr -d sh -c 'echo starting...; cd $(.CURDIR) && $(MAKE) $(.MAKEFLAGS) depend && $(MAKE) $(.MAKEFLAGS) all' | for i in $(.MAKEFILE_LIST) $(.ALLSRC) $$(cat $(DEPENDS) | gsed ':x; /\\$$/ { N; s/\\\n//; tx }' | sed -e 's/^[^:]*://'); do if [ "$$i" != ".." ]; then echo $$i; fi; done | sort -u | entr -d sh -c 'echo starting...; cd $(.CURDIR) && $(MAKE) $(.MAKEFLAGS) depend && $(MAKE) $(.MAKEFLAGS) all' | ||||
.PHONY: runtests | .PHONY: runtests | ||||
@@ -0,0 +1,83 @@ | |||||
SRCS.NODE151+= board.c | |||||
SRCS.NODE151+= misc.c | |||||
.include <mk/mu.opts.mk> | |||||
# Strobe | |||||
.if ${MK_STROBE} == "yes" | |||||
.PATH: $(.CURDIR)/strobe | |||||
CFLAGS+= -I$(.CURDIR)/strobe | |||||
STROBE_SRCS+= strobe.c \ | |||||
x25519.c | |||||
.endif | |||||
# LoRamac (SX1276) radio code | |||||
.if ${MK_SX1276} == "yes" | |||||
LORAMAC_SRC = $(.CURDIR)/loramac/src | |||||
.PATH: $(LORAMAC_SRC)/radio/sx1276 $(LORAMAC_SRC)/system $(LORAMAC_SRC)/boards/mcu $(LORAMAC_SRC)/boards/NucleoL152 | |||||
CFLAGS+= -I$(LORAMAC_SRC)/boards | |||||
CFLAGS+= -I$(LORAMAC_SRC)/system | |||||
CFLAGS+= -I$(LORAMAC_SRC)/radio | |||||
CFLAGS+= -DUSE_HAL_DRIVER -DSX1276MB1LAS | |||||
SRCS+= sx1276.c | |||||
SRCS+= utilities.c | |||||
SRCS+= adc.c timer.c delay.c gpio.c uart.c fifo.c | |||||
SRCS+= adc-board.c delay-board.c gpio-board.c rtc-board.c lpm-board.c sx1276mb1las-board.c spi-board.c uart-board.c | |||||
.endif | |||||
# NODE151 Microcontroller | |||||
.if ${MK_NODE151} == "yes" | |||||
STM32=$(.CURDIR)/stm32 | |||||
.PATH: $(STM32)/l151ccux | |||||
LINKER_SCRIPT=$(STM32)/l151ccux/STM32L151CCUX_FLASH.ld | |||||
SRCS+= \ | |||||
startup_stm32l151ccux.s \ | |||||
stm32l1xx_hal.c \ | |||||
stm32l1xx_hal_adc.c \ | |||||
stm32l1xx_hal_adc_ex.c \ | |||||
stm32l1xx_hal_cortex.c \ | |||||
stm32l1xx_hal_dma.c \ | |||||
stm32l1xx_hal_flash.c \ | |||||
stm32l1xx_hal_flash_ex.c \ | |||||
stm32l1xx_hal_gpio.c \ | |||||
stm32l1xx_hal_pcd.c \ | |||||
stm32l1xx_hal_pcd_ex.c \ | |||||
stm32l1xx_hal_pwr.c \ | |||||
stm32l1xx_hal_pwr_ex.c \ | |||||
stm32l1xx_hal_rcc.c \ | |||||
stm32l1xx_hal_rcc_ex.c \ | |||||
stm32l1xx_hal_rtc.c \ | |||||
stm32l1xx_hal_rtc_ex.c \ | |||||
stm32l1xx_hal_spi.c \ | |||||
stm32l1xx_hal_uart.c \ | |||||
system_stm32l1xx.c | |||||
SRCS+= \ | |||||
stm32l1xx_it.c \ | |||||
stm32l1xx_hal_msp.c | |||||
CFLAGS+= -I$(STM32) | |||||
CFLAGS+= -I$(STM32)/l151ccux | |||||
CFLAGS+= -DSTM32L151xC | |||||
.endif | |||||
# USB CDC | |||||
.if ${MK_USB_CDC} == "yes" | |||||
.PATH: $(STM32)/usb | |||||
SRCS+= \ | |||||
usb_device.c \ | |||||
usbd_cdc.c \ | |||||
usbd_cdc_if.c \ | |||||
usbd_conf.c \ | |||||
usbd_core.c \ | |||||
usbd_ctlreq.c \ | |||||
usbd_desc.c \ | |||||
usbd_ioreq.c | |||||
CFLAGS+= -I$(STM32)/usb | |||||
.endif | |||||
.if ${MK_USB_CDC} == "yes" && ${MK_NODE151} == "yes" | |||||
SRCS+= \ | |||||
stm32l1xx_ll_usb.c | |||||
.endif |
@@ -0,0 +1,97 @@ | |||||
# https://cgit.freebsd.org/src/plain/share/mk/bsd.mkopt.mk?id=36435ca5d3faa869c76f488c41daa9d195496f1f' | |||||
# | |||||
# $FreeBSD$ | |||||
# | |||||
# Generic mechanism to deal with WITH and WITHOUT options and turn | |||||
# them into MK_ options. | |||||
# | |||||
# For each option FOO in __DEFAULT_YES_OPTIONS, MK_FOO is set to | |||||
# "yes", unless WITHOUT_FOO is defined, in which case it is set to | |||||
# "no". | |||||
# | |||||
# For each option FOO in __DEFAULT_NO_OPTIONS, MK_FOO is set to "no", | |||||
# unless WITH_FOO is defined, in which case it is set to "yes". | |||||
# | |||||
# For each entry FOO/BAR in __DEFAULT_DEPENDENT_OPTIONS, | |||||
# MK_FOO is set to "no" if WITHOUT_FOO is defined, | |||||
# "yes" if WITH_FOO is defined, otherwise the value of MK_BAR. | |||||
# | |||||
# If both WITH_FOO and WITHOUT_FOO are defined, WITHOUT_FOO wins and | |||||
# MK_FOO is set to "no" regardless of which list it was in. | |||||
# | |||||
# All of __DEFAULT_YES_OPTIONS, __DEFAULT_NO_OPTIONS and | |||||
# __DEFAULT_DEPENDENT_OPTIONS are undef'd after all this processing, | |||||
# allowing this file to be included multiple times with different lists. | |||||
# | |||||
# Other parts of the build system will set BROKEN_OPTIONS to a list | |||||
# of options that are broken on this platform. This will not be unset | |||||
# before returning. Clients are expected to always += this variable. | |||||
# | |||||
# Users should generally define WITH_FOO or WITHOUT_FOO, but the build | |||||
# system should use MK_FOO={yes,no} when it needs to override the | |||||
# user's desires or default behavior. | |||||
# | |||||
# | |||||
# MK_* options which default to "yes". | |||||
# | |||||
.for var in ${__DEFAULT_YES_OPTIONS} | |||||
.if !defined(MK_${var}) | |||||
.if defined(WITH_${var}) && ${WITH_${var}} == "no" | |||||
.warning "Use WITHOUT_${var}=1 instead of WITH_${var}=no" | |||||
.endif | |||||
.if defined(WITHOUT_${var}) # WITHOUT always wins | |||||
MK_${var}:= no | |||||
.else | |||||
MK_${var}:= yes | |||||
.endif | |||||
.else | |||||
.if ${MK_${var}} != "yes" && ${MK_${var}} != "no" | |||||
.error "Illegal value for MK_${var}: ${MK_${var}}" | |||||
.endif | |||||
.endif # !defined(MK_${var}) | |||||
.endfor | |||||
.undef __DEFAULT_YES_OPTIONS | |||||
# | |||||
# MK_* options which default to "no". | |||||
# | |||||
.for var in ${__DEFAULT_NO_OPTIONS} | |||||
.if !defined(MK_${var}) | |||||
.if defined(WITH_${var}) && ${WITH_${var}} == "no" | |||||
.warning "Use WITHOUT_${var}=1 instead of WITH_${var}=no" | |||||
.endif | |||||
.if defined(WITH_${var}) && !defined(WITHOUT_${var}) # WITHOUT always wins | |||||
MK_${var}:= yes | |||||
.else | |||||
MK_${var}:= no | |||||
.endif | |||||
.else | |||||
.if ${MK_${var}} != "yes" && ${MK_${var}} != "no" | |||||
.error "Illegal value for MK_${var}: ${MK_${var}}" | |||||
.endif | |||||
.endif # !defined(MK_${var}) | |||||
.endfor | |||||
.undef __DEFAULT_NO_OPTIONS | |||||
# | |||||
# MK_* options which are always no, usually because they are | |||||
# unsupported/badly broken on this architecture. | |||||
# | |||||
.for var in ${BROKEN_OPTIONS} | |||||
MK_${var}:= no | |||||
.endfor | |||||
.for vv in ${__DEFAULT_DEPENDENT_OPTIONS} | |||||
.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H}) | |||||
MK_${vv:H}?= no | |||||
.elif defined(WITH_${vv:H}) | |||||
MK_${vv:H}?= yes | |||||
.elif defined(WITHOUT_${vv:H}) | |||||
MK_${vv:H}?= no | |||||
.else | |||||
MK_${vv:H}?= ${MK_${vv:T}} | |||||
.endif | |||||
MK_${vv:H}:= ${MK_${vv:H}} | |||||
.endfor | |||||
.undef __DEFAULT_DEPENDENT_OPTIONS |
@@ -0,0 +1,15 @@ | |||||
# This file sets up the various options used for compiling | |||||
# code. | |||||
# | |||||
# See bsd.mkopt.mk for more information. | |||||
__DEFAULT_YES_OPTIONS = STROBE | |||||
__DEFAULT_NO_OPTIONS = \ | |||||
NODE151 \ | |||||
SX1276 \ | |||||
USB_CDC | |||||
__DEFAULT_DEPENDENT_OPTIONS = | |||||
.include <mk/bsd.mkopt.mk> |