meson.build revision 338bf337
1338bf337Smrg# Copyright © 2018 Intel Corporation 2338bf337Smrg 3338bf337Smrg# Permission is hereby granted, free of charge, to any person obtaining a copy 4338bf337Smrg# of this software and associated documentation files (the "Software"), to deal 5338bf337Smrg# in the Software without restriction, including without limitation the rights 6338bf337Smrg# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7338bf337Smrg# copies of the Software, and to permit persons to whom the Software is 8338bf337Smrg# furnished to do so, subject to the following conditions: 9338bf337Smrg 10338bf337Smrg# The above copyright notice and this permission notice shall be included in 11338bf337Smrg# all copies or substantial portions of the Software. 12338bf337Smrg 13338bf337Smrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14338bf337Smrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15338bf337Smrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16338bf337Smrg# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17338bf337Smrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18338bf337Smrg# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19338bf337Smrg# SOFTWARE. 20338bf337Smrg 21338bf337Smrgproject( 22338bf337Smrg 'pixman', 23338bf337Smrg ['c'], 24338bf337Smrg version : '0.38.0', 25338bf337Smrg license : 'MIT', 26338bf337Smrg meson_version : '>= 0.47.2', 27338bf337Smrg default_options : ['buildtype=debugoptimized'], 28338bf337Smrg) 29338bf337Smrg 30338bf337Smrgconfig = configuration_data() 31338bf337Smrgcc = meson.get_compiler('c') 32338bf337Smrgnull_dep = dependency('', required : false) 33338bf337Smrg 34338bf337Smrgadd_project_arguments( 35338bf337Smrg cc.get_supported_arguments([ 36338bf337Smrg '-Wdeclaration-after-statement', 37338bf337Smrg '-fno-strict-aliasing', 38338bf337Smrg '-fvisibility=hidden', 39338bf337Smrg ]), 40338bf337Smrg language : ['c'] 41338bf337Smrg) 42338bf337Smrg 43338bf337Smrg# GCC and Clang both ignore -Wno options that they don't recognize, so test for 44338bf337Smrg# -W<opt>, then add -Wno-<opt> if it's ignored 45338bf337Smrgforeach opt : ['unused-local-typedefs'] 46338bf337Smrg if cc.has_argument('-W' + opt) 47338bf337Smrg add_project_arguments(['-Wno-' + opt], language : ['c']) 48338bf337Smrg endif 49338bf337Smrgendforeach 50338bf337Smrg 51338bf337Smrguse_loongson_mmi = get_option('loongson-mmi') 52338bf337Smrghave_loongson_mmi = false 53338bf337Smrgloongson_mmi_flags = ['-mach=loongson2f'] 54338bf337Smrgif not use_loongson_mmi.disabled() 55338bf337Smrg if host_machine.cpu_family() == 'mips64' and cc.compiles(''' 56338bf337Smrg #ifndef __mips_loongson_vector_rev 57338bf337Smrg #error "Loongson Multimedia Instructions are only available on Loongson" 58338bf337Smrg #endif 59338bf337Smrg #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)) 60338bf337Smrg #error "Need GCC >= 4.4 for Loongson MMI compilation" 61338bf337Smrg #endif 62338bf337Smrg #include "pixman/loongson-mmintrin.h" 63338bf337Smrg int main () { 64338bf337Smrg union { 65338bf337Smrg __m64 v; 66338bf337Smrg char c[8]; 67338bf337Smrg } a = { .c = {1, 2, 3, 4, 5, 6, 7, 8} }; 68338bf337Smrg int b = 4; 69338bf337Smrg __m64 c = _mm_srli_pi16 (a.v, b); 70338bf337Smrg return 0; 71338bf337Smrg }''', 72338bf337Smrg args : loongson_mmi_flags, 73338bf337Smrg name : 'Loongson MMI Intrinsic Support') 74338bf337Smrg have_loongson_mmi = true 75338bf337Smrg endif 76338bf337Smrgendif 77338bf337Smrg 78338bf337Smrgif have_loongson_mmi 79338bf337Smrg config.set10('USE_LOONGSON_MMI', true) 80338bf337Smrgelif use_loongson_mmi.enabled() 81338bf337Smrg error('Loongson MMI Support unavailable, but required') 82338bf337Smrgendif 83338bf337Smrg 84338bf337Smrguse_mmx = get_option('mmx') 85338bf337Smrghave_mmx = false 86338bf337Smrgmmx_flags = ['-mmmx', '-Winline'] 87338bf337Smrgif not use_mmx.disabled() 88338bf337Smrg if host_machine.cpu_family() == 'x86_64' 89338bf337Smrg have_mmx = true 90338bf337Smrg elif host_machine.cpu_family() == 'x86' and cc.compiles(''' 91338bf337Smrg #include <mmintrin.h> 92338bf337Smrg #include <stdint.h> 93338bf337Smrg 94338bf337Smrg /* Check support for block expressions */ 95338bf337Smrg #define _mm_shuffle_pi16(A, N) \ 96338bf337Smrg ({ \ 97338bf337Smrg __m64 ret; \ 98338bf337Smrg \ 99338bf337Smrg /* Some versions of clang will choke on K */ \ 100338bf337Smrg asm ("pshufw %2, %1, %0\n\t" \ 101338bf337Smrg : "=y" (ret) \ 102338bf337Smrg : "y" (A), "K" ((const int8_t)N) \ 103338bf337Smrg ); \ 104338bf337Smrg \ 105338bf337Smrg ret; \ 106338bf337Smrg }) 107338bf337Smrg 108338bf337Smrg int main () { 109338bf337Smrg __m64 v = _mm_cvtsi32_si64 (1); 110338bf337Smrg __m64 w; 111338bf337Smrg 112338bf337Smrg w = _mm_shuffle_pi16(v, 5); 113338bf337Smrg 114338bf337Smrg /* Some versions of clang will choke on this */ 115338bf337Smrg asm ("pmulhuw %1, %0\n\t" 116338bf337Smrg : "+y" (w) 117338bf337Smrg : "y" (v) 118338bf337Smrg ); 119338bf337Smrg 120338bf337Smrg return _mm_cvtsi64_si32 (v); 121338bf337Smrg }''', 122338bf337Smrg args : mmx_flags, 123338bf337Smrg name : 'MMX Intrinsic Support') 124338bf337Smrg have_mmx = true 125338bf337Smrg endif 126338bf337Smrgendif 127338bf337Smrg 128338bf337Smrgif have_mmx 129338bf337Smrg config.set10('USE_X86_MMX', true) 130338bf337Smrgelif use_mmx.enabled() 131338bf337Smrg error('MMX Support unavailable, but required') 132338bf337Smrgendif 133338bf337Smrg 134338bf337Smrguse_sse2 = get_option('sse2') 135338bf337Smrghave_sse2 = false 136338bf337Smrgsse2_flags = ['-msse2', '-Winline'] 137338bf337Smrgif not use_sse2.disabled() 138338bf337Smrg if host_machine.cpu_family() == 'x86' 139338bf337Smrg if cc.compiles(''' 140338bf337Smrg #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)) 141338bf337Smrg # if !defined(__amd64__) && !defined(__x86_64__) 142338bf337Smrg # error "Need GCC >= 4.2 for SSE2 intrinsics on x86" 143338bf337Smrg # endif 144338bf337Smrg #endif 145338bf337Smrg #include <mmintrin.h> 146338bf337Smrg #include <xmmintrin.h> 147338bf337Smrg #include <emmintrin.h> 148338bf337Smrg int param; 149338bf337Smrg int main () { 150338bf337Smrg __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c; 151338bf337Smrg c = _mm_xor_si128 (a, b); 152338bf337Smrg return _mm_cvtsi128_si32(c); 153338bf337Smrg }''', 154338bf337Smrg args : sse2_flags, 155338bf337Smrg name : 'SSE2 Intrinsic Support') 156338bf337Smrg have_sse2 = true 157338bf337Smrg endif 158338bf337Smrg elif host_machine.cpu_family() == 'x86_64' 159338bf337Smrg have_sse2 = true 160338bf337Smrg endif 161338bf337Smrgendif 162338bf337Smrg 163338bf337Smrgif have_sse2 164338bf337Smrg config.set10('USE_SSE2', true) 165338bf337Smrgelif use_sse2.enabled() 166338bf337Smrg error('sse2 Support unavailable, but required') 167338bf337Smrgendif 168338bf337Smrg 169338bf337Smrguse_ssse3 = get_option('ssse3') 170338bf337Smrghave_ssse3 = false 171338bf337Smrgssse3_flags =['-mssse3', '-Winline'] 172338bf337Smrgif not use_ssse3.disabled() 173338bf337Smrg if host_machine.cpu_family().startswith('x86') 174338bf337Smrg if cc.compiles(''' 175338bf337Smrg #include <mmintrin.h> 176338bf337Smrg #include <xmmintrin.h> 177338bf337Smrg #include <emmintrin.h> 178338bf337Smrg int param; 179338bf337Smrg int main () { 180338bf337Smrg __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c; 181338bf337Smrg c = _mm_xor_si128 (a, b); 182338bf337Smrg return _mm_cvtsi128_si32(c); 183338bf337Smrg }''', 184338bf337Smrg args : ssse3_flags, 185338bf337Smrg name : 'SSSE3 Intrinsic Support') 186338bf337Smrg have_ssse3 = true 187338bf337Smrg endif 188338bf337Smrg endif 189338bf337Smrgendif 190338bf337Smrg 191338bf337Smrgif have_ssse3 192338bf337Smrg config.set10('USE_SSSE3', true) 193338bf337Smrgelif use_ssse3.enabled() 194338bf337Smrg error('ssse3 Support unavailable, but required') 195338bf337Smrgendif 196338bf337Smrg 197338bf337Smrguse_vmx = get_option('vmx') 198338bf337Smrghave_vmx = false 199338bf337Smrgvmx_flags = ['-maltivec', '-mabi=altivec'] 200338bf337Smrgif not use_vmx.disabled() 201338bf337Smrg if host_machine.cpu_family().startswith('ppc') 202338bf337Smrg if cc.compiles(''' 203338bf337Smrg #include <altivec.h> 204338bf337Smrg int main () { 205338bf337Smrg vector unsigned int v = vec_splat_u32 (1); 206338bf337Smrg v = vec_sub (v, v); 207338bf337Smrg return 0; 208338bf337Smrg }''', 209338bf337Smrg args : vmx_flags, 210338bf337Smrg name : 'VMX/Altivec Intrinsic Support') 211338bf337Smrg have_vmx = true 212338bf337Smrg endif 213338bf337Smrg endif 214338bf337Smrgendif 215338bf337Smrg 216338bf337Smrgif have_vmx 217338bf337Smrg config.set10('USE_VMX', true) 218338bf337Smrgelif use_vmx.enabled() 219338bf337Smrg error('vmx Support unavailable, but required') 220338bf337Smrgendif 221338bf337Smrg 222338bf337Smrguse_armv6_simd = get_option('arm-simd') 223338bf337Smrghave_armv6_simd = false 224338bf337Smrgif not use_armv6_simd.disabled() 225338bf337Smrg if host_machine.cpu_family() == 'arm' 226338bf337Smrg if cc.compiles(''' 227338bf337Smrg .text 228338bf337Smrg .arch armv6 229338bf337Smrg .object_arch armv4 230338bf337Smrg .arm 231338bf337Smrg .altmacro 232338bf337Smrg #ifndef __ARM_EABI__ 233338bf337Smrg #error EABI is required (to be sure that calling conventions are compatible) 234338bf337Smrg #endif 235338bf337Smrg pld [r0] 236338bf337Smrg uqadd8 r0, r0, r0 237338bf337Smrg ''', 238338bf337Smrg args : ['-x assembler-with-cpp'], 239338bf337Smrg name : 'ARMv6 SIMD Intrinsic Support') 240338bf337Smrg have_armv6_simd = true 241338bf337Smrg endif 242338bf337Smrg endif 243338bf337Smrgendif 244338bf337Smrg 245338bf337Smrgif have_armv6_simd 246338bf337Smrg config.set10('USE_ARM_SIMD', true) 247338bf337Smrgelif use_armv6_simd.enabled() 248338bf337Smrg error('ARMv6 SIMD Support unavailable, but required') 249338bf337Smrgendif 250338bf337Smrg 251338bf337Smrguse_neon = get_option('neon') 252338bf337Smrghave_neon = false 253338bf337Smrgif not use_neon.disabled() 254338bf337Smrg if host_machine.cpu_family() == 'arm' 255338bf337Smrg if cc.compiles(''' 256338bf337Smrg .text 257338bf337Smrg .fpu neon 258338bf337Smrg .arch armv7a 259338bf337Smrg .object_arch armv4 260338bf337Smrg .eabi_attribute 10, 0 261338bf337Smrg .arm 262338bf337Smrg .altmacro 263338bf337Smrg #ifndef __ARM_EABI__ 264338bf337Smrg #error EABI is required (to be sure that calling conventions are compatible) 265338bf337Smrg #endif 266338bf337Smrg pld [r0] 267338bf337Smrg vmovn.u16 d0, q0 268338bf337Smrg ''', 269338bf337Smrg args : ['-x assembler-with-cpp'], 270338bf337Smrg name : 'NEON Intrinsic Support') 271338bf337Smrg have_neon = true 272338bf337Smrg endif 273338bf337Smrg endif 274338bf337Smrgendif 275338bf337Smrg 276338bf337Smrgif have_neon 277338bf337Smrg config.set10('USE_ARM_NEON', true) 278338bf337Smrgelif use_neon.enabled() 279338bf337Smrg error('NEON Support unavailable, but required') 280338bf337Smrgendif 281338bf337Smrg 282338bf337Smrguse_iwmmxt = get_option('iwmmxt') 283338bf337Smrghave_iwmmxt = false 284338bf337Smrgiwmmxt_flags = ['-flax-vector-conversions', '-Winline'] 285338bf337Smrgif not use_iwmmxt.disabled() 286338bf337Smrg if get_option('iwmmxt2') 287338bf337Smrg iwmmxt_flags += '-march=iwmmxt2' 288338bf337Smrg else 289338bf337Smrg iwmmxt_flags += '-march=iwmmxt' 290338bf337Smrg endif 291338bf337Smrg 292338bf337Smrg if host_machine.cpu_family() == 'arm' 293338bf337Smrg if cc.compiles(''' 294338bf337Smrg #ifndef __IWMMXT__ 295338bf337Smrg #error "IWMMXT not enabled (with -march=iwmmxt)" 296338bf337Smrg #endif 297338bf337Smrg #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)) 298338bf337Smrg #error "Need GCC >= 4.8 for IWMMXT intrinsics" 299338bf337Smrg #endif 300338bf337Smrg #include <mmintrin.h> 301338bf337Smrg int main () { 302338bf337Smrg union { 303338bf337Smrg __m64 v; 304338bf337Smrg char c[8]; 305338bf337Smrg } a = { .c = {1, 2, 3, 4, 5, 6, 7, 8} }; 306338bf337Smrg int b = 4; 307338bf337Smrg __m64 c = _mm_srli_si64 (a.v, b); 308338bf337Smrg } 309338bf337Smrg ''', 310338bf337Smrg args : iwmmxt_flags, 311338bf337Smrg name : 'IWMMXT Intrinsic Support') 312338bf337Smrg have_iwmmxt = true 313338bf337Smrg endif 314338bf337Smrg endif 315338bf337Smrgendif 316338bf337Smrg 317338bf337Smrgif have_iwmmxt 318338bf337Smrg config.set10('USE_ARM_IWMMXT', true) 319338bf337Smrgelif use_iwmmxt.enabled() 320338bf337Smrg error('NEON Support unavailable, but required') 321338bf337Smrgendif 322338bf337Smrg 323338bf337Smrguse_mips_dspr2 = get_option('mips-dspr2') 324338bf337Smrghave_mips_dspr2 = false 325338bf337Smrgmips_dspr2_flags = ['-mdspr2'] 326338bf337Smrgif not use_mips_dspr2.disabled() 327338bf337Smrg if host_machine.cpu_family() == 'mips32' 328338bf337Smrg if cc.compiles(''' 329338bf337Smrg #if !(defined(__mips__) && __mips_isa_rev >= 2) 330338bf337Smrg #error MIPS DSPr2 is currently only available on MIPS32r2 platforms. 331338bf337Smrg #endif 332338bf337Smrg int 333338bf337Smrg main () 334338bf337Smrg { 335338bf337Smrg int c = 0, a = 0, b = 0; 336338bf337Smrg __asm__ __volatile__ ( 337338bf337Smrg "precr.qb.ph %[c], %[a], %[b] \n\t" 338338bf337Smrg : [c] "=r" (c) 339338bf337Smrg : [a] "r" (a), [b] "r" (b) 340338bf337Smrg ); 341338bf337Smrg return c; 342338bf337Smrg }''', 343338bf337Smrg args : mipds_dspr2_flags, 344338bf337Smrg name : 'DSPr2 Intrinsic Support') 345338bf337Smrg have_mips_dspr2 = true 346338bf337Smrg endif 347338bf337Smrg endif 348338bf337Smrgendif 349338bf337Smrg 350338bf337Smrgif have_mips_dspr2 351338bf337Smrg config.set10('USE_MIPS_DSPR2', true) 352338bf337Smrgelif use_mips_dspr2.enabled() 353338bf337Smrg error('MIPS DSPr2 Support unavailable, but required') 354338bf337Smrgendif 355338bf337Smrg 356338bf337Smrguse_gnu_asm = get_option('gnu-inline-asm') 357338bf337Smrgif not use_gnu_asm.disabled() 358338bf337Smrg if cc.compiles(''' 359338bf337Smrg int main () { 360338bf337Smrg /* Most modern architectures have a NOP instruction, so this is a fairly generic test. */ 361338bf337Smrg asm volatile ( "\tnop\n" : : : "cc", "memory" ); 362338bf337Smrg return 0; 363338bf337Smrg } 364338bf337Smrg ''', 365338bf337Smrg name : 'GNU Inline ASM support.') 366338bf337Smrg config.set10('USE_GCC_INLINE_ASM', true) 367338bf337Smrg elif use_gnu_asm.enabled() 368338bf337Smrg error('GNU inline assembly support missing but required.') 369338bf337Smrg endif 370338bf337Smrgendif 371338bf337Smrg 372338bf337Smrgif get_option('timers') 373338bf337Smrg config.set('PIXMAN_TIMERS', 1) 374338bf337Smrgendif 375338bf337Smrgif get_option('gnuplot') 376338bf337Smrg config.set('PIXMAN_GNUPLOT', 1) 377338bf337Smrgendif 378338bf337Smrg 379338bf337Smrguse_openmp = get_option('openmp') 380338bf337Smrgdep_openmp = null_dep 381338bf337Smrgif not use_openmp.disabled() 382338bf337Smrg dep_openmp = dependency('openmp', required : get_option('openmp')) 383338bf337Smrg if dep_openmp.found() 384338bf337Smrg config.set10('USE_OPENMP', true) 385338bf337Smrg endif 386338bf337Smrgendif 387338bf337Smrg 388338bf337Smrgdep_gtk = dependency('gtk+-2.0', version : '>= 2.16', required : get_option('gtk')) 389338bf337Smrgdep_glib = dependency('glib-2.0', required : get_option('gtk')) 390338bf337Smrgdep_pixman = dependency('pixman-1', required : get_option('gtk'), 391338bf337Smrg version : '>= ' + meson.project_version()) 392338bf337Smrgdep_png = dependency('libpng', required : get_option('libpng')) 393338bf337Smrgif dep_png.found() 394338bf337Smrg config.set('HAVE_LIBPNG', 1) 395338bf337Smrgendif 396338bf337Smrgdep_m = cc.find_library('m', required : false) 397338bf337Smrgdep_threads = dependency('threads') 398338bf337Smrgif dep_threads.found() 399338bf337Smrg config.set('HAVE_PTHREADS', 1) 400338bf337Smrgendif 401338bf337Smrg 402338bf337Smrgfuncs = ['sigaction', 'alarm', 'mprotect', 'getpagesize', 'mmap'] 403338bf337Smrg# mingw claimes to have posix_memalign, but it doesn't 404338bf337Smrgif host_machine.system() != 'windows' 405338bf337Smrg funcs += 'posix_memalign' 406338bf337Smrgendif 407338bf337Smrg 408338bf337Smrgforeach f : funcs 409338bf337Smrg if cc.has_function(f) 410338bf337Smrg config.set('HAVE_@0@'.format(f.to_upper()), 1) 411338bf337Smrg endif 412338bf337Smrgendforeach 413338bf337Smrg 414338bf337Smrgif cc.has_function('gettimeofday') 415338bf337Smrg config.set('HAVE_GETTIMEOFDAY', 1) 416338bf337Smrgendif 417338bf337Smrg 418338bf337Smrg# This is only used in one test, that defines _GNU_SOURCE 419338bf337Smrgif cc.has_function('feenableexcept', 420338bf337Smrg prefix : '#define _GNU_SOURCE\n#include <fenv.h>', 421338bf337Smrg dependencies : dep_m) 422338bf337Smrg config.set('HAVE_FEENABLEEXCEPT', 1) 423338bf337Smrgendif 424338bf337Smrg 425338bf337Smrgif cc.has_header_symbol('fenv.h', 'FE_DIVBYZERO') 426338bf337Smrg config.set('HAVE_FEDIVBYZERO', 1) 427338bf337Smrgendif 428338bf337Smrg 429338bf337Smrgforeach h : ['sys/mman.h', 'fenv.h', 'unistd.h'] 430338bf337Smrg if cc.check_header(h) 431338bf337Smrg config.set('HAVE_@0@'.format(h.underscorify().to_upper()), 1) 432338bf337Smrg endif 433338bf337Smrgendforeach 434338bf337Smrg 435338bf337Smrgif (host_machine.system() == 'windows' and 436338bf337Smrg cc.compiles('int __declspec(thread) foo;', name : 'TLS via __declspec(thread)')) 437338bf337Smrg config.set('TLS', '__declspec(thread)') 438338bf337Smrgelif cc.compiles('int __thread foo;', name : 'TLS via __thread') 439338bf337Smrg config.set('TLS', '__thread') 440338bf337Smrgendif 441338bf337Smrg 442338bf337Smrgif cc.links(''' 443338bf337Smrg static int x = 1; 444338bf337Smrg static void __attribute__((constructor)) constructor_function () { x = 0; } 445338bf337Smrg int main (void) { return x; } 446338bf337Smrg ''', 447338bf337Smrg name : '__attribute__((constructor))') 448338bf337Smrg config.set('TOOLCHAIN_SUPPORTS_ATTRIBUTE_CONSTRUCTOR', 1) 449338bf337Smrgendif 450338bf337Smrg 451338bf337Smrgif cc.links( 452338bf337Smrg ' __float128 a = 1.0Q, b = 2.0Q; int main (void) { return a + b; }', 453338bf337Smrg name : 'Has float128 support') 454338bf337Smrg config.set('HAVE_FLOAT128', 1) 455338bf337Smrgendif 456338bf337Smrg 457338bf337Smrgif cc.has_function('clz') 458338bf337Smrg config.set('HAVE_BUILTIN_CLZ', 1) 459338bf337Smrgendif 460338bf337Smrg 461338bf337Smrgif cc.links(''' 462338bf337Smrg unsigned int __attribute__ ((vector_size(16))) e, a, b; 463338bf337Smrg int main (void) { e = a - ((b << 27) + (b >> (32 - 27))) + 1; return e[0]; } 464338bf337Smrg ''', 465338bf337Smrg name : 'Support for GCC vector extensions') 466338bf337Smrg config.set('HAVE_GCC_VECTOR_EXTENSIONS', 1) 467338bf337Smrgendif 468338bf337Smrg 469338bf337Smrgif host_machine.endian() == 'big' 470338bf337Smrg config.set('WORDS_BIGENDIAN', 1) 471338bf337Smrgendif 472338bf337Smrg 473338bf337Smrg# Required to make pixman-private.h 474338bf337Smrgconfig.set('PACKAGE', 'foo') 475338bf337Smrg 476338bf337Smrgversion_conf = configuration_data() 477338bf337Smrgsplit = meson.project_version().split('.') 478338bf337Smrgversion_conf.set('PIXMAN_VERSION_MAJOR', split[0]) 479338bf337Smrgversion_conf.set('PIXMAN_VERSION_MINOR', split[1]) 480338bf337Smrgversion_conf.set('PIXMAN_VERSION_MICRO', split[2]) 481338bf337Smrg 482338bf337Smrgadd_project_arguments('-DHAVE_CONFIG_H', language : ['c']) 483338bf337Smrg 484338bf337Smrgsubdir('pixman') 485338bf337Smrgsubdir('test') 486338bf337Smrgsubdir('demos') 487338bf337Smrg 488338bf337Smrgpkg = import('pkgconfig') 489338bf337Smrgpkg.generate( 490338bf337Smrg name : 'Pixman', 491338bf337Smrg filebase : 'pixman-1', 492338bf337Smrg description : 'The pixman library (version 1)', 493338bf337Smrg libraries : libpixman, 494338bf337Smrg subdirs: 'pixman-1', 495338bf337Smrg version : meson.project_version(), 496338bf337Smrg) 497