Mercurial > hg > sv-dependency-builds
comparison src/opusfile-0.9/unix/Makefile @ 69:7aeed7906520
Add Opus sources and macOS builds
| author | Chris Cannam |
|---|---|
| date | Wed, 23 Jan 2019 13:48:08 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 68:85d5306e114e | 69:7aeed7906520 |
|---|---|
| 1 # NOTE: This Makefile requires GNU make | |
| 2 # Location to put the targets. | |
| 3 TARGETBINDIR = . | |
| 4 TESTBINDIR = tests | |
| 5 TARGETLIBDIR = . | |
| 6 # Name of the targets | |
| 7 LIBOPUSFILE_TARGET = libopusfile.a | |
| 8 LIBOPUSURL_TARGET = libopusurl.a | |
| 9 OPUSFILE_EXAMPLE_TARGET = opusfile_example | |
| 10 SEEKING_EXAMPLE_TARGET = seeking_example | |
| 11 # Test targets | |
| 12 #TODO: tests | |
| 13 FOO_TARGET = foo | |
| 14 # The command to use to generate dependency information | |
| 15 MAKEDEPEND = ${CC} -MM | |
| 16 #MAKEDEPEND = makedepend -f- -Y -- | |
| 17 # Optional features to enable | |
| 18 #CFLAGS := $(CFLAGS) -DOP_HAVE_LRINTF | |
| 19 CFLAGS := $(CFLAGS) -DOP_ENABLE_HTTP | |
| 20 # Extra compilation flags. | |
| 21 # You may get speed increases by including flags such as -O2 or -O3 or | |
| 22 # -ffast-math, or additional flags, depending on your system and compiler. | |
| 23 # The -g flag will generally include debugging information. | |
| 24 CFLAGS := -g $(CFLAGS) | |
| 25 CFLAGS := -DOP_ENABLE_ASSERTIONS $(CFLAGS) | |
| 26 # These are gcc-only, but not actually critical. | |
| 27 CFLAGS := -fPIC $(CFLAGS) | |
| 28 CFLAGS := -std=c89 -pedantic $(CFLAGS) | |
| 29 CFLAGS := -fvisibility=hidden $(CFLAGS) | |
| 30 CFLAGS := -Wextra -Wno-parentheses -Wno-long-long $(CFLAGS) | |
| 31 CFLAGS := -Wall $(CFLAGS) | |
| 32 # The list of pkg-config packages we depend on. | |
| 33 PACKAGES := ogg opus | |
| 34 ifeq ($(findstring -DOP_ENABLE_HTTP,${CFLAGS}),-DOP_ENABLE_HTTP) | |
| 35 PACKAGES += openssl | |
| 36 endif | |
| 37 # The location of include files. | |
| 38 # Modify these to point to your Ogg and Opus include directories if they are | |
| 39 # not installed in a standard location. | |
| 40 CINCLUDE := `pkg-config --cflags ${PACKAGES}` | |
| 41 | |
| 42 # Libraries to link with, and the location of library files. | |
| 43 LIBS := `pkg-config --libs ${PACKAGES}` | |
| 44 ifeq ($(findstring -DOP_HAVE_LRINTF,${CFLAGS}),-DOP_HAVE_LRINTF) | |
| 45 LIBS := -lm $(LIBS) | |
| 46 endif | |
| 47 | |
| 48 # Extras for the MS target | |
| 49 ifneq ($(findstring mingw,${CC}),) | |
| 50 LIBS += -lwsock32 -lws2_32 -lgdi32 -lcrypt32 | |
| 51 EXEEXT := .exe | |
| 52 endif | |
| 53 | |
| 54 RANLIB ?= ranlib | |
| 55 | |
| 56 #TODO: tests | |
| 57 FOO_LIBS = | |
| 58 | |
| 59 # ANYTHING BELOW THIS LINE PROBABLY DOES NOT NEED EDITING | |
| 60 CINCLUDE := -I../include ${CINCLUDE} | |
| 61 LIBSRCDIR = ../src | |
| 62 BINSRCDIR = ../examples | |
| 63 TESTSRCDIR = ${LIBSRCDIR} | |
| 64 WORKDIR = objs | |
| 65 | |
| 66 # C source file lists | |
| 67 LIBOPUSFILE_CSOURCES = \ | |
| 68 http.c \ | |
| 69 info.c \ | |
| 70 internal.c \ | |
| 71 opusfile.c \ | |
| 72 stream.c \ | |
| 73 | |
| 74 LIBOPUSFILE_CHEADERS = \ | |
| 75 internal.h \ | |
| 76 | |
| 77 LIBOPUSURL_CSOURCES = \ | |
| 78 internal.c \ | |
| 79 http.c \ | |
| 80 | |
| 81 ifneq ($(findstring mingw,${CC}),) | |
| 82 LIBOPUSURL_CSOURCES += wincerts.c | |
| 83 endif | |
| 84 | |
| 85 LIBOPUSURL_CHEADERS = \ | |
| 86 internal.h \ | |
| 87 | |
| 88 OPUSFILE_EXAMPLE_CSOURCES = opusfile_example.c | |
| 89 | |
| 90 SEEKING_EXAMPLE_CSOURCES = seeking_example.c | |
| 91 | |
| 92 ifneq ($(findstring mingw,${CC}),) | |
| 93 OPUSFILE_EXAMPLE_CSOURCES += win32utf8.c | |
| 94 SEEKING_EXAMPLE_CSOURCES += win32utf8.c | |
| 95 endif | |
| 96 | |
| 97 FOO_CSOURCES = tests/foo.c | |
| 98 | |
| 99 # Create object file list. | |
| 100 LIBOPUSFILE_OBJS:= ${LIBOPUSFILE_CSOURCES:%.c=${WORKDIR}/%.o} | |
| 101 LIBOPUSFILE_ASMS:= ${LIBOPUSFILE_OBJS:%.o=%.s} | |
| 102 LIBOPUSFILE_DEPS:= ${LIBOPUSFILE_OBJS:%.o=%.d} | |
| 103 LIBOPUSURL_OBJS:= ${LIBOPUSURL_CSOURCES:%.c=${WORKDIR}/%.o} | |
| 104 LIBOPUSURL_ASMS:= ${LIBOPUSURL_OBJS:%.o=%.s} | |
| 105 LIBOPUSURL_DEPS:= ${LIBOPUSURL_OBJS:%.o=%.d} | |
| 106 OPUSFILE_EXAMPLE_OBJS:= ${OPUSFILE_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o} | |
| 107 SEEKING_EXAMPLE_OBJS:= ${SEEKING_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o} | |
| 108 #TODO: tests | |
| 109 FOO_OBJS:= ${FOO_CSOURCES:%.c=${WORKDIR}/%.o} | |
| 110 ALL_OBJS:= \ | |
| 111 ${LIBOPUSFILE_OBJS} \ | |
| 112 ${LIBOPUSURL_OBJS} \ | |
| 113 ${OPUSFILE_EXAMPLE_OBJS} \ | |
| 114 ${SEEKING_EXAMPLE_OBJS} \ | |
| 115 | |
| 116 #TODO: tests | |
| 117 # ${FOO_OBJS} | |
| 118 | |
| 119 # Create the dependency file list | |
| 120 ALL_DEPS:= ${ALL_OBJS:%.o=%.d} | |
| 121 # Prepend source path to file names. | |
| 122 LIBOPUSFILE_CSOURCES:= ${LIBOPUSFILE_CSOURCES:%=${LIBSRCDIR}/%} | |
| 123 LIBOPUSFILE_CHEADERS:= ${LIBOPUSFILE_CHEADERS:%=${LIBSRCDIR}/%} | |
| 124 LIBOPUSURL_CSOURCES:= ${LIBOPUSURL_CSOURCES:%=${LIBSRCDIR}/%} | |
| 125 LIBOPUSURL_CHEADERS:= ${LIBOPUSURL_CHEADERS:%=${LIBSRCDIR}/%} | |
| 126 OPUSFILE_EXAMPLE_CSOURCES:= ${OPUSFILE_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%} | |
| 127 SEEKING_EXAMPLE_CSOURCES:= ${SEEKING_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%} | |
| 128 #TODO: tests | |
| 129 FOO_CSOURCES:= ${FOO_CSOURCES:%=${TESTSRCDIR}/%} | |
| 130 ALL_CSOURCES:= \ | |
| 131 ${LIBOPUSFILE_CSOURCES} \ | |
| 132 ${LIBOPUSURL_CSOURCES} \ | |
| 133 ${OPUSFILE_EXAMPLE_CSOURCES} \ | |
| 134 ${SEEKING_EXAMPLE_CSOURCES} \ | |
| 135 | |
| 136 #TODO: tests | |
| 137 # ${FOO_CSOURCES} \ | |
| 138 # Prepand target path to file names. | |
| 139 LIBOPUSFILE_TARGET:= ${TARGETLIBDIR}/${LIBOPUSFILE_TARGET} | |
| 140 LIBOPUSURL_TARGET:= ${TARGETLIBDIR}/${LIBOPUSURL_TARGET} | |
| 141 OPUSFILE_EXAMPLE_TARGET:= ${TARGETBINDIR}/${OPUSFILE_EXAMPLE_TARGET}${EXEEXT} | |
| 142 SEEKING_EXAMPLE_TARGET:= ${TARGETBINDIR}/${SEEKING_EXAMPLE_TARGET}${EXEEXT} | |
| 143 # Prepend test path to file names. | |
| 144 #TODO: tests | |
| 145 FOO_TARGET:= ${TESTBINDIR}/${FOO_TARGET} | |
| 146 # Complete set of targets | |
| 147 ALL_TARGETS:= \ | |
| 148 ${LIBOPUSFILE_TARGET} \ | |
| 149 ${LIBOPUSURL_TARGET} \ | |
| 150 ${OPUSFILE_EXAMPLE_TARGET} \ | |
| 151 ${SEEKING_EXAMPLE_TARGET} \ | |
| 152 | |
| 153 #TODO: tests | |
| 154 # ${FOO_TARGET} \ | |
| 155 | |
| 156 # Targets: | |
| 157 # Everything (default) | |
| 158 all: ${ALL_TARGETS} | |
| 159 | |
| 160 # libopusfile | |
| 161 ${LIBOPUSFILE_TARGET}: ${LIBOPUSFILE_OBJS} | |
| 162 mkdir -p ${TARGETLIBDIR} | |
| 163 $(AR) cqs $@ ${LIBOPUSFILE_OBJS} | |
| 164 -$(RANLIB) $@ | |
| 165 | |
| 166 # libopusurl | |
| 167 ${LIBOPUSURL_TARGET}: ${LIBOPUSURL_OBJS} | |
| 168 mkdir -p ${TARGETLIBDIR} | |
| 169 $(AR) cqs $@ ${LIBOPUSURL_OBJS} | |
| 170 -$(RANLIB) $@ | |
| 171 | |
| 172 # opusfile_example | |
| 173 ${OPUSFILE_EXAMPLE_TARGET}: ${OPUSFILE_EXAMPLE_OBJS} ${LIBOPUSFILE_TARGET} \ | |
| 174 ${LIBOPUSURL_TARGET} | |
| 175 mkdir -p ${TARGETBINDIR} | |
| 176 ${CC} ${CFLAGS} ${OPUSFILE_EXAMPLE_OBJS} ${LIBOPUSFILE_TARGET} \ | |
| 177 ${LIBOPUSURL_TARGET} ${LIBS} -o $@ | |
| 178 | |
| 179 # seeking_example | |
| 180 ${SEEKING_EXAMPLE_TARGET}: ${SEEKING_EXAMPLE_OBJS} ${LIBOPUSFILE_TARGET} \ | |
| 181 ${LIBOPUSURL_TARGET} | |
| 182 mkdir -p ${TARGETBINDIR} | |
| 183 ${CC} ${CFLAGS} ${SEEKING_EXAMPLE_OBJS} ${LIBOPUSFILE_TARGET} \ | |
| 184 ${LIBOPUSURL_TARGET} ${LIBS} -o $@ | |
| 185 | |
| 186 #TODO: | |
| 187 #tests: foo | |
| 188 # | |
| 189 #${FOO_TARGET}: ${FOO_OBJS} | |
| 190 # mkdir -p ${TESTBINDIR} | |
| 191 # ${CC} ${CFLAGS} ${FOO_OBJS} ${FOO_LIBS} -o $@ | |
| 192 # | |
| 193 #tests-clean: | |
| 194 # -rmdir ${TESTBINDIR} | |
| 195 | |
| 196 # Assembly listing | |
| 197 ALL_ASM := ${ALL_OBJS:%.o=%.s} | |
| 198 asm: ${ALL_ASM} | |
| 199 | |
| 200 # Check that build is complete. | |
| 201 check: all | |
| 202 | |
| 203 # Remove all targets. | |
| 204 clean: | |
| 205 ${RM} ${ALL_ASM} ${ALL_OBJS} ${ALL_DEPS} | |
| 206 ${RM} ${ALL_TARGETS} | |
| 207 -rmdir ${WORKDIR} | |
| 208 | |
| 209 # Make everything depend on changes in the Makefile | |
| 210 # This vpath directive needs to be before any include statements | |
| 211 vpath Makefile $(dir $(lastword $(MAKEFILE_LIST))) | |
| 212 ${ALL_ASM} ${ALL_OBJS} ${ALL_DEPS} ${ALL_TARGETS} : Makefile | |
| 213 | |
| 214 # Specify which targets are phony for GNU make | |
| 215 .PHONY : all clean check | |
| 216 | |
| 217 # Rules | |
| 218 ${WORKDIR}/%.d: ${LIBSRCDIR}/%.c | |
| 219 mkdir -p ${dir $@} | |
| 220 ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.o} > $@ | |
| 221 ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.s} >> $@ | |
| 222 ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT $@ >> $@ | |
| 223 ${WORKDIR}/%.s: ${LIBSRCDIR}/%.c | |
| 224 mkdir -p ${dir $@} | |
| 225 ${CC} ${CINCLUDE} ${CFLAGS} -S -o $@ $< | |
| 226 ${WORKDIR}/%.o: ${LIBSRCDIR}/%.c | |
| 227 mkdir -p ${dir $@} | |
| 228 ${CC} ${CINCLUDE} ${CFLAGS} -c -o $@ $< | |
| 229 | |
| 230 ${WORKDIR}/%.d : ${BINSRCDIR}/%.c | |
| 231 mkdir -p ${dir $@} | |
| 232 ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.o} > $@ | |
| 233 ${WORKDIR}/%.s : ${BINSRCDIR}/%.c ${WORKDIR}/%.o | |
| 234 mkdir -p ${dir $@} | |
| 235 ${CC} ${CINCLUDE} ${CFLAGS} -S -o $@ $< | |
| 236 ${WORKDIR}/%.o : ${BINSRCDIR}/%.c | |
| 237 mkdir -p ${dir $@} | |
| 238 ${CC} ${CINCLUDE} ${CFLAGS} -c -o $@ $< | |
| 239 | |
| 240 # Include header file dependencies, except when cleaning | |
| 241 ifneq ($(MAKECMDGOALS),clean) | |
| 242 include ${ALL_DEPS} | |
| 243 endif |
