Skip to content

Commit

Permalink
Add --without-qjs and -Dwith_qjs=false options ##build
Browse files Browse the repository at this point in the history
  • Loading branch information
radare authored and trufae committed Jan 23, 2025
1 parent 2c770da commit 25fca65
Show file tree
Hide file tree
Showing 10 changed files with 22 additions and 6 deletions.
1 change: 1 addition & 0 deletions config-user.mk.acr
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ HAVE_LIB_GMP=@HAVE_LIB_GMP@
USE_RPATH=@USE_RPATH@
HAVE_JEMALLOC=@HAVE_JEMALLOC@
HAVE_FORK=@HAVE_FORK@
WANT_QJS=@WANT_QJS@
WANT_DYLINK=@WANT_DYLINK@
WANT_CAPSTONE=@WANT_CAPSTONE@
WITH_STATIC_THEMES=@WITH_STATIC_THEMES@
Expand Down
9 changes: 6 additions & 3 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ USE_MAGIC=0
WANT_THREADS=1
LOADLIBS=1
R_CRITICAL_ENABLED=0
WANT_QJS=1
WANT_DYLINK=1
HAVE_FORK=1
WANT_PTRACE_WRAP=1
Expand Down Expand Up @@ -201,6 +202,7 @@ Optional Features:
--disable-threads disable use of thread apis
--disable-loadlibs disable loading plugins
--enable-threadsafety enable mutexes in critical code paths
--without-qjs build without the QuickJS runtime
--without-dylink disable support for dynamic loading of plugins
--without-fork disable fork
--without-ptrace-wrap build ptrace-wrap support needed for the iaito debugger on Linux
Expand Down Expand Up @@ -305,7 +307,7 @@ echo "LANGS: c"
echo "REQUIRED: libdl"
echo "OPTIONAL: libatomic libmagic libz libzip libxxhash libssl liblibuv>=1.0.0"
echo "PKGCONFIG: capstone libsqsh liblz4 openssl libuv"
echo "FLAGS: --disable-debugger --with-libatomic --with-sysmagic --disable-threads --disable-loadlibs --enable-threadsafety --without-dylink --without-fork --without-ptrace-wrap --without-gperf --without-capstone --with-libr --with-static-themes --with-capstone-next --with-capstone5 --with-capstone4 --with-syscapstone --without-syscapstone --without-sqsh --with-syslz4 --with-syszip --with-sysxxhash --without-gpl --with-ssl --with-ssl-crypto --with-libuv --with-new-abi --with-rpath --with-compiler=gcc --with-ostype=auto --with-libversion=xxx --without-jemalloc --with-checks-level=2 --disable-debug-stuff"
echo "FLAGS: --disable-debugger --with-libatomic --with-sysmagic --disable-threads --disable-loadlibs --enable-threadsafety --without-qjs --without-dylink --without-fork --without-ptrace-wrap --without-gperf --without-capstone --with-libr --with-static-themes --with-capstone-next --with-capstone5 --with-capstone4 --with-syscapstone --without-syscapstone --without-sqsh --with-syslz4 --with-syszip --with-sysxxhash --without-gpl --with-ssl --with-ssl-crypto --with-libuv --with-new-abi --with-rpath --with-compiler=gcc --with-ostype=auto --with-libversion=xxx --without-jemalloc --with-checks-level=2 --disable-debug-stuff"
exit 0
;;
--cache-file)
Expand Down Expand Up @@ -363,6 +365,7 @@ echo "FLAGS: --disable-debugger --with-libatomic --with-sysmagic --disable
"--disable-threads") WANT_THREADS="0"; ;;
"--disable-loadlibs") LOADLIBS="0"; ;;
"--enable-threadsafety") R_CRITICAL_ENABLED="1"; ;;
"--without-qjs") WANT_QJS="0"; ;;
"--without-dylink") WANT_DYLINK="0"; ;;
"--without-fork") HAVE_FORK="0"; ;;
"--without-ptrace-wrap") WANT_PTRACE_WRAP="0"; ;;
Expand Down Expand Up @@ -408,7 +411,7 @@ parse_options "$1"
shift
done

