mirror of https://github.com/kiwix/libkiwix.git
119 lines
3.9 KiB
Meson
119 lines
3.9 KiB
Meson
project('kiwix-lib', 'cpp',
|
|
version : '2.0.1',
|
|
license : 'GPL',
|
|
default_options : ['c_std=c11', 'cpp_std=c++11', 'werror=true'])
|
|
|
|
compiler = meson.get_compiler('cpp')
|
|
find_library_in_compiler = meson.version().version_compare('>=0.31.0')
|
|
|
|
static_deps = get_option('android') or get_option('default_library') == 'static'
|
|
|
|
thread_dep = dependency('threads')
|
|
libicu_dep = dependency('icu-i18n', static:static_deps)
|
|
libzim_dep = dependency('libzim', version : '>=4.0.0', static:static_deps)
|
|
pugixml_dep = dependency('pugixml', static:static_deps)
|
|
libaria2_dep = dependency('libaria2', static:static_deps)
|
|
|
|
ctpp2_include_path = ''
|
|
has_ctpp2_dep = false
|
|
ctpp2_prefix_install = get_option('ctpp2-install-prefix')
|
|
ctpp2_link_args = []
|
|
if ctpp2_prefix_install == ''
|
|
if compiler.has_header('ctpp2/CTPP2Logger.hpp')
|
|
if find_library_in_compiler
|
|
ctpp2_lib = compiler.find_library('ctpp2')
|
|
else
|
|
ctpp2_lib = find_library('ctpp2')
|
|
endif
|
|
ctpp2_link_args = ['-lctpp2']
|
|
if meson.is_cross_build() and host_machine.system() == 'windows'
|
|
if find_library_in_compiler
|
|
iconv_lib = compiler.find_library('iconv', required:false)
|
|
else
|
|
iconv_lib = find_library('iconv', required:false)
|
|
endif
|
|
if iconv_lib.found()
|
|
ctpp2_link_args += ['-liconv']
|
|
endif
|
|
endif
|
|
has_ctpp2_dep = true
|
|
ctpp2_dep = declare_dependency(link_args:ctpp2_link_args)
|
|
else
|
|
message('ctpp2/CTPP2Logger.hpp not found. Compiling without CTPP2 support')
|
|
endif
|
|
else
|
|
if not find_library_in_compiler
|
|
error('For custom ctpp2_prefix_install you need a meson version >=0.31.0')
|
|
endif
|
|
ctpp2_include_path = ctpp2_prefix_install + '/include'
|
|
ctpp2_include_args = ['-I'+ctpp2_include_path]
|
|
if compiler.has_header('ctpp2/CTPP2Logger.hpp', args:ctpp2_include_args)
|
|
ctpp2_include_dir = include_directories(ctpp2_include_path, is_system:true)
|
|
ctpp2_lib_path = join_paths(ctpp2_prefix_install, get_option('libdir'))
|
|
message(ctpp2_lib_path)
|
|
ctpp2_lib = compiler.find_library('ctpp2', dirs:ctpp2_lib_path, required:false)
|
|
if not ctpp2_lib.found()
|
|
ctpp2_lib_path = join_paths(ctpp2_prefix_install, 'lib')
|
|
message(ctpp2_lib_path)
|
|
ctpp2_lib = compiler.find_library('ctpp2', dirs:ctpp2_lib_path)
|
|
endif
|
|
ctpp2_link_args = ['-L'+ctpp2_lib_path, '-lctpp2']
|
|
if meson.is_cross_build() and host_machine.system() == 'windows'
|
|
iconv_lib = compiler.find_library('iconv', required:false)
|
|
if iconv_lib.found()
|
|
ctpp2_link_args += ['-liconv']
|
|
endif
|
|
endif
|
|
has_ctpp2_dep = true
|
|
ctpp2_dep = declare_dependency(include_directories:ctpp2_include_dir, link_args:ctpp2_link_args)
|
|
else
|
|
message('ctpp2/CTPP2Logger.hpp not found. Compiling without CTPP2 support')
|
|
endif
|
|
endif
|
|
|
|
xapian_dep = dependency('xapian-core', required:false, static:static_deps)
|
|
|
|
all_deps = [thread_dep, libicu_dep, libzim_dep, xapian_dep, pugixml_dep, libaria2_dep]
|
|
if has_ctpp2_dep
|
|
all_deps += [ctpp2_dep]
|
|
endif
|
|
|
|
inc = include_directories('include')
|
|
|
|
conf = configuration_data()
|
|
conf.set('VERSION', '"@0@"'.format(meson.project_version()))
|
|
conf.set('ENABLE_CTPP2', has_ctpp2_dep)
|
|
|
|
subdir('include')
|
|
subdir('scripts')
|
|
subdir('static')
|
|
subdir('src')
|
|
subdir('test')
|
|
|
|
pkg_requires = ['libzim', 'icu-i18n', 'pugixml', 'libaria2']
|
|
if xapian_dep.found()
|
|
pkg_requires += ['xapian-core']
|
|
endif
|
|
|
|
extra_libs = []
|
|
extra_cflags = ''
|
|
if has_ctpp2_dep
|
|
extra_libs += ctpp2_link_args
|
|
if ctpp2_include_path != ''
|
|
extra_cflags = '-I'+ctpp2_include_path
|
|
endif
|
|
endif
|
|
|
|
pkg_conf = configuration_data()
|
|
pkg_conf.set('prefix', get_option('prefix'))
|
|
pkg_conf.set('requires', ' '.join(pkg_requires))
|
|
pkg_conf.set('extra_libs', ' '.join(extra_libs))
|
|
pkg_conf.set('extra_cflags', extra_cflags)
|
|
pkg_conf.set('version', meson.project_version())
|
|
configure_file(output : 'kiwix.pc',
|
|
configuration : pkg_conf,
|
|
input : 'kiwix.pc.in',
|
|
install_dir: get_option('libdir')+'/pkgconfig'
|
|
)
|
|
|