summaryrefslogtreecommitdiff
path: root/lib/opusfile/unix
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-09 12:00:02 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-09 12:00:02 +1000
commit67caeb6e3cda44205ba8fe783274b20dc7ea216e (patch)
treea2504d177c60e69808073236af8303517cf8fb66 /lib/opusfile/unix
parent578c3737f8c07e543b90f964da0e89db1c18bb9a (diff)
downloadtangara-fw-67caeb6e3cda44205ba8fe783274b20dc7ea216e.tar.gz
Use opusfile instead of working directly with ogg and opus
Diffstat (limited to 'lib/opusfile/unix')
-rw-r--r--lib/opusfile/unix/Makefile243
1 files changed, 243 insertions, 0 deletions
diff --git a/lib/opusfile/unix/Makefile b/lib/opusfile/unix/Makefile
new file mode 100644
index 00000000..a50d3590
--- /dev/null
+++ b/lib/opusfile/unix/Makefile
@@ -0,0 +1,243 @@
+# NOTE: This Makefile requires GNU make
+# Location to put the targets.
+TARGETBINDIR = .
+TESTBINDIR = tests
+TARGETLIBDIR = .
+# Name of the targets
+LIBOPUSFILE_TARGET = libopusfile.a
+LIBOPUSURL_TARGET = libopusurl.a
+OPUSFILE_EXAMPLE_TARGET = opusfile_example
+SEEKING_EXAMPLE_TARGET = seeking_example
+# Test targets
+#TODO: tests
+FOO_TARGET = foo
+# The command to use to generate dependency information
+MAKEDEPEND = ${CC} -MM
+#MAKEDEPEND = makedepend -f- -Y --
+# Optional features to enable
+#CFLAGS := $(CFLAGS) -DOP_HAVE_LRINTF
+CFLAGS := $(CFLAGS) -DOP_ENABLE_HTTP
+# Extra compilation flags.
+# You may get speed increases by including flags such as -O2 or -O3 or
+# -ffast-math, or additional flags, depending on your system and compiler.
+# The -g flag will generally include debugging information.
+CFLAGS := -g $(CFLAGS)
+CFLAGS := -DOP_ENABLE_ASSERTIONS $(CFLAGS)
+# These are gcc-only, but not actually critical.
+CFLAGS := -fPIC $(CFLAGS)
+CFLAGS := -std=c89 -pedantic $(CFLAGS)
+CFLAGS := -fvisibility=hidden $(CFLAGS)
+CFLAGS := -Wextra -Wno-parentheses -Wno-long-long $(CFLAGS)
+CFLAGS := -Wall $(CFLAGS)
+# The list of pkg-config packages we depend on.
+PACKAGES := ogg opus
+ifeq ($(findstring -DOP_ENABLE_HTTP,${CFLAGS}),-DOP_ENABLE_HTTP)
+PACKAGES += openssl
+endif
+# The location of include files.
+# Modify these to point to your Ogg and Opus include directories if they are
+# not installed in a standard location.
+CINCLUDE := `pkg-config --cflags ${PACKAGES}`
+
+# Libraries to link with, and the location of library files.
+LIBS := `pkg-config --libs ${PACKAGES}`
+ifeq ($(findstring -DOP_HAVE_LRINTF,${CFLAGS}),-DOP_HAVE_LRINTF)
+LIBS := -lm $(LIBS)
+endif
+
+# Extras for the MS target
+ifneq ($(findstring mingw,${CC}),)
+LIBS += -lwsock32 -lws2_32 -lgdi32 -lcrypt32
+EXEEXT := .exe
+endif
+
+RANLIB ?= ranlib
+
+#TODO: tests
+FOO_LIBS =
+
+# ANYTHING BELOW THIS LINE PROBABLY DOES NOT NEED EDITING
+CINCLUDE := -I../include ${CINCLUDE}
+LIBSRCDIR = ../src
+BINSRCDIR = ../examples
+TESTSRCDIR = ${LIBSRCDIR}
+WORKDIR = objs
+
+# C source file lists
+LIBOPUSFILE_CSOURCES = \
+http.c \
+info.c \
+internal.c \
+opusfile.c \
+stream.c \
+
+LIBOPUSFILE_CHEADERS = \
+internal.h \
+
+LIBOPUSURL_CSOURCES = \
+internal.c \
+http.c \
+
+ifneq ($(findstring mingw,${CC}),)
+LIBOPUSURL_CSOURCES += wincerts.c
+endif
+
+LIBOPUSURL_CHEADERS = \
+internal.h \
+
+OPUSFILE_EXAMPLE_CSOURCES = opusfile_example.c
+
+SEEKING_EXAMPLE_CSOURCES = seeking_example.c
+
+ifneq ($(findstring mingw,${CC}),)
+OPUSFILE_EXAMPLE_CSOURCES += win32utf8.c
+SEEKING_EXAMPLE_CSOURCES += win32utf8.c
+endif
+
+FOO_CSOURCES = tests/foo.c
+
+# Create object file list.
+LIBOPUSFILE_OBJS:= ${LIBOPUSFILE_CSOURCES:%.c=${WORKDIR}/%.o}
+LIBOPUSFILE_ASMS:= ${LIBOPUSFILE_OBJS:%.o=%.s}
+LIBOPUSFILE_DEPS:= ${LIBOPUSFILE_OBJS:%.o=%.d}
+LIBOPUSURL_OBJS:= ${LIBOPUSURL_CSOURCES:%.c=${WORKDIR}/%.o}
+LIBOPUSURL_ASMS:= ${LIBOPUSURL_OBJS:%.o=%.s}
+LIBOPUSURL_DEPS:= ${LIBOPUSURL_OBJS:%.o=%.d}
+OPUSFILE_EXAMPLE_OBJS:= ${OPUSFILE_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o}
+SEEKING_EXAMPLE_OBJS:= ${SEEKING_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o}
+#TODO: tests
+FOO_OBJS:= ${FOO_CSOURCES:%.c=${WORKDIR}/%.o}
+ALL_OBJS:= \
+ ${LIBOPUSFILE_OBJS} \
+ ${LIBOPUSURL_OBJS} \
+ ${OPUSFILE_EXAMPLE_OBJS} \
+ ${SEEKING_EXAMPLE_OBJS} \
+
+#TODO: tests
+# ${FOO_OBJS}
+
+# Create the dependency file list
+ALL_DEPS:= ${ALL_OBJS:%.o=%.d}
+# Prepend source path to file names.
+LIBOPUSFILE_CSOURCES:= ${LIBOPUSFILE_CSOURCES:%=${LIBSRCDIR}/%}
+LIBOPUSFILE_CHEADERS:= ${LIBOPUSFILE_CHEADERS:%=${LIBSRCDIR}/%}
+LIBOPUSURL_CSOURCES:= ${LIBOPUSURL_CSOURCES:%=${LIBSRCDIR}/%}
+LIBOPUSURL_CHEADERS:= ${LIBOPUSURL_CHEADERS:%=${LIBSRCDIR}/%}
+OPUSFILE_EXAMPLE_CSOURCES:= ${OPUSFILE_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%}
+SEEKING_EXAMPLE_CSOURCES:= ${SEEKING_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%}
+#TODO: tests
+FOO_CSOURCES:= ${FOO_CSOURCES:%=${TESTSRCDIR}/%}
+ALL_CSOURCES:= \
+ ${LIBOPUSFILE_CSOURCES} \
+ ${LIBOPUSURL_CSOURCES} \
+ ${OPUSFILE_EXAMPLE_CSOURCES} \
+ ${SEEKING_EXAMPLE_CSOURCES} \
+
+#TODO: tests
+# ${FOO_CSOURCES} \
+# Prepand target path to file names.
+LIBOPUSFILE_TARGET:= ${TARGETLIBDIR}/${LIBOPUSFILE_TARGET}
+LIBOPUSURL_TARGET:= ${TARGETLIBDIR}/${LIBOPUSURL_TARGET}
+OPUSFILE_EXAMPLE_TARGET:= ${TARGETBINDIR}/${OPUSFILE_EXAMPLE_TARGET}${EXEEXT}
+SEEKING_EXAMPLE_TARGET:= ${TARGETBINDIR}/${SEEKING_EXAMPLE_TARGET}${EXEEXT}
+# Prepend test path to file names.
+#TODO: tests
+FOO_TARGET:= ${TESTBINDIR}/${FOO_TARGET}
+# Complete set of targets
+ALL_TARGETS:= \
+ ${LIBOPUSFILE_TARGET} \
+ ${LIBOPUSURL_TARGET} \
+ ${OPUSFILE_EXAMPLE_TARGET} \
+ ${SEEKING_EXAMPLE_TARGET} \
+
+#TODO: tests
+# ${FOO_TARGET} \
+
+# Targets:
+# Everything (default)
+all: ${ALL_TARGETS}
+
+# libopusfile
+${LIBOPUSFILE_TARGET}: ${LIBOPUSFILE_OBJS}
+ mkdir -p ${TARGETLIBDIR}
+ $(AR) cqs $@ ${LIBOPUSFILE_OBJS}
+ -$(RANLIB) $@
+
+# libopusurl
+${LIBOPUSURL_TARGET}: ${LIBOPUSURL_OBJS}
+ mkdir -p ${TARGETLIBDIR}
+ $(AR) cqs $@ ${LIBOPUSURL_OBJS}
+ -$(RANLIB) $@
+
+# opusfile_example
+${OPUSFILE_EXAMPLE_TARGET}: ${OPUSFILE_EXAMPLE_OBJS} ${LIBOPUSFILE_TARGET} \
+ ${LIBOPUSURL_TARGET}
+ mkdir -p ${TARGETBINDIR}
+ ${CC} ${CFLAGS} ${OPUSFILE_EXAMPLE_OBJS} ${LIBOPUSFILE_TARGET} \
+ ${LIBOPUSURL_TARGET} ${LIBS} -o $@
+
+# seeking_example
+${SEEKING_EXAMPLE_TARGET}: ${SEEKING_EXAMPLE_OBJS} ${LIBOPUSFILE_TARGET} \
+ ${LIBOPUSURL_TARGET}
+ mkdir -p ${TARGETBINDIR}
+ ${CC} ${CFLAGS} ${SEEKING_EXAMPLE_OBJS} ${LIBOPUSFILE_TARGET} \
+ ${LIBOPUSURL_TARGET} ${LIBS} -o $@
+
+#TODO:
+#tests: foo
+#
+#${FOO_TARGET}: ${FOO_OBJS}
+# mkdir -p ${TESTBINDIR}
+# ${CC} ${CFLAGS} ${FOO_OBJS} ${FOO_LIBS} -o $@
+#
+#tests-clean:
+# -rmdir ${TESTBINDIR}
+
+# Assembly listing
+ALL_ASM := ${ALL_OBJS:%.o=%.s}
+asm: ${ALL_ASM}
+
+# Check that build is complete.
+check: all
+
+# Remove all targets.
+clean:
+ ${RM} ${ALL_ASM} ${ALL_OBJS} ${ALL_DEPS}
+ ${RM} ${ALL_TARGETS}
+ -rmdir ${WORKDIR}
+
+# Make everything depend on changes in the Makefile
+# This vpath directive needs to be before any include statements
+vpath Makefile $(dir $(lastword $(MAKEFILE_LIST)))
+${ALL_ASM} ${ALL_OBJS} ${ALL_DEPS} ${ALL_TARGETS} : Makefile
+
+# Specify which targets are phony for GNU make
+.PHONY : all clean check
+
+# Rules
+${WORKDIR}/%.d: ${LIBSRCDIR}/%.c
+ mkdir -p ${dir $@}
+ ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.o} > $@
+ ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.s} >> $@
+ ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT $@ >> $@
+${WORKDIR}/%.s: ${LIBSRCDIR}/%.c
+ mkdir -p ${dir $@}
+ ${CC} ${CINCLUDE} ${CFLAGS} -S -o $@ $<
+${WORKDIR}/%.o: ${LIBSRCDIR}/%.c
+ mkdir -p ${dir $@}
+ ${CC} ${CINCLUDE} ${CFLAGS} -c -o $@ $<
+
+${WORKDIR}/%.d : ${BINSRCDIR}/%.c
+ mkdir -p ${dir $@}
+ ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.o} > $@
+${WORKDIR}/%.s : ${BINSRCDIR}/%.c ${WORKDIR}/%.o
+ mkdir -p ${dir $@}
+ ${CC} ${CINCLUDE} ${CFLAGS} -S -o $@ $<
+${WORKDIR}/%.o : ${BINSRCDIR}/%.c
+ mkdir -p ${dir $@}
+ ${CC} ${CINCLUDE} ${CFLAGS} -c -o $@ $<
+
+# Include header file dependencies, except when cleaning
+ifneq ($(MAKECMDGOALS),clean)
+include ${ALL_DEPS}
+endif