CIRCLE_STDLIB_DIR ?= /home/ron/source/BMCoCo-deps/circle-stdlib
CIRCLEHOME = $(CIRCLE_STDLIB_DIR)/libs/circle
CORE_BUILD ?= ../../../build/xroar-pi500
CORE_ARCHIVE = $(CORE_BUILD)/libbmcoco_xroar_core.a
WEB_ARCHIVE = $(CORE_BUILD)/libbmcoco_web_assets.a
HOSTAP = $(CIRCLEHOME)/addon/wlan/hostap
OBJS = main.o kernel.o build_info.o audio.o storage.o files.o network.o web_files.o web_server.o web_http.o drivewire.o remote_control.o remote_crypto_support.o remote_sha256.o remote_sha256_internal.o
CPPFLAGS += -DBMCOCO_ENABLE_PHYSICAL_SD_WRITE=1
CPPFLAGS += -DBMCOCO_ENABLE_MOOH_SD_WRITE=1
VPATH += ../../../src
GC_SECTIONS = 1
include $(CIRCLE_STDLIB_DIR)/Config.mk
INCLUDE := -I../../../include -I../../xroar_proof/include $(CIRCLE_STDLIB_INCLUDES) $(INCLUDE)
LIBS := $(CORE_ARCHIVE) $(WEB_ARCHIVE) $(CIRCLE_STDLIB_LIBS)
LIBS += $(CIRCLEHOME)/lib/sound/libsound.a
LDFLAGS += --wrap=romlist_find --wrap=rombank_load_image
LDFLAGS += --wrap=cart_config_by_name --wrap=xconfig_parse_list_struct
LDFLAGS += --wrap=basename
LDFLAGS += --wrap=disk_write
LDFLAGS += --wrap=part_create --wrap=vdisk_save
LDFLAGS += --wrap=partdb_find_entry --wrap=partdb_is_a
LDFLAGS += --script=boot_limit.ld
include $(CIRCLEHOME)/Rules.mk
# Recompile ONLY this tiny metadata object per image build. The timestamp is
# UTC and belongs to the linked running image, not its SD filename/mtime.
BMCOCO_BUILD_REVISION := $(shell git -C ../../../ rev-parse --short=12 HEAD)$(shell git -C ../../../ diff --quiet HEAD -- || printf '%s' '-dirty')
BMCOCO_BUILD_UTC := $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
.PHONY: force-build-info
force-build-info:
build_info.o: force-build-info
build_info.o: CPPFLAGS += -DBMCOCO_BUILD_REVISION='"$(BMCOCO_BUILD_REVISION)"' -DBMCOCO_BUILD_UTC='"$(BMCOCO_BUILD_UTC)"'
$(TARGET).img: boot_limit.ld
.PHONY: boot-limit-check
.DEFAULT_GOAL := all
all: boot-limit-check
boot-limit-check: $(TARGET).img
	python3 ../../../tools/test_pi_boot_limit.py --toolprefix "$(TOOLPREFIX)" --elf "$(TARGET).elf" --main-object main.o --script boot_limit.ld
.PHONY: remote-check
$(TARGET).img: remote-check
remote-check:
	@test "$$(git -C $(HOSTAP) rev-parse HEAD)" = "966cab4a3bc958e7ff304a46d91a6172a1bfecaf"
	@test -z "$$(git -C $(HOSTAP) status --porcelain)"
remote_sha256.o: $(HOSTAP)/src/crypto/sha256.c
	$(CC) $(CFLAGS) $(C_STANDARD) -I$(HOSTAP)/src/utils -I$(HOSTAP)/src/crypto -MMD -MP -MF remote_sha256.d -c -o $@ $<
remote_sha256_internal.o: $(HOSTAP)/src/crypto/sha256-internal.c
	$(CC) $(CFLAGS) $(C_STANDARD) -I$(HOSTAP)/src/utils -I$(HOSTAP)/src/crypto -MMD -MP -MF remote_sha256_internal.d -c -o $@ $<
.PHONY: core-check
$(CORE_ARCHIVE): core-check
	cmake -S ../../.. -B $(CORE_BUILD) -DCMAKE_TOOLCHAIN_FILE=platform/xroar_proof/pi500-toolchain.cmake -DBMCOCO_BUILD_XROAR_PROOF=ON -DBMCOCO_XROAR_FIXED_PROFILE=ON -DBMCOCO_BUILD_TESTS=OFF
	cmake --build $(CORE_BUILD) --target bmcoco_xroar_core -j8
.PHONY: web-check
$(WEB_ARCHIVE): web-check $(CORE_ARCHIVE)
	cmake --build $(CORE_BUILD) --target bmcoco_web_assets -j4
-include $(DEPS)
