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 |