Browse Source

rearch builds a bit.. start migrating various build options to mk/* files..

main
John-Mark Gurney 2 years ago
parent
commit
6ae7529c16
4 changed files with 207 additions and 73 deletions
  1. +12
    -73
      Makefile
  2. +83
    -0
      mk/boards.mk
  3. +97
    -0
      mk/bsd.mkopt.mk
  4. +15
    -0
      mk/mu.opts.mk

+ 12
- 73
Makefile View File

@@ -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


+ 83
- 0
mk/boards.mk View File

@@ -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

+ 97
- 0
mk/bsd.mkopt.mk View File

@@ -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

+ 15
- 0
mk/mu.opts.mk View File

@@ -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>

Loading…
Cancel
Save