Files
RetroArch/samples/gfx/vulkan_custom_driver/Makefile
T
LibretroAdmin a4172fdafd CI: the lanes Ubuntu 26.04 broke, and the formats warnings
Built with ffmpeg 8, libaom 3.13, x265 4.1, glibc 2.43 and clang 21,
five lanes failed on the 26.04 runners:

- AV1 fixtures: a monochrome sequence comes out full range with no
  matrix whatever is asked for; the oracle takes the colour ffprobe
  reads instead of assuming it.
- Preview audio oracle: ffmpeg 8 leaves a timestamp gap at every seam
  of a -stream_loop copy, which the mixer honours and ffmpeg's raw
  decode does not. trailing_large loops its picture and encodes its
  sound as one track.
- rh265 multi-slice oracle: x265 4.1 writes unreadable slice headers
  when two slices are encoded on several threads; those cases encode
  on one worker.
- vkms: the kernel follows the runner's own release, its modules may
  sit under /usr/lib/modules, and modules-extra is fetched only where
  it exists.
- clang -std=c89 -pedantic: glibc's const-generic strchr/strstr under
  _GNU_SOURCE are _Generic; -Wno-c11-extensions goes wherever
  -Wno-c99-extensions already does.

ci_paths filters a file at the top of a samples tree by its own path.
rh264 and rh265 lose the parameters no instantiation reads, the 8-bit
H.264 kernels mark the depth they ignore, and the AV1 WebM fixtures
leave out the MP4 box writer they never use.
2026-11-05 17:36:02 +01:00

71 lines
2.2 KiB
Makefile

include ../../sample_objdir.mk
TARGET := vulkan_custom_driver_test
# The pure half of the Android custom Vulkan driver loader, fed from
# buffers: package checks, the extraction key, the crash state, the
# session's choices and the loader copy's soname patch. Builds on Linux
# and with mingw-w64.
REPO_ROOT := ../../..
LIBRETRO_COMM_DIR := $(REPO_ROOT)/libretro-common
SOURCES := vulkan_custom_driver_test.c \
$(REPO_ROOT)/gfx/common/vulkan_custom_driver.c \
$(REPO_ROOT)/gfx/common/vulkan_custom_driver_linker.c \
$(LIBRETRO_COMM_DIR)/formats/json/rjson.c \
$(LIBRETRO_COMM_DIR)/string/rstrtod.c \
$(LIBRETRO_COMM_DIR)/encodings/encoding_crc32.c \
$(LIBRETRO_COMM_DIR)/features/features_cpu.c \
$(LIBRETRO_COMM_DIR)/lists/string_list.c \
$(LIBRETRO_COMM_DIR)/compat/compat_strl.c \
$(LIBRETRO_COMM_DIR)/time/rtime.c
ifneq ($(findstring mingw,$(CC)),)
EXE := .exe
else
EXE :=
endif
CFLAGS += -Wall -g1 -O0 -I$(LIBRETRO_COMM_DIR)/include
OBJS := $(call sample_objs,$(SOURCES:.c=.o))
# libretro-common is built as the tree builds it; vulkan_custom_driver*.c
# and the test as C89
STRICT_OBJS := vulkan_custom_driver_test.o \
$(call sample_objs,$(REPO_ROOT)/gfx/common/vulkan_custom_driver.o) \
$(call sample_objs,$(REPO_ROOT)/gfx/common/vulkan_custom_driver_linker.o)
STRICT_FLAGS := -std=c89 -pedantic -Wdeclaration-after-statement \
-Wframe-larger-than=4096 -Werror
ifneq ($(findstring clang,$(shell $(CC) --version 2>/dev/null)),)
# boolean.h uses the compiler _Bool spelling in C89 builds.
STRICT_FLAGS += -Wno-c99-extensions -Wno-c11-extensions
endif
$(STRICT_OBJS): CFLAGS += $(STRICT_FLAGS)
ifneq ($(SANITIZER),)
CFLAGS := -fsanitize=$(SANITIZER) -fno-omit-frame-pointer $(CFLAGS)
LDFLAGS := -fsanitize=$(SANITIZER) $(LDFLAGS)
endif
all: $(TARGET)$(EXE)
%.o: %.c
$(CC) -c -o $@ $< $(CFLAGS)
$(SAMPLE_OBJDIR)/%.o: $$(call sample_src,$$*).c
@mkdir -p $(@D)
$(CC) -c -o $@ $< $(CFLAGS)
$(TARGET)$(EXE): $(OBJS)
$(CC) -o $@ $^ $(LDFLAGS)
check: all
$(RUNNER) ./$(TARGET)$(EXE)
clean:
rm -rf $(SAMPLE_OBJDIR)
rm -f $(TARGET) $(TARGET).exe $(OBJS)
.PHONY: all check clean