You've already forked cpp-httplib
The "cpp-httplib_" prefix of build options is now dropped, as Meson build options are already namespaced for each project. The old names remain as deprecated aliases for the new ones.
133 lines
3.8 KiB
Meson
133 lines
3.8 KiB
Meson
# 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.63.0'
|
|
)
|
|
|
|
cxx = meson.get_compiler('cpp')
|
|
|
|
# Check just in case downstream decides to edit the source
|
|
# and add a project version
|
|
version = meson.project_version()
|
|
if version == 'undefined'
|
|
version = cxx.get_define('CPPHTTPLIB_VERSION',
|
|
prefix: '#include <httplib.h>',
|
|
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
|
|
|
|
async_ns_opt = get_option('cpp-httplib_non_blocking_getaddrinfo')
|
|
|
|
if host_machine.system() == 'windows'
|
|
async_ns_dep = cxx.find_library('ws2_32', required: async_ns_opt)
|
|
elif host_machine.system() == 'darwin'
|
|
async_ns_dep = dependency('appleframeworks', modules: ['CFNetwork'], required: async_ns_opt)
|
|
else
|
|
async_ns_dep = cxx.find_library('anl', required: async_ns_opt)
|
|
endif
|
|
|
|
if async_ns_dep.found()
|
|
deps += async_ns_dep
|
|
args += '-DCPPHTTPLIB_USE_NON_BLOCKING_GETADDRINFO'
|
|
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], version: version)
|
|
|
|
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: '.', version: version)
|
|
|
|
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
|