#ifndef R2_CONFIGURE_H
#define R2_CONFIGURE_H

#ifdef __cplusplus
extern "C" {
#endif

#include "r_version.h"

#define R_CHECKS_LEVEL @R_CHECKS_LEVEL@

#if R_CHECKS_LEVEL == 0
#define WANT_DEBUGSTUFF 0
#else
#define WANT_DEBUGSTUFF @WANT_DEBUGSTUFF@
#endif
#define R_CRITICAL_ENABLED @R_CRITICAL_ENABLED@
#define DEBUGGER @DEBUGGER@
#define R2_NETWORK @R2_NETWORK@
#ifdef __wasi__
#define WANT_ZIP 0
#else
#define WANT_ZIP @WANT_ZIP@
#endif
#define HAVE_DECL_ADDR_NO_RANDOMIZE @HAVE_DECL_ADDR_NO_RANDOMIZE@
#ifdef __EMSCRIPTEN__
#define HAVE_ARC4RANDOM_UNIFORM 0
#else
#define HAVE_ARC4RANDOM_UNIFORM @HAVE_ARC4RANDOM_UNIFORM@
#endif
#define HAVE_EXPLICIT_BZERO @HAVE_EXPLICIT_BZERO@
#define HAVE_EXPLICIT_MEMSET @HAVE_EXPLICIT_MEMSET@
#define HAVE_MEMMEM @HAVE_MEMMEM@
#define HAVE_POLL @HAVE_POLL@
#define HAVE_CLOCK_NANOSLEEP @HAVE_CLOCK_NANOSLEEP@
#define HAVE_SIGACTION @HAVE_SIGACTION@
#define WANT_THREADS @WANT_THREADS@
#define WANT_QJS @WANT_QJS@
#define WANT_V35 @WANT_V35@
#define WANT_CAPSTONE @WANT_CAPSTONE@
#define WANT_ZYDIS @WANT_ZYDIS@
#define USE_SYS_ZYDIS @USE_SYS_ZYDIS@
#define HAVE_LINUX_CAN_H @HAVE_LINUX_CAN_H@
#define R2_USE_BUNDLE_PREFIX @USE_BUNDLE_PREFIX@
#define R2_USE_SQSH @USE_SQSH@
#ifndef R2_WASM_BROWSER
#define R2_WASM_BROWSER @R2_WASM_BROWSER@
#endif

#define R_BUILDSYSTEM "@R2_BUILDSYSTEM@"
#if !WANT_CAPSTONE
#define R2_CSVERSION 0
#elif @USE_CS4@ == 1
#define R2_CSVERSION 4
#elif @USE_CSNEXT@ == 1
#define R2_CSVERSION 6
#else
#define R2_CSVERSION 5
#endif

#define WITH_STATIC_THEMES @WITH_STATIC_THEMES@

#define HAVE_GPERF @HAVE_GPERF@
#if (HAVE_GPERF) == 1
#define HAVE_GPERF @HAVE_GPERF@
#else
#define HAVE_GPERF 0
#endif

#ifdef R_MESON_VERSION
#define R2_PREFIX "@PREFIX@"
#define R2_ETCDIR "@ETCDIR@"
#define R2_LIBDIR "@LIBDIR@"
#define R2_BINDIR "@BINDIR@"
#define R2_MANDIR "@MANDIR@"
#define R2_DOCDIR "@DOCDIR@"
#define R2_INCDIR "@INCLUDEDIR@"
#define R2_DATDIR "@DATADIR@"
#define R2_WWWROOT "@WWWROOT@"
#define R2_PLUGINS "@PLUGINS@"
#define R2_EXTRAS "@EXTRAS@"
#define R2_BINDINGS "@BINDINGS@"
#else
#if R2__WINDOWS__ || _MSC_VER
#define R2_PREFIX "."
#define R2_ETCDIR "etc"
#define R2_BINDIR "bin"
#define R2_MANDIR "man"
#define R2_DOCDIR "doc"
#define R2_LIBDIR "lib"
#define R2_INCDIR "include\\libr"
#define R2_DATDIR "share"
#define R2_WWWROOT "www"
#define R2_PLUGINS "lib\\plugins"
#define R2_EXTRAS "lib\\extras"
#define R2_BINDINGS "lib\\bindings"
#else
#define R2_PREFIX "@PREFIX@"
#define R2_ETCDIR "@ETCDIR@"
#define R2_LIBDIR "@LIBDIR@"
#define R2_BINDIR "@BINDIR@"
#define R2_MANDIR "@MANDIR@"
#define R2_DOCDIR "@DOCDIR@"
#define R2_INCDIR "@INCLUDEDIR@/libr"
#define R2_DATDIR "@DATADIR@"
#define R2_WWWROOT R2_DATDIR "/radare2/" R2_VERSION "/www"
#define R2_PLUGINS "lib/radare2/" R2_VERSION
#define R2_EXTRAS "lib/radare2-extras/" R2_VERSION
#define R2_BINDINGS "lib/radare2-bindings/" R2_VERSION
#endif
#endif

#if R2_USE_BUNDLE_PREFIX
#define R2_DATDIR_R2        ""
#define R2_SDB              ""

#define R2_PLATFORM         "platform"
#define R2_ZIGNS            "zigns"
#define R2_THEMES           "cons"
#define R2_FLAGS            "flag"
#define R2_FORTUNES         "doc"
#define R2_HUD              "hud"

#define R2_SDB_FCNSIGN      "fcnsign"
#define R2_SDB_OPCODES      "opcodes"
#define R2_SDB_MAGIC        "magic"
#define R2_SDB_FORMAT       "format"

#define R2_GLOBAL_RC        "radare2rc"
#else
#ifdef R_MESON_VERSION
#define R2_DATDIR_R2 "@DATADIR_R2@"
#define R2_SDB "@SDB@"
#define R2_PLATFORM "@PLATFORM@"
#define R2_ZIGNS "@ZIGNS@"
#define R2_THEMES "@THEMES@"
#define R2_FORTUNES R_JOIN_3_PATHS ("@DATADIR@", "doc", "radare2")
#define R2_FLAGS "@FLAGS@"
#define R2_HUD "@HUD@"
#else
#define R2_DATDIR_R2        R_JOIN_2_PATHS ("share", "radare2")
#define R2_SDB              R_JOIN_3_PATHS ("share", "radare2", R2_VERSION)
#define R2_PLATFORM         R_JOIN_4_PATHS ("share", "radare2", R2_VERSION, "platform")
#define R2_ZIGNS            R_JOIN_4_PATHS ("share", "radare2", R2_VERSION, "zigns")
#define R2_THEMES           R_JOIN_4_PATHS ("share", "radare2", R2_VERSION, "cons")
#define R2_FLAGS            R_JOIN_4_PATHS ("share", "radare2", R2_VERSION, "flag")
#define R2_FORTUNES         R_JOIN_3_PATHS ("share", "doc", "radare2")
#define R2_HUD              R_JOIN_4_PATHS ("share", "radare2", R2_VERSION, "hud")
#endif

#define R2_SDB_FCNSIGN      R_JOIN_2_PATHS (R2_SDB, "fcnsign")
#define R2_SDB_OPCODES      R_JOIN_2_PATHS (R2_SDB, "opcodes")
#define R2_SDB_MAGIC        R_JOIN_2_PATHS (R2_SDB, "magic")
#define R2_SDB_FORMAT       R_JOIN_2_PATHS (R2_SDB, "format")

#define R2_GLOBAL_RC        R_JOIN_2_PATHS (R2_DATDIR_R2, "radare2rc")
#endif

#define HAVE_LIB_MAGIC @HAVE_LIB_MAGIC@
#define USE_LIB_MAGIC @USE_LIB_MAGIC@
#define HAVE_LIB_XXHASH @HAVE_LIB_XXHASH@
#define USE_LIB_XXHASH @USE_LIB_XXHASH@

#ifndef HAVE_LIB_SSL
#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__
#define HAVE_PTRACE 0
#else
#define HAVE_PTRACE @HAVE_PTRACE@
#endif

#define USE_PTRACE_WRAP @USE_PTRACE_WRAP@
#define HAVE_FORK @HAVE_FORK@
#define WANT_DYLINK @WANT_DYLINK@
#define WITH_GPL @WITH_GPL@

#if __APPLE__ && __POWERPC__
#define HAVE_JEMALLOC 0
#else
#define HAVE_JEMALLOC @HAVE_JEMALLOC@
#endif

#ifdef __cplusplus
}
#endif

#endif
