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
11 #===============================================================================
14 #===============================================================================
15 # build dir and src dir
16 build_dir
=$
(readlink
-f .
)
17 echo "build_dir=$build_dir"
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.
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 \
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
55 #===============================================================================
58 #===============================================================================
59 if test "${ar-unset}" = unset; then
62 #===============================================================================
64 #===============================================================================
65 if test "${git_version-unset}" = unset; then
66 git_version
="tamereenshort"
68 #===============================================================================
71 #===============================================================================
72 # should be in sync with the code
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
106 -DSTACK_ALIGNMENT=32 \
107 -DFORCE_VEX_ENCODING=1 \
112 -I$src_dir/include/compat/gcc/ \
113 -I$src_dir/include/dav1d/ \
114 -I$src_dir/include/ \
118 -DHAVE_POSIX_MEMALIGN=1 \
123 libdav1d_nobitdepth_generic_c_files
="\
129 src/dequant_tables.c \
149 libdav1d_nobitdepth_x86_c_files
="\
153 libdav1d_bitdepth_generic_c_files
="\
154 src/cdef_apply_tmpl.c \
156 src/fg_apply_tmpl.c \
157 src/filmgrain_tmpl.c \
158 src/ipred_prepare_tmpl.c \
161 src/lf_apply_tmpl.c \
162 src/loopfilter_tmpl.c \
163 src/looprestoration_tmpl.c \
164 src/lr_apply_tmpl.c \
169 libdav1d_nobitdepth_x86_nasm_files
="\
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 \
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
="\
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 &
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 &
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"
268 $dav1d_cppflags $glibc_cppflags \
269 -Dprivate_prefix=dav1d \
270 -DARCH_X86_32=0 $src_dir/$f &
272 #===============================================================================
275 #===============================================================================
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 \