Files
RetroArch/libretro-common/samples/net/rtmp/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

72 lines
5.3 KiB
Makefile

CC ?= cc
LRC := ../../..
include ../../sample_objdir.mk
CFLAGS += -O1 -g1 -std=c89 -pedantic -Wall -Wextra -Werror -Wframe-larger-than=2048 -I$(LRC)/include
ifneq ($(findstring clang,$(shell $(CC) --version 2>/dev/null)),)
CFLAGS += -Wno-c99-extensions -Wno-c11-extensions
endif
ifneq ($(SANITIZER),)
CFLAGS += -fsanitize=$(SANITIZER) -fno-omit-frame-pointer
LDFLAGS += -fsanitize=$(SANITIZER)
endif
all: rtmp_chunk_test$(EXE) rtmp_handshake_test$(EXE) rtmp_receive_test$(EXE) rtmp_command_test$(EXE) rtmp_reply_test$(EXE) rtmp_publish_test$(EXE) rtmp_control_test$(EXE) rtmp_session_test$(EXE) rtmp_socket_test$(EXE) rtmp_socket_native_test$(EXE)
SESSION := $(LRC)/net/net_rtmp_session.c $(LRC)/net/net_rtmp_handshake.c $(LRC)/net/net_rtmp_chunk.c $(LRC)/net/net_rtmp_receive.c $(LRC)/net/net_rtmp_publish.c $(LRC)/net/net_rtmp_command.c $(LRC)/net/net_rtmp_reply.c $(LRC)/net/net_rtmp_control.c
rtmp_session_test$(EXE): rtmp_session_test.c $(SESSION) $(wildcard $(LRC)/include/net/net_rtmp*.h)
$(CC) $(CFLAGS) -o $@ rtmp_session_test.c $(SESSION) $(LDFLAGS)
rtmp_socket_test$(EXE): rtmp_socket_test.c $(SESSION) $(LRC)/net/net_rtmp_socket.c $(wildcard $(LRC)/include/net/net_rtmp*.h)
$(CC) $(CFLAGS) -D_GNU_SOURCE -o $@ rtmp_socket_test.c $(SESSION) $(LDFLAGS)
NETWORK := $(LRC)/net/net_socket.c $(LRC)/net/net_compat.c $(LRC)/features/features_cpu.c $(LRC)/string/stdstring.c $(LRC)/string/rstrtod.c $(LRC)/compat/compat_strl.c $(LRC)/compat/compat_posix_string.c $(LRC)/encodings/encoding_utf.c $(LRC)/time/rtime.c
NETWORK_OBJS := $(call sample_objs,$(NETWORK:.c=.o))
NETWORK_LIBS := -lm $(if $(findstring mingw,$(shell $(CC) -dumpmachine)),-lws2_32 -lwinmm,)
rtmp_socket_native_test$(EXE): rtmp_socket_native_test.c $(SESSION) $(NETWORK_OBJS) $(LRC)/net/net_rtmp_socket.c $(wildcard $(LRC)/include/net/net_rtmp*.h)
$(CC) $(CFLAGS) -D_GNU_SOURCE -o $@ rtmp_socket_native_test.c $(SESSION) $(LRC)/net/net_rtmp_socket.c $(NETWORK_OBJS) $(LDFLAGS) $(NETWORK_LIBS)
$(SAMPLE_OBJDIR)/%.o: $$(call sample_src,$$*).c
@mkdir -p $(@D)
$(CC) $(filter-out -pedantic -Werror,$(CFLAGS)) -D_GNU_SOURCE -c -o $@ $<
rtmp_control_test$(EXE): rtmp_control_test.c $(LRC)/net/net_rtmp_control.c $(LRC)/net/net_rtmp_receive.c $(LRC)/include/net/net_rtmp_control.h
$(CC) $(CFLAGS) -o $@ rtmp_control_test.c $(LRC)/net/net_rtmp_control.c $(LRC)/net/net_rtmp_receive.c $(LDFLAGS)
rtmp_chunk_test$(EXE): rtmp_chunk_test.c $(LRC)/net/net_rtmp_chunk.c $(LRC)/include/net/net_rtmp_chunk.h
$(CC) $(CFLAGS) -o $@ rtmp_chunk_test.c $(LRC)/net/net_rtmp_chunk.c $(LDFLAGS)
rtmp_handshake_test$(EXE): rtmp_handshake_test.c $(LRC)/net/net_rtmp_handshake.c $(LRC)/include/net/net_rtmp_handshake.h $(LRC)/include/net/net_rtmp_chunk.h
$(CC) $(CFLAGS) -o $@ rtmp_handshake_test.c $(LRC)/net/net_rtmp_handshake.c $(LDFLAGS)
rtmp_receive_test$(EXE): rtmp_receive_test.c $(LRC)/net/net_rtmp_receive.c $(LRC)/include/net/net_rtmp_receive.h $(LRC)/include/net/net_rtmp_chunk.h
$(CC) $(CFLAGS) -o $@ rtmp_receive_test.c $(LRC)/net/net_rtmp_receive.c $(LDFLAGS)
rtmp_command_test$(EXE): rtmp_command_test.c $(LRC)/net/net_rtmp_command.c $(LRC)/include/net/net_rtmp_command.h $(LRC)/include/net/net_rtmp_chunk.h
$(CC) $(CFLAGS) -o $@ rtmp_command_test.c $(LRC)/net/net_rtmp_command.c $(LDFLAGS)
rtmp_reply_test$(EXE): rtmp_reply_test.c $(LRC)/net/net_rtmp_reply.c $(LRC)/include/net/net_rtmp_reply.h $(LRC)/include/net/net_rtmp_chunk.h
$(CC) $(CFLAGS) -o $@ rtmp_reply_test.c $(LRC)/net/net_rtmp_reply.c $(LDFLAGS)
PUBLISH := $(LRC)/net/net_rtmp_publish.c $(LRC)/net/net_rtmp_command.c $(LRC)/net/net_rtmp_reply.c
PUBLISH_HEADERS := $(LRC)/include/net/net_rtmp_publish.h $(LRC)/include/net/net_rtmp_command.h $(LRC)/include/net/net_rtmp_reply.h $(LRC)/include/net/net_rtmp_receive.h $(LRC)/include/net/net_rtmp_chunk.h
rtmp_publish_test$(EXE): rtmp_publish_test.c $(PUBLISH) $(PUBLISH_HEADERS)
$(CC) $(CFLAGS) -o $@ rtmp_publish_test.c $(PUBLISH) $(LDFLAGS)
check: all
$(RUNNER) ./rtmp_chunk_test$(EXE)
$(RUNNER) ./rtmp_handshake_test$(EXE)
$(RUNNER) ./rtmp_receive_test$(EXE)
$(RUNNER) ./rtmp_command_test$(EXE)
$(RUNNER) ./rtmp_reply_test$(EXE)
$(RUNNER) ./rtmp_publish_test$(EXE)
$(RUNNER) ./rtmp_control_test$(EXE)
$(RUNNER) ./rtmp_session_test$(EXE)
$(RUNNER) ./rtmp_socket_test$(EXE)
python3 run.py --runner "$(RUNNER)" ./rtmp_chunk_test$(EXE)
python3 receive.py --runner "$(RUNNER)" ./rtmp_receive_test$(EXE)
python3 command.py --runner "$(RUNNER)" ./rtmp_command_test$(EXE)
python3 reply.py --runner "$(RUNNER)" ./rtmp_reply_test$(EXE)
peer-check: all
python3 peer.py --runner "$(RUNNER)" --receive-binary ./rtmp_receive_test$(EXE) --command-binary ./rtmp_command_test$(EXE) --reply-binary ./rtmp_reply_test$(EXE) ./rtmp_handshake_test$(EXE)
python3 session_peer.py --runner "$(RUNNER)" ./rtmp_session_test$(EXE)
python3 session_peer.py --runner "$(RUNNER)" --socket-binary ./rtmp_socket_native_test$(EXE) ./rtmp_session_test$(EXE)
clean:
rm -rf $(SAMPLE_OBJDIR)
rm -f rtmp_chunk_test rtmp_chunk_test.exe rtmp_handshake_test rtmp_handshake_test.exe
rm -f rtmp_receive_test rtmp_receive_test.exe
rm -f rtmp_command_test rtmp_command_test.exe
rm -f rtmp_reply_test rtmp_reply_test.exe
rm -f rtmp_publish_test rtmp_publish_test.exe
rm -f rtmp_control_test rtmp_control_test.exe
rm -f rtmp_session_test rtmp_session_test.exe
rm -f rtmp_socket_test rtmp_socket_test.exe
rm -f rtmp_socket_native_test rtmp_socket_native_test.exe
.PHONY: all check peer-check clean