Gfx Stack Update
[nyanlinux.git] / builders / dav1d-c8fdaa8611db2c630ad66b68d4a0e21345ed359c / contrib / x86_64_linux_glibc_gcc.sh
blob927a460745e34053745bcce75603a9c7ebd6b008
1 #!/bin/sh
3 # Canonical specialized, cheap build scripts for x86_64 gnu/linux distros.
4 # Look for "unset", you'll find the values you can override in $1 or
5 # $build_dir/local_conf.sh file, that in order to tune the script for your
6 # specific distro/needs.
8 # Usage, drop the script in the "contrib" dir at the top of the source tree,
9 # create somewhere else a build directory, cd into it, and call from there this
10 # script.
11 #===============================================================================
14 #===============================================================================
15 # build dir and src dir
16 build_dir=$(readlink -f .)
17 echo "build_dir=$build_dir"
18 # we are in contrib
19 src_dir=$(readlink -f $(dirname $0)/..)
20 echo "src_dir=$src_dir"
21 #===============================================================================
24 #===============================================================================
25 # the current configur-able variables may be individually overridden with the
26 # content of the file in $1 or $build_dir/local_conf.sh. Look for "unset"
27 # in those scripts to find what you can override to tune the build.
28 if test -f "$1"; then
29 . "$1"
30 else
31 if test -f $build_dir/local_conf.sh; then
32 . $build_dir/local_conf.sh
35 #===============================================================================
38 #===============================================================================
39 # all symbols are tagged hidden by default, then only the public symbol
40 # will be tagged public explicitely in the code (with extensions to C)
41 if test "${cc-unset}" = unset; then
42 cc="gcc -pipe -fPIC -O2 -c -static-libgcc \
43 -fvisibility=hidden \
44 -fomit-frame-pointer -ffast-math \
45 -idirafter /nyan/glibc/current/include \
46 -idirafter /nyan/linux-headers/current/include"
48 #===============================================================================
51 #===============================================================================
52 if test "${nasm-unset}" = unset; then
53 nasm="nasm"
55 #===============================================================================
58 #===============================================================================
59 if test "${ar-unset}" = unset; then
60 ar='ar rcs'
62 #===============================================================================
64 #===============================================================================
65 if test "${git_version-unset}" = unset; then
66 git_version="tamereenshort"
68 #===============================================================================
71 #===============================================================================
72 # should be in sync with the code
73 version_major=6
74 version_minor=6
75 version_patch=0
76 mkdir -p $build_dir/dav1d
77 cp -f $src_dir/include/dav1d/version.h.in $build_dir/dav1d/version.h
78 sed -e "s:@DAV1D_API_VERSION_MAJOR@:$version_major:;\
79 s:@DAV1D_API_VERSION_MINOR@:$version_minor:;\
80 s:@DAV1D_API_VERSION_PATCH@:$version_patch:" -i $build_dir/dav1d/version.h
81 #------------------------------------------------------------------------------
82 cp -f $src_dir/include/vcs_version.h.in $build_dir/vcs_version.h
83 sed -e "s:@VCS_TAG@:$git_version:" -i $build_dir/vcs_version.h
84 #===============================================================================
87 #===============================================================================
88 touch $build_dir/config.h
89 touch $build_dir/config.asm
90 #===============================================================================
93 #===============================================================================
94 # make it work with cpp _and_ nasm: '= 1' for the macros and an ending '/' for the
95 # paths
97 dav1d_cppflags="\
98 -DNDEBUG=1 \
99 -DHAVE_ASM=1 \
100 -DHAVE_AVX512ICL=1 \
101 -DCONFIG_8BPC=1 \
102 -DCONFIG_16BPC=1 \
103 -DARCH_X86=1 \
104 -DARCH_X86_64=1 \
105 -DPIC=1 \
106 -DSTACK_ALIGNMENT=32 \
107 -DFORCE_VEX_ENCODING=1 \
109 -I$build_dir/ \
110 -I$src_dir/src/ \
111 -I$src_dir/ \
112 -I$src_dir/include/compat/gcc/ \
113 -I$src_dir/include/dav1d/ \
114 -I$src_dir/include/ \
117 glibc_cppflags="\
118 -DHAVE_POSIX_MEMALIGN=1 \
119 -DHAVE_DLSYM=1 \
120 -D_GNU_SOURCE=1 \
123 libdav1d_nobitdepth_generic_c_files="\
124 src/cdf.c \
125 src/cpu.c \
126 src/ctx.c \
127 src/data.c \
128 src/decode.c \
129 src/dequant_tables.c \
130 src/getbits.c \
131 src/intra_edge.c \
132 src/itx_1d.c \
133 src/lf_mask.c \
134 src/log.c \
135 src/mem.c \
136 src/msac.c \
137 src/obu.c \
138 src/pal.c \
139 src/picture.c \
140 src/qm.c \
141 src/ref.c \
142 src/refmvs.c \
143 src/scan.c \
144 src/tables.c \
145 src/warpmv.c \
146 src/wedge.c \
149 libdav1d_nobitdepth_x86_c_files="\
150 src/x86/cpu.c \
153 libdav1d_bitdepth_generic_c_files="\
154 src/cdef_apply_tmpl.c \
155 src/cdef_tmpl.c \
156 src/fg_apply_tmpl.c \
157 src/filmgrain_tmpl.c \
158 src/ipred_prepare_tmpl.c \
159 src/ipred_tmpl.c \
160 src/itx_tmpl.c \
161 src/lf_apply_tmpl.c \
162 src/loopfilter_tmpl.c \
163 src/looprestoration_tmpl.c \
164 src/lr_apply_tmpl.c \
165 src/mc_tmpl.c \
166 src/recon_tmpl.c \
169 libdav1d_nobitdepth_x86_nasm_files="\
170 src/x86/cpuid.asm \
171 src/x86/msac.asm \
172 src/x86/pal.asm \
173 src/x86/refmvs.asm \
174 src/x86/cdef_avx2.asm \
175 src/x86/itx_avx2.asm \
176 src/x86/looprestoration_avx2.asm \
177 src/x86/cdef_sse.asm \
178 src/x86/itx_sse.asm \
181 libdav1d_8bitdepth_x86_nasm_files="\
182 src/x86/cdef_avx512.asm \
183 src/x86/filmgrain_avx512.asm \
184 src/x86/ipred_avx512.asm \
185 src/x86/itx_avx512.asm \
186 src/x86/loopfilter_avx512.asm \
187 src/x86/looprestoration_avx512.asm \
188 src/x86/mc_avx512.asm \
190 src/x86/filmgrain_avx2.asm \
191 src/x86/ipred_avx2.asm \
192 src/x86/loopfilter_avx2.asm \
193 src/x86/mc_avx2.asm \
195 src/x86/filmgrain_sse.asm \
196 src/x86/ipred_sse.asm \
197 src/x86/loopfilter_sse.asm \
198 src/x86/looprestoration_sse.asm \
199 src/x86/mc_sse.asm \
202 libdav1d_16bitdepth_x86_nasm_files="\
203 src/x86/cdef16_avx512.asm \
204 src/x86/filmgrain16_avx512.asm \
205 src/x86/ipred16_avx512.asm \
206 src/x86/itx16_avx512.asm \
207 src/x86/loopfilter16_avx512.asm \
208 src/x86/looprestoration16_avx512.asm \
209 src/x86/mc16_avx512.asm \
211 src/x86/cdef16_avx2.asm \
212 src/x86/filmgrain16_avx2.asm \
213 src/x86/ipred16_avx2.asm \
214 src/x86/itx16_avx2.asm \
215 src/x86/loopfilter16_avx2.asm \
216 src/x86/looprestoration16_avx2.asm \
217 src/x86/mc16_avx2.asm \
219 src/x86/cdef16_sse.asm \
220 src/x86/filmgrain16_sse.asm \
221 src/x86/ipred16_sse.asm \
222 src/x86/itx16_sse.asm \
223 src/x86/loopfilter16_sse.asm \
224 src/x86/looprestoration16_sse.asm \
225 src/x86/mc16_sse.asm \
228 libdav1d_entrypoints_c_files="\
229 src/lib.c \
230 src/thread_task.c \
232 #===============================================================================
235 #===============================================================================
236 for f in $libdav1d_nobitdepth_generic_c_files $libdav1d_nobitdepth_x86_c_files $libdav1d_entrypoints_c_files
238 mkdir -p $build_dir/$(dirname $f)
239 libdav1d_obj=$build_dir/$f.o
240 libdav1d_objs="$libdav1d_objs $libdav1d_obj"
242 printf "CC NOBITDEPTH $src_dir/$f\n"
243 $cc $dav1d_cppflags $glibc_cppflags $src_dir/$f -o $libdav1d_obj &
244 done
246 for f in $libdav1d_bitdepth_generic_c_files
248 mkdir -p $build_dir/$(dirname $f)
249 libdav1d_8_obj=$build_dir/$f.8.o
250 libdav1d_16_obj=$build_dir/$f.16.o
251 libdav1d_objs="$libdav1d_objs $libdav1d_8_obj $libdav1d_16_obj"
253 printf "CC 8BITS $src_dir/$f\n"
254 $cc $dav1d_cppflags $glibc_cppflags $src_dir/$f -DBITDEPTH=8 -o $libdav1d_8_obj &
255 printf "CC 16BITS $src_dir/$f\n"
256 $cc $dav1d_cppflags $glibc_cppflags $src_dir/$f -DBITDEPTH=16 -o $libdav1d_16_obj &
257 done
259 for f in $libdav1d_nobitdepth_x86_nasm_files $libdav1d_8bitdepth_x86_nasm_files $libdav1d_16bitdepth_x86_nasm_files
261 mkdir -p $build_dir/$(dirname $f)
262 libdav1d_obj=$build_dir/$f.o
263 libdav1d_objs="$libdav1d_objs $libdav1d_obj"
265 printf "ASM NOBITDEPTH $src_dir/$f\n"
266 $nasm -f elf64 \
267 -o $libdav1d_obj \
268 $dav1d_cppflags $glibc_cppflags \
269 -Dprivate_prefix=dav1d \
270 -DARCH_X86_32=0 $src_dir/$f &
271 done
272 #===============================================================================
275 #===============================================================================
276 wait
278 if test "${slib_link_cmd-unset}" = unset ; then
279 slib_link_cmd="gcc -o $build_dir/libdav1d.so.$version_major.$version_minor.$version_patch \
280 -Wl,-soname=libdav1d.so.$version_major \
281 -shared -static-libgcc \
282 -B/nyan/glibc/current/lib -L/nyan/glibc/current/lib -Wl,-rpath-link,/nyan/glibc/current/lib \
283 -Wl,--no-undefined,--gc-sections,-Bsymbolic \
284 $libdav1d_objs \
285 -Wl,--as-needed \
286 -lpthread \
287 -lm \
288 -ldl \
289 -Wl,--no-as-needed"
291 printf 'CCLD\n'
292 eval $slib_link_cmd