ENVWORDS="MANDIR DESCRIPTION INFODIR LIBDIR INCLUDEDIR LOCALSTATEDIR ETCDIR SYSCONFDIR DATADIR DOCDIR LIBEXECDIR SBINDIR BINDIR EPREFIX PREFIX SPREFIX TARGET HOST BUILD INSTALL INSTALL_LIB INSTALL_MAN INSTALL_PROGRAM INSTALL_PROGRAM_STRIP INSTALL_DIR INSTALL_SCRIPT INSTALL_DATA HOST_OS HOST_CPU BUILD_OS BUILD_CPU TARGET_OS TARGET_CPU VERSION VERSION_MAJOR VERSION_MINOR VERSION_PATCH VERSION_NUMBER PKGCFG_LIBDIR PKGCFG_INCDIR PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS CPPFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS PKGCONFIG R2_BUILDSYSTEM HAVE_PATCH PATCH HAVE_AR AR HAVE_GIT GIT HAVE_GPERF GPERF HAVE_LIB_ATOMIC HAVE_LIB_MAGIC HAVE_LINUX_CAN_H USE_LIB_ATOMIC LIBATOMIC USE_MAGIC USE_LIB_MAGIC LIBMAGIC WANT_THREADS LOADLIBS R_CRITICAL_ENABLED WANT_DYLINK HAVE_FORK WANT_PTRACE_WRAP WANT_GPERF WANT_CAPSTONE WITH_LIBR WITH_STATIC_THEMES USE_CSNEXT USE_CS5 USE_CS4 WITH_CAPSTONE WITHOUT_SYSCAPSTONE CAPSTONE_CFLAGS CAPSTONE_LDFLAGS HAVE_PKGCFG_CAPSTONE USE_CAPSTONE SQSH_CFLAGS SQSH_LDFLAGS HAVE_PKGCFG_LIBSQSH WITH_SQSH USE_SQSH LZ4_CFLAGS LZ4_LDFLAGS HAVE_PKGCFG_LIBLZ4 WITH_SYSLZ4 USE_SYSLZ4 HAVE_LIB_Z HAVE_LIB_ZIP USE_ZIP USE_LIB_ZIP LIBZIP HAVE_LIB_XXHASH USE_XXHASH USE_LIB_XXHASH LIBXXHASH WITH_GPL HAVE_DECL_ADDR_NO_RANDOMIZE HAVE_DECL___GLIBC__ HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO HAVE_EXPLICIT_MEMSET HAVE_CLOCK_NANOSLEEP HAVE___ATOMIC_FETCH_ADD_8 HAVE_SIGACTION HAVE_CLOCK_GETTIME FORCE_LIB_ATOMIC CLOCK_LDFLAGS SUPPORT_GNU99 HAVE_LIB_GMP WANT_SSL WANT_SSL_CRYPTO HAVE_OPENSSL SSL_CFLAGS SSL_LDFLAGS HAVE_LIB_SSL HAVE_PKGCFG_OPENSSL WANT_LIBUV HAVE_LIBUV_VERSION_1_0_0 LIBUV_CFLAGS LIBUV_LDFLAGS HAVE_PKGCFG_LIBUV HAVE_LIBUV USE_NEW_ABI USE_RPATH USERCC USEROSTYPE LIBVERSION HAVE_JEMALLOC HAVE_PTRACE USE_PTRACE_WRAP R_CHECKS_LEVEL WANT_DEBUGSTUFF"
ENVWORDS="MANDIR DESCRIPTION INFODIR LIBDIR INCLUDEDIR LOCALSTATEDIR ETCDIR SYSCONFDIR DATADIR DOCDIR LIBEXECDIR SBINDIR BINDIR EPREFIX PREFIX SPREFIX TARGET HOST BUILD INSTALL INSTALL_LIB INSTALL_MAN INSTALL_PROGRAM INSTALL_PROGRAM_STRIP INSTALL_DIR INSTALL_SCRIPT INSTALL_DATA HOST_OS HOST_CPU BUILD_OS BUILD_CPU TARGET_OS TARGET_CPU VERSION VERSION_MAJOR VERSION_MINOR VERSION_PATCH VERSION_NUMBER PKGCFG_LIBDIR PKGCFG_INCDIR PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS CPPFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS PKGCONFIG R2_BUILDSYSTEM HAVE_PATCH PATCH HAVE_AR AR HAVE_GIT GIT HAVE_GPERF GPERF HAVE_LIB_ATOMIC HAVE_LIB_MAGIC HAVE_LINUX_CAN_H USE_LIB_ATOMIC LIBATOMIC USE_MAGIC USE_LIB_MAGIC LIBMAGIC WANT_THREADS LOADLIBS R_CRITICAL_ENABLED WANT_QJS WANT_DYLINK HAVE_FORK WANT_PTRACE_WRAP WANT_GPERF WANT_CAPSTONE WITH_LIBR WITH_STATIC_THEMES USE_CSNEXT USE_CS5 USE_CS4 WITH_CAPSTONE WITHOUT_SYSCAPSTONE CAPSTONE_CFLAGS CAPSTONE_LDFLAGS HAVE_PKGCFG_CAPSTONE USE_CAPSTONE SQSH_CFLAGS SQSH_LDFLAGS HAVE_PKGCFG_LIBSQSH WITH_SQSH USE_SQSH LZ4_CFLAGS LZ4_LDFLAGS HAVE_PKGCFG_LIBLZ4 WITH_SYSLZ4 USE_SYSLZ4 HAVE_LIB_Z HAVE_LIB_ZIP USE_ZIP USE_LIB_ZIP LIBZIP HAVE_LIB_XXHASH USE_XXHASH USE_LIB_XXHASH LIBXXHASH WITH_GPL HAVE_DECL_ADDR_NO_RANDOMIZE HAVE_DECL___GLIBC__ HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO HAVE_EXPLICIT_MEMSET HAVE_CLOCK_NANOSLEEP HAVE___ATOMIC_FETCH_ADD_8 HAVE_SIGACTION HAVE_CLOCK_GETTIME FORCE_LIB_ATOMIC CLOCK_LDFLAGS SUPPORT_GNU99 HAVE_LIB_GMP WANT_SSL WANT_SSL_CRYPTO HAVE_OPENSSL SSL_CFLAGS SSL_LDFLAGS HAVE_LIB_SSL HAVE_PKGCFG_OPENSSL WANT_LIBUV HAVE_LIBUV_VERSION_1_0_0 LIBUV_CFLAGS LIBUV_LDFLAGS HAVE_PKGCFG_LIBUV HAVE_LIBUV USE_NEW_ABI USE_RPATH USERCC USEROSTYPE LIBVERSION HAVE_JEMALLOC HAVE_PTRACE USE_PTRACE_WRAP R_CHECKS_LEVEL WANT_DEBUGSTUFF"

