upgrade vpx to 1.8.1, rm meson prereq and add dav1d Makefile, warn/gettid patch
[goodguy/cinelerra.git] / cinelerra-5.1 / thirdparty / src / dav1d-0.4.0.patch1
diff --git a/cinelerra-5.1/thirdparty/src/dav1d-0.4.0.patch1 b/cinelerra-5.1/thirdparty/src/dav1d-0.4.0.patch1
new file mode 100644 (file)
index 0000000..05396f3
--- /dev/null
@@ -0,0 +1,346 @@
+diff -uN dav1d-0.4.0.orig/Makefile dav1d-0.4.0/Makefile
+--- dav1d-0.4.0.orig/Makefile  1969-12-31 17:00:00.000000000 -0700
++++ dav1d-0.4.0/Makefile       2019-08-30 10:30:39.846512952 -0600
+@@ -0,0 +1,342 @@
++BUILD=build
++DESTDIR=/
++PREFIX=usr/local
++LIBDIR=$(PREFIX)/lib
++INCDIR=$(PREFIX)/include
++# make Q="" for verbose
++Q?=@echo == $@; 
++OBJDIR?=$(BUILD)/static
++NASM_BLD=$(OBJDIR)/nasm
++ENTRY_BLD=$(OBJDIR)/entry
++SRC_BLD=$(OBJDIR)/src
++BIT8_BLD=$(OBJDIR)/bits8
++BIT16_BLD=$(OBJDIR)/bits16
++TOOLS_BLD=$(BUILD)/tools
++TESTS_BLD=$(BUILD)/tests
++
++STATIC_LIB=$(BUILD)/src/libdav1d.a
++SHARED_LIB=$(BUILD)/src/libdav1d.so
++DEFS= -DNDEBUG -D_FILE_OFFSET_BITS=64 -D_POSIX_C_SOURCE=200112L
++FUZZ= -DDAV1D_MT_FUZZING
++
++BLD_INCL= $(DEFS) -I. -Isrc -Iinclude/dav1d -Iinclude \
++      -I$(BUILD) -I$(BUILD)/include -I$(BUILD)/include/dav1d
++TOOLS_INCL= $(DEFS) -Itools -I. -I$(BUILD) -I$(BUILD)/tools \
++      -Iinclude -Iinclude/dav1d -I$(BUILD)/include/dav1d \
++      -I$(BUILD)/include -I/usr/include/SDL2
++
++NP?=.NOTPARALLEL:
++$(NP)
++MAKE_P:=$(MAKE) -j NP=""
++
++all: meson_data
++      $(MAKE_P) $(STATIC_LIB) OBJDIR=$(BUILD)/static
++      $(MAKE_P) $(SHARED_LIB) OBJDIR=$(BUILD)/shared
++# req SDL
++#     $(MAKE_P) $(TOOLS) OBJDIR=$(BUILD)/static
++#     $(MAKE_P) $(TESTS) OBJDIR=$(BUILD)/static
++
++CC_DEFS=\
++      -DNDEBUG \
++      -D_FILE_OFFSET_BITS=64 \
++      -D_POSIX_C_SOURCE=200112L \
++
++CC_OPTS=\
++      -pipe \
++      -Wall \
++      -Winvalid-pch \
++      -Wextra \
++      -std=c99 \
++      -O3 \
++      -fvisibility=hidden \
++      -Wundef \
++      -Werror=vla \
++      -Wno-maybe-uninitialized \
++      -Wno-missing-field-initializers \
++      -Wno-unused-parameter \
++      -Werror=missing-prototypes \
++      -fomit-frame-pointer \
++      -ffast-math \
++      -fPIC \
++      -mpreferred-stack-boundary=5 \
++      -MD -MQ $@ -MF $@.d \
++
++SHA_OPTS=\
++      -Wl,--no-undefined \
++      -Wl,--as-needed \
++      -Wl,-O1 \
++      -shared \
++      -fPIC \
++      -Wl,--start-group \
++      -Wl,-soname,libdav1d.so.2 \
++      -Wl,--end-group \
++      -pthread \
++
++CC_CC=$(Q)cc $(CC_OPTS) $(CFLAGS)
++NASM=$(Q)/usr/bin/nasm
++any=$(foreach i,$(2),$(1)/$(i))
++
++# nasm
++NASM_OBJS=$(call any,$(NASM_BLD), \
++      cdef.obj \
++      cdef_sse.obj \
++      cpuid.obj \
++      ipred.obj \
++      ipred_ssse3.obj \
++      itx.obj \
++      itx_ssse3.obj \
++      loopfilter.obj \
++      looprestoration.obj \
++      looprestoration_ssse3.obj \
++      mc.obj \
++      mc_ssse3.obj \
++      msac.obj)
++$(NASM_BLD)/%.obj: src/x86/%.asm
++      $(NASM) -f elf64 \
++              -I src/ -I $(BUILD)/ -MQ $@ -MF $@.ndep \
++              $< -o $@
++
++# entry
++ENTRY_OBJS=$(call any,$(ENTRY_BLD), \
++      lib.c.o \
++      thread_task.c.o)
++$(ENTRY_BLD)/%.c.o: src/%.c
++      $(CC_CC) -Iinclude -Ibuild/include/dav1d -Isrc/entry $(BLD_INCL) \
++              -mincoming-stack-boundary=4 -o $@ -c $<
++
++# src
++SRC_OBJS=$(call any,$(SRC_BLD), \
++      cdf.o \
++      cpu.o \
++      data.o \
++      decode.o \
++      dequant_tables.o \
++      getbits.o \
++      intra_edge.o \
++      lf_mask.o \
++      log.o \
++      msac.o \
++      obu.o \
++      picture.o \
++      qm.o \
++      ref.o \
++      ref_mvs.o \
++      scan.o \
++      tables.o \
++      warpmv.o \
++      wedge.o \
++      x86/cpu.c.o)
++$(SRC_BLD)/%.o: src/%.c
++      $(CC_CC) $(BLD_INCL) -pthread -o $@ -c $<
++$(SRC_BLD)/x86/%.c.o: src/x86/%.c
++      $(CC_CC) $(BLD_INCL) -o $@ -c $<
++
++# bits
++BITS_OBJS= \
++      cdef_tmpl.o \
++      cdef_apply_tmpl.o \
++      film_grain_tmpl.o \
++      ipred_tmpl.o \
++      ipred_prepare_tmpl.o \
++      itx_tmpl.o \
++      lf_apply_tmpl.o \
++      loopfilter_tmpl.o \
++      looprestoration_tmpl.o \
++      lr_apply_tmpl.o \
++      mc_tmpl.o \
++      recon_tmpl.o \
++      x86/cdef_init_tmpl.c.o \
++      x86/ipred_init_tmpl.c.o \
++      x86/itx_init_tmpl.c.o \
++      x86/loopfilter_init_tmpl.c.o \
++      x86/looprestoration_init_tmpl.c.o \
++      x86/mc_init_tmpl.c.o \
++
++BIT8_OBJS=$(call any,$(BIT8_BLD),$(BITS_OBJS))
++$(BIT8_BLD)/x86/%.c.o: src/x86/%.c
++      $(CC_CC) $(BLD_INCL) -DBITDEPTH=8 -o $@ -c $<
++$(BIT8_BLD)/%.o: src/%.c
++      $(CC_CC) $(BLD_INCL) -DBITDEPTH=8 -o $@ -c $<
++
++BIT16_OBJS=$(call any,$(BIT16_BLD),$(BITS_OBJS))
++$(BIT16_BLD)/x86/%.c.o: src/x86/%.c
++      $(CC_CC) $(BLD_INCL) -DBITDEPTH=16 -o $@ -c $<
++$(BIT16_BLD)/%.o: src/%.c
++      $(CC_CC) $(BLD_INCL) -DBITDEPTH=16 -o $@ -c $<
++
++$(BUILD)/config.h:
++      echo  > $@ "#pragma once"
++      echo >> $@ "#define ARCH_AARCH64 0"
++      echo >> $@ "#define ARCH_ARM 0"
++      echo >> $@ "#define ARCH_PPC64LE 0"
++      echo >> $@ "#define ARCH_X86 1"
++      echo >> $@ "#define ARCH_X86_32 0"
++      echo >> $@ "#define ARCH_X86_64 1"
++      echo >> $@ "#define CONFIG_16BPC 1"
++      echo >> $@ "#define CONFIG_8BPC 1"
++      echo >> $@ "#define CONFIG_LOG 1"
++      echo >> $@ "#define ENDIANNESS_BIG 0"
++      echo >> $@ "#define HAVE_ASM 1"
++      echo >> $@ "#define HAVE_POSIX_MEMALIGN 1"
++      echo >> $@ "#define HAVE_UNISTD_H 1"
++      echo >> $@ "#define STACK_ALIGNMENT 32"
++
++$(BUILD)/config.asm:
++      echo  > $@ "%define ARCH_X86_32 0"
++      echo >> $@ "%define ARCH_X86_64 1"
++      echo >> $@ "%define PIC 1"
++      echo >> $@ "%define STACK_ALIGNMENT 32"
++
++$(BUILD)/include/vcs_version.h:
++      mkdir -p $(BUILD)/include
++      echo  > $@ "#define DAV1D_VERSION \"0.4.0\""
++
++$(BUILD)/include/dav1d/version.h:
++      mkdir -p $(BUILD)/include/dav1d
++      echo  > $@ "#ifndef DAV1D_VERSION_H"
++      echo >> $@ "#define DAV1D_VERSION_H"
++      echo >> $@ "#define DAV1D_API_VERSION_MAJOR 2"
++      echo >> $@ "#define DAV1D_API_VERSION_MINOR 0"
++      echo >> $@ "#define DAV1D_API_VERSION_PATCH 0"
++      echo >> $@ "#endif /* DAV1D_VERSION_H */"
++
++$(TOOLS_BLD)/cli_config.h:
++      mkdir -p $(TOOLS_BLD)
++      echo  > $@ "#pragma once"
++      echo >> $@ "#define HAVE_CLOCK_GETTIME 1"
++
++.PHONY: meson_data
++meson_data:
++      make meson_dirs OBJDIR=$(BUILD)/static
++      make meson_dirs OBJDIR=$(BUILD)/shared
++      ln -sf ./include/compat/gcc/stdatomic.h .
++
++.PHONY: meson_dirs
++meson_dirs: $(OBJDIR) \
++      $(BUILD)/config.h $(BUILD)/config.asm \
++      $(BUILD)/include/vcs_version.h \
++      $(BUILD)/include/dav1d/version.h \
++      $(TOOLS_BLD)/cli_config.h \
++
++LIB_OBJS=$(ENTRY_OBJS) $(NASM_OBJS) $(SRC_OBJS) $(BIT8_OBJS) $(BIT16_OBJS)
++
++$(STATIC_LIB): DIR?=static
++$(STATIC_LIB): $(LIB_OBJS)
++      rm -f $@
++      gcc-ar csrD $@ $(LIB_OBJS)
++
++$(SHARED_LIB): DIR?=shared
++$(SHARED_LIB): $(LIB_OBJS)
++      rm -f $@
++      cc -o $@ $(LIB_OBJS) $(SHA_OPTS)
++
++# tools
++DAV1D_OBJS=$(call any,$(TOOLS_BLD),\
++      dav1d.o \
++      dav1d_cli_parse.o \
++      input/annexb.o \
++      input/ivf.o \
++      input/input.o \
++      output/md5.o \
++      output/null.o \
++      output/output.o \
++      output/y4m2.o \
++      output/yuv.o)
++
++DAV1DPLAY_OBJS=$(call any,$(TOOLS_BLD),\
++      dav1dplay.o \
++      input/annexb.o \
++      input/ivf.o \
++      input/input.o)
++
++$(TOOLS_BLD)/%.o: tools/%.c
++      $(CC_CC) $(TOOLS_INCL) -o $@ -c $<
++
++DAV1D=$(TOOLS_BLD)/dav1d
++$(DAV1D): $(DAV1D_OBJS)
++      $(CC_CC) -pthread -I$(BUILD) -o $@ $(DAV1D_OBJS) $(STATIC_LIB)
++
++DAV1DPLAY=$(TOOLS_BLD)/dav1dplay
++$(DAV1DPLAY): $(DAV1DPLAY_OBJS)
++      $(CC_CC) -pthread -o $(TOOLS_BLD)/dav1dplay $(DAV1DPLAY_OBJS) $(STATIC_LIB) -lSDL2
++
++TOOLS=$(DAV1D) $(DAV1DPLAY)
++.PHONY:       tools
++tools:        $(TOOLS)
++
++# tests
++TESTS_CHKASM=tests/checkasm
++TESTS_CHKASM_BLD=$(TESTS_BLD)/checkasm
++CHKASM_BIT8=$(TESTS_CHKASM_BLD)/bit8
++CHKASM_BIT16=$(TESTS_CHKASM_BLD)/bit16
++CHKASM_BITS= \
++      cdef.o \
++      ipred.o \
++      itx.o \
++      loopfilter.o \
++      looprestoration.o \
++      mc.o \
++
++CHKASM_BIT8_OBJS=$(call any,$(CHKASM_BIT8),$(CHKASM_BITS))
++CHKASM_BIT16_OBJS=$(call any,$(CHKASM_BIT16),$(CHKASM_BITS))
++
++TESTS_CHKASM_OBJS= \
++      $(TESTS_CHKASM_BLD)/checkasm.o \
++      $(TESTS_CHKASM_BLD)/msac.o \
++      $(CHKASM_BIT8_OBJS) $(CHKASM_BIT16_OBJS) \
++      $(TESTS_CHKASM_BLD)/x86/checkasm.obj \
++
++$(TESTS_CHKASM_BLD)/%.o: $(TESTS_CHKASM)/%.c
++      $(CC_CC) $(BLD_INCL) -o $@ -c $<
++$(CHKASM_BIT8)/%.o: $(TESTS_CHKASM)/%.c
++      $(CC_CC) $(BLD_INCL) -DBITDEPTH=8 -o $@ -c $<
++$(CHKASM_BIT16)/%.o: $(TESTS_CHKASM)/%.c
++      $(CC_CC) $(BLD_INCL) -DBITDEPTH=16 -o $@ -c $<
++$(TESTS_CHKASM_BLD)/x86/%.obj: $(TESTS_CHKASM)/x86/%.asm
++      @$(NASM) -f elf64 \
++              -I src/ -I $(BUILD)/ -MQ $@ -MF $@.ndep \
++              $< -o $@
++
++CHECKASM=$(TESTS_BLD)/checkasm/checkasm
++$(CHECKASM): $(TESTS_CHKASM_OBJS) $(STATIC_LIB)
++      $(CC_CC) -pthread -o $@ $(TESTS_CHKASM_OBJS) $(STATIC_LIB) -lm
++
++TESTS_FUZZER=tests/libfuzzer
++TESTS_FUZZER_BLD=$(TESTS_BLD)/libfuzzer
++TESTS_FUZZER_OBJS= \
++      $(TESTS_FUZZER_BLD)/main.o \
++      $(TESTS_FUZZER_BLD)/dav1d_fuzzer.o \
++
++$(TESTS_FUZZER_BLD)/%.o: $(TESTS_FUZZER)/%.c
++      $(CC_CC) $(BLD_INCL) -o $@ -c $<
++
++DAV1D_FUZZER=$(TESTS_BLD)/dav1d_fuzzer
++$(DAV1D_FUZZER): $(TESTS_FUZZER_OBJS) $(STATIC_LIB)
++      $(CC_CC) -pthread -o $@ $(TESTS_FUZZER_OBJS) $(STATIC_LIB)
++
++TESTS=$(CHECKASM) $(DAV1D_FUZZER)
++.PHONY:       tests
++tests:        $(TESTS)
++
++$(OBJDIR):
++      mkdir -p $@/include/dav1d \
++              $(BUILD)/src $(BUILD)/include \
++              $(ENTRY_BLD) $(NASM_BLD) \
++              $(SRC_BLD)/x86 $(BIT8_BLD)/x86 $(BIT16_BLD)/x86 \
++              $(TOOLS_BLD) $(TOOLS_BLD)/input $(TOOLS_BLD)/output \
++              $(TESTS_CHKASM_BLD)/bit8 $(TESTS_CHKASM_BLD)/bit16 \
++              $(TESTS_CHKASM_BLD)/x86 $(TESTS_FUZZER_BLD) \
++
++clean:
++      rm -rf $(BUILD)
++
++install:
++      mkdir -p $(DESTDIR)$(LIBDIR)
++      cp -a $(STATIC_LIB) $(DESTDIR)$(LIBDIR)
++      cp -a $(SHARED_LIB) $(DESTDIR)$(LIBDIR)
++      mkdir -p $(DESTDIR)$(INCDIR)
++      cp -a include/dav1d $(DESTDIR)$(INCDIR)
++      rm -f $(DESTDIR)$(INCDIR)/dav1d/meson.build
++      rm -f $(DESTDIR)$(INCDIR)/dav1d/version.h.in
++      cp -a $(BUILD)/include/dav1d/version.h $(DESTDIR)$(INCDIR)/version.h
++