# SPDX-License-Identifier: AGPL-3.0-or-later # Copyright (C) 2026 David (Corey) Herrera # Foundry Blackhole backend — Phase 5's off-device suite. # # make -f Makefile.queue check # build and run; no card, no fence needed # make -f Makefile.queue red # rebuild from scratch first # # Separate from the other four Makefiles for the same reason they are separate from each # other: this file can be edited without touching a build that is already green. # # NO DEVICE. test_queue.c runs against simulated cores behind the ft_tt_noc_access vtable # and a software MODEL of the resident kernel, so it runs on the Mac. What it cannot cover # is whether kernels/resident_queue.c compiles to that model — that is # Makefile.phase5's test_phase5_resident on silicon, and nothing here substitutes for it. # # `red` rebuilds from scratch every time: Apple ships GNU make 3.81, whose one-second # mtime granularity silently skips a rebuild of a source edited in the same second as its # object, so a mutation loop that relies on incremental make can be testing the PREVIOUS # binary (coding-best-practices.md §9). CC ?= cc SRC_DIR := .. BUILD := build-queue CFLAGS := -std=c99 -O1 -g \ -Wall -Wextra -Werror -pedantic \ -Wshadow -Wconversion -Wstrict-prototypes -Wformat=2 \ -fstack-protector-strong \ -I$(SRC_DIR) DEPFLAGS := -MMD -MP SOURCES := $(SRC_DIR)/ft_tt_kmd.c \ $(SRC_DIR)/ft_tt_arch.c \ $(SRC_DIR)/ft_tt_arch_blackhole.c \ $(SRC_DIR)/ft_tt_device.c \ $(SRC_DIR)/ft_tt_tlb.c \ $(SRC_DIR)/ft_tt_coord.c \ $(SRC_DIR)/ft_tt_noc.c \ $(SRC_DIR)/ft_tt_buffer.c \ $(SRC_DIR)/ft_tt_elf.c \ $(SRC_DIR)/ft_tt_kernel_blob.c \ $(SRC_DIR)/ft_tt_launch.c \ $(SRC_DIR)/ft_tt_queue.c \ $(SRC_DIR)/ft_tt_group.c \ $(SRC_DIR)/ft_tt_watchdog.c \ test_queue.c OBJECTS := $(addprefix $(BUILD)/,$(notdir $(SOURCES:.c=.o))) TARGET := $(BUILD)/test_queue .PHONY: all check red clean all: $(TARGET) $(BUILD): mkdir -p $(BUILD) $(BUILD)/%.o: $(SRC_DIR)/%.c | $(BUILD) $(CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@ $(BUILD)/%.o: %.c | $(BUILD) $(CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@ $(TARGET): $(OBJECTS) $(CC) $(CFLAGS) $(OBJECTS) -o $@ check: $(TARGET) ./$(TARGET) red: clean check clean: rm -rf $(BUILD) -include $(wildcard $(BUILD)/*.d)