В сообщении от Thursday 05 September 2019 17:57:59 Phyllis Smith написал(а): > Andrea, gg is interested in this. Did you find a way to make dav1d work > for 32-bit? Phyllis/GG
Something like attached Makefile works, at least not errors out patch (diff -u) made from dav1d directory also attached I used this info as reference: https://stackoverflow.com/questions/9279765/how-to-detect-os-in-a-make-file > > > > Aha, for static Makefile GG added ... > > > > +$(NASM_BLD)/%.obj: src/x86/%.asm > > + $(NASM) -f elf64 \ > > + -I src/ -I $(BUILD)/ -MQ $@ -MF [email protected] \ > > + $< -o $@ > > > > replace elf64 with elf32 for 32-bit builds ..... (looking at my source > > folder for 32-bit libdav1d build via Meson/Ninja) > > > > actually there are two instances of this parameter, another for (libdav1d) > > testfiles down the file .... > > > > > > +$(TESTS_CHKASM_BLD)/x86/%.obj: $(TESTS_CHKASM)/x86/%.asm > > + @$(NASM) -f elf64 \ > > + -I src/ -I $(BUILD)/ -MQ $@ -MF [email protected] \ > > + $< -o $@ > > > > >
export TOPDIR ?= $(CURDIR)/../.. include $(TOPDIR)/global_config _ARCH := $(shell uname -m) export _ARCH ifeq ($(_ARCH), i686) ASMARCH := elf32 endif ifeq ($(_ARCH), x86_64) ASMARCH := elf64 endif 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 [email protected] \ 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 $(ASMARCH) \ -I src/ -I $(BUILD)/ -MQ $@ -MF [email protected] \ $< -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" ifeq ($(_ARCH), x86_64) echo >> $@ "#define ARCH_X86_32 0" echo >> $@ "#define ARCH_X86_64 1" endif ifeq ($(_ARCH), i686) echo >> $@ "#define ARCH_X86_32 1" echo >> $@ "#define ARCH_X86_64 0" endif 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: ifeq ($(_ARCH), x86_64) echo > $@ "%define ARCH_X86_32 0" echo >> $@ "%define ARCH_X86_64 1" echo >> $@ "%define PIC 1" echo >> $@ "%define STACK_ALIGNMENT 32" endif ifeq ($(_ARCH), i686) echo > $@ "%define ARCH_X86_32 1" echo >> $@ "%define ARCH_X86_64 0" echo >> $@ "%define PIC 1" echo >> $@ "%define STACK_ALIGNMENT 32" endif $(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 $(ASMARCH) \ -I src/ -I $(BUILD)/ -MQ $@ -MF [email protected] \ $< -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
--- Makefile.orig 2019-09-05 23:36:27.313308532 +0300 +++ Makefile 2019-09-06 00:19:45.446010156 +0300 @@ -1,3 +1,19 @@ +export TOPDIR ?= $(CURDIR)/../.. +include $(TOPDIR)/global_config + +_ARCH := $(shell uname -m) +export _ARCH + +ifeq ($(_ARCH), i686) +ASMARCH := elf32 +endif + +ifeq ($(_ARCH), x86_64) +ASMARCH := elf64 +endif + + + BUILD=build DESTDIR=/ PREFIX=usr/local @@ -92,7 +108,7 @@ mc_ssse3.obj \ msac.obj) $(NASM_BLD)/%.obj: src/x86/%.asm - $(NASM) -f elf64 \ + $(NASM) -f $(ASMARCH) \ -I src/ -I $(BUILD)/ -MQ $@ -MF [email protected] \ $< -o $@ @@ -170,8 +186,14 @@ echo >> $@ "#define ARCH_ARM 0" echo >> $@ "#define ARCH_PPC64LE 0" echo >> $@ "#define ARCH_X86 1" +ifeq ($(_ARCH), x86_64) echo >> $@ "#define ARCH_X86_32 0" echo >> $@ "#define ARCH_X86_64 1" +endif +ifeq ($(_ARCH), i686) + echo >> $@ "#define ARCH_X86_32 1" + echo >> $@ "#define ARCH_X86_64 0" +endif echo >> $@ "#define CONFIG_16BPC 1" echo >> $@ "#define CONFIG_8BPC 1" echo >> $@ "#define CONFIG_LOG 1" @@ -182,10 +204,20 @@ echo >> $@ "#define STACK_ALIGNMENT 32" $(BUILD)/config.asm: +ifeq ($(_ARCH), x86_64) echo > $@ "%define ARCH_X86_32 0" echo >> $@ "%define ARCH_X86_64 1" echo >> $@ "%define PIC 1" echo >> $@ "%define STACK_ALIGNMENT 32" +endif + +ifeq ($(_ARCH), i686) + echo > $@ "%define ARCH_X86_32 1" + echo >> $@ "%define ARCH_X86_64 0" + echo >> $@ "%define PIC 1" + echo >> $@ "%define STACK_ALIGNMENT 32" +endif + $(BUILD)/include/vcs_version.h: mkdir -p $(BUILD)/include @@ -293,7 +325,7 @@ $(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 \ + @$(NASM) -f $(ASMARCH) \ -I src/ -I $(BUILD)/ -MQ $@ -MF [email protected] \ $< -o $@
-- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin

