| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- # 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.47.0'
- )
- # Check just in case downstream decides to edit the source
- # and add a project version
- version = meson.project_version()
- if version == 'undefined'
- git = find_program('git', required: false)
- if git.found()
- result = run_command(git, 'describe', '--tags', '--abbrev=0')
- if result.returncode() == 0
- version = result.stdout().strip('v\n')
- endif
- endif
- endif
- python = import('python').find_installation('python3')
- # If version is still undefined it means that the git method failed
- if version == 'undefined'
- # Meson doesn't have regular expressions, but since it is implemented
- # in python we can be sure we can use it to parse the file manually
- version = run_command(
- python, '-c', 'import re; raw_version = re.search("User\-Agent.*cpp\-httplib/([0-9]+\.?)+", open("httplib.h").read()).group(0); print(re.search("([0-9]+\\.?)+", raw_version).group(0))'
- ).stdout().strip()
- endif
- message('cpp-httplib version ' + version)
- deps = [dependency('threads')]
- args = []
- openssl_dep = dependency('openssl', version: ['>=1.1.1', '<1.1.2'], required: get_option('cpp-httplib_openssl'))
- if openssl_dep.found()
- deps += openssl_dep
- args += '-DCPPHTTPLIB_OPENSSL_SUPPORT'
- 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')
- httplib_ch = custom_target(
- 'split',
- input: 'httplib.h',
- output: ['httplib.cc', 'httplib.h'],
- command: [python, 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,
- 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',
- 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: include_directories('.'))
- endif
- if meson.version().version_compare('>=0.54.0')
- meson.override_dependency('cpp-httplib', cpp_httplib_dep)
- endif
- if get_option('cpp-httplib_test')
- subdir('test')
- endif
|