Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,4 @@ audiomon.elf

workspace/hash.txt
workspace/readmes
workspace/.container_runtime
44 changes: 35 additions & 9 deletions makefile.toolchain
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# there is no reason to use this makefile manually

.PHONY: build clean
.PHONY: build clean _runtime_check

ifeq (,$(PLATFORM))
$(error please specify PLATFORM, eg. make PLATFORM=trimui)
Expand All @@ -13,28 +13,54 @@ GIT_IF_NECESSARY=toolchains/$(PLATFORM)-toolchain
INIT_IF_NECESSARY=toolchains/$(PLATFORM)-toolchain/.build
IMAGE_NAME=ghcr.io/loveretro/$(PLATFORM)-toolchain:latest

CONTAINER_RUNTIME ?= $(shell command -v docker 2>/dev/null || command -v podman 2>/dev/null)
ifeq (,$(CONTAINER_RUNTIME))
$(error Neither docker nor podman found in PATH)
endif

RUNTIME_MARKER := $(HOST_WORKSPACE)/.container_runtime
LAST_RUNTIME := $(shell cat $(RUNTIME_MARKER) 2>/dev/null)
CURRENT_RUNTIME := $(notdir $(CONTAINER_RUNTIME))

all: $(INIT_IF_NECESSARY)
docker run -it --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) $(IMAGE_NAME) /bin/bash
$(CONTAINER_RUNTIME) run -it --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) $(IMAGE_NAME) /bin/bash

$(INIT_IF_NECESSARY): $(GIT_IF_NECESSARY)
cd toolchains/$(PLATFORM)-toolchain && make .build

$(GIT_IF_NECESSARY):
mkdir -p toolchains
git clone https://github.com/LoveRetro/$(PLATFORM)-toolchain/ toolchains/$(PLATFORM)-toolchain
docker pull $(IMAGE_NAME) && touch toolchains/$(PLATFORM)-toolchain/.build
$(CONTAINER_RUNTIME) pull $(IMAGE_NAME) && touch toolchains/$(PLATFORM)-toolchain/.build

clean:
cd toolchains/$(PLATFORM)-toolchain && make clean

build: $(INIT_IF_NECESSARY)
docker run --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) -e COMPILE_CORES=$(COMPILE_CORES) $(IMAGE_NAME) /bin/bash -c '. ~/.bashrc && cd /root/workspace && make'
_runtime_check:
@if [ -n "$(LAST_RUNTIME)" ] && [ "$(LAST_RUNTIME)" != "$(CURRENT_RUNTIME)" ]; then \
echo "Container runtime changed ($(LAST_RUNTIME) -> $(CURRENT_RUNTIME)), cleaning workspace build artifacts..."; \
PREV=$$(command -v $(LAST_RUNTIME) 2>/dev/null); \
if [ -n "$$PREV" ]; then \
$$PREV run --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) $(IMAGE_NAME) /bin/bash -c \
'find $(GUEST_WORKSPACE) -depth -user root -delete 2>/dev/null; true'; \
else \
echo "Error: previous runtime $(LAST_RUNTIME) not available to clean root-owned artifacts."; \
echo "Run: sudo rm -rf $(HOST_WORKSPACE)/*/build $(HOST_WORKSPACE)/$(PLATFORM)/other"; \
exit 1; \
fi; \
fi

build: $(INIT_IF_NECESSARY) _runtime_check
$(CONTAINER_RUNTIME) run --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) -e COMPILE_CORES=$(COMPILE_CORES) $(IMAGE_NAME) /bin/bash -c '. ~/.bashrc && cd /root/workspace && make'
@echo "$(CURRENT_RUNTIME)" > $(RUNTIME_MARKER)

build-cores: $(INIT_IF_NECESSARY)
docker run --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) -e COMPILE_CORES=$(COMPILE_CORES) $(IMAGE_NAME) /bin/bash -c '. ~/.bashrc && cd /root/workspace && make cores'
build-cores: $(INIT_IF_NECESSARY) _runtime_check
$(CONTAINER_RUNTIME) run --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) -e COMPILE_CORES=$(COMPILE_CORES) $(IMAGE_NAME) /bin/bash -c '. ~/.bashrc && cd /root/workspace && make cores'
@echo "$(CURRENT_RUNTIME)" > $(RUNTIME_MARKER)

build-core: $(INIT_IF_NECESSARY)
build-core: $(INIT_IF_NECESSARY) _runtime_check
ifndef CORE
$(error CORE is not set)
endif
docker run --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) -e COMPILE_CORES=$(COMPILE_CORES) -e CORE=$(CORE) $(IMAGE_NAME) /bin/bash -c '. ~/.bashrc && cd /root/workspace && make core'
$(CONTAINER_RUNTIME) run --rm -v $(HOST_WORKSPACE):$(GUEST_WORKSPACE) -e COMPILE_CORES=$(COMPILE_CORES) -e CORE=$(CORE) $(IMAGE_NAME) /bin/bash -c '. ~/.bashrc && cd /root/workspace && make core'
@echo "$(CURRENT_RUNTIME)" > $(RUNTIME_MARKER)
3 changes: 3 additions & 0 deletions workspace/tg5040/btmanager/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,6 @@ bluez:
cd build && python3 -m zipfile -c nextui.upgrade_bluez.pakz .update_bluez/ post_install.sh

all: bluez

clean:
rm -rf ./build