Skip to content

Commit

Permalink
Add --with-ssl-crypto, rename --with-openssl to --with-ssl ##build (#…
Browse files Browse the repository at this point in the history
…21213)

* Expose the use_ssl_crypto option for meson
* Add SSL builds in the CI
  • Loading branch information
trufae committed Dec 29, 2022
1 parent 297126b commit 5c0bde8
Show file tree
Hide file tree
Showing 11 changed files with 43 additions and 17 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Expand Up @@ -46,12 +46,12 @@ jobs:
uses: actions/checkout@v3
- name: Linting
run: sys/lint.sh
- name: Building without capstone
- name: Building without capstone but with ssl
env:
CFLAGS: -O0
run: |
cp -f dist/plugins-cfg/plugins.nocs.cfg plugins.cfg
./configure --without-capstone --with-rpath && make -j
./configure --without-capstone --with-rpath --with-ssl && make -j
sudo make install
- name: Running c/m with self-hosted libmagic
run:
Expand Down
1 change: 1 addition & 0 deletions config-user.mk.acr
Expand Up @@ -87,6 +87,7 @@ endif

HAVE_LIB_GMP=@HAVE_LIB_GMP@
HAVE_LIB_SSL=@HAVE_OPENSSL@
WANT_SSL_CRYPTO=@WANT_SSL_CRYPTO@
HAVE_LIB_MAGIC=@HAVE_LIB_MAGIC@
USE_LIB_MAGIC=@USE_LIB_MAGIC@
HAVE_LIB_XXHASH=@HAVE_LIB_XXHASH@
Expand Down
22 changes: 15 additions & 7 deletions configure
Expand Up @@ -37,7 +37,8 @@ WITH_SYSLZ4=0
USE_ZIP=0
USE_XXHASH=0
WITH_GPL=1
WANT_OPENSSL=0
WANT_SSL=0
WANT_SSL_CRYPTO=0
WANT_LIBUV=0
USE_RPATH=0
[ -z "${USERCC}" ] && USERCC="gcc"
Expand Down Expand Up @@ -204,7 +205,8 @@ Optional Features:
--with-syszip force to use system's libzip and zlib
--with-sysxxhash force to use system's xxhash
--without-gpl do not build GPL code (grub, cxx, ... )
--with-openssl build with openssl if possible
--with-ssl build with (Open|Boring|..)SSL if possible
--with-ssl-crypto build crypto code with libssl
--with-libuv disable libuv dependency
--with-rpath use rpath to build
--with-compiler Define compiler to use (see mk/) (USERCC=gcc)
Expand Down Expand Up @@ -285,7 +287,7 @@ echo "LANGS: c"
echo "REQUIRED: libdl"
echo "OPTIONAL: libmagic libz libzip libxxhash libssl liblibuv>=1.0.0"
echo "PKG-CONFIG: capstone liblz4 openssl libuv"
echo "FLAGS: --disable-debugger --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-capstone5 --with-capstone4 --with-syscapstone --with-syslz4 --with-syszip --with-sysxxhash --without-gpl --with-openssl --with-libuv --with-rpath --with-compiler=gcc --with-ostype=auto --with-libversion=xxx --without-jemalloc --with-checks-level=2"
echo "FLAGS: --disable-debugger --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-capstone5 --with-capstone4 --with-syscapstone --with-syslz4 --with-syszip --with-sysxxhash --without-gpl --with-ssl --with-ssl-crypto --with-libuv --with-rpath --with-compiler=gcc --with-ostype=auto --with-libversion=xxx --without-jemalloc --with-checks-level=2"
exit 0
;;
--cache-file)
Expand Down Expand Up @@ -354,7 +356,8 @@ echo "FLAGS: --disable-debugger --with-sysmagic --disable-threads --disable-
"--with-syszip") USE_ZIP="1"; ;;
"--with-sysxxhash") USE_XXHASH="1"; ;;
"--without-gpl") WITH_GPL="0"; ;;
"--with-openssl") WANT_OPENSSL="1"; ;;
"--with-ssl") WANT_SSL="1"; ;;
"--with-ssl-crypto") WANT_SSL_CRYPTO="1"; ;;
"--with-libuv") WANT_LIBUV="1"; ;;
"--with-rpath") USE_RPATH="1"; ;;
--with-compiler) if [ -z "${value}" ]; then USERCC="gcc"; else USERCC="${value}" ; fi ;;
Expand All @@ -379,7 +382,7 @@ parse_options "$1"
shift
done

