| @@ -47,89 +47,28 @@ PROGEXT = .elf | |||
| PROGS = lora.gw lora.irr | |||
| SRCS.lora.gw = main.c | |||
| SRCS.lora.gw+= $(SRCS.NODE151) | |||
| SRCS.lora.irr = irr_main.c | |||
| SRCS.lora.irr+= comms.c | |||
| SRCS.lora.irr+= strobe_rng_init.c | |||
| 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+= -g | |||
| #CFLAGS+= -DNDEBUG | |||
| 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 | |||
| @@ -183,7 +122,7 @@ $(i).list: $(i)$(PROGEXT) | |||
| all: $(ALLTGTS) | |||
| .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' | |||
| .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> | |||