create_environ

Expand Down Expand Up @@ -1046,7 +1049,7 @@ do_remove
if [ "$QUIET" = 0 ]; then
echo
echo "Final report:"
for A in BUILD CC CFLAGS DEBUGGER HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO USE_NEW_ABI HAVE_EXPLICIT_MEMSET HAVE_FORK HAVE_GPERF HAVE_LIBUV HAVE_LIB_GMP WANT_DEBUGSTUFF HAVE_OPENSSL WANT_SSL_CRYPTO HAVE_PTRACE HOST LDFLAGS LIBVERSION PKGCONFIG PREFIX R_CHECKS_LEVEL TARGET USERCC USEROSTYPE USE_CAPSTONE USE_LIB_MAGIC NEW_IO_CACHE USE_SQSH USE_LIB_XXHASH USE_LIB_ZIP USE_PTRACE_WRAP USE_SYSLZ4 VERSION WANT_DYLINK USE_SMALLZ4 USE_LIB_ATOMIC HAVE___ATOMIC_FETCH_ADD_8 FORCE_LIB_ATOMIC ; do
for A in BUILD CC CFLAGS DEBUGGER HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO USE_NEW_ABI HAVE_EXPLICIT_MEMSET HAVE_FORK HAVE_GPERF HAVE_LIBUV HAVE_LIB_GMP WANT_DEBUGSTUFF HAVE_OPENSSL WANT_SSL_CRYPTO HAVE_PTRACE HOST LDFLAGS LIBVERSION PKGCONFIG PREFIX R_CHECKS_LEVEL TARGET USERCC USEROSTYPE USE_CAPSTONE USE_LIB_MAGIC NEW_IO_CACHE USE_SQSH USE_LIB_XXHASH USE_LIB_ZIP USE_PTRACE_WRAP USE_SYSLZ4 VERSION WANT_DYLINK USE_SMALLZ4 USE_LIB_ATOMIC HAVE___ATOMIC_FETCH_ADD_8 FORCE_LIB_ATOMIC WANT_QJS ; do
eval VAL="\$${A}"
[ -z "${VAL}" ] && VAL="\"\""
echo " - ${A} = ${VAL}"
Expand Down
3 changes: 2 additions & 1 deletion configure.acr
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ ARG_DISABLE LOADLIBS loadlibs disable loading plugins ;

