mirror of
https://github.com/gabime/spdlog.git
synced 2024-11-16 00:45:48 +08:00
aac085a9be
Now `fmt` library can be used as subproject which helps with cross compilation.
184 lines
4.6 KiB
Meson
184 lines
4.6 KiB
Meson
project('spdlog', ['cpp'],
|
|
license : 'MIT',
|
|
version : run_command(find_program('scripts/extract_version.py')).stdout().strip(),
|
|
default_options : [
|
|
'warning_level=3',
|
|
'cpp_std=c++11',
|
|
'buildtype=release',
|
|
'b_colorout=always',
|
|
],
|
|
)
|
|
|
|
# ------------------------
|
|
# --- Dependencies ---
|
|
# ------------------------
|
|
dep_list = []
|
|
compile_args = []
|
|
|
|
# Threads
|
|
dep_list += dependency('threads')
|
|
|
|
# Check for FMT
|
|
if get_option('external_fmt')
|
|
if not meson.version().version_compare('>=0.49.0')
|
|
warning('Finding fmt can fail with meson versions before 0.49.0')
|
|
endif
|
|
dep_list += dependency('fmt', fallback : ['fmt', 'fmt_dep'])
|
|
compile_args += '-DSPDLOG_FMT_EXTERNAL'
|
|
endif
|
|
|
|
if get_option('no_exceptions')
|
|
compile_args += '-DSPDLOG_NO_EXCEPTIONS'
|
|
endif
|
|
|
|
if get_option('wchar_support')
|
|
if build_machine.system() != 'windows'
|
|
error('wchar_support only supported under windows')
|
|
endif
|
|
compile_args += '-DSPDLOG_WCHAR_TO_UTF8_SUPPORT'
|
|
endif
|
|
|
|
if get_option('wchar_filenames')
|
|
if build_machine.system() != 'windows'
|
|
error('wchar_filenames only supported under windows')
|
|
endif
|
|
compile_args += '-DSPDLOG_WCHAR_FILENAMES'
|
|
endif
|
|
|
|
if get_option('clock_coarse')
|
|
if build_machine.system() != 'linux'
|
|
error('clock_coarse only supported under linux')
|
|
endif
|
|
compile_args += '-DSPDLOG_CLOCK_COARSE'
|
|
endif
|
|
|
|
if get_option('prevent_child_fd')
|
|
compile_args += '-DSPDLOG_PREVENT_CHILD_FD'
|
|
endif
|
|
|
|
if get_option('no_thread_id')
|
|
compile_args += '-DSPDLOG_NO_THREAD_ID'
|
|
endif
|
|
|
|
if get_option('no_tls')
|
|
compile_args += '-DSPDLOG_NO_TLS'
|
|
endif
|
|
|
|
if get_option('no_atomic_levels')
|
|
compile_args += '-DSPDLOG_NO_ATOMIC_LEVELS'
|
|
endif
|
|
|
|
compile_args_compiled = compile_args + ['-DSPDLOG_COMPILED_LIB']
|
|
compile_args_ho = compile_args
|
|
|
|
# ------------------------------------
|
|
# --- Compiled library version ---
|
|
# ------------------------------------
|
|
|
|
spdlog_inc = include_directories('./include')
|
|
|
|
spdlog_srcs = files([
|
|
'src/async.cpp',
|
|
'src/color_sinks.cpp',
|
|
'src/file_sinks.cpp',
|
|
'src/spdlog.cpp',
|
|
'src/stdout_sinks.cpp'
|
|
])
|
|
|
|
if not get_option('external_fmt')
|
|
spdlog_srcs+= 'src/fmt.cpp'
|
|
endif
|
|
|
|
if get_option('library_type') == 'static'
|
|
spdlog = static_library(
|
|
'spdlog',
|
|
spdlog_srcs,
|
|
cpp_args : compile_args_compiled,
|
|
include_directories : spdlog_inc,
|
|
dependencies : dep_list,
|
|
install : not meson.is_subproject()
|
|
)
|
|
else
|
|
spdlog = shared_library('spdlog',
|
|
spdlog_srcs,
|
|
cpp_args : compile_args_compiled,
|
|
include_directories : spdlog_inc,
|
|
dependencies : dep_list,
|
|
install : not meson.is_subproject(),
|
|
version : meson.project_version(),
|
|
)
|
|
endif
|
|
|
|
spdlog_dep = declare_dependency(
|
|
link_with : spdlog,
|
|
include_directories : spdlog_inc,
|
|
compile_args : compile_args_compiled,
|
|
dependencies : dep_list,
|
|
version : meson.project_version(),
|
|
)
|
|
|
|
# ----------------------------------
|
|
# --- Header only dependency ---
|
|
# ----------------------------------
|
|
spdlog_headeronly_dep = declare_dependency(
|
|
include_directories : spdlog_inc,
|
|
compile_args : compile_args_ho,
|
|
dependencies : dep_list,
|
|
version : meson.project_version(),
|
|
)
|
|
|
|
# ------------------------
|
|
# --- Installation ---
|
|
# ------------------------
|
|
|
|
# Do not install when spdlog is used as a subproject
|
|
if not meson.is_subproject()
|
|
install_subdir('include/spdlog', install_dir: get_option('includedir'))
|
|
|
|
pkg = import('pkgconfig')
|
|
pkg.generate(spdlog,
|
|
name : 'spdlog',
|
|
description : 'Fast C++ logging library',
|
|
url : 'https://github.com/gabime/spdlog',
|
|
extra_cflags : compile_args_compiled
|
|
)
|
|
endif
|
|
|
|
# -------------------------------------
|
|
# --- Conditionally add subdirs ---
|
|
# -------------------------------------
|
|
|
|
if get_option('enable_tests') or get_option('enable_tests_ho')
|
|
subdir('tests')
|
|
endif
|
|
|
|
if get_option('enable_examples')
|
|
subdir('example')
|
|
endif
|
|
|
|
if get_option('enable_benchmarks')
|
|
subdir('bench')
|
|
endif
|
|
|
|
# -------------------
|
|
# --- Summary ---
|
|
# -------------------
|
|
|
|
summary_str = '''spdlog build summary:
|
|
- using external fmt: @0@
|
|
- building tests: @1@
|
|
- building examples: @2@
|
|
- building benchmarks: @3@
|
|
- library type: @4@
|
|
- no exceptions: @5@
|
|
'''.format(
|
|
get_option('external_fmt'),
|
|
get_option('enable_tests'),
|
|
get_option('enable_examples'),
|
|
get_option('enable_benchmarks'),
|
|
get_option('library_type'),
|
|
get_option('no_exceptions')
|
|
)
|
|
|
|
message(summary_str)
|