ENVWORDS="MANDIR 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 PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS CPPFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS PKGCONFIG HAVE_PATCH PATCH HAVE_AR AR HAVE_GIT GIT HAVE_GPERF GPERF HAVE_LIB_MAGIC 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_CS5 USE_CS4 WITH_CAPSTONE CAPSTONE_CFLAGS CAPSTONE_LDFLAGS HAVE_PKGCFG_CAPSTONE USE_CAPSTONE 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_SIGACTION HAVE_CLOCK_GETTIME CLOCK_LDFLAGS SUPPORT_GNU99 HAVE_LIB_GMP HAVE_LIB_SSL SSL_CFLAGS SSL_LDFLAGS HAVE_PKGCFG_OPENSSL HAVE_OPENSSL WANT_OPENSSL WANT_LIBUV HAVE_LIBUV_VERSION_1_0_0 LIBUV_CFLAGS LIBUV_LDFLAGS HAVE_PKGCFG_LIBUV HAVE_LIBUV USE_RPATH USERCC USEROSTYPE LIBVERSION HAVE_JEMALLOC HAVE_PTRACE USE_PTRACE_WRAP R_CHECKS_LEVEL"
ENVWORDS="MANDIR 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 PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS CPPFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS PKGCONFIG HAVE_PATCH PATCH HAVE_AR AR HAVE_GIT GIT HAVE_GPERF GPERF HAVE_LIB_MAGIC 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_CS5 USE_CS4 WITH_CAPSTONE CAPSTONE_CFLAGS CAPSTONE_LDFLAGS HAVE_PKGCFG_CAPSTONE USE_CAPSTONE 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_SIGACTION HAVE_CLOCK_GETTIME CLOCK_LDFLAGS SUPPORT_GNU99 HAVE_LIB_GMP HAVE_LIB_SSL SSL_CFLAGS SSL_LDFLAGS HAVE_PKGCFG_OPENSSL HAVE_OPENSSL WANT_SSL WANT_SSL_CRYPTO WANT_LIBUV HAVE_LIBUV_VERSION_1_0_0 LIBUV_CFLAGS LIBUV_LDFLAGS HAVE_PKGCFG_LIBUV HAVE_LIBUV USE_RPATH USERCC USEROSTYPE LIBVERSION HAVE_JEMALLOC HAVE_PTRACE USE_PTRACE_WRAP R_CHECKS_LEVEL"

create_environ

Expand Down Expand Up @@ -730,7 +733,7 @@ echo yes; HAVE_PKGCFG_OPENSSL=1;
SSL_LDFLAGS=$tmp; fi; fi
if [ ! "$SSL_LDFLAGS" = "" ]; then
HAVE_OPENSSL="1"; fi
if [ 11 = "$WANT_OPENSSL$HAVE_OPENSSL" ]; then
if [ 11 = "$WANT_SSL$HAVE_OPENSSL" ]; then

HAVE_OPENSSL="1"
else
Expand All @@ -740,6 +743,11 @@ if [ "$HAVE_LIB_SSL" = "0" ]; then
HAVE_OPENSSL="0"
else
SSL_LDFLAGS="-lssl"; fi; fi
if [ 11 = "$WANT_SSL_CRYPTO$HAVE_OPENSSL" ]; then

