# SPDX-FileCopyrightText: 2021 Andrea Pappacoda # # SPDX-License-Identifier: MIT project( 'cpp-httplib', 'cpp', license: 'MIT', default_options: [ 'cpp_std=c++11', 'buildtype=release', 'b_ndebug=if-release', 'b_lto=true', 'warning_level=3' ], meson_version: '>=0.62.0' ) # Check just in case downstream decides to edit the source # and add a project version version = meson.project_version() if version == 'undefined' cxx = meson.get_compiler('cpp') version = cxx.get_define('CPPHTTPLIB_VERSION', prefix: '#include ', include_directories: include_directories('.')).strip('"') assert(version != '', 'failed to get version from httplib.h') endif deps = [dependency('threads')] args = [] openssl_dep = dependency('openssl', version: '>=3.0.0', required: get_option('cpp-httplib_openssl')) if openssl_dep.found() deps += openssl_dep args += '-DCPPHTTPLIB_OPENSSL_SUPPORT' if host_machine.system() == 'darwin' macosx_keychain_dep = dependency('appleframeworks', modules: ['CoreFoundation', 'Security'], required: get_option('cpp-httplib_macosx_keychain')) if macosx_keychain_dep.found() deps += macosx_keychain_dep args += '-DCPPHTTPLIB_USE_CERTS_FROM_MACOSX_KEYCHAIN' endif endif endif zlib_dep = dependency('zlib', required: get_option('cpp-httplib_zlib')) if zlib_dep.found() deps += zlib_dep args += '-DCPPHTTPLIB_ZLIB_SUPPORT' endif brotli_deps = [dependency('libbrotlicommon', required: get_option('cpp-httplib_brotli'))] brotli_deps += dependency('libbrotlidec', required: get_option('cpp-httplib_brotli')) brotli_deps += dependency('libbrotlienc', required: get_option('cpp-httplib_brotli')) brotli_found_all = true foreach brotli_dep : brotli_deps if not brotli_dep.found() brotli_found_all = false endif endforeach if brotli_found_all deps += brotli_deps args += '-DCPPHTTPLIB_BROTLI_SUPPORT' endif cpp_httplib_dep = dependency('', required: false) if get_option('cpp-httplib_compile') python3 = find_program('python3') httplib_ch = custom_target( 'split', input: 'httplib.h', output: ['httplib.cc', 'httplib.h'], command: [python3, files('split.py'), '--out', meson.current_build_dir()], install: true, install_dir: [false, get_option('includedir')] ) lib = library( 'cpp-httplib', sources: httplib_ch, dependencies: deps, cpp_args: args, version: version, soversion: version.split('.')[0] + '.' + version.split('.')[1], install: true ) cpp_httplib_dep = declare_dependency(compile_args: args, dependencies: deps, link_with: lib, sources: httplib_ch[1]) import('pkgconfig').generate( lib, description: 'A C++ HTTP/HTTPS server and client library', extra_cflags: args, url: 'https://github.com/yhirose/cpp-httplib', version: version ) else install_headers('httplib.h') cpp_httplib_dep = declare_dependency(compile_args: args, dependencies: deps, include_directories: '.') import('pkgconfig').generate( name: 'cpp-httplib', description: 'A C++ HTTP/HTTPS server and client library', install_dir: get_option('datadir')/'pkgconfig', url: 'https://github.com/yhirose/cpp-httplib', version: version ) endif meson.override_dependency('cpp-httplib', cpp_httplib_dep) if get_option('cpp-httplib_test') subdir('test') endif