meson fixes (#10743)
* r2pm/meson.build: install r2pm * meson.build: use system libraries when available * travis: add fedora-sys to the list of things to test * bin_nso.c: still include lz4.c when not on meson * Dockerfile.travis: add required system dependencies to dockerfile * meson.build: split zip_dep in libzip and zlib dependencies * shlr/meson.build: zip needs zlib
This commit is contained in:
parent
14e3706c93
commit
c932d1abff
11 changed files with 192 additions and 144 deletions
|
|
@ -18,6 +18,9 @@ matrix:
|
|||
env: COMPILER_NAME=clang CXX=clang++ CC=clang
|
||||
- os: linux
|
||||
env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson
|
||||
- if: head_branch =~ ^fedora-* OR tag =~ ^release-* OR tag =~ ^fedora-*
|
||||
os: linux
|
||||
env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson R2_SYS_CAPSTONE=true R2_SYS_MAGIC=true R2_SYS_ZIP=true R2_SYS_LZ4=true R2_SYS_ZLIB=true
|
||||
- if: head_branch =~ ^asan-* OR tag =~ ^release-* OR type = push
|
||||
os: linux
|
||||
env: COMPILER_NAME=clang CXX=clang++ CC=clang CFLAGS="-O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" ASAN_OPTIONS=detect_odr_violation=0 LSAN_OPTIONS=detect_leaks=0
|
||||
|
|
@ -25,7 +28,7 @@ matrix:
|
|||
env: COMPILER_NAME=clang CXX=clang++ CC=clang
|
||||
allow_failures:
|
||||
- os: linux
|
||||
env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson
|
||||
env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson R2_SYS_CAPSTONE=true R2_SYS_MAGIC=true R2_SYS_ZIP=true R2_SYS_LZ4=true R2_SYS_ZLIB=true
|
||||
- os: linux
|
||||
env: COMPILER_NAME=clang CXX=clang++ CC=clang CFLAGS="-O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" ASAN_OPTIONS=detect_odr_violation=0 LSAN_OPTIONS=detect_leaks=0
|
||||
cache:
|
||||
|
|
|
|||
|
|
@ -29,6 +29,10 @@ RUN dnf install -y \
|
|||
glib2 \
|
||||
glib2-devel \
|
||||
ncurses-devel \
|
||||
capstone-devel \
|
||||
libzip-devel \
|
||||
file-devel \
|
||||
lz4-devel \
|
||||
gnupg2 \
|
||||
python2-pip \
|
||||
meson \
|
||||
|
|
|
|||
1
binr/r2pm/meson.build
Normal file
1
binr/r2pm/meson.build
Normal file
|
|
@ -0,0 +1 @@
|
|||
install_data('r2pm', install_dir: './bin')
|
||||
|
|
@ -126,7 +126,8 @@ r_bin = library('r_bin', files,
|
|||
r_magic_dep,
|
||||
r_socket_dep,
|
||||
sdb_dep,
|
||||
java_dep
|
||||
java_dep,
|
||||
lz4_dep
|
||||
],
|
||||
install: true,
|
||||
implicit_include_directories: false,
|
||||
|
|
|
|||
|
|
@ -6,9 +6,12 @@
|
|||
#include <r_bin.h>
|
||||
#include <r_io.h>
|
||||
#include <r_cons.h>
|
||||
// #include "../../../shlr/lz4/lz4.h"
|
||||
#include "../../../shlr/lz4/lz4.c"
|
||||
#include "nxo/nxo.h"
|
||||
#ifdef R_MESON_VERSION
|
||||
#include <lz4.h>
|
||||
#else
|
||||
#include "../../../shlr/lz4/lz4.c"
|
||||
#endif
|
||||
|
||||
#define NSO_OFF(x) r_offsetof (NSOHeader, x)
|
||||
#define NSO_OFFSET_MODMEMOFF r_offsetof (NXOStart, mod_memoffset)
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ files = [
|
|||
|
||||
r_util = library('r_util', files,
|
||||
include_directories: platform_inc,
|
||||
dependencies: [ldl, mth, pth, utl, sdb_dep, zip_dep],
|
||||
dependencies: [ldl, mth, pth, utl, sdb_dep, zlib_dep],
|
||||
install: true,
|
||||
implicit_include_directories: false,
|
||||
soversion: r2_libversion
|
||||
|
|
|
|||
|
|
@ -329,6 +329,7 @@ if not meson.is_subproject()
|
|||
subdir('binr/radiff2')
|
||||
subdir('binr/rafind2')
|
||||
subdir('binr/rax2')
|
||||
subdir('binr/r2pm')
|
||||
else
|
||||
libr2_dep = declare_dependency(
|
||||
dependencies: [
|
||||
|
|
|
|||
|
|
@ -14,3 +14,6 @@ option('r2_gittap', type: 'string', value: '')
|
|||
option('r2_gittip', type: 'string', value: '')
|
||||
option('use_sys_capstone', type: 'boolean', value: false)
|
||||
option('use_sys_magic', type: 'boolean', value: false)
|
||||
option('use_sys_zip', type: 'boolean', value: false)
|
||||
option('use_sys_zlib', type: 'boolean', value: false)
|
||||
option('use_sys_lz4', type: 'boolean', value: false)
|
||||
|
|
|
|||
289
shlr/meson.build
289
shlr/meson.build
|
|
@ -266,131 +266,167 @@ spp_dep = declare_dependency(link_with: libr2spp,
|
|||
|
||||
|
||||
# handle lz4 dependency
|
||||
lz4_files = [
|
||||
'lz4/lz4.c',
|
||||
]
|
||||
lz4_dep = dependency('liblz4', required: false)
|
||||
if not lz4_dep.found() or not get_option('use_sys_lz4')
|
||||
message('Use bundled lz4')
|
||||
lz4_files = [
|
||||
'lz4/lz4.c',
|
||||
]
|
||||
|
||||
lz4_inc = [platform_inc, include_directories('lz4')]
|
||||
lz4_inc = [platform_inc, include_directories('lz4')]
|
||||
|
||||
libr2lz4 = static_library('r2lz4', lz4_files,
|
||||
include_directories: lz4_inc,
|
||||
implicit_include_directories: false
|
||||
)
|
||||
libr2lz4 = static_library('r2lz4', lz4_files,
|
||||
include_directories: lz4_inc,
|
||||
implicit_include_directories: false
|
||||
)
|
||||
|
||||
lz4_dep = declare_dependency(link_with: libr2lz4,
|
||||
include_directories: lz4_inc)
|
||||
lz4_dep = declare_dependency(link_with: libr2lz4,
|
||||
include_directories: lz4_inc)
|
||||
else
|
||||
message('Use system-provided lz4 library')
|
||||
endif
|
||||
|
||||
|
||||
# handle zlib dependency
|
||||
zlib_dep = dependency('zlib', required: false)
|
||||
if not zlib_dep.found() or not get_option('use_sys_zlib')
|
||||
message('Use bundled zlib')
|
||||
|
||||
zlib_files = [
|
||||
'zip/zlib/adler32.c',
|
||||
'zip/zlib/compress.c',
|
||||
'zip/zlib/crc32.c',
|
||||
'zip/zlib/deflate.c',
|
||||
'zip/zlib/gzclose.c',
|
||||
'zip/zlib/gzlib.c',
|
||||
'zip/zlib/gzread.c',
|
||||
'zip/zlib/gzwrite.c',
|
||||
'zip/zlib/infback.c',
|
||||
'zip/zlib/inffast.c',
|
||||
'zip/zlib/inflate.c',
|
||||
'zip/zlib/inftrees.c',
|
||||
'zip/zlib/trees.c',
|
||||
'zip/zlib/uncompr.c',
|
||||
'zip/zlib/zutil.c'
|
||||
]
|
||||
|
||||
zlib_inc = [platform_inc, include_directories('zip/zlib')]
|
||||
|
||||
libr2zlib = static_library('r2zlib', zlib_files,
|
||||
include_directories: zlib_inc,
|
||||
implicit_include_directories: false
|
||||
)
|
||||
|
||||
zlib_dep = declare_dependency(link_with: libr2zlib,
|
||||
include_directories: zlib_inc)
|
||||
else
|
||||
message('Use system-provided zlib library')
|
||||
endif
|
||||
|
||||
|
||||
# handle zip dependency
|
||||
zlib_files = [
|
||||
'zip/zip/zip_add.c',
|
||||
'zip/zip/zip_add_dir.c',
|
||||
'zip/zip/zip_add_entry.c',
|
||||
'zip/zip/zip_close.c',
|
||||
'zip/zip/zip_delete.c',
|
||||
'zip/zip/zip_dir_add.c',
|
||||
'zip/zip/zip_dirent.c',
|
||||
'zip/zip/zip_discard.c',
|
||||
'zip/zip/zip_entry.c',
|
||||
'zip/zip/zip_err_str.c',
|
||||
'zip/zip/zip_error.c',
|
||||
#'zip/zip/zip_error_clear.c',
|
||||
'zip/zip/zip_error_get.c',
|
||||
'zip/zip/zip_error_get_sys_type.c',
|
||||
'zip/zip/zip_error_strerror.c',
|
||||
'zip/zip/zip_error_to_str.c',
|
||||
'zip/zip/zip_extra_field.c',
|
||||
'zip/zip/zip_extra_field_api.c',
|
||||
'zip/zip/zip_fclose.c',
|
||||
'zip/zip/zip_fdopen.c',
|
||||
'zip/zip/zip_file_add.c',
|
||||
#'zip/zip/zip_file_error_clear.c',
|
||||
'zip/zip/zip_file_error_get.c',
|
||||
'zip/zip/zip_file_get_comment.c',
|
||||
'zip/zip/zip_file_get_offset.c',
|
||||
'zip/zip/zip_file_rename.c',
|
||||
'zip/zip/zip_file_replace.c',
|
||||
'zip/zip/zip_file_set_comment.c',
|
||||
'zip/zip/zip_file_strerror.c',
|
||||
'zip/zip/zip_filerange_crc.c',
|
||||
'zip/zip/zip_fopen.c',
|
||||
'zip/zip/zip_fopen_encrypted.c',
|
||||
'zip/zip/zip_fopen_index.c',
|
||||
'zip/zip/zip_fopen_index_encrypted.c',
|
||||
'zip/zip/zip_fread.c',
|
||||
'zip/zip/zip_get_archive_comment.c',
|
||||
'zip/zip/zip_get_archive_flag.c',
|
||||
'zip/zip/zip_get_compression_implementation.c',
|
||||
'zip/zip/zip_get_encryption_implementation.c',
|
||||
'zip/zip/zip_get_file_comment.c',
|
||||
'zip/zip/zip_get_name.c',
|
||||
'zip/zip/zip_get_num_entries.c',
|
||||
'zip/zip/zip_get_num_files.c',
|
||||
'zip/zip/zip_name_locate.c',
|
||||
'zip/zip/zip_new.c',
|
||||
'zip/zip/zip_open.c',
|
||||
'zip/zip/zip_rename.c',
|
||||
'zip/zip/zip_replace.c',
|
||||
'zip/zip/zip_set_archive_comment.c',
|
||||
'zip/zip/zip_set_archive_flag.c',
|
||||
'zip/zip/zip_set_default_password.c',
|
||||
'zip/zip/zip_set_file_comment.c',
|
||||
'zip/zip/zip_set_file_compression.c',
|
||||
'zip/zip/zip_set_name.c',
|
||||
'zip/zip/zip_source_buffer.c',
|
||||
'zip/zip/zip_source_close.c',
|
||||
'zip/zip/zip_source_crc.c',
|
||||
'zip/zip/zip_source_deflate.c',
|
||||
'zip/zip/zip_source_error.c',
|
||||
'zip/zip/zip_source_file.c',
|
||||
'zip/zip/zip_source_filep.c',
|
||||
'zip/zip/zip_source_free.c',
|
||||
'zip/zip/zip_source_function.c',
|
||||
'zip/zip/zip_source_layered.c',
|
||||
'zip/zip/zip_source_open.c',
|
||||
'zip/zip/zip_source_pkware.c',
|
||||
'zip/zip/zip_source_pop.c',
|
||||
'zip/zip/zip_source_read.c',
|
||||
'zip/zip/zip_source_stat.c',
|
||||
'zip/zip/zip_source_window.c',
|
||||
'zip/zip/zip_source_zip.c',
|
||||
'zip/zip/zip_source_zip_new.c',
|
||||
'zip/zip/zip_stat.c',
|
||||
'zip/zip/zip_stat_index.c',
|
||||
'zip/zip/zip_stat_init.c',
|
||||
'zip/zip/zip_strerror.c',
|
||||
'zip/zip/zip_string.c',
|
||||
'zip/zip/zip_unchange.c',
|
||||
'zip/zip/zip_unchange_all.c',
|
||||
'zip/zip/zip_unchange_archive.c',
|
||||
'zip/zip/zip_unchange_data.c',
|
||||
'zip/zip/zip_utf-8.c',
|
||||
'zip/zlib/adler32.c',
|
||||
'zip/zlib/compress.c',
|
||||
'zip/zlib/crc32.c',
|
||||
'zip/zlib/deflate.c',
|
||||
'zip/zlib/gzclose.c',
|
||||
'zip/zlib/gzlib.c',
|
||||
'zip/zlib/gzread.c',
|
||||
'zip/zlib/gzwrite.c',
|
||||
'zip/zlib/infback.c',
|
||||
'zip/zlib/inffast.c',
|
||||
'zip/zlib/inflate.c',
|
||||
'zip/zlib/inftrees.c',
|
||||
'zip/zlib/trees.c',
|
||||
'zip/zlib/uncompr.c',
|
||||
'zip/zlib/zutil.c'
|
||||
]
|
||||
zip_dep = dependency('libzip', required: false)
|
||||
if not zip_dep.found() or not get_option('use_sys_zip')
|
||||
message('Use bundled zip')
|
||||
|
||||
zip_inc = [platform_inc, include_directories('zip/include')]
|
||||
zip_files = [
|
||||
'zip/zip/zip_add.c',
|
||||
'zip/zip/zip_add_dir.c',
|
||||
'zip/zip/zip_add_entry.c',
|
||||
'zip/zip/zip_close.c',
|
||||
'zip/zip/zip_delete.c',
|
||||
'zip/zip/zip_dir_add.c',
|
||||
'zip/zip/zip_dirent.c',
|
||||
'zip/zip/zip_discard.c',
|
||||
'zip/zip/zip_entry.c',
|
||||
'zip/zip/zip_err_str.c',
|
||||
'zip/zip/zip_error.c',
|
||||
#'zip/zip/zip_error_clear.c',
|
||||
'zip/zip/zip_error_get.c',
|
||||
'zip/zip/zip_error_get_sys_type.c',
|
||||
'zip/zip/zip_error_strerror.c',
|
||||
'zip/zip/zip_error_to_str.c',
|
||||
'zip/zip/zip_extra_field.c',
|
||||
'zip/zip/zip_extra_field_api.c',
|
||||
'zip/zip/zip_fclose.c',
|
||||
'zip/zip/zip_fdopen.c',
|
||||
'zip/zip/zip_file_add.c',
|
||||
#'zip/zip/zip_file_error_clear.c',
|
||||
'zip/zip/zip_file_error_get.c',
|
||||
'zip/zip/zip_file_get_comment.c',
|
||||
'zip/zip/zip_file_get_offset.c',
|
||||
'zip/zip/zip_file_rename.c',
|
||||
'zip/zip/zip_file_replace.c',
|
||||
'zip/zip/zip_file_set_comment.c',
|
||||
'zip/zip/zip_file_strerror.c',
|
||||
'zip/zip/zip_filerange_crc.c',
|
||||
'zip/zip/zip_fopen.c',
|
||||
'zip/zip/zip_fopen_encrypted.c',
|
||||
'zip/zip/zip_fopen_index.c',
|
||||
'zip/zip/zip_fopen_index_encrypted.c',
|
||||
'zip/zip/zip_fread.c',
|
||||
'zip/zip/zip_get_archive_comment.c',
|
||||
'zip/zip/zip_get_archive_flag.c',
|
||||
'zip/zip/zip_get_compression_implementation.c',
|
||||
'zip/zip/zip_get_encryption_implementation.c',
|
||||
'zip/zip/zip_get_file_comment.c',
|
||||
'zip/zip/zip_get_name.c',
|
||||
'zip/zip/zip_get_num_entries.c',
|
||||
'zip/zip/zip_get_num_files.c',
|
||||
'zip/zip/zip_name_locate.c',
|
||||
'zip/zip/zip_new.c',
|
||||
'zip/zip/zip_open.c',
|
||||
'zip/zip/zip_rename.c',
|
||||
'zip/zip/zip_replace.c',
|
||||
'zip/zip/zip_set_archive_comment.c',
|
||||
'zip/zip/zip_set_archive_flag.c',
|
||||
'zip/zip/zip_set_default_password.c',
|
||||
'zip/zip/zip_set_file_comment.c',
|
||||
'zip/zip/zip_set_file_compression.c',
|
||||
'zip/zip/zip_set_name.c',
|
||||
'zip/zip/zip_source_buffer.c',
|
||||
'zip/zip/zip_source_close.c',
|
||||
'zip/zip/zip_source_crc.c',
|
||||
'zip/zip/zip_source_deflate.c',
|
||||
'zip/zip/zip_source_error.c',
|
||||
'zip/zip/zip_source_file.c',
|
||||
'zip/zip/zip_source_filep.c',
|
||||
'zip/zip/zip_source_free.c',
|
||||
'zip/zip/zip_source_function.c',
|
||||
'zip/zip/zip_source_layered.c',
|
||||
'zip/zip/zip_source_open.c',
|
||||
'zip/zip/zip_source_pkware.c',
|
||||
'zip/zip/zip_source_pop.c',
|
||||
'zip/zip/zip_source_read.c',
|
||||
'zip/zip/zip_source_stat.c',
|
||||
'zip/zip/zip_source_window.c',
|
||||
'zip/zip/zip_source_zip.c',
|
||||
'zip/zip/zip_source_zip_new.c',
|
||||
'zip/zip/zip_stat.c',
|
||||
'zip/zip/zip_stat_index.c',
|
||||
'zip/zip/zip_stat_init.c',
|
||||
'zip/zip/zip_strerror.c',
|
||||
'zip/zip/zip_string.c',
|
||||
'zip/zip/zip_unchange.c',
|
||||
'zip/zip/zip_unchange_all.c',
|
||||
'zip/zip/zip_unchange_archive.c',
|
||||
'zip/zip/zip_unchange_data.c',
|
||||
'zip/zip/zip_utf-8.c'
|
||||
]
|
||||
|
||||
libr2zip = static_library('r2zip', zlib_files,
|
||||
include_directories: zip_inc,
|
||||
implicit_include_directories: false
|
||||
)
|
||||
zip_inc = [platform_inc, include_directories('zip/include')]
|
||||
|
||||
zip_dep = declare_dependency(link_with: libr2zip,
|
||||
include_directories: zip_inc)
|
||||
libr2zip = static_library('r2zip', zip_files,
|
||||
include_directories: zip_inc,
|
||||
implicit_include_directories: false,
|
||||
dependencies: zlib_dep
|
||||
)
|
||||
|
||||
zip_dep = declare_dependency(link_with: libr2zip,
|
||||
include_directories: zip_inc)
|
||||
else
|
||||
message('Use system-provided zip library')
|
||||
endif
|
||||
|
||||
|
||||
# handle grub dependency
|
||||
|
|
@ -491,24 +527,3 @@ libr2ar = static_library('r2ar', ar_files,
|
|||
|
||||
ar_dep = declare_dependency(link_with: libr2ar,
|
||||
include_directories: ar_inc)
|
||||
|
||||
libr_shlr = [
|
||||
libr2ar, libr2bochs, libr2gdb, libr2grub, libr2java, libr2lz4,
|
||||
libr2qnx, libr2sdb, libr2spp, libr2spp, libr2tcc, libr2windbg, libr2zip
|
||||
]
|
||||
|
||||
if cc.get_id() == 'msvc'
|
||||
cmd = ['lib', '/OUT:@OUTPUT@', '@INPUT@']
|
||||
else
|
||||
cmd = ['ar', 'csr', '@OUTPUT@', '@INPUT@']
|
||||
endif
|
||||
|
||||
custom_target('libr_shlr',
|
||||
input: libr_shlr,
|
||||
output: 'libr_shlr.a',
|
||||
command: cmd,
|
||||
build_by_default: true,
|
||||
build_always: false,
|
||||
install: true,
|
||||
install_dir: get_option('libdir')
|
||||
)
|
||||
|
|
|
|||
|
|
@ -167,7 +167,6 @@ def win_dist(args):
|
|||
copy(r'{BUILDDIR}\libr\*\*.lib', r'{DIST}\{R2_LIBDIR}')
|
||||
else:
|
||||
copy(r'{BUILDDIR}\libr\*\*.a', r'{DIST}\{R2_LIBDIR}')
|
||||
copy(r'{BUILDDIR}\shlr\libr_shlr.a', r'{DIST}\{R2_LIBDIR}')
|
||||
win_dist_libr2()
|
||||
|
||||
def win_dist_libr2(**path_fmt):
|
||||
|
|
|
|||
|
|
@ -8,7 +8,25 @@ ls radare2-regressions >/dev/null 2>&1 || git clone --depth 1 --branch "${R2R_DE
|
|||
|
||||
if [ "${INSTALL_SYSTEM}" == "meson" ] ; then
|
||||
echo "Installing with meson + ninja"
|
||||
meson --prefix=${TRAVIS_BUILD_DIR}/install build
|
||||
|
||||
OPTS=""
|
||||
if [ "${R2_SYS_CAPSTONE}" != "" ] ; then
|
||||
OPTS="${OPTS} -D use_sys_capstone=${R2_SYS_CAPSTONE}"
|
||||
fi
|
||||
if [ "${R2_SYS_MAGIC}" != "" ] ; then
|
||||
OPTS="${OPTS} -D use_sys_magic=${R2_SYS_MAGIC}"
|
||||
fi
|
||||
if [ "${R2_SYS_ZLIB}" != "" ] ; then
|
||||
OPTS="${OPTS} -D use_sys_zlib=${R2_SYS_ZLIB}"
|
||||
fi
|
||||
if [ "${R2_SYS_ZIP}" != "" ] ; then
|
||||
OPTS="${OPTS} -D use_sys_zip=${R2_SYS_ZIP}"
|
||||
fi
|
||||
if [ "${R2_SYS_LZ4}" != "" ] ; then
|
||||
OPTS="${OPTS} -D use_sys_lz4=${R2_SYS_LZ4}"
|
||||
fi
|
||||
|
||||
meson --prefix=${TRAVIS_BUILD_DIR}/install ${OPTS} build
|
||||
pushd build
|
||||
ninja
|
||||
ninja install
|
||||
|
|
|
|||
Loading…
Reference in a new issue