1project('libadwaita', 'c', 2 version: '1.0.0-alpha.2', 3 license: 'LGPL-2.1-or-later', 4 meson_version: '>= 0.53.0', 5 default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ], 6) 7 8version_arr = meson.project_version().split('-')[0].split('.') 9adwaita_version_major = version_arr[0].to_int() 10adwaita_version_minor = version_arr[1].to_int() 11adwaita_version_micro = version_arr[2].to_int() 12 13# The major api version as encoded in the libraries name 14apiversion = adwaita_version_major.to_string() 15# The so major version of the library 16soversion = 0 17package_api_name = '@0@-@1@'.format(meson.project_name(), apiversion) 18 19adwaita_interface_age = adwaita_version_micro 20 21# maintaining compatibility with libtool versioning 22# current = minor * 100 + micro - interface 23# revision = interface 24current = adwaita_version_minor * 100 + adwaita_version_micro - adwaita_interface_age 25revision = adwaita_interface_age 26libversion = '@0@.@1@.@2@'.format(soversion, current, revision) 27 28add_project_arguments([ 29 '-DHAVE_CONFIG_H', 30 '-DADWAITA_COMPILATION', 31 '-I' + meson.build_root(), 32], language: 'c') 33 34root_inc = include_directories('.') 35src_inc = include_directories('src') 36 37cc = meson.get_compiler('c') 38 39global_c_args = [] 40test_c_args = [ 41 '-Wcast-align', 42 '-Wdate-time', 43 '-Wdeclaration-after-statement', 44 ['-Werror=format-security', '-Werror=format=2'], 45 '-Wendif-labels', 46 '-Werror=incompatible-pointer-types', 47 '-Werror=missing-declarations', 48 '-Werror=overflow', 49 '-Werror=return-type', 50 '-Werror=shift-count-overflow', 51 '-Werror=shift-overflow=2', 52 '-Werror=implicit-fallthrough=3', 53 '-Wformat-nonliteral', 54 '-Wformat-security', 55 '-Winit-self', 56 '-Wmaybe-uninitialized', 57 '-Wmissing-field-initializers', 58 '-Wmissing-include-dirs', 59 '-Wmissing-noreturn', 60 '-Wnested-externs', 61 '-Wno-missing-field-initializers', 62 '-Wno-sign-compare', 63 '-Wno-strict-aliasing', 64 '-Wno-unused-parameter', 65 '-Wold-style-definition', 66 '-Wpointer-arith', 67 '-Wredundant-decls', 68 '-Wshadow', 69 '-Wstrict-prototypes', 70 '-Wswitch-default', 71 '-Wswitch-enum', 72 '-Wtype-limits', 73 '-Wundef', 74 '-Wunused-function', 75] 76 77target_system = target_machine.system() 78 79if get_option('buildtype') != 'plain' 80 if target_system == 'windows' 81 test_c_args += '-fstack-protector' 82 else 83 test_c_args += '-fstack-protector-strong' 84 endif 85endif 86if get_option('profiling') 87 test_c_args += '-pg' 88endif 89 90foreach arg: test_c_args 91 if cc.has_multi_arguments(arg) 92 global_c_args += arg 93 endif 94endforeach 95add_project_arguments( 96 global_c_args, 97 language: 'c' 98) 99 100# Setup various paths that subdirectory meson.build files need 101package_subdir = get_option('package_subdir') # When used as subproject 102if package_subdir != '' 103 datadir = get_option('datadir') / package_subdir 104 libdir = get_option('libdir') / package_subdir 105 girdir = get_option('datadir') / package_subdir / 'gir-1.0' 106 typelibdir = get_option('libdir') / package_subdir / 'girepository-1.0' 107 vapidir = get_option('datadir') / package_subdir / 'vapi' 108else 109 datadir = get_option('datadir') 110 libdir = get_option('libdir') 111 girdir = get_option('datadir') / 'gir-1.0' 112 typelibdir = get_option('libdir') / 'girepository-1.0' 113 vapidir = get_option('datadir') / 'vala' / 'vapi' 114endif 115 116introspection_feature = get_option('introspection') 117introspection = introspection_feature.enabled() or introspection_feature.auto() 118 119gnome = import('gnome') 120 121subdir('src') 122subdir('po') 123subdir('examples') 124subdir('tests') 125subdir('doc') 126 127run_data = configuration_data() 128run_data.set('ABS_BUILDDIR', meson.current_build_dir()) 129run_data.set('ABS_SRCDIR', meson.current_source_dir()) 130configure_file( 131 input: 'run.in', 132 output: 'run', 133 configuration: run_data) 134 135summary( 136 { 137 'Tests': get_option('tests'), 138 'Examples': get_option('examples'), 139 'Documentation': get_option('gtk_doc'), 140 'Introspection': introspection, 141 'Vapi': get_option('vapi'), 142 }, section: 'Options') 143 144