[meson] Run check-symbols.sh and check-static-inits.sh correctly
* Search src/ build directory for objects in check-static-inits.sh * Find .def files in src/ build directory in src/check-symbols.sh * Pass builddir also in autotools also, we may just remove libs passing after autotools removal * Move harfbuzz_subset_def target so can be referenced as a check-static-inits.sh dependency
This commit is contained in:
parent
9c2c9553eb
commit
18fc9197e2
|
@ -444,6 +444,7 @@ endif
|
||||||
|
|
||||||
TESTS_ENVIRONMENT = \
|
TESTS_ENVIRONMENT = \
|
||||||
srcdir="$(srcdir)" \
|
srcdir="$(srcdir)" \
|
||||||
|
builddir="$(builddir)" \
|
||||||
MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
|
MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
|
||||||
HBSOURCES="$(HBSOURCES)" \
|
HBSOURCES="$(HBSOURCES)" \
|
||||||
HBHEADERS="$(HBHEADERS)" \
|
HBHEADERS="$(HBHEADERS)" \
|
||||||
|
|
|
@ -4,7 +4,7 @@ LC_ALL=C
|
||||||
export LC_ALL
|
export LC_ALL
|
||||||
|
|
||||||
test -z "$srcdir" && srcdir=.
|
test -z "$srcdir" && srcdir=.
|
||||||
test -z "$libs" && libs=.libs
|
test -z "$builddir" && builddir=.
|
||||||
stat=0
|
stat=0
|
||||||
|
|
||||||
if which objdump 2>/dev/null >/dev/null; then
|
if which objdump 2>/dev/null >/dev/null; then
|
||||||
|
@ -14,18 +14,21 @@ else
|
||||||
exit 77
|
exit 77
|
||||||
fi
|
fi
|
||||||
|
|
||||||
OBJS=$libs/*.o
|
OBJS=$(find $builddir/ -name '*.o')
|
||||||
if test "x`echo $OBJS`" = "x$OBJS" 2>/dev/null >/dev/null; then
|
if test "x`echo $OBJS`" = "x$OBJS" 2>/dev/null >/dev/null; then
|
||||||
echo "check-static-inits.sh: object files not found; skipping test"
|
echo "check-static-inits.sh: object files not found; skipping test"
|
||||||
exit 77
|
exit 77
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
tested=false
|
||||||
|
|
||||||
echo "Checking that no object file has static initializers"
|
echo "Checking that no object file has static initializers"
|
||||||
for obj in $OBJS; do
|
for obj in $OBJS; do
|
||||||
if objdump -t "$obj" | grep '[.][cd]tors' | grep -v '\<00*\>'; then
|
if objdump -t "$obj" | grep '[.][cd]tors' | grep -v '\<00*\>'; then
|
||||||
echo "Ouch, $obj has static initializers/finalizers"
|
echo "Ouch, $obj has static initializers/finalizers"
|
||||||
stat=1
|
stat=1
|
||||||
fi
|
fi
|
||||||
|
tested=true
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Checking that no object file has lazy static C++ constructors/destructors or other such stuff"
|
echo "Checking that no object file has lazy static C++ constructors/destructors or other such stuff"
|
||||||
|
@ -35,6 +38,12 @@ for obj in $OBJS; do
|
||||||
echo "Ouch, $obj has lazy static C++ constructors/destructors or other such stuff"
|
echo "Ouch, $obj has lazy static C++ constructors/destructors or other such stuff"
|
||||||
stat=1
|
stat=1
|
||||||
fi
|
fi
|
||||||
|
tested=true
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if ! $tested; then
|
||||||
|
echo "check-static-inits.sh: no objects found; skipping test"
|
||||||
|
exit 77
|
||||||
|
fi
|
||||||
|
|
||||||
exit $stat
|
exit $stat
|
||||||
|
|
|
@ -4,6 +4,7 @@ LC_ALL=C
|
||||||
export LC_ALL
|
export LC_ALL
|
||||||
|
|
||||||
test -z "$srcdir" && srcdir=.
|
test -z "$srcdir" && srcdir=.
|
||||||
|
test -z "$builddir" && builddir=.
|
||||||
test -z "$libs" && libs=.libs
|
test -z "$libs" && libs=.libs
|
||||||
stat=0
|
stat=0
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ for soname in harfbuzz harfbuzz-subset harfbuzz-icu harfbuzz-gobject; do
|
||||||
stat=1
|
stat=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
def=$soname.def
|
def=$builddir/$soname.def
|
||||||
if ! test -f "$def"; then
|
if ! test -f "$def"; then
|
||||||
echo "'$def' not found; skipping"
|
echo "'$def' not found; skipping"
|
||||||
else
|
else
|
||||||
|
@ -47,9 +48,9 @@ for soname in harfbuzz harfbuzz-subset harfbuzz-icu harfbuzz-gobject; do
|
||||||
# cheat: copy the last line from the def file!
|
# cheat: copy the last line from the def file!
|
||||||
tail -n1 "$def"
|
tail -n1 "$def"
|
||||||
} | c++filt | diff "$def" - >&2 || stat=1
|
} | c++filt | diff "$def" - >&2 || stat=1
|
||||||
fi
|
|
||||||
|
|
||||||
tested=true
|
tested=true
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
if ! $tested; then
|
if ! $tested; then
|
||||||
|
|
|
@ -366,6 +366,26 @@ libharfbuzz_dep = declare_dependency(
|
||||||
include_directories: incsrc,
|
include_directories: incsrc,
|
||||||
dependencies: deps)
|
dependencies: deps)
|
||||||
|
|
||||||
|
# harfbuzz-subset
|
||||||
|
harfbuzz_subset_def = custom_target('harfbuzz-subset.def',
|
||||||
|
command: [gen_def, '@OUTPUT@', '@INPUT@'],
|
||||||
|
input: hb_subset_headers,
|
||||||
|
output: 'harfbuzz-subset.def')
|
||||||
|
|
||||||
|
libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources,
|
||||||
|
include_directories: incconfig,
|
||||||
|
link_with: [libharfbuzz],
|
||||||
|
cpp_args: cpp_args + extra_hb_cpp_args,
|
||||||
|
soversion: hb_so_version,
|
||||||
|
version: version,
|
||||||
|
install: true,
|
||||||
|
name_prefix: hb_lib_prefix)
|
||||||
|
|
||||||
|
libharfbuzz_subset_dep = declare_dependency(
|
||||||
|
link_with: libharfbuzz_subset,
|
||||||
|
include_directories: incsrc,
|
||||||
|
dependencies: deps)
|
||||||
|
|
||||||
# TODO: MSVC gives the following,
|
# TODO: MSVC gives the following,
|
||||||
# error LNK2019: unresolved external symbol "unsigned __int64 const * const _hb_NullPool"
|
# error LNK2019: unresolved external symbol "unsigned __int64 const * const _hb_NullPool"
|
||||||
if cpp.get_id() != 'msvc'
|
if cpp.get_id() != 'msvc'
|
||||||
|
@ -434,46 +454,31 @@ if host_machine.system() != 'windows' and not meson.is_cross_build()
|
||||||
'check-c-linkage-decls.sh',
|
'check-c-linkage-decls.sh',
|
||||||
'check-externs.sh',
|
'check-externs.sh',
|
||||||
'check-header-guards.sh',
|
'check-header-guards.sh',
|
||||||
'check-static-inits.sh', # fails with "check-static-inits.sh: object files not found; skipping test"
|
'check-static-inits.sh',
|
||||||
'check-symbols.sh', # fails with "'harfbuzz.def' not found; skipping"
|
|
||||||
]
|
]
|
||||||
if not get_option('amalgam')
|
if not get_option('amalgam')
|
||||||
dist_check_script += ['check-includes.sh']
|
dist_check_script += 'check-includes.sh'
|
||||||
endif
|
endif
|
||||||
if false # !WITH_LIBSTDCXX
|
if false # !WITH_LIBSTDCXX
|
||||||
dist_check_script += 'check-libstdc++.sh' # we don't have chosen_linker logic here yet
|
dist_check_script += 'check-libstdc++.sh' # See https://github.com/harfbuzz/harfbuzz/issues/2276
|
||||||
endif
|
endif
|
||||||
|
|
||||||
foreach name : dist_check_script
|
|
||||||
env = environment()
|
env = environment()
|
||||||
env.set('srcdir', meson.current_source_dir())
|
env.set('srcdir', meson.current_source_dir())
|
||||||
env.set('libs', meson.current_build_dir())
|
env.set('builddir', meson.current_build_dir())
|
||||||
|
env.set('libs', meson.current_build_dir()) # TODO: Merge this with builddir after autotools removal
|
||||||
env.set('HBSOURCES', ' '.join(hb_sources))
|
env.set('HBSOURCES', ' '.join(hb_sources))
|
||||||
env.set('HBHEADERS', ' '.join(hb_headers))
|
env.set('HBHEADERS', ' '.join(hb_headers))
|
||||||
|
|
||||||
|
foreach name : dist_check_script
|
||||||
test(name, find_program(name), env: env)
|
test(name, find_program(name), env: env)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
test('check-symbols.sh', find_program('check-symbols.sh'),
|
||||||
|
depends: [harfbuzz_def, harfbuzz_subset_def], # TODO: harfbuzz_icu_def and harfbuzz_gobject_def also
|
||||||
|
env: env)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# harfbuzz-subset
|
|
||||||
harfbuzz_subset_def = custom_target('harfbuzz-subset.def',
|
|
||||||
command: [gen_def, '@OUTPUT@', '@INPUT@'],
|
|
||||||
input: hb_subset_headers,
|
|
||||||
output: 'harfbuzz-subset.def')
|
|
||||||
|
|
||||||
libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources,
|
|
||||||
include_directories: incconfig,
|
|
||||||
link_with: [libharfbuzz],
|
|
||||||
cpp_args: cpp_args + extra_hb_cpp_args,
|
|
||||||
soversion: hb_so_version,
|
|
||||||
version: version,
|
|
||||||
install: true,
|
|
||||||
name_prefix: hb_lib_prefix)
|
|
||||||
|
|
||||||
libharfbuzz_subset_dep = declare_dependency(
|
|
||||||
link_with: libharfbuzz_subset,
|
|
||||||
include_directories: incsrc,
|
|
||||||
dependencies: deps)
|
|
||||||
|
|
||||||
pkgmod.generate(libharfbuzz,
|
pkgmod.generate(libharfbuzz,
|
||||||
description: 'HarfBuzz text shaping library',
|
description: 'HarfBuzz text shaping library',
|
||||||
subdirs: [meson.project_name()],
|
subdirs: [meson.project_name()],
|
||||||
|
|
Loading…
Reference in New Issue