Mercurial > hg > sv-dependency-builds
diff src/opusfile-0.9/unix/Makefile @ 154:4664ac0c1032
Add Opus sources and macOS builds
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Wed, 23 Jan 2019 13:48:08 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/opusfile-0.9/unix/Makefile Wed Jan 23 13:48:08 2019 +0000 @@ -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