WANT_SSL_CRYPTO="1"
else
WANT_SSL_CRYPTO="0"; fi
HAVE_LIBUV_VERSION_1_0_0=0
printf "checking version of library libuv >= 1.0.0... "
${PKGCONFIG} --atleast-version=1.0.0 libuv >/dev/null 2>&1
Expand Down Expand Up @@ -891,7 +899,7 @@ do_remove
if [ "$QUIET" = 0 ]; then
echo
echo "Final report:"
for A in BUILD CC CFLAGS DEBUGGER HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO HAVE_EXPLICIT_MEMSET HAVE_FORK HAVE_GPERF HAVE_LIBUV HAVE_LIB_GMP HAVE_OPENSSL HAVE_PTRACE HOST LDFLAGS LIBVERSION PKGCONFIG PREFIX R_CHECKS_LEVEL TARGET USERCC USEROSTYPE USE_CAPSTONE USE_LIB_MAGIC USE_LIB_XXHASH USE_LIB_ZIP USE_PTRACE_WRAP USE_SYSLZ4 VERSION WANT_DYLINK ; do
for A in BUILD CC CFLAGS DEBUGGER HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO HAVE_EXPLICIT_MEMSET HAVE_FORK HAVE_GPERF HAVE_LIBUV HAVE_LIB_GMP HAVE_OPENSSL WANT_SSL_CRYPTO HAVE_PTRACE HOST LDFLAGS LIBVERSION PKGCONFIG PREFIX R_CHECKS_LEVEL TARGET USERCC USEROSTYPE USE_CAPSTONE USE_LIB_MAGIC USE_LIB_XXHASH USE_LIB_ZIP USE_PTRACE_WRAP USE_SYSLZ4 VERSION WANT_DYLINK ; do
eval VAL="\$${A}"
[ -z "${VAL}" ] && VAL="\"\""
echo " - ${A} = ${VAL}"
Expand Down
16 changes: 12 additions & 4 deletions configure.acr
Expand Up @@ -123,14 +123,16 @@ HAVE_GMP = 0 ;
))
HAVE_LIB_GMP = 0 ;


