1 diff -ruN a/Makefile b/Makefile
2 --- a/Makefile 1969-12-31 17:00:00.000000000 -0700
3 +++ b/Makefile 2020-03-12 17:08:48.095517451 -0600
6 +_ARCH := $(shell uname -m)
7 +ARCH_I32 := $(shell expr "x$(_ARCH)" : 'xi[346]86.*')
8 +ARCH_X64 := $(shell expr "x$(_ARCH)" : 'x..._64*')
10 +ifneq ($(ARCH_I32),0)
15 +ifneq ($(ARCH_X64),0)
25 +INCDIR=$(PREFIX)/include
26 +# make Q="" for verbose
28 +OBJDIR?=$(BUILD)/static
29 +NASM_BLD=$(OBJDIR)/nasm
30 +ENTRY_BLD=$(OBJDIR)/entry
31 +SRC_BLD=$(OBJDIR)/src
32 +BIT8_BLD=$(OBJDIR)/bits8
33 +BIT16_BLD=$(OBJDIR)/bits16
34 +TOOLS_BLD=$(BUILD)/tools
35 +TESTS_BLD=$(BUILD)/tests
37 +STATIC_LIB=$(BUILD)/src/libdav1d.a
38 +SHARED_LIB=$(BUILD)/src/libdav1d.so
39 +DEFS= -DNDEBUG -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
40 +FUZZ= -DDAV1D_MT_FUZZING
42 +BLD_INCL= $(DEFS) -I. -Isrc -Iinclude/dav1d -Iinclude \
43 + -I$(BUILD) -I$(BUILD)/include -I$(BUILD)/include/dav1d
44 +TOOLS_INCL= $(DEFS) -Itools -I. -I$(BUILD) -I$(BUILD)/tools \
45 + -Iinclude -Iinclude/dav1d -I$(BUILD)/include/dav1d \
46 + -I$(BUILD)/include -I/usr/include/SDL2
50 +MAKE_P:=$(MAKE) -j NP=""
53 + $(MAKE_P) $(STATIC_LIB) OBJDIR=$(BUILD)/static
54 + $(MAKE_P) $(SHARED_LIB) OBJDIR=$(BUILD)/shared
56 +# $(MAKE_P) $(TOOLS) OBJDIR=$(BUILD)/static
57 +# $(MAKE_P) $(TESTS) OBJDIR=$(BUILD)/static
61 + -D_FILE_OFFSET_BITS=64 \
62 + -D_POSIX_C_SOURCE=200112L \
71 + -fvisibility=hidden \
74 + -Wno-maybe-uninitialized \
75 + -Wno-missing-field-initializers \
76 + -Wno-unused-parameter \
77 + -Werror=missing-prototypes \
78 + -fomit-frame-pointer \
81 + -mpreferred-stack-boundary=6 \
82 + -MD -MQ $@ -MF $@.d \
85 + -Wl,--no-undefined \
91 + -Wl,-soname,libdav1d.so.4 \
95 +CC_CC=$(Q)cc $(CC_OPTS) $(CFLAGS)
96 +NASM=$(Q)/usr/bin/nasm
97 +any=$(foreach i,$(2),$(1)/$(i))
100 +NASM_OBJS=$(call any,$(NASM_BLD), \
108 + looprestoration.obj \
111 + film_grain_ssse3.obj \
114 + loopfilter_ssse3.obj \
115 + looprestoration_ssse3.obj \
118 +$(NASM_BLD)/%.obj: src/x86/%.asm
119 + $(NASM) -f $(ASM_ARCH) \
120 + -I src/ -I $(BUILD)/ -MQ $@ -MF $@.ndep \
124 +ENTRY_OBJS=$(call any,$(ENTRY_BLD), \
127 +$(ENTRY_BLD)/%.c.o: src/%.c
128 + $(CC_CC) -Iinclude -Ibuild/include/dav1d -Isrc/entry $(BLD_INCL) \
129 + -mincoming-stack-boundary=4 -o $@ -c $<
132 +SRC_OBJS=$(call any,$(SRC_BLD), \
155 +$(SRC_BLD)/%.o: src/%.c
156 + $(CC_CC) $(BLD_INCL) -pthread -o $@ -c $<
157 +$(SRC_BLD)/x86/%.c.o: src/x86/%.c
158 + $(CC_CC) $(BLD_INCL) -o $@ -c $<
163 + cdef_apply_tmpl.o \
165 + film_grain_tmpl.o \
167 + ipred_prepare_tmpl.o \
170 + loopfilter_tmpl.o \
171 + looprestoration_tmpl.o \
175 + x86/cdef_init_tmpl.c.o \
176 + x86/film_grain_init_tmpl.c.o \
177 + x86/ipred_init_tmpl.c.o \
178 + x86/itx_init_tmpl.c.o \
179 + x86/loopfilter_init_tmpl.c.o \
180 + x86/looprestoration_init_tmpl.c.o \
181 + x86/mc_init_tmpl.c.o \
183 +BIT8_OBJS=$(call any,$(BIT8_BLD),$(BITS_OBJS))
184 +$(BIT8_BLD)/x86/%.c.o: src/x86/%.c
185 + $(CC_CC) $(BLD_INCL) -DBITDEPTH=8 -o $@ -c $<
186 +$(BIT8_BLD)/%.o: src/%.c
187 + $(CC_CC) $(BLD_INCL) -DBITDEPTH=8 -o $@ -c $<
189 +BIT16_OBJS=$(call any,$(BIT16_BLD),$(BITS_OBJS))
190 +$(BIT16_BLD)/x86/%.c.o: src/x86/%.c
191 + $(CC_CC) $(BLD_INCL) -DBITDEPTH=16 -o $@ -c $<
192 +$(BIT16_BLD)/%.o: src/%.c
193 + $(CC_CC) $(BLD_INCL) -DBITDEPTH=16 -o $@ -c $<
196 + echo > $@ "#pragma once"
197 + echo >> $@ "#define ARCH_AARCH64 0"
198 + echo >> $@ "#define ARCH_ARM 0"
199 + echo >> $@ "#define ARCH_PPC64LE 0"
200 + echo >> $@ "#define ARCH_X86 1"
201 + echo >> $@ "#define ARCH_X86_32 $(ARCH_X86_32)"
202 + echo >> $@ "#define ARCH_X86_64 $(ARCH_X86_64)"
203 + echo >> $@ "#define CONFIG_16BPC 1"
204 + echo >> $@ "#define CONFIG_8BPC 1"
205 + echo >> $@ "#define CONFIG_LOG 1"
206 + echo >> $@ "#define ENDIANNESS_BIG 0"
207 + echo >> $@ "#define HAVE_ASM 1"
208 + echo >> $@ "#define HAVE_POSIX_MEMALIGN 1"
209 + echo >> $@ "#define HAVE_UNISTD_H 1"
210 + echo >> $@ "#define STACK_ALIGNMENT 64"
212 +$(BUILD)/config.asm:
213 + echo > $@ "%define ARCH_X86_32 $(ARCH_X86_32)"
214 + echo >> $@ "%define ARCH_X86_64 $(ARCH_X86_64)"
215 + echo >> $@ "%define PIC 1"
216 + echo >> $@ "%define STACK_ALIGNMENT 64"
218 +$(BUILD)/include/vcs_version.h:
219 + mkdir -p $(BUILD)/include
220 + echo > $@ "#define DAV1D_VERSION \"0.6.0\""
222 +$(BUILD)/include/dav1d/version.h:
223 + mkdir -p $(BUILD)/include/dav1d
224 + echo > $@ "#ifndef DAV1D_VERSION_H"
225 + echo >> $@ "#define DAV1D_VERSION_H"
226 + echo >> $@ "#define DAV1D_API_VERSION_MAJOR 2"
227 + echo >> $@ "#define DAV1D_API_VERSION_MINOR 0"
228 + echo >> $@ "#define DAV1D_API_VERSION_PATCH 0"
229 + echo >> $@ "#endif /* DAV1D_VERSION_H */"
231 +$(TOOLS_BLD)/cli_config.h:
232 + mkdir -p $(TOOLS_BLD)
233 + echo > $@ "#pragma once"
234 + echo >> $@ "#define HAVE_CLOCK_GETTIME 1"
238 + make meson_dirs OBJDIR=$(BUILD)/static
239 + make meson_dirs OBJDIR=$(BUILD)/shared
240 + ln -sf ./include/compat/gcc/stdatomic.h .
243 +meson_dirs: $(OBJDIR) \
244 + $(BUILD)/config.h $(BUILD)/config.asm \
245 + $(BUILD)/include/vcs_version.h \
246 + $(BUILD)/include/dav1d/version.h \
247 + $(TOOLS_BLD)/cli_config.h \
249 +LIB_OBJS=$(ENTRY_OBJS) $(NASM_OBJS) $(SRC_OBJS) $(BIT8_OBJS) $(BIT16_OBJS)
251 +$(STATIC_LIB): DIR?=static
252 +$(STATIC_LIB): $(LIB_OBJS)
254 + gcc-ar csrD $@ $(LIB_OBJS)
256 +$(SHARED_LIB): DIR?=shared
257 +$(SHARED_LIB): $(LIB_OBJS)
259 + cc -o $@ $(LIB_OBJS) $(SHA_OPTS)
262 +DAV1D_OBJS=$(call any,$(TOOLS_BLD),\
264 + dav1d_cli_parse.o \
275 +DAV1DPLAY_OBJS=$(call any,$(TOOLS_BLD),\
276 + ../examples/dav1dplay.o \
282 +$(TOOLS_BLD)/%.o: tools/%.c
283 + $(CC_CC) $(TOOLS_INCL) -o $@ -c $<
285 +DAV1D=$(TOOLS_BLD)/dav1d
286 +$(DAV1D): $(DAV1D_OBJS)
287 + $(CC_CC) -pthread -I$(BUILD) -o $@ $(DAV1D_OBJS) $(STATIC_LIB)
289 +DAV1DPLAY=$(TOOLS_BLD)/dav1dplay
290 +$(DAV1DPLAY): $(DAV1DPLAY_OBJS)
291 + $(CC_CC) -pthread -o $(TOOLS_BLD)/dav1dplay $(DAV1DPLAY_OBJS) $(STATIC_LIB) -lSDL2
293 +TOOLS=$(DAV1D) $(DAV1DPLAY)
298 +TESTS_CHKASM=tests/checkasm
299 +TESTS_CHKASM_BLD=$(TESTS_BLD)/checkasm
300 +CHKASM_BIT8=$(TESTS_CHKASM_BLD)/bit8
301 +CHKASM_BIT16=$(TESTS_CHKASM_BLD)/bit16
307 + looprestoration.o \
310 +CHKASM_BIT8_OBJS=$(call any,$(CHKASM_BIT8),$(CHKASM_BITS))
311 +CHKASM_BIT16_OBJS=$(call any,$(CHKASM_BIT16),$(CHKASM_BITS))
313 +TESTS_CHKASM_OBJS= \
314 + $(TESTS_CHKASM_BLD)/checkasm.o \
315 + $(TESTS_CHKASM_BLD)/msac.o \
316 + $(CHKASM_BIT8_OBJS) $(CHKASM_BIT16_OBJS) \
317 + $(TESTS_CHKASM_BLD)/x86/checkasm.obj \
319 +$(TESTS_CHKASM_BLD)/%.o: $(TESTS_CHKASM)/%.c
320 + $(CC_CC) $(BLD_INCL) -o $@ -c $<
321 +$(CHKASM_BIT8)/%.o: $(TESTS_CHKASM)/%.c
322 + $(CC_CC) $(BLD_INCL) -DBITDEPTH=8 -o $@ -c $<
323 +$(CHKASM_BIT16)/%.o: $(TESTS_CHKASM)/%.c
324 + $(CC_CC) $(BLD_INCL) -DBITDEPTH=16 -o $@ -c $<
325 +$(TESTS_CHKASM_BLD)/x86/%.obj: $(TESTS_CHKASM)/x86/%.asm
326 + @$(NASM) -f $(ASM_ARCH) \
327 + -I src/ -I $(BUILD)/ -MQ $@ -MF $@.ndep \
330 +CHECKASM=$(TESTS_BLD)/checkasm/checkasm
331 +$(CHECKASM): $(TESTS_CHKASM_OBJS) $(STATIC_LIB)
332 + $(CC_CC) -pthread -o $@ $(TESTS_CHKASM_OBJS) $(STATIC_LIB) -lm
334 +TESTS_FUZZER=tests/libfuzzer
335 +TESTS_FUZZER_BLD=$(TESTS_BLD)/libfuzzer
336 +TESTS_FUZZER_OBJS= \
337 + $(TESTS_FUZZER_BLD)/main.o \
338 + $(TESTS_FUZZER_BLD)/dav1d_fuzzer.o \
340 +$(TESTS_FUZZER_BLD)/%.o: $(TESTS_FUZZER)/%.c
341 + $(CC_CC) $(BLD_INCL) -o $@ -c $<
343 +DAV1D_FUZZER=$(TESTS_BLD)/dav1d_fuzzer
344 +$(DAV1D_FUZZER): $(TESTS_FUZZER_OBJS) $(STATIC_LIB)
345 + $(CC_CC) -pthread -o $@ $(TESTS_FUZZER_OBJS) $(STATIC_LIB)
347 +TESTS=$(CHECKASM) $(DAV1D_FUZZER)
352 + mkdir -p $@/include/dav1d \
353 + $(BUILD)/src $(BUILD)/include $(BUILD)/examples \
354 + $(ENTRY_BLD) $(NASM_BLD) \
355 + $(SRC_BLD)/x86 $(BIT8_BLD)/x86 $(BIT16_BLD)/x86 \
356 + $(TOOLS_BLD) $(TOOLS_BLD)/input $(TOOLS_BLD)/output \
357 + $(TESTS_CHKASM_BLD)/bit8 $(TESTS_CHKASM_BLD)/bit16 \
358 + $(TESTS_CHKASM_BLD)/x86 $(TESTS_FUZZER_BLD) \
364 + mkdir -p $(DESTDIR)$(LIBDIR)
365 + cp -a $(STATIC_LIB) $(DESTDIR)$(LIBDIR)
366 + cp -a $(SHARED_LIB) $(DESTDIR)$(LIBDIR)
367 + mkdir -p $(DESTDIR)$(INCDIR)
368 + cp -a include/dav1d $(DESTDIR)$(INCDIR)
369 + rm -f $(DESTDIR)$(INCDIR)/dav1d/meson.build
370 + rm -f $(DESTDIR)$(INCDIR)/dav1d/version.h.in
371 + cp -a $(BUILD)/include/dav1d/version.h $(DESTDIR)$(INCDIR)/version.h