mirror of
				https://github.com/bolucat/Archive.git
				synced 2025-10-31 20:03:10 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Meson
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.4 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.47.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 <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: '>=1.1.1', 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: include_directories('.'))
 | |
| 
 | |
|   import('pkgconfig').generate(
 | |
|     name: 'cpp-httplib',
 | |
|     description: 'A C++ HTTP/HTTPS server and client library',
 | |
|     install_dir: join_paths(get_option('datadir'), 'pkgconfig'),
 | |
|     url: 'https://github.com/yhirose/cpp-httplib',
 | |
|     version: version
 | |
|   )
 | |
| 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
 | 
