mirror of
https://github.com/matrix-construct/construct
synced 2024-11-25 16:22:35 +01:00
ircd: Define all IRCD_USE_ as integers for constexprs.
This commit is contained in:
parent
856745d178
commit
61d558fc9d
9 changed files with 98 additions and 77 deletions
28
configure.ac
28
configure.ac
|
@ -1403,6 +1403,8 @@ AM_COND_IF(LINUX,
|
|||
|
||||
if test "$aio" = "yes"; then
|
||||
IRCD_DEFINE(USE_AIO, [1], [Linux AIO is supported and will be used])
|
||||
else
|
||||
IRCD_DEFINE(USE_AIO, [0], [Linux AIO is not supported and won't be used])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([AIO], [[[[ $aio = yes ]]]])
|
||||
|
@ -1426,6 +1428,8 @@ AM_CONDITIONAL([IOU], [[[[ $io_uring = yes ]]]])
|
|||
AM_COND_IF([IOU],
|
||||
[
|
||||
IRCD_DEFINE(USE_IOU, [1], [Linux io_uring is supported and may be used])
|
||||
], [
|
||||
IRCD_DEFINE(USE_IOU, [0], [Linux io_uring is not available])
|
||||
])
|
||||
|
||||
|
||||
|
@ -1659,6 +1663,13 @@ PKG_CHECK_MODULES(icuuc, [icuuc],
|
|||
AM_CONDITIONAL([ICUUC], [test "x$have_icuuc" = "xyes" ])
|
||||
AM_CONDITIONAL([ICU], [test "x$have_icu" = "xyes" ])
|
||||
|
||||
AM_COND_IF(ICU,
|
||||
[
|
||||
IRCD_DEFINE(USE_ICU, [1], [International Components for Unicode is available])
|
||||
], [
|
||||
IRCD_DEFINE(USE_ICU, [0], [International Components for Unicode is not available])
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl libsodium (NaCl) crypto support
|
||||
|
@ -2237,6 +2248,8 @@ dnl IRCD_ENABLE_MAGICK is always defined for use in a constexpr if
|
|||
AM_COND_IF([IMAGEMAGICK],
|
||||
[
|
||||
IRCD_DEFINE(USE_MAGICK, [1], [Magick support is available and enabled])
|
||||
], [
|
||||
IRCD_DEFINE(USE_MAGICK, [0], [Magick support is not available])
|
||||
])
|
||||
|
||||
dnl
|
||||
|
@ -2343,6 +2356,13 @@ PKG_CHECK_MODULES(LLVM, [LLVM],
|
|||
|
||||
AM_CONDITIONAL([LLVM], [test "x$have_libllvm" = "xyes" ])
|
||||
|
||||
AM_COND_IF(LLVM,
|
||||
[
|
||||
IRCD_DEFINE(USE_LLVM, [1], [libllvm is available and enabled])
|
||||
], [
|
||||
IRCD_DEFINE(USE_LLVM, [0], [libllvm is not available])
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl LibDRM
|
||||
|
@ -2389,6 +2409,8 @@ AM_COND_IF([DRM],
|
|||
AC_MSG_RESULT([yes])
|
||||
IRCD_DEFINE(USE_DRM, [1], [DRM support is available and enabled])
|
||||
DRM_LIBS+="-ldrm"
|
||||
], [
|
||||
IRCD_DEFINE(USE_DRM, [0], [DRM support is not available])
|
||||
])
|
||||
|
||||
dnl
|
||||
|
@ -2465,7 +2487,11 @@ AM_COND_IF([OPENCL],
|
|||
[
|
||||
IRCD_DEFINE(USE_MESA_OPENCL, [1], [MesaOpenCL support is available and enabled])
|
||||
OPENCL_LIBS+=" -lMesaOpenCL"
|
||||
], [
|
||||
IRCD_DEFINE(USE_MESA_OPENCL, [0], [MesaOpenCL support is not available and disabled])
|
||||
])
|
||||
], [
|
||||
IRCD_DEFINE(USE_OPENCL, [0], [OpenCL support is not available])
|
||||
])
|
||||
|
||||
dnl
|
||||
|
@ -2521,6 +2547,8 @@ AM_COND_IF([ARMNN],
|
|||
[
|
||||
IRCD_DEFINE(USE_ARMNN, [1], [Arm NN support is available and enabled])
|
||||
ARMNN_LIBS+="-larmnn"
|
||||
], [
|
||||
IRCD_DEFINE(USE_ARMNN, [0], [Arm NN support is not available])
|
||||
])
|
||||
|
||||
dnl
|
||||
|
|
|
@ -38,7 +38,7 @@ ircd::cl::init
|
|||
init(), ~init() noexcept;
|
||||
};
|
||||
|
||||
#ifndef IRCD_USE_OPENCL
|
||||
#if IRCD_USE_OPENCL == 0
|
||||
inline ircd::cl::init::init() {}
|
||||
inline ircd::cl::init::~init() noexcept {}
|
||||
#endif
|
||||
|
|
|
@ -113,15 +113,7 @@ ircd::magick::init
|
|||
};
|
||||
|
||||
// inline stubs when magick disabled/unavailable.
|
||||
#if !defined(IRCD_USE_MAGICK)
|
||||
|
||||
inline
|
||||
ircd::magick::init::init()
|
||||
{}
|
||||
|
||||
inline
|
||||
ircd::magick::init::~init()
|
||||
noexcept
|
||||
{}
|
||||
|
||||
#endif IRCD_USE_MAGICK
|
||||
#if IRCD_USE_MAGICK == 0
|
||||
inline ircd::magick::init::init() {}
|
||||
inline ircd::magick::init::~init() noexcept {}
|
||||
#endif IRCD_USE_MAGICK == 0
|
||||
|
|
86
ircd/fs.cc
86
ircd/fs.cc
|
@ -15,16 +15,17 @@
|
|||
#include <RB_INC_SYS_RESOURCE_H
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
#ifdef IRCD_USE_AIO
|
||||
#if IRCD_USE_AIO > 0
|
||||
#include "fs_aio.h"
|
||||
#endif
|
||||
|
||||
#ifdef IRCD_USE_IOU
|
||||
#if IRCD_USE_IOU > 0
|
||||
#include "fs_iou.h"
|
||||
#endif
|
||||
|
||||
// TODO: prevents use until io_uring support implemented
|
||||
#undef IRCD_USE_IOU
|
||||
#define IRCD_USE_IOU 0
|
||||
|
||||
namespace ircd::fs
|
||||
{
|
||||
|
@ -230,17 +231,13 @@ ircd::fs::support::rwf_write_life
|
|||
decltype(ircd::fs::support::aio)
|
||||
ircd::fs::support::aio
|
||||
{
|
||||
#ifdef IRCD_USE_AIO
|
||||
true
|
||||
#else
|
||||
false
|
||||
#endif
|
||||
IRCD_USE_AIO
|
||||
};
|
||||
|
||||
void
|
||||
ircd::fs::support::dump_info()
|
||||
{
|
||||
#if defined(IRCD_USE_AIO) || defined(IRCD_USE_IOU)
|
||||
#if IRCD_USE_AIO || IRCD_USE_IOU
|
||||
const bool support_async {true};
|
||||
#else
|
||||
const bool support_async {false};
|
||||
|
@ -779,21 +776,19 @@ ircd::fs::flush(const fd &fd,
|
|||
{
|
||||
assert(opts.op == op::SYNC);
|
||||
|
||||
#ifdef IRCD_USE_IOU
|
||||
if(iou::system && opts.aio)
|
||||
return void(iou::fsync(fd, opts));
|
||||
#endif
|
||||
if constexpr(IRCD_USE_IOU)
|
||||
if(iou::system && opts.aio)
|
||||
return void(iou::fsync(fd, opts));
|
||||
|
||||
#ifdef IRCD_USE_AIO
|
||||
if(aio::system && opts.aio)
|
||||
{
|
||||
if(support::aio_fdsync && !opts.metadata)
|
||||
return void(aio::fsync(fd, opts));
|
||||
if constexpr(IRCD_USE_AIO)
|
||||
if(aio::system && opts.aio)
|
||||
{
|
||||
if(support::aio_fdsync && !opts.metadata)
|
||||
return void(aio::fsync(fd, opts));
|
||||
|
||||
else if(support::aio_fsync && opts.metadata)
|
||||
return void(aio::fsync(fd, opts));
|
||||
}
|
||||
#endif
|
||||
else if(support::aio_fsync && opts.metadata)
|
||||
return void(aio::fsync(fd, opts));
|
||||
}
|
||||
|
||||
const prof::syscall_usage_warning message
|
||||
{
|
||||
|
@ -1038,15 +1033,13 @@ ircd::fs::_read(const fd &fd,
|
|||
{
|
||||
assert(opts.op == op::READ);
|
||||
|
||||
#ifdef IRCD_USE_IOU
|
||||
if(likely(iou::system && opts.aio))
|
||||
return iou::read(fd, iov, opts);
|
||||
#endif
|
||||
if constexpr(IRCD_USE_IOU)
|
||||
if(likely(iou::system && opts.aio))
|
||||
return iou::read(fd, iov, opts);
|
||||
|
||||
#ifdef IRCD_USE_AIO
|
||||
if(likely(aio::system && opts.aio))
|
||||
return aio::read(fd, iov, opts);
|
||||
#endif
|
||||
if constexpr(IRCD_USE_AIO)
|
||||
if(likely(aio::system && opts.aio))
|
||||
return aio::read(fd, iov, opts);
|
||||
|
||||
#ifdef HAVE_PREADV2
|
||||
return support::preadv2?
|
||||
|
@ -1425,15 +1418,13 @@ ircd::fs::_write(const fd &fd,
|
|||
{
|
||||
assert(opts.op == op::WRITE);
|
||||
|
||||
#ifdef IRCD_USE_IOU
|
||||
if(likely(iou::system && opts.aio))
|
||||
return iou::write(fd, iov, opts);
|
||||
#endif
|
||||
if constexpr(IRCD_USE_IOU)
|
||||
if(likely(iou::system && opts.aio))
|
||||
return iou::write(fd, iov, opts);
|
||||
|
||||
#ifdef IRCD_USE_AIO
|
||||
if(likely(aio::system && opts.aio))
|
||||
return aio::write(fd, iov, opts);
|
||||
#endif
|
||||
if constexpr(IRCD_USE_AIO)
|
||||
if(likely(aio::system && opts.aio))
|
||||
return aio::write(fd, iov, opts);
|
||||
|
||||
#ifdef HAVE_PWRITEV2
|
||||
return support::pwritev2?
|
||||
|
@ -1671,14 +1662,14 @@ ircd::fs::aio::system;
|
|||
// init
|
||||
//
|
||||
|
||||
#ifndef IRCD_USE_AIO
|
||||
#if IRCD_USE_AIO == 0
|
||||
ircd::fs::aio::init::init()
|
||||
{
|
||||
assert(!system);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef IRCD_USE_AIO
|
||||
#if IRCD_USE_AIO == 0
|
||||
[[using gnu: weak, cold]]
|
||||
ircd::fs::aio::init::~init()
|
||||
noexcept
|
||||
|
@ -1895,12 +1886,9 @@ ircd::fs::aio::stats::stats()
|
|||
decltype(ircd::fs::iou::support)
|
||||
ircd::fs::iou::support
|
||||
{
|
||||
#ifdef IRCD_USE_IOU
|
||||
info::kernel_version[0] > 5 ||
|
||||
(info::kernel_version[0] >= 5 && info::kernel_version[1] >= 1)
|
||||
#else
|
||||
false
|
||||
#endif
|
||||
IRCD_USE_IOU &&
|
||||
(info::kernel_version[0] > 5 ||
|
||||
(info::kernel_version[0] >= 5 && info::kernel_version[1] >= 1))
|
||||
};
|
||||
|
||||
/// Conf item to control whether iou is enabled or bypassed.
|
||||
|
@ -1927,7 +1915,7 @@ ircd::fs::iou::system;
|
|||
// init
|
||||
//
|
||||
|
||||
#ifndef IRCD_USE_IOU
|
||||
#if IRCD_USE_IOU == 0
|
||||
[[gnu::weak]]
|
||||
ircd::fs::iou::init::init()
|
||||
{
|
||||
|
@ -1935,7 +1923,7 @@ ircd::fs::iou::init::init()
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifndef IRCD_USE_IOU
|
||||
#if IRCD_USE_IOU == 0
|
||||
[[gnu::weak]]
|
||||
ircd::fs::iou::init::~init()
|
||||
noexcept
|
||||
|
@ -2725,7 +2713,7 @@ ircd::fs::reflect(const op &op)
|
|||
return "????";
|
||||
}
|
||||
|
||||
#ifndef IRCD_USE_AIO
|
||||
#if IRCD_USE_AIO == 0
|
||||
[[gnu::weak]]
|
||||
ircd::fs::op
|
||||
ircd::fs::aio::translate(const int &val)
|
||||
|
@ -2734,7 +2722,7 @@ ircd::fs::aio::translate(const int &val)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifndef IRCD_USE_IOU
|
||||
#if IRCD_USE_IOU == 0
|
||||
[[gnu::weak]]
|
||||
ircd::fs::op
|
||||
ircd::fs::iou::translate(const int &val)
|
||||
|
|
|
@ -85,10 +85,9 @@ ircd::fs::aio::init::init()
|
|||
// Don't init AIO if the io_uring is established. If it is, that means it
|
||||
// was supported by the build, this kernel, and didn't encounter an error
|
||||
// to construct. In all other cases AIO can serve as a fallback.
|
||||
#if defined(IRCD_USE_IOU)
|
||||
if(iou::system)
|
||||
return;
|
||||
#endif
|
||||
if constexpr(IRCD_USE_IOU)
|
||||
if(iou::system)
|
||||
return;
|
||||
|
||||
assert(!system);
|
||||
if(!aio::enable)
|
||||
|
|
|
@ -32,6 +32,8 @@ ircd::gpt::pipe::handle_quit
|
|||
void
|
||||
ircd::gpt::pipe::init()
|
||||
{
|
||||
if constexpr(!IRCD_USE_OPENCL)
|
||||
return;
|
||||
}
|
||||
|
||||
[[using gnu: cold, visibility("hidden")]]
|
||||
|
@ -39,6 +41,9 @@ void
|
|||
ircd::gpt::pipe::fini()
|
||||
noexcept
|
||||
{
|
||||
if constexpr(!IRCD_USE_OPENCL)
|
||||
return;
|
||||
|
||||
const auto pending
|
||||
{
|
||||
cl::work::list.size()
|
||||
|
|
|
@ -17284,6 +17284,12 @@ console_cmd__bridge__protocol(opt &out, const string_view &line)
|
|||
bool
|
||||
console_cmd__icu(opt &out, const string_view &line)
|
||||
{
|
||||
if constexpr(!IRCD_USE_ICU)
|
||||
throw error
|
||||
{
|
||||
"ICU is not available."
|
||||
};
|
||||
|
||||
const unique_mutable_buffer buf
|
||||
{
|
||||
size(line) * 4
|
||||
|
@ -17553,6 +17559,12 @@ console_cmd__app__signal(opt &out, const string_view &line)
|
|||
bool
|
||||
console_cmd__cl__info(opt &out, const string_view &line)
|
||||
{
|
||||
if constexpr(!IRCD_USE_OPENCL)
|
||||
throw error
|
||||
{
|
||||
"OpenCL is not available."
|
||||
};
|
||||
|
||||
const params param{line, " ",
|
||||
{
|
||||
"platform", "device",
|
||||
|
|
|
@ -8,13 +8,14 @@
|
|||
// copyright notice and this permission notice is present in all copies. The
|
||||
// full license for this software is available in the LICENSE file.
|
||||
|
||||
#if !defined(IRCD_USE_LLVM) \
|
||||
&& __has_include("<llvm/Config/llvm-config.h>") \
|
||||
&& __has_include("<llvm/Object/Wasm.h>")
|
||||
#define IRCD_USE_LLVM
|
||||
#if IRCD_USE_LLVM == 1 && \
|
||||
(!__has_include("<llvm/Config/llvm-config.h>") || \
|
||||
! __has_include("<llvm/Object/Wasm.h>"))
|
||||
#undef IRCD_USE_LLVM
|
||||
#define IRCD_USE_LLVM 0
|
||||
#endif
|
||||
|
||||
#if defined(IRCD_USE_LLVM) // -------------------------------------------------
|
||||
#if IRCD_USE_LLVM > 0 // ------------------------------------------------------
|
||||
|
||||
#include <llvm/Config/llvm-config.h>
|
||||
#include <llvm/Object/Wasm.h>
|
||||
|
@ -88,4 +89,4 @@ ircd::llvm::fini()
|
|||
|
||||
}
|
||||
|
||||
#endif // IRCD_USE_LLVM ------------------------------------------------------
|
||||
#endif // IRCD_USE_LLVM > 0 --------------------------------------------------
|
||||
|
|
|
@ -282,11 +282,7 @@ get__thumbnail_local(client &client,
|
|||
const bool supported
|
||||
{
|
||||
// Available in build
|
||||
#ifdef IRCD_USE_MAGICK
|
||||
(true)
|
||||
#else
|
||||
(false)
|
||||
#endif
|
||||
IRCD_USE_MAGICK
|
||||
|
||||
// Enabled by configuration
|
||||
&& enable
|
||||
|
|
Loading…
Reference in a new issue