meson improvements (#10617)

* meson.build: fix meson build when not on git
* meson.build: make capstone a dependency
* meson.build: make r_magic library optional
* meson.build: capstone include is already in the dependency
* meson.build: use dependencies instead of manual linking + includes
* meson.build: add travis
* flag/meson.build: include sdb dependency
* travis-script: print messages based on install system
* io/meson.build: add sdb as dependency
* syscall/meson.build: missing sdb dependency
* {parse,config}/meson.build: add sdb dependency
* travis.yml: pass INSTALL_SYSTEM var to docker
* {bin/shlr}/meson.build: add sdb_dep to r2java and bin
* install meson and ninja-build in r2-travis docker
* travis.yml: allow meson build to fail for now
* anal/meson.build: add sdb and java dependencies
* egg/meson.build: add sdb dependency
* travis.yml: meson build env should be also in the includes list
* core/meson.build: add java dep
* meson.build: use dependencies also to create main r2 dependency
* rasm2/meson.build: replace link_with with dependencies
* rasm2/meson.build: add sdb as dependency
* meson.builds: convert link_with to dependencies and fix tabs
* travis-script: change meson install prefix and set PKG_CONFIG_PATH
* travis-script: add lib64 to LD_LIBRARY_PATH
This commit is contained in:
Riccardo Schirone 2018-07-09 16:58:38 +02:00 committed by GitHub
parent 6e08e452a7
commit 7572f315ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 660 additions and 497 deletions

View file

@ -14,11 +14,15 @@ matrix:
env: COMPILER_NAME=gcc CXX=g++ CC=gcc
- os: linux
env: COMPILER_NAME=clang CXX=clang++ CC=clang
- os: linux
env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson
- 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
- os: osx
env: COMPILER_NAME=clang CXX=clang++ CC=clang
allow_failures:
- os: linux
env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson
- 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:

View file

@ -31,6 +31,8 @@ RUN dnf install -y \
ncurses-devel \
gnupg2 \
python2-pip \
meson \
ninja-build \
xz
RUN rm -rf /src/.nvm && git clone https://github.com/creationix/nvm.git /src/.nvm && (cd /src/.nvm && git checkout `git describe --abbrev=0 --tags`) && . /src/.nvm/nvm.sh && nvm install 8.11.3

View file

@ -1,6 +1,10 @@
executable('r2agent', 'r2agent.c',
include_directories: [platform_inc],
link_with: [r_util, r_socket, r_cons],
dependencies: [
r_util_dep,
r_socket_dep,
r_cons_dep
],
install: true,
implicit_include_directories: false
)

View file

@ -1,8 +1,16 @@
executable('rabin2', 'rabin2.c',
include_directories: [platform_inc],
link_with: [
r_util, r_cons, r_config, r_hash, r_io, r_crypto, r_core, r_magic, r_bin,
libr_shlr
dependencies: [
r_util_dep,
r_cons_dep,
r_config_dep,
r_hash_dep,
r_io_dep,
r_crypto_dep,
r_core_dep,
r_magic_dep,
r_bin_dep,
sdb_dep
],
install: true,
implicit_include_directories: false

View file

@ -1,9 +1,27 @@
executable('radare2', 'radare2.c',
include_directories: [platform_inc],
link_with: [
r_util, r_socket, r_core, r_io, r_magic, r_fs, r_bin, r_flag, r_cons,
r_asm, r_debug, r_config, r_bp, r_reg, r_syscall, r_anal, r_parse, r_egg,
r_search, r_hash, r_crypto,
dependencies: [
r_util_dep,
r_socket_dep,
r_core_dep,
r_io_dep,
r_fs_dep,
r_bin_dep,
r_flag_dep,
r_cons_dep,
r_asm_dep,
r_debug_dep,
r_config_dep,
r_bp_dep,
r_reg_dep,
r_syscall_dep,
r_anal_dep,
r_parse_dep,
r_egg_dep,
r_search_dep,
r_hash_dep,
r_crypto_dep,
r_magic_dep
],
install: true,
implicit_include_directories: false

View file

@ -86,7 +86,9 @@ static int verify_version(int show) {
{ "r_hash", &r_hash_version },
{ "r_fs", &r_fs_version },
{ "r_io", &r_io_version },
#if !USE_LIB_MAGIC
{ "r_magic", &r_magic_version },
#endif
{ "r_parse", &r_parse_version },
{ "r_reg", &r_reg_version },
{ "r_sign", &r_sign_version },

View file

@ -1,7 +1,16 @@
executable('radiff2', 'radiff2.c',
include_directories: [platform_inc],
link_with: [
r_util, r_io, r_search, r_cons, r_core, r_bin, r_anal, r_asm, r_hash, r_config
dependencies: [
r_util_dep,
r_io_dep,
r_search_dep,
r_cons_dep,
r_core_dep,
r_bin_dep,
r_anal_dep,
r_asm_dep,
r_hash_dep,
r_config_dep
],
install: true,
implicit_include_directories: false

View file

@ -1,6 +1,11 @@
executable('rafind2', 'rafind2.c',
include_directories: [platform_inc],
link_with: [r_util, r_search, r_io, r_cons],
dependencies: [
r_util_dep,
r_search_dep,
r_io_dep,
r_cons_dep
],
install: true,
implicit_include_directories: false
)

View file

@ -1,7 +1,16 @@
executable('ragg2', 'ragg2.c',
include_directories: [platform_inc],
link_with: [
r_util, r_egg, r_bin, r_core, r_hash, r_debug, r_fs, r_config, r_bp, r_crypto
dependencies: [
r_util_dep,
r_egg_dep,
r_bin_dep,
r_core_dep,
r_hash_dep,
r_debug_dep,
r_fs_dep,
r_config_dep,
r_bp_dep,
r_crypto_dep
],
install: true,
implicit_include_directories: false

View file

@ -1,6 +1,12 @@
executable('rahash2', 'rahash2.c',
include_directories: [platform_inc],
link_with: [r_util, r_hash, r_io, r_crypto, r_socket],
dependencies: [
r_util_dep,
r_hash_dep,
r_io_dep,
r_crypto_dep,
r_socket_dep
],
install: true,
implicit_include_directories: false
)

View file

@ -1,6 +1,9 @@
executable('rarun2', 'rarun2.c',
include_directories: [platform_inc],
link_with: [r_util, r_socket],
dependencies: [
r_util_dep,
r_socket_dep
],
install: true,
implicit_include_directories: false
)

View file

@ -1,6 +1,12 @@
executable('rasm2', 'rasm2.c',
include_directories: [platform_inc],
link_with: [r_util, r_asm, r_anal, r_syscall, libr_shlr],
dependencies: [
r_util_dep,
r_asm_dep,
r_anal_dep,
r_syscall_dep,
sdb_dep
],
install: true,
implicit_include_directories: false
)

View file

@ -1,6 +1,6 @@
executable('rax2', 'rax2.c',
include_directories: [platform_inc],
link_with: [r_util],
dependencies: [r_util_dep],
install: true,
implicit_include_directories: false
)

View file

@ -108,45 +108,37 @@ files = [
'../asm/arch/xtensa/gnu/xtensa-modules.c'
]
r_anal_inc = [
platform_inc,
include_directories(
'arch/gb',
'arch/hexagon',
)
]
r_anal = library('r_anal', files,
include_directories: [
platform_inc,
include_directories(
'arch/gb',
'arch/hexagon',
'../asm/arch/8051',
'../asm/arch/cr16',
'../asm/arch/ebc',
'../asm/arch/h8300',
'../asm/arch/hexagon',
'../asm/arch/msp430',
'../asm/arch/propeller',
'../asm/arch/rsp',
'../asm/arch/tms320',
'../asm/arch/v810',
'../asm/arch/v850',
'../asm/arch/wasm',
'../asm/arch/include/',
'../../shlr/capstone/include',
'../../shlr'
)
],
include_directories: r_anal_inc,
c_args: ['-DCORELIB=1'],
link_with: [
r_util,
r_reg,
r_asm,
r_syscall,
r_search,
r_cons,
r_flag,
libr_shlr
dependencies: [
r_util_dep,
r_reg_dep,
r_asm_dep,
r_search_dep,
r_cons_dep,
r_syscall_dep,
r_flag_dep,
sdb_dep,
java_dep,
capstone_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_anal_dep = declare_dependency(link_with: r_anal,
include_directories: r_anal_inc)
pkgconfig_mod.generate(
libraries: [r_anal],
subdirs: 'libr',

View file

@ -150,40 +150,47 @@ files = [
#'arch/z80/z80asm.c',
]
r_asm_inc = [
platform_inc,
include_directories(
'../../shlr',
'arch/include',
'arch',
'arch/h8300',
'arch/hexagon',
'arch/msp430',
'arch/rsp',
'arch/v850',
'arch/propeller',
'arch/ebc',
'arch/cr16',
'arch/8051',
'arch/v810'
)
]
r_asm = library('r_asm', files,
include_directories: [
platform_inc,
include_directories(
'../../shlr/capstone/include',
'../../shlr',
'arch/include',
'arch',
'arch/h8300',
'arch/hexagon',
'arch/msp430',
'arch/rsp',
'arch/v850',
'arch/propeller',
'arch/ebc',
'arch/cr16',
'arch/8051',
)
],
include_directories: r_asm_inc,
c_args: ['-DCORELIB=1'],
link_with: [
r_util,
r_syscall,
r_parse,
r_lang,
r_flag,
r_socket,
libr_shlr
dependencies: [
r_util_dep,
r_syscall_dep,
r_parse_dep,
r_lang_dep,
r_flag_dep,
r_socket_dep,
capstone_dep,
spp_dep,
java_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_asm_dep = declare_dependency(link_with: r_asm,
include_directories: r_asm_inc)
pkgconfig_mod.generate(
libraries: [r_asm],
subdirs: 'libr',

View file

@ -115,27 +115,27 @@ files = [
'pdb/tpi.c'
]
r_bin_inc = [platform_inc, include_directories('mangling', 'format')]
r_bin = library('r_bin', files,
include_directories: [
platform_inc,
include_directories(
'mangling',
'format'
)
],
include_directories: r_bin_inc,
c_args: ['-DCORELIB=1', '-DR_API_BIN_ONLY=1'],
link_with: [
r_util,
r_io,
r_socket,
r_magic,
libr_shlr
dependencies: [
r_util_dep,
r_io_dep,
r_magic_dep,
r_socket_dep,
sdb_dep,
java_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_bin_dep = declare_dependency(link_with: r_bin,
include_directories: r_bin_inc)
pkgconfig_mod.generate(
libraries: [r_bin],
subdirs: 'libr',

View file

@ -15,12 +15,15 @@ files = [
r_bp = library('r_bp', files,
include_directories: [platform_inc],
c_args: ['-DCORELIB=1'],
link_with: [r_util],
dependencies: [r_util_dep],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_bp_dep = declare_dependency(link_with: r_bp,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_bp],
subdirs: 'libr',

View file

@ -5,15 +5,18 @@ files = [
r_config = library('r_config', files,
include_directories: [platform_inc],
link_with: [
r_util,
libr_shlr
dependencies: [
r_util_dep,
sdb_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_config_dep = declare_dependency(link_with: r_config,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_config],
subdirs: 'libr',

View file

@ -19,15 +19,15 @@ files = [
r_cons = library('r_cons', files,
include_directories: [platform_inc],
link_with: [
r_util,
libr_shlr
],
dependencies: [r_util_dep, sdb_dep],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_cons_dep = declare_dependency(link_with: r_cons,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_cons],
subdirs: 'libr',

View file

@ -61,48 +61,51 @@ files = [
'p/core_java.c',
]
includes = ['../../shlr']
r_core_inc = []
if host_machine.system() != 'windows'
includes += ['../../shlr/heap/include']
r_core_inc += ['../../shlr/heap/include']
endif
r_core_inc = [platform_inc, include_directories(r_core_inc)]
r_core = library('r_core', files,
include_directories: [
platform_inc,
include_directories(includes)
],
include_directories: r_core_inc,
c_args: ['-DCORELIB=1'],
link_with: [
r_util,
r_reg,
r_syscall,
r_search,
r_cons,
r_anal,
r_socket,
r_io,
r_fs,
r_lang,
r_hash,
r_flag,
r_parse,
r_egg,
r_debug,
r_magic,
r_crypto,
r_config,
r_bin,
r_asm,
r_bp,
libr_shlr
dependencies: [
r_util_dep,
r_reg_dep,
r_syscall_dep,
r_search_dep,
r_cons_dep,
r_anal_dep,
r_socket_dep,
r_io_dep,
r_fs_dep,
r_lang_dep,
r_magic_dep,
r_hash_dep,
r_flag_dep,
r_parse_dep,
r_egg_dep,
r_debug_dep,
r_crypto_dep,
r_config_dep,
r_bin_dep,
r_asm_dep,
r_bp_dep,
platform_deps,
sdb_dep,
spp_dep,
gdb_dep,
java_dep
],
dependencies: [platform_deps],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_core_dep = declare_dependency(link_with: r_core,
include_directories: r_core_inc)
pkgconfig_mod.generate(
libraries: [r_core],
subdirs: 'libr',

View file

@ -22,13 +22,16 @@ files = [
r_crypto = library('r_crypto', files,
include_directories: [platform_inc],
link_with: [r_util],
dependencies: [r_util_dep],
c_args: ['-DCORELIB=1'],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_crypto_dep = declare_dependency(link_with: r_crypto,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_crypto],
subdirs: 'libr',

View file

@ -55,39 +55,44 @@ if host_machine.system() == 'darwin'
]
endif
r_debug_inc = [
platform_inc,
include_directories(
'../bin/format/elf'
)
]
r_debug = library('r_debug', files,
include_directories: [
platform_inc,
include_directories(
'../bin/format/elf',
'../../shlr/gdb/include',
'../../shlr/qnx/include',
'../../shlr/bochs/include',
'../../shlr/windbg'
)
],
include_directories: r_debug_inc,
c_args: ['-DCORELIB=1'],
link_with: [
r_util,
r_hash,
r_reg,
r_syscall,
r_anal,
r_flag,
r_io,
r_bp,
r_search,
r_cons,
r_lang,
r_egg,
r_socket,
libr_shlr
dependencies: [
r_util_dep,
r_hash_dep,
r_reg_dep,
r_syscall_dep,
r_anal_dep,
r_flag_dep,
r_io_dep,
r_bp_dep,
r_search_dep,
r_cons_dep,
r_lang_dep,
r_egg_dep,
r_socket_dep,
windbg_dep,
qnx_dep,
gdb_dep,
bochs_dep,
sdb_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_debug_dep = declare_dependency(link_with: r_debug,
include_directories: r_debug_inc)
pkgconfig_mod.generate(
libraries: [r_debug],
subdirs: 'libr',

View file

@ -17,17 +17,20 @@ files = [
r_egg = library('r_egg', files,
include_directories: [platform_inc],
c_args: ['-DCORELIB=1'],
link_with: [
r_util,
r_asm,
r_syscall,
libr_shlr
dependencies: [
r_util_dep,
r_asm_dep,
r_syscall_dep,
sdb_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_egg_dep = declare_dependency(link_with: r_egg,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_egg],
subdirs: 'libr',

View file

@ -8,15 +8,18 @@ files = [
r_flag = library('r_flag', files,
include_directories: [platform_inc],
link_with: [
r_util,
libr_shlr
dependencies: [
r_util_dep,
sdb_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_flag_dep = declare_dependency(link_with: r_flag,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_flag],
subdirs: 'libr',

View file

@ -27,22 +27,20 @@ files = [
]
r_fs = library('r_fs', files,
include_directories: [
platform_inc,
include_directories(
'../../shlr/grub/include'
)
],
include_directories: platform_inc,
c_args: ['-DCORELIB=1'],
link_with: [
r_util,
libr_shlr
dependencies: [
r_util_dep,
grub_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_fs_dep = declare_dependency(link_with: r_fs,
include_directories: platform_inc)
pkgconfig_mod.generate(
libraries: [r_fs],
subdirs: 'libr',

View file

@ -16,13 +16,15 @@ files = [
r_hash = library('r_hash', files,
include_directories: [platform_inc],
dependencies: [mth],
link_with: [r_util],
dependencies: [mth, r_util_dep],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_hash_dep = declare_dependency(link_with: r_hash,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_hash],
subdirs: 'libr',

View file

@ -56,21 +56,17 @@ if host_machine.system() == 'windows'
endif
r_io = library('r_io', files,
include_directories: [
platform_inc,
include_directories(
'../../shlr/bochs/include',
'../../shlr/gdb/include',
'../../shlr/qnx/include',
'../../shlr/windbg',
'../../shlr/ar',
'../../shlr/zip/include'
)
],
link_with: [
r_util,
r_socket,
libr_shlr
include_directories: platform_inc,
dependencies: [
r_util_dep,
r_socket_dep,
sdb_dep,
bochs_dep,
gdb_dep,
windbg_dep,
qnx_dep,
zip_dep,
ar_dep
],
c_args: ['-DCORELIB=1'],
install: true,
@ -78,6 +74,9 @@ r_io = library('r_io', files,
soversion: r2_libversion
)
r_io_dep = declare_dependency(link_with: r_io,
include_directories: platform_inc)
pkgconfig_mod.generate(
libraries: [r_io],
subdirs: 'libr',

View file

@ -11,15 +11,15 @@ files = [
r_lang = library('r_lang', files,
include_directories: [platform_inc],
c_args: ['-DCORELIB=1'],
link_with: [
r_util,
r_cons
],
dependencies: [r_util_dep, r_cons_dep],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_lang_dep = declare_dependency(link_with: r_lang,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_lang],
subdirs: 'libr',

View file

@ -9,23 +9,32 @@ files = [
'softmagic.c'
]
r_magic = library('r_magic', files,
include_directories: [platform_inc],
c_args: ['-DCORELIB=1'],
link_with: [r_util],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
if use_lib_magic
message('Use system-provided magic library')
r_magic_dep = sys_magic
else
message('Use bundled magic library')
r_magic = library('r_magic', files,
include_directories: platform_inc,
c_args: ['-DCORELIB=1'],
dependencies: [r_util_dep],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
pkgconfig_mod.generate(
libraries: [r_magic],
subdirs: 'libr',
version: r2_version,
name: 'r_magic',
filebase: 'r_magic',
requires: [
'r_util'
],
description: 'radare foundation libraries'
)
r_magic_dep = declare_dependency(link_with: r_magic,
include_directories: platform_inc)
pkgconfig_mod.generate(
libraries: [r_magic],
subdirs: 'libr',
version: r2_version,
name: 'r_magic',
filebase: 'r_magic',
requires: [
'r_util'
],
description: 'radare foundation libraries'
)
endif

View file

@ -18,25 +18,24 @@ files = [
]
r_parse = library('r_parse', files,
include_directories: [
platform_inc,
include_directories(
'../../shlr/tcc',
)
],
include_directories: platform_inc,
c_args: ['-DCORELIB=1'],
link_with: [
r_util,
r_flag,
r_syscall,
r_reg,
libr_shlr
dependencies: [
r_util_dep,
r_flag_dep,
r_syscall_dep,
r_reg_dep,
sdb_dep,
tcc_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_parse_dep = declare_dependency(link_with: r_parse,
include_directories: platform_inc)
pkgconfig_mod.generate(
libraries: [r_parse],
subdirs: 'libr',

View file

@ -9,12 +9,15 @@ files = [
r_reg = library('r_reg', files,
include_directories: [platform_inc],
link_with: [r_util],
dependencies: [r_util_dep],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_reg_dep = declare_dependency(link_with: r_reg,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_reg],
subdirs: 'libr',

View file

@ -12,12 +12,15 @@ files = [
r_search = library('r_search', files,
include_directories: [platform_inc],
link_with: [r_util],
dependencies: [r_util_dep],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_search_dep = declare_dependency(link_with: r_search,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_search],
subdirs: 'libr',

View file

@ -11,14 +11,16 @@ files = [
r_socket = library('r_socket', files,
include_directories: [platform_inc],
dependencies: [utl, platform_deps],
link_with: [r_util],
dependencies: [utl, r_util_dep, platform_deps],
c_args: ['-DCORELIB=1'],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_socket_dep = declare_dependency(link_with: r_socket,
include_directories: [platform_inc])
pkgconfig_mod.generate(
libraries: [r_socket],
subdirs: 'libr',

View file

@ -5,15 +5,18 @@ files = [
r_syscall = library('r_syscall', files,
include_directories: [platform_inc],
link_with: [
r_util,
libr_shlr
dependencies: [
r_util_dep,
sdb_dep
],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_syscall_dep = declare_dependency(link_with: r_syscall,
include_directories: [platform_inc])
pkgconfig_mod.generate(libraries: [r_syscall],
subdirs: 'libr',
version: r2_version,

View file

@ -1,7 +1,3 @@
# 'big-gmp.c',
# 'big-ssl.c',
# 'mixed.c',
# 'iconv.c',
files = [
'ascii_table.c',
@ -85,19 +81,16 @@ files = [
]
r_util = library('r_util', files,
include_directories: [
platform_inc,
include_directories(
'../../shlr/zip/include'
)
],
dependencies: [ldl, mth, pth, utl],
link_with: [libr_shlr],
include_directories: platform_inc,
dependencies: [ldl, mth, pth, utl, sdb_dep, zip_dep],
install: true,
implicit_include_directories: false,
soversion: r2_libversion
)
r_util_dep = declare_dependency(link_with: r_util,
include_directories: platform_inc)
pkgconfig_mod.generate(
libraries: [r_util],
subdirs: 'libr',

View file

@ -26,7 +26,9 @@ if meson.is_subproject()
endif
endif
version_commit = ''
# by default, not version commit is used
version_commit = '0'
gittap = ''
gittip = 'unknown'
@ -195,7 +197,16 @@ config_h = configure_file(
configuration: conf_data
)
sys_magic = cc.find_library('magic', required: false)
use_lib_magic = false
if sys_magic.found() and get_option('use_sys_magic')
use_lib_magic = true
endif
userconf = configuration_data()
userconf.set('HAVE_LIB_MAGIC', sys_magic.found().to_int())
userconf.set('USE_LIB_MAGIC', use_lib_magic.to_int())
userconf.set('DEBUGGER', 1)
userconf.set('PREFIX', r2_prefix)
userconf.set('LIBDIR', r2_libdir)
@ -211,8 +222,6 @@ userconf.set('HUD', r2_hud)
userconf.set('PLUGINS', r2_plugins)
userconf.set('EXTRAS', r2_extras)
userconf.set('BINDINGS', r2_bindings)
userconf.set('HAVE_LIB_MAGIC', 0)
userconf.set('USE_LIB_MAGIC', 0)
userconf.set('HAVE_OPENSSL', 0)
userconf.set('HAVE_FORK', 1)
userconf.set('WITH_GPL', 1)
@ -322,28 +331,28 @@ if not meson.is_subproject()
subdir('binr/rax2')
else
libr2_dep = declare_dependency(
link_with: [
r_anal,
r_asm,
r_bin,
r_bp,
r_config,
r_cons,
r_core,
r_crypto,
r_egg,
r_flag,
r_fs,
r_hash,
r_io,
r_lang,
r_magic,
r_parse,
r_reg,
r_search,
r_socket,
r_syscall,
r_util
dependencies: [
r_anal_dep,
r_asm_dep,
r_bin_dep,
r_bp_dep,
r_config_dep,
r_cons_dep,
r_core_dep,
r_crypto_dep,
r_egg_dep,
r_flag_dep,
r_fs_dep,
r_hash_dep,
r_io_dep,
r_lang_dep,
r_magic_dep,
r_parse_dep,
r_reg_dep,
r_search_dep,
r_socket_dep,
r_syscall_dep,
r_util_dep
],
include_directories: include_directories('.', 'libr/include'),
version: r2_version

View file

@ -12,3 +12,5 @@ option('r2_hud', type: 'string', value: '')
option('r2_version_commit', type: 'string', value: '')
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)

View file

@ -1,121 +1,102 @@
res = run_command(py3_exe, '-c', '__import__("sys").exit(__import__("os").path.exists("capstone"))')
if res.returncode() == 0
if not git_exe.found()
error('Cannot load capstone library. Either provide capstone in ./shlr/capstone or install git, so it can be downloaded')
# handle capstone dependency
capstone_dep = dependency('capstone', version: '>=3.0.4', required: false)
if not capstone_dep.found() or not get_option('use_sys_capstone')
message('Use bundled capstone')
res = run_command(py3_exe, '-c', '__import__("sys").exit(__import__("os").path.exists("capstone"))')
if res.returncode() == 0
if not git_exe.found()
error('Cannot load capstone library. Either provide capstone in ./shlr/capstone or install git, so it can be downloaded')
endif
message('Cloning capstone')
git_cmd = 'clone -b next --depth 10 https://github.com/aquynh/capstone.git capstone'
run_command(git_exe, git_cmd.split())
endif
message('Cloning capstone')
git_cmd = 'clone -b next --depth 10 https://github.com/aquynh/capstone.git capstone'
run_command(git_exe, git_cmd.split())
cs_files = [
'capstone/arch/AArch64/AArch64BaseInfo.c',
'capstone/arch/AArch64/AArch64Disassembler.c',
'capstone/arch/AArch64/AArch64InstPrinter.c',
'capstone/arch/AArch64/AArch64Mapping.c',
'capstone/arch/AArch64/AArch64Module.c',
'capstone/arch/ARM/ARMDisassembler.c',
'capstone/arch/ARM/ARMInstPrinter.c',
'capstone/arch/ARM/ARMMapping.c',
'capstone/arch/ARM/ARMModule.c',
'capstone/arch/M68K/M68KDisassembler.c',
'capstone/arch/M68K/M68KInstPrinter.c',
'capstone/arch/M68K/M68KModule.c',
'capstone/arch/Mips/MipsDisassembler.c',
'capstone/arch/Mips/MipsInstPrinter.c',
'capstone/arch/Mips/MipsMapping.c',
'capstone/arch/Mips/MipsModule.c',
'capstone/arch/PowerPC/PPCDisassembler.c',
'capstone/arch/PowerPC/PPCInstPrinter.c',
'capstone/arch/PowerPC/PPCMapping.c',
'capstone/arch/PowerPC/PPCModule.c',
'capstone/arch/Sparc/SparcDisassembler.c',
'capstone/arch/Sparc/SparcInstPrinter.c',
'capstone/arch/Sparc/SparcMapping.c',
'capstone/arch/Sparc/SparcModule.c',
'capstone/arch/SystemZ/SystemZDisassembler.c',
'capstone/arch/SystemZ/SystemZInstPrinter.c',
'capstone/arch/SystemZ/SystemZMapping.c',
'capstone/arch/SystemZ/SystemZMCTargetDesc.c',
'capstone/arch/SystemZ/SystemZModule.c',
'capstone/arch/TMS320C64x/TMS320C64xDisassembler.c',
'capstone/arch/TMS320C64x/TMS320C64xInstPrinter.c',
'capstone/arch/TMS320C64x/TMS320C64xMapping.c',
'capstone/arch/TMS320C64x/TMS320C64xModule.c',
'capstone/arch/X86/X86ATTInstPrinter.c',
'capstone/arch/X86/X86Disassembler.c',
'capstone/arch/X86/X86DisassemblerDecoder.c',
'capstone/arch/X86/X86IntelInstPrinter.c',
'capstone/arch/X86/X86Mapping.c',
'capstone/arch/X86/X86Module.c',
'capstone/arch/XCore/XCoreDisassembler.c',
'capstone/arch/XCore/XCoreInstPrinter.c',
'capstone/arch/XCore/XCoreMapping.c',
'capstone/arch/XCore/XCoreModule.c',
'capstone/cs.c',
'capstone/MCInst.c',
'capstone/MCInstrDesc.c',
'capstone/MCRegisterInfo.c',
'capstone/SStream.c',
'capstone/utils.c',
]
capstone_includes = [platform_inc, include_directories('capstone/include')]
libr2capstone = static_library('r2capstone', cs_files,
c_args: [
'-DCAPSTONE_X86_ATT_DISABLE_NO',
'-DCAPSTONE_X86_REDUCE_NO',
'-DCAPSTONE_USE_SYS_DYN_MEM',
'-DCAPSTONE_DIET_NO',
'-DCAPSTONE_HAS_ARM',
'-DCAPSTONE_HAS_ARM64',
'-DCAPSTONE_HAS_M68K',
'-DCAPSTONE_HAS_MIPS',
'-DCAPSTONE_HAS_POWERPC',
'-DCAPSTONE_HAS_SPARC',
'-DCAPSTONE_HAS_SYSZ',
'-DCAPSTONE_HAS_X86',
'-DCAPSTONE_HAS_XCORE',
'-DCAPSTONE_HAS_TMS320C64X',
],
include_directories: capstone_includes,
implicit_include_directories: false
)
capstone_dep = declare_dependency(link_with: libr2capstone,
include_directories: capstone_includes)
else
message('Use system-provided capstone library')
endif
bochs_files = [
'bochs/src/libbochs.c'
]
libr2bochs = static_library('r2bochs', bochs_files,
include_directories: [
platform_inc,
include_directories([
'bochs/include'
])
],
implicit_include_directories: false
)
gdb_files = [
'gdb/src/arch.c',
'gdb/src/common.c',
'gdb/src/packet.c',
'gdb/src/utils.c',
'gdb/src/libgdbr.c',
'gdb/src/gdbclient/core.c',
'gdb/src/gdbclient/responses.c',
'gdb/src/gdbclient/xml.c',
'gdb/src/gdbserver/core.c',
]
libr2gdb = static_library('r2gdb', gdb_files,
include_directories: [
platform_inc,
include_directories([
'./gdb/include',
'./gdb/include/gdbclient',
'./gdb/include/gdbserver'
])
],
implicit_include_directories: false
)
java_files = [
'java/class.c',
'java/code.c',
'java/dsojson.c',
'java/ops.c',
#'java/main.c',
]
libr2java = static_library('r2java', java_files,
include_directories: [
platform_inc,
include_directories([
'java'
])
],
implicit_include_directories: false
)
qnx_files = [
'qnx/src/core.c',
'qnx/src/libqnxr.c',
'qnx/src/packet.c',
'qnx/src/sigutil.c',
'qnx/src/utils.c',
]
libr2qnx = static_library('r2qnx', qnx_files,
include_directories: [
platform_inc,
include_directories([
'qnx/include'
])
],
implicit_include_directories: false
)
tcc_files = [
'tcc/libtcc.c',
'tcc/tccgen.c',
'tcc/tccpp.c'
]
libr2tcc = static_library('r2tcc', tcc_files,
include_directories: [
platform_inc,
include_directories([
'tcc'
])
],
implicit_include_directories: false
)
spp_files = [
'spp/spp.c'
]
libr2spp = static_library('r2spp', spp_files,
include_directories: [
platform_inc,
include_directories([
'spp/'
])
],
c_args: ['-DHAVE_R_UTIL'],
implicit_include_directories: false
)
# handle sdb dependency
sdb_files = [
'sdb/src/array.c',
'sdb/src/base64.c',
@ -140,31 +121,152 @@ sdb_files = [
'sdb/src/util.c'
]
sdb_inc = [platform_inc, include_directories('sdb/src')]
libr2sdb = static_library('r2sdb', sdb_files,
include_directories: [
platform_inc,
include_directories([
'sdb/src',
'../libr/include/sdb'
])
],
include_directories: sdb_inc,
implicit_include_directories: false
)
sdb_dep = declare_dependency(link_with: libr2sdb,
include_directories: sdb_inc)
# handle bochs dependency
bochs_files = [
'bochs/src/libbochs.c'
]
bochs_inc = [platform_inc, include_directories('bochs/include')]
libr2bochs = static_library('r2bochs', bochs_files,
include_directories: bochs_inc,
implicit_include_directories: false
)
bochs_dep = declare_dependency(link_with: libr2bochs,
include_directories: bochs_inc)
# handle gdb dependency
gdb_files = [
'gdb/src/arch.c',
'gdb/src/common.c',
'gdb/src/packet.c',
'gdb/src/utils.c',
'gdb/src/libgdbr.c',
'gdb/src/gdbclient/core.c',
'gdb/src/gdbclient/responses.c',
'gdb/src/gdbclient/xml.c',
'gdb/src/gdbserver/core.c',
]
gdb_inc = [platform_inc, include_directories('./gdb/include', './gdb/include/gdbclient', './gdb/include/gdbserver')]
libr2gdb = static_library('r2gdb', gdb_files,
include_directories: gdb_inc,
implicit_include_directories: false
)
gdb_dep = declare_dependency(link_with: libr2gdb,
include_directories: gdb_inc)
# handle java dependency
java_files = [
'java/class.c',
'java/code.c',
'java/dsojson.c',
'java/ops.c',
#'java/main.c',
]
java_inc = [platform_inc, include_directories('java')]
libr2java = static_library('r2java', java_files,
include_directories: java_inc,
dependencies: [sdb_dep],
implicit_include_directories: false
)
java_dep = declare_dependency(link_with: libr2java,
include_directories: java_inc)
# handle qnx dependency
qnx_files = [
'qnx/src/core.c',
'qnx/src/libqnxr.c',
'qnx/src/packet.c',
'qnx/src/sigutil.c',
'qnx/src/utils.c',
]
qnx_inc = [platform_inc, include_directories('qnx/include')]
libr2qnx = static_library('r2qnx', qnx_files,
include_directories: qnx_inc,
implicit_include_directories: false
)
qnx_dep = declare_dependency(link_with: libr2qnx,
include_directories: qnx_inc)
# handle tcc dependency (heavily modified version)
tcc_files = [
'tcc/libtcc.c',
'tcc/tccgen.c',
'tcc/tccpp.c'
]
tcc_inc = [platform_inc, include_directories('tcc')]
libr2tcc = static_library('r2tcc', tcc_files,
include_directories: tcc_inc,
implicit_include_directories: false
)
tcc_dep = declare_dependency(link_with: libr2tcc,
include_directories: tcc_inc)
# handle spp dependency
spp_files = [
'spp/spp.c'
]
spp_inc = [platform_inc, include_directories('spp')]
libr2spp = static_library('r2spp', spp_files,
include_directories: spp_inc,
c_args: ['-DHAVE_R_UTIL'],
implicit_include_directories: false
)
spp_dep = declare_dependency(link_with: libr2spp,
include_directories: spp_inc)
# handle lz4 dependency
lz4_files = [
'lz4/lz4.c',
]
lz4_inc = [platform_inc, include_directories('lz4')]
libr2lz4 = static_library('r2lz4', lz4_files,
include_directories: [
platform_inc,
include_directories([
'lz4'
])
],
include_directories: lz4_inc,
implicit_include_directories: false
)
lz4_dep = declare_dependency(link_with: libr2lz4,
include_directories: lz4_inc)
# handle zip dependency
zlib_files = [
'zip/zip/zip_add.c',
'zip/zip/zip_add_dir.c',
@ -265,93 +367,18 @@ zlib_files = [
'zip/zlib/zutil.c'
]
zip_inc = [platform_inc, include_directories('zip/include')]
libr2zip = static_library('r2zip', zlib_files,
include_directories: [
platform_inc,
include_directories([
'zip/include'
])
],
include_directories: zip_inc,
implicit_include_directories: false
)
cs_files = [
'capstone/arch/AArch64/AArch64BaseInfo.c',
'capstone/arch/AArch64/AArch64Disassembler.c',
'capstone/arch/AArch64/AArch64InstPrinter.c',
'capstone/arch/AArch64/AArch64Mapping.c',
'capstone/arch/AArch64/AArch64Module.c',
'capstone/arch/ARM/ARMDisassembler.c',
'capstone/arch/ARM/ARMInstPrinter.c',
'capstone/arch/ARM/ARMMapping.c',
'capstone/arch/ARM/ARMModule.c',
'capstone/arch/M68K/M68KDisassembler.c',
'capstone/arch/M68K/M68KInstPrinter.c',
'capstone/arch/M68K/M68KModule.c',
'capstone/arch/Mips/MipsDisassembler.c',
'capstone/arch/Mips/MipsInstPrinter.c',
'capstone/arch/Mips/MipsMapping.c',
'capstone/arch/Mips/MipsModule.c',
'capstone/arch/PowerPC/PPCDisassembler.c',
'capstone/arch/PowerPC/PPCInstPrinter.c',
'capstone/arch/PowerPC/PPCMapping.c',
'capstone/arch/PowerPC/PPCModule.c',
'capstone/arch/Sparc/SparcDisassembler.c',
'capstone/arch/Sparc/SparcInstPrinter.c',
'capstone/arch/Sparc/SparcMapping.c',
'capstone/arch/Sparc/SparcModule.c',
'capstone/arch/SystemZ/SystemZDisassembler.c',
'capstone/arch/SystemZ/SystemZInstPrinter.c',
'capstone/arch/SystemZ/SystemZMapping.c',
'capstone/arch/SystemZ/SystemZMCTargetDesc.c',
'capstone/arch/SystemZ/SystemZModule.c',
'capstone/arch/TMS320C64x/TMS320C64xDisassembler.c',
'capstone/arch/TMS320C64x/TMS320C64xInstPrinter.c',
'capstone/arch/TMS320C64x/TMS320C64xMapping.c',
'capstone/arch/TMS320C64x/TMS320C64xModule.c',
'capstone/arch/X86/X86ATTInstPrinter.c',
'capstone/arch/X86/X86Disassembler.c',
'capstone/arch/X86/X86DisassemblerDecoder.c',
'capstone/arch/X86/X86IntelInstPrinter.c',
'capstone/arch/X86/X86Mapping.c',
'capstone/arch/X86/X86Module.c',
'capstone/arch/XCore/XCoreDisassembler.c',
'capstone/arch/XCore/XCoreInstPrinter.c',
'capstone/arch/XCore/XCoreMapping.c',
'capstone/arch/XCore/XCoreModule.c',
'capstone/cs.c',
'capstone/MCInst.c',
'capstone/MCInstrDesc.c',
'capstone/MCRegisterInfo.c',
'capstone/SStream.c',
'capstone/utils.c',
]
zip_dep = declare_dependency(link_with: libr2zip,
include_directories: zip_inc)
libr2capstone = static_library('r2capstone', cs_files,
c_args: [
'-DCAPSTONE_X86_ATT_DISABLE_NO',
'-DCAPSTONE_X86_REDUCE_NO',
'-DCAPSTONE_USE_SYS_DYN_MEM',
'-DCAPSTONE_DIET_NO',
'-DCAPSTONE_HAS_ARM',
'-DCAPSTONE_HAS_ARM64',
'-DCAPSTONE_HAS_M68K',
'-DCAPSTONE_HAS_MIPS',
'-DCAPSTONE_HAS_POWERPC',
'-DCAPSTONE_HAS_SPARC',
'-DCAPSTONE_HAS_SYSZ',
'-DCAPSTONE_HAS_X86',
'-DCAPSTONE_HAS_XCORE',
'-DCAPSTONE_HAS_TMS320C64X',
],
include_directories: [
include_directories([
'capstone/include'
])
],
implicit_include_directories: false
)
# handle grub dependency
grub_files = [
'grub/fs/affs.c',
#'grub/fs/afs.c',
@ -405,17 +432,18 @@ grub_files = [
'grub/partmap/sunpc.c',
]
grub_inc = [platform_inc, include_directories('grub', 'grub/include')]
libr2grub = static_library('r2grub', grub_files,
include_directories: [
platform_inc,
include_directories([
'grub',
'grub/include'
])
],
include_directories: grub_inc,
implicit_include_directories: false
)
grub_dep = declare_dependency(link_with: libr2grub,
include_directories: grub_inc)
# handle windbg dependency
windbg_files = [
'windbg/iob_pipe.c',
'windbg/kd.c',
@ -423,32 +451,34 @@ windbg_files = [
'windbg/windbg.c',
]
windbg_inc = [platform_inc, include_directories('windbg')]
libr2windbg = static_library('r2windbg', windbg_files,
include_directories: [
platform_inc,
include_directories([
'windbg'
])
],
include_directories: windbg_inc,
implicit_include_directories: false
)
windbg_dep = declare_dependency(link_with: libr2windbg,
include_directories: windbg_inc)
# handle ar dependency
ar_files = [
'ar/ar.c'
]
ar_inc = [platform_inc, include_directories(['ar'])]
libr2ar = static_library('r2ar', ar_files,
include_directories: [
platform_inc,
include_directories([
'ar'
])
],
include_directories: ar_inc,
implicit_include_directories: false
)
ar_dep = declare_dependency(link_with: libr2ar,
include_directories: ar_inc)
libr_shlr = [
libr2ar, libr2bochs, libr2capstone, libr2gdb, libr2grub, libr2java, libr2lz4,
libr2ar, libr2bochs, libr2gdb, libr2grub, libr2java, libr2lz4,
libr2qnx, libr2sdb, libr2spp, libr2spp, libr2tcc, libr2windbg, libr2zip
]

View file

@ -21,3 +21,4 @@ print_var CXX "${CXX}"
print_var CFLAGS "${CFLAGS}"
print_var LDFLAGS "${LDFLAGS}"
print_var CXXFLAGS "${CXXFLAGS}"
print_var INSTALL_SYSTEM "${INSTALL_SYSTEM}"

View file

@ -1,14 +1,26 @@
#!/bin/bash
set -x
export PKG_CONFIG_PATH=${TRAVIS_BUILD_DIR}/pkgcfg:${PKG_CONFIG_PATH}
export PATH=${TRAVIS_BUILD_DIR}/install/bin:${PATH}
export LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/install/lib:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/install/lib:${TRAVIS_BUILD_DIR}/install/lib64:${LD_LIBRARY_PATH}
git clone --depth 1 --branch "${R2R_BRANCH}" "${R2R_REPO}" || true # If cloning fails that's not an error: we simply fallback to master.
ls radare2-regressions >/dev/null 2>&1 || git clone --depth 1 --branch "${R2R_DEFAULT_BRANCH}" "${R2R_DEFAULT_REPO}"
./configure --prefix=${TRAVIS_BUILD_DIR}/install > /dev/null || exit 1
make -s -j2 > /dev/null || exit 1
make install > /dev/null || exit 1
if [ "${INSTALL_SYSTEM}" == "meson" ] ; then
echo "Installing with meson + ninja"
meson --prefix=${TRAVIS_BUILD_DIR}/install build
pushd build
ninja
ninja install
popd
export PKG_CONFIG_PATH=$(pwd)/build/meson-private:${PKG_CONFIG_PATH}
else
echo "Installing with acr + make"
./configure --prefix=${TRAVIS_BUILD_DIR}/install > /dev/null || exit 1
make -s -j2 > /dev/null || exit 1
make install > /dev/null || exit 1
export PKG_CONFIG_PATH=${TRAVIS_BUILD_DIR}/pkgcfg:${PKG_CONFIG_PATH}
fi
#[ "$TRAVIS_OS_NAME" != "osx" ] && mkdir -p /tmp/kcov && pushd /tmp/kcov
#[ "$TRAVIS_OS_NAME" != "osx" ] && mkdir ${TRAVIS_BUILD_DIR}/kcov
#[ "$TRAVIS_OS_NAME" != "osx" ] && wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz && tar xzf master.tar.gz && mkdir kcov-master/build && cd kcov-master/build && cmake .. && make && make install DESTDIR=../tmp && popd