ARG_ENABLE R_CRITICAL_ENABLED threadsafety enable mutexes in critical code paths ;

ARG_WITHOUT WANT_QJS qjs build without the QuickJS runtime ;
ARG_WITHOUT WANT_DYLINK dylink disable support for dynamic loading of plugins ;
ARG_WITHOUT HAVE_FORK fork disable fork ;
ARG_WITHOUT WANT_PTRACE_WRAP ptrace-wrap build ptrace-wrap support needed for the iaito debugger on Linux ;
Expand Down Expand Up @@ -334,7 +335,7 @@ REPORT
HAVE_OPENSSL WANT_SSL_CRYPTO HAVE_PTRACE HOST LDFLAGS LIBVERSION PKGCONFIG PREFIX
R_CHECKS_LEVEL TARGET USERCC USEROSTYPE USE_CAPSTONE USE_LIB_MAGIC NEW_IO_CACHE USE_SQSH
USE_LIB_XXHASH USE_LIB_ZIP USE_PTRACE_WRAP USE_SYSLZ4 VERSION WANT_DYLINK USE_SMALLZ4
USE_LIB_ATOMIC HAVE___ATOMIC_FETCH_ADD_8 FORCE_LIB_ATOMIC
USE_LIB_ATOMIC HAVE___ATOMIC_FETCH_ADD_8 FORCE_LIB_ATOMIC WANT_QJS
;

PKGCFG_DO pkgcfg/r_egg.pc r_egg r_asm r_syscall r_util r_reg r_flag r_cons ;
Expand Down
1 change: 1 addition & 0 deletions libr/config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#define R_DEBUG 0
#define R_RTDEBUG 1
#define WANT_THREADS @WANT_THREADS@
#define WANT_QJS @WANT_QJS@

