You've already forked cpp-httplib
							
							This is a follow-up to commit 4ff7a1c858,
which introduced new simplified build options and deprecated the old
ones. I forgot to also change the various get_option() calls,
effectively rendering the new option names useless, as they would not
get honoured.
		
	
		
			
				
	
	
		
			141 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Meson
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			4.0 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')
 | 
						|
 | 
						|
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
 |