annotate src/opusfile-0.9/unix/Makefile @ 169:223a55898ab9 tip default

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