/* inlined APIs */
#define R_INLINE 0
Expand Down
1 change: 1 addition & 0 deletions libr/include/r_userconf.h.acr
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ extern "C" {
#define HAVE_CLOCK_NANOSLEEP @HAVE_CLOCK_NANOSLEEP@
#define HAVE_SIGACTION @HAVE_SIGACTION@
#define WANT_THREADS @WANT_THREADS@
#define WANT_QJS @WANT_QJS@
#define WANT_CAPSTONE @WANT_CAPSTONE@
#define HAVE_LINUX_CAN_H @HAVE_LINUX_CAN_H@
#define R2_USE_NEW_ABI @USE_NEW_ABI@
Expand Down
5 changes: 3 additions & 2 deletions libr/lang/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ R2DEPS+=r_syscall
R2DEPS+=r_flag
CFLAGS+=-DR2_PLUGIN_INCORE
CFLAGS+=-DCONFIG_VERSION=\"0.0.0\"
OBJS+=$(QJS_OBJS)
# LINK+=$(QJS_FILES)
LDFLAGS+=$(LIBATOMIC)

ifeq ($(WANT_QJS),1)
OBJS+=$(QJS_OBJS)
include ../../shlr/qjs/deps.mk
endif
include ../rules.mk
2 changes: 2 additions & 0 deletions libr/lang/lang.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,9 @@ R_API RLang *r_lang_new(void) {
r_lang_plugin_add (lang, &r_lang_plugin_spp);
r_lang_plugin_add (lang, &r_lang_plugin_lib);
r_lang_plugin_add (lang, &r_lang_plugin_asm);
#if WANT_QJS
r_lang_plugin_add (lang, &r_lang_plugin_qjs);
#endif
r_lang_plugin_add (lang, &r_lang_plugin_tsc);
r_lang_plugin_add (lang, &r_lang_plugin_nim);
r_lang_plugin_add (lang, &r_lang_plugin_dart);
Expand Down
3 changes: 3 additions & 0 deletions libr/lang/p/qjs.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#include <r_core.h>
#include <r_vec.h>

#if WANT_QJS

#define countof(x) (sizeof (x) / sizeof ((x)[0]))

//#include <qjs/quickjs.h>
Expand Down Expand Up @@ -933,3 +935,4 @@ RLibStruct radare_plugin = {
.version = R2_VERSION
};
#endif
#endif
2 changes: 2 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@ conf_data.set('plugins_debug', '&r_debug_plugin_' + ', &r_debug_plugin_'.join(de
conf_data.set('plugins_egg', '&r_egg_plugin_' + ', &r_egg_plugin_'.join(egg_plugins) + ', 0')
conf_data.set('plugins_lang', '&r_lang_plugin_' + ', &r_lang_plugin_'.join(lang_plugins) + ', 0')
conf_data.set('WANT_THREADS', get_option('want_threads')? '1': '0')
conf_data.set('WANT_QJS', get_option('want_qjs')? '1': '0')

config_h = configure_file(
input: 'libr/config.h.in',
Expand Down Expand Up @@ -414,6 +415,7 @@ userconf.set10('HAVE_LIBUV', use_libuv)
userconf.set10('HAVE_FORK', use_fork)
userconf.set10('HAVE_GPERF', get_option('sdb_cgen'))
userconf.set10('WANT_DYLINK', use_dylink)
userconf.set10('WANT_QJS', get_option('want_qjs'))
userconf.set10('WANT_THREADS', get_option('want_threads'))
userconf.set10('WANT_CAPSTONE', get_option('want_capstone'))
userconf.set10('USE_NEW_ABI', get_option('use_new_abi'))
Expand Down
1 change: 1 addition & 0 deletions meson_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ option('r2_gittip', type: 'string', value: '')
option('checks_level', type: 'integer', value: 9999, description: 'Value between 0 and 3 to enable different level of assert (see R_CHECKS_LEVEL). By default its value depends on buildtype (2 on debug, 1 on release).')
option('capstone_in_builddir', type: 'boolean', value: false, description: 'When true, capstone is downloaded in the build directory and not in the source one')
option('want_threads', type: 'boolean', value: true)
option('want_qjs', type: 'boolean', value: true)
option('use_new_abi', type: 'boolean', value: false)
option('want_capstone', type: 'boolean', value: true)
option('use_sys_capstone', type: 'boolean', value: false)
Expand Down

0 comments on commit 25fca65

Please sign in to comment.