Initial meson build files
This commit is contained in:
		
							
								
								
									
										110
									
								
								meson.build
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								meson.build
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,110 @@
 | 
			
		||||
poject('webrtc-audio-processing', 'c', 'cpp',
 | 
			
		||||
  version : '0.3.1',
 | 
			
		||||
  meson_version : '>= 0.47',
 | 
			
		||||
  default_options : [ 'warning_level=1',
 | 
			
		||||
                      'buildtype=debugoptimized' ])
 | 
			
		||||
 | 
			
		||||
soversion = 0
 | 
			
		||||
 | 
			
		||||
cc = meson.get_compiler('c')
 | 
			
		||||
 | 
			
		||||
host_system = host_machine.system()
 | 
			
		||||
 | 
			
		||||
platform_cflags = []
 | 
			
		||||
os_cflags = []
 | 
			
		||||
os_deps = []
 | 
			
		||||
have_posix = false
 | 
			
		||||
have_win = false
 | 
			
		||||
 | 
			
		||||
if ['darwin', 'ios'].contains(host_system)
 | 
			
		||||
  os_cflags = ['-DWEBRTC_MAC', '-DWEBRTC_THREAD_RR', '-DWEBRTC_CLOCK_TYPE_REALTIME']
 | 
			
		||||
  if host_system == 'ios'
 | 
			
		||||
    os_cflags += ['-DWEBRTC_IOS']
 | 
			
		||||
  endif
 | 
			
		||||
  platform_cflags += ['-D WEBRTC_POSIX']
 | 
			
		||||
  have_posix = true
 | 
			
		||||
elif host_system == 'android'
 | 
			
		||||
  os_cflags += ['-DWEBRTC_ANDROID', '-DWEBRTC_LINUX', '-DWEBRTC_THREAD_RR', '-DWEBRTC_CLOCK_TYPE_REALTIME']
 | 
			
		||||
  os_deps += [cc.find_library('log')]
 | 
			
		||||
  os_deps += [dependency('gnustl', required : get_option('gnustl'))]
 | 
			
		||||
  platform_cflags += ['-DWEBRTC_POSIX']
 | 
			
		||||
  have_posix = true
 | 
			
		||||
elif host_system == 'linux'
 | 
			
		||||
  os_cflags += ['-DWEBRTC_LINUX', '-DWEBRTC_THREAD_RR']
 | 
			
		||||
  os_deps += [cc.find_library('rt', required : false)]
 | 
			
		||||
  os_deps += [dependency('threads')]
 | 
			
		||||
  platform_cflags += ['-DWEBRTC_POSIX']
 | 
			
		||||
  have_posix = true
 | 
			
		||||
elif host_system == 'windows'
 | 
			
		||||
  platform_cflags += ['-DWEBRTC_WIN', '-D_WIN32', '-U__STRICT_ANSI__']
 | 
			
		||||
  os_deps += [cc.find_library('winmm')]
 | 
			
		||||
  have_win = true
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
arch_cflags = []
 | 
			
		||||
have_arm = false
 | 
			
		||||
have_armv7 = false
 | 
			
		||||
have_neon = false
 | 
			
		||||
have_x86 = false
 | 
			
		||||
if ['arm', 'armv7', 'aarch64'].contains(host_machine.cpu_family())
 | 
			
		||||
  have_arm = true
 | 
			
		||||
  arch_cflags = ['-DWEBRTC_ARCH_ARM']
 | 
			
		||||
  if cc.compiles('''#ifndef __ARM_ARCH_7A__
 | 
			
		||||
#error no armv7 arch
 | 
			
		||||
#endif''')
 | 
			
		||||
    have_armv7 = true
 | 
			
		||||
    arch_cflags = ['-DWEBRTC_ARCH_ARM_V7']
 | 
			
		||||
  endif
 | 
			
		||||
  if cc.compiles('''#ifndef __aarch64__
 | 
			
		||||
#error no aarch64 arch
 | 
			
		||||
#endif''')
 | 
			
		||||
    have_neon = true
 | 
			
		||||
    arch_cflags = ['-DWEBRTC_ARCH_ARM64', '-DWEBRTC_HAS_NEON']
 | 
			
		||||
  endif
 | 
			
		||||
endif
 | 
			
		||||
if ['x86', 'x86_64'].contains(host_machine.cpu_family())
 | 
			
		||||
  have_x86 = true
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
neon_opt = get_option('neon')
 | 
			
		||||
if neon_opt != 'no'
 | 
			
		||||
  if neon_opt != 'runtime'
 | 
			
		||||
    if cc.compiles('#include <arm_neon.h>', args : '-mfpu=neon')
 | 
			
		||||
      arch_cflags += ['-mfpu=neon', '-DWEBRTC_HAS_NEON']
 | 
			
		||||
      have_neon = true
 | 
			
		||||
    endif
 | 
			
		||||
  else
 | 
			
		||||
    neon_opt += ['-DWEBRTC_DETECT_NEON', '-mfpu=neon']
 | 
			
		||||
    have_neon = true
 | 
			
		||||
  endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
noise_cflags = []
 | 
			
		||||
if get_option('ns_mode') == 'float'
 | 
			
		||||
  noise_cflags += ['-DWEBRTC_NS_FLOAT=1']
 | 
			
		||||
else
 | 
			
		||||
  noise_cflags += ['-DWEBRTC_NS_FIXED=1']
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
common_cflags = ['-DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD', '-DNDEBUG'] + platform_cflags + os_cflags + arch_cflags + noise_cflags
 | 
			
		||||
common_cxxflags = ['-std=c++11'] + common_cflags
 | 
			
		||||
common_deps = os_deps
 | 
			
		||||
webrtc_inc = include_directories('.')
 | 
			
		||||
 | 
			
		||||
subdir('webrtc')
 | 
			
		||||
 | 
			
		||||
pkgconfig = import('pkgconfig')
 | 
			
		||||
 | 
			
		||||
pkgconfig.generate(
 | 
			
		||||
    name: 'webrtc-audio-processing',
 | 
			
		||||
    description: 'WebRTC Audio Processing library',
 | 
			
		||||
    version: meson.project_version(),
 | 
			
		||||
    filebase: 'webrtc-audio-processing',
 | 
			
		||||
    subdirs: 'webrtc_audio_processing',
 | 
			
		||||
    extra_cflags: [
 | 
			
		||||
      '-DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD',
 | 
			
		||||
    ] + platform_cflags,
 | 
			
		||||
    # XXX: passing the libwebrtc_audio_processing object result in adding not-installed libraries to Libs.private
 | 
			
		||||
    libraries: '-lwebrtc_audio_processing',
 | 
			
		||||
    libraries_private: common_deps,
 | 
			
		||||
)
 | 
			
		||||
		Reference in New Issue
	
	Block a user