(( openssl is used for https:// in rsocket and crypto/hash ))
CHKLIB ssl
PKGCFG SSL_CFLAGS SSL_LDFLAGS openssl
IFNOTNULL SSL_LDFLAGS {
HAVE_OPENSSL = 1 ;
}
(( ARG_WITHOUT HAVE_OPENSSL ssl disable openssl dependency ; ))
ARG_WITH WANT_OPENSSL openssl build with openssl if possible ;
IFAND WANT_OPENSSL HAVE_OPENSSL {

ARG_WITH WANT_SSL ssl build with (Open|Boring|..)SSL if possible ;
IFAND WANT_SSL HAVE_OPENSSL {
HAVE_OPENSSL = 1 ;
}{
HAVE_OPENSSL = 0 ;
Expand All @@ -142,6 +144,12 @@ IFNULL SSL_LDFLAGS {
SSL_LDFLAGS = -lssl ;
}
}
ARG_WITH WANT_SSL_CRYPTO ssl-crypto build crypto code with libssl ;
IFAND WANT_SSL_CRYPTO HAVE_OPENSSL {
WANT_SSL_CRYPTO = 1 ;
}{
WANT_SSL_CRYPTO = 0 ;
}

ARG_WITH WANT_LIBUV libuv disable libuv dependency ;
CHKVER libuv 1.0.0
Expand Down Expand Up @@ -267,7 +275,7 @@ ARG_WITH R_CHECKS_LEVEL=2 checks-level value between 0 and 3 to enable different
REPORT
BUILD CC CFLAGS DEBUGGER HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO
HAVE_EXPLICIT_MEMSET HAVE_FORK HAVE_GPERF HAVE_LIBUV HAVE_LIB_GMP
HAVE_OPENSSL HAVE_PTRACE HOST LDFLAGS LIBVERSION PKGCONFIG PREFIX
HAVE_OPENSSL WANT_SSL_CRYPTO HAVE_PTRACE HOST LDFLAGS LIBVERSION PKGCONFIG PREFIX
R_CHECKS_LEVEL TARGET USERCC USEROSTYPE USE_CAPSTONE USE_LIB_MAGIC
USE_LIB_XXHASH USE_LIB_ZIP USE_PTRACE_WRAP USE_SYSLZ4 VERSION WANT_DYLINK
;
Expand Down
3 changes: 2 additions & 1 deletion libr/crypto/hash/deps.mk
@@ -1,7 +1,8 @@

OBJS+=hash/state.o hash/hash.o hash/hamdist.o hash/crca.o hash/fletcher.o hash/sip.o
OBJS+=hash/entropy.o hash/hcalc.o hash/adler32.o hash/luhn.o hash/ssdeep.o
ifeq ($(HAVE_LIB_SSL),1)

ifeq ($(WANT_SSL_CRYPTO),1)
CFLAGS+=${SSL_CFLAGS}
LDFLAGS+=${SSL_LDFLAGS}
LINK+=${SSL_LDFLAGS}
Expand Down
2 changes: 1 addition & 1 deletion libr/crypto/hash/state.c
Expand Up @@ -3,7 +3,7 @@
#include <r_hash.h>
#include <r_util.h>

#if HAVE_LIB_SSL
#if WANT_SSL_CRYPTO
# include <openssl/md4.h>
# include <openssl/md5.h>
# include <openssl/sha.h>
Expand Down
2 changes: 1 addition & 1 deletion libr/crypto/meson.build
Expand Up @@ -46,7 +46,7 @@ else
r_crypto_sources += files('hash/xxhash.c')
endif

if use_sys_openssl
if use_sys_openssl and use_ssl_crypto
r_crypto_deps += sys_openssl
else
r_crypto_sources += files('hash/md4.c', 'hash/md5.c', 'hash/sha1.c', 'hash/sha2.c')
Expand Down
2 changes: 1 addition & 1 deletion libr/include/r_hash.h
Expand Up @@ -11,7 +11,7 @@ extern "C" {

R_LIB_VERSION_HEADER (r_hash);

#if HAVE_LIB_SSL
#if WANT_SSL_CRYPTO
#include <openssl/sha.h>
#include <openssl/md5.h>
typedef MD5_CTX RHashMD5Context;
Expand Down
4 changes: 4 additions & 0 deletions libr/include/r_userconf.h.acr
Expand Up @@ -92,6 +92,10 @@ extern "C" {
#define HAVE_LIB_SSL @HAVE_OPENSSL@
#endif

#ifndef WANT_SSL_CRYPTO
#define WANT_SSL_CRYPTO @WANT_SSL_CRYPTO@
#endif

#define HAVE_LIBUV @HAVE_LIBUV@

#if __MINGW32__
Expand Down
3 changes: 3 additions & 0 deletions meson.build
Expand Up @@ -290,10 +290,12 @@ if get_option('use_ssl')
use_sys_openssl = true
else
message('Using bundled openssl code')
use_ssl_crypto = false
endif
else
sys_openssl = false
use_sys_openssl = false
use_ssl_crypto = false
endif

use_fork = get_option('use_fork')
Expand Down Expand Up @@ -375,6 +377,7 @@ userconf.set('PLUGINS', r2_plugins)
userconf.set('EXTRAS', r2_extras)
userconf.set('BINDINGS', r2_bindings)
userconf.set10('HAVE_OPENSSL', use_sys_openssl)
userconf.set10('WANT_SSL_CRYPTO', use_ssl_crypto)
userconf.set10('HAVE_LIBUV', use_libuv)
userconf.set10('HAVE_FORK', use_fork)
userconf.set10('HAVE_GPERF', get_option('sdb_cgen'))
Expand Down
1 change: 1 addition & 0 deletions meson_options.txt
Expand Up @@ -35,6 +35,7 @@ option('use_sys_zlib', type: 'boolean', value: false)
option('use_sys_lz4', type: 'boolean', value: false)
option('use_sys_xxhash', type: 'boolean', value: false)
option('use_ssl', type: 'boolean', value: false)
option('use_ssl_crypto', type: 'boolean', value: false)
option('use_v35', type: 'boolean', value: false)
option('use_sys_openssl', type: 'boolean', value: false)
option('static_sys_openssl', type: 'boolean', value: false)
Expand Down

0 comments on commit 5c0bde8

Please sign in to comment.