summaryrefslogtreecommitdiff
path: root/libs/cpp-httplib/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'libs/cpp-httplib/meson.build')
-rw-r--r--libs/cpp-httplib/meson.build140
1 files changed, 140 insertions, 0 deletions
diff --git a/libs/cpp-httplib/meson.build b/libs/cpp-httplib/meson.build
new file mode 100644
index 0000000..7e95bde
--- /dev/null
+++ b/libs/cpp-httplib/meson.build
@@ -0,0 +1,140 @@
+# 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')
+
+if cxx.sizeof('void *') != 8
+ if host_machine.system() == 'windows'
+ error('unsupported architecture: cpp-httplib doesn\'t support 32-bit Windows. Please use a 64-bit compiler.')
+ else
+ warning('cpp-httplib doesn\'t support 32-bit platforms. Please use a 64-bit compiler.')
+ endif
+endif
+
+# 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('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('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('zlib'))
+if zlib_dep.found()
+ deps += zlib_dep
+ args += '-DCPPHTTPLIB_ZLIB_SUPPORT'
+endif
+
+brotli_deps = [dependency('libbrotlicommon', required: get_option('brotli'))]
+brotli_deps += dependency('libbrotlidec', required: get_option('brotli'))
+brotli_deps += dependency('libbrotlienc', required: get_option('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('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('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('test')
+ subdir('test')
+endif