Blame meson.build

Packit Service 6a0f92
project('clutter-gtk', 'c', version: '1.8.4',
Packit Service 6a0f92
        license: 'LGPLv2.1+',
Packit Service 6a0f92
        default_options: [
Packit Service 6a0f92
          'buildtype=debugoptimized',
Packit Service 6a0f92
          'c_std=c99',
Packit Service 6a0f92
          'warning_level=1',
Packit Service 6a0f92
        ],
Packit Service 6a0f92
        meson_version: '>= 0.40.1')
Packit Service 6a0f92
Packit Service 6a0f92
add_project_arguments([ '-D_XOPEN_SOURCE=700' ], language: 'c')
Packit Service 6a0f92
Packit Service 6a0f92
cc = meson.get_compiler('c')
Packit Service 6a0f92
host_system = host_machine.system()
Packit Service 6a0f92
Packit Service 6a0f92
version = meson.project_version().split('.')
Packit Service 6a0f92
gtk_clutter_major_version = version[0].to_int()
Packit Service 6a0f92
gtk_clutter_minor_version = version[1].to_int()
Packit Service 6a0f92
gtk_clutter_micro_version = version[2].to_int()
Packit Service 6a0f92
Packit Service 6a0f92
gtk_clutter_api_version = '@0@.0'.format(gtk_clutter_major_version)
Packit Service 6a0f92
Packit Service 6a0f92
if gtk_clutter_minor_version.is_odd()
Packit Service 6a0f92
  gtk_clutter_interface_age = 0
Packit Service 6a0f92
else
Packit Service 6a0f92
  gtk_clutter_interface_age = gtk_clutter_micro_version
Packit Service 6a0f92
endif
Packit Service 6a0f92
Packit Service 6a0f92
gtk_clutter_api_name = '@0@-@1@'.format(meson.project_name(), gtk_clutter_api_version)
Packit Service 6a0f92
gtk_clutter_api_path = join_paths(gtk_clutter_api_name, meson.project_name())
Packit Service 6a0f92
Packit Service 6a0f92
gtk_clutter_prefix = get_option('prefix')
Packit Service 6a0f92
gtk_clutter_libdir = join_paths(gtk_clutter_prefix, get_option('libdir'))
Packit Service 6a0f92
gtk_clutter_includedir = join_paths(gtk_clutter_prefix, get_option('includedir'))
Packit Service 6a0f92
gtk_clutter_datadir = join_paths(gtk_clutter_prefix, get_option('datadir'))
Packit Service 6a0f92
Packit Service 6a0f92
# maintaining compatibility with the previous libtool versioning
Packit Service 6a0f92
# current = minor * 100 + micro - interface
Packit Service 6a0f92
# revision = interface
Packit Service 6a0f92
soversion = 0
Packit Service 6a0f92
current = 100 * gtk_clutter_minor_version + gtk_clutter_micro_version - gtk_clutter_interface_age
Packit Service 6a0f92
revision = gtk_clutter_interface_age
Packit Service 6a0f92
libversion = '@0@.@1@.@2@'.format(soversion, current, revision)
Packit Service 6a0f92
Packit Service 6a0f92
config_h = configuration_data()
Packit Service 6a0f92
config_h.set_quoted('GETTEXT_PACKAGE', 'cluttergtk-@0@'.format(gtk_clutter_api_version))
Packit Service 6a0f92
Packit Service 6a0f92
# Compiler flags
Packit Service 6a0f92
common_cflags = []
Packit Service 6a0f92
common_ldflags = []
Packit Service 6a0f92
Packit Service 6a0f92
if cc.get_id() == 'msvc'
Packit Service 6a0f92
  # Make MSVC more pedantic, this is a recommended pragma list
Packit Service 6a0f92
  # from _Win32_Programming_ by Rector and Newcomer.  Taken from
Packit Service 6a0f92
  # glib's msvc_recommended_pragmas.h--please see that file for
Packit Service 6a0f92
  # the meaning of the warning codes used here
Packit Service 6a0f92
  test_cflags = [
Packit Service 6a0f92
    '-we4002',
Packit Service 6a0f92
    '-we4003',
Packit Service 6a0f92
    '-w14010',
Packit Service 6a0f92
    '-we4013',
Packit Service 6a0f92
    '-w14016',
Packit Service 6a0f92
    '-we4020',
Packit Service 6a0f92
    '-we4021',
Packit Service 6a0f92
    '-we4027',
Packit Service 6a0f92
    '-we4029',
Packit Service 6a0f92
    '-we4033',
Packit Service 6a0f92
    '-we4035',
Packit Service 6a0f92
    '-we4045',
Packit Service 6a0f92
    '-we4047',
Packit Service 6a0f92
    '-we4049',
Packit Service 6a0f92
    '-we4053',
Packit Service 6a0f92
    '-we4071',
Packit Service 6a0f92
    '-we4150',
Packit Service 6a0f92
    '-we4819'
Packit Service 6a0f92
  ]
Packit Service 6a0f92
elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
Packit Service 6a0f92
  test_cflags = [
Packit Service 6a0f92
    '-ffast-math',
Packit Service 6a0f92
    '-fstrict-aliasing',
Packit Service 6a0f92
    '-Wpointer-arith',
Packit Service 6a0f92
    '-Wmissing-declarations',
Packit Service 6a0f92
    '-Wformat=2',
Packit Service 6a0f92
    '-Wstrict-prototypes',
Packit Service 6a0f92
    '-Wmissing-prototypes',
Packit Service 6a0f92
    '-Wnested-externs',
Packit Service 6a0f92
    '-Wold-style-definition',
Packit Service 6a0f92
    '-Wunused',
Packit Service 6a0f92
    '-Wuninitialized',
Packit Service 6a0f92
    '-Wshadow',
Packit Service 6a0f92
    '-Wmissing-noreturn',
Packit Service 6a0f92
    '-Wmissing-format-attribute',
Packit Service 6a0f92
    '-Wredundant-decls',
Packit Service 6a0f92
    '-Wlogical-op',
Packit Service 6a0f92
    '-Wcast-align',
Packit Service 6a0f92
    '-Wno-unused-local-typedefs',
Packit Service 6a0f92
    '-Werror=implicit',
Packit Service 6a0f92
    '-Werror=init-self',
Packit Service 6a0f92
    '-Werror=main',
Packit Service 6a0f92
    '-Werror=missing-braces',
Packit Service 6a0f92
    '-Werror=return-type',
Packit Service 6a0f92
    '-Werror=array-bounds',
Packit Service 6a0f92
    '-Werror=write-strings',
Packit Service 6a0f92
  ]
Packit Service 6a0f92
else
Packit Service 6a0f92
  test_cflags = []
Packit Service 6a0f92
endif
Packit Service 6a0f92
Packit Service 6a0f92
# Symbol visibility
Packit Service 6a0f92
if get_option('default_library') != 'static'
Packit Service 6a0f92
  if host_system == 'windows'
Packit Service 6a0f92
    config_h.set('DLL_EXPORT', true)
Packit Service 6a0f92
    config_h.set('CLUTTER_GTK_EXTERN', '__declspec(dllexport) extern')
Packit Service 6a0f92
    if cc.get_id() != 'msvc'
Packit Service 6a0f92
      test_cflags += ['-fvisibility=hidden']
Packit Service 6a0f92
    endif
Packit Service 6a0f92
  else
Packit Service 6a0f92
    config_h.set('CLUTTER_GTK_EXTERN', '__attribute__((visibility("default"))) extern')
Packit Service 6a0f92
    test_cflags += ['-fvisibility=hidden']
Packit Service 6a0f92
  endif
Packit Service 6a0f92
endif
Packit Service 6a0f92
Packit Service 6a0f92
foreach cflag: test_cflags
Packit Service 6a0f92
  if cc.has_argument(cflag)
Packit Service 6a0f92
    common_cflags += cflag
Packit Service 6a0f92
  endif
Packit Service 6a0f92
endforeach
Packit Service 6a0f92
Packit Service 6a0f92
if host_system == 'linux'
Packit Service 6a0f92
  foreach ldflag: [ '-Wl,-Bsymbolic-functions', '-Wl,-z,relro', '-Wl,-z,now' ]
Packit Service 6a0f92
    if cc.has_argument(ldflag)
Packit Service 6a0f92
      common_ldflags += ldflag
Packit Service 6a0f92
    endif
Packit Service 6a0f92
  endforeach
Packit Service 6a0f92
endif
Packit Service 6a0f92
Packit Service 6a0f92
if host_system == 'darwin'
Packit Service 6a0f92
  common_ldflags += [ '-compatibility_version=1', '-current_version=1.0', ]
Packit Service 6a0f92
endif
Packit Service 6a0f92
Packit Service 6a0f92
gtk_clutter_debug_cflags = []
Packit Service 6a0f92
if get_option('buildtype').startswith('debug')
Packit Service 6a0f92
  gtk_clutter_debug_cflags += '-DCLUTTER_GTK_ENABLE_DEBUG'
Packit Service 6a0f92
elif get_option('buildtype') == 'release'
Packit Service 6a0f92
  gtk_clutter_debug_cflags += '-DG_DISABLE_CAST_CHECKS'
Packit Service 6a0f92
endif
Packit Service 6a0f92
Packit Service 6a0f92
if gtk_clutter_minor_version.is_even()
Packit Service 6a0f92
  gtk_clutter_debug_cflags += [
Packit Service 6a0f92
    '-DGLIB_DISABLE_DEPRECATION_WARNINGS',
Packit Service 6a0f92
    '-DCLUTTER_DISABLE_DEPRECATION_WARNINGS',
Packit Service 6a0f92
    '-DGDK_DISABLE_DEPRECATION_WARNINGS',
Packit Service 6a0f92
  ]
Packit Service 6a0f92
endif
Packit Service 6a0f92
Packit Service 6a0f92
# Dependencies
Packit Service 6a0f92
clutter_req_version = '>= 1.23.7'
Packit Service 6a0f92
gtk_req_version = '>= 3.21.0'
Packit Service 6a0f92
Packit Service 6a0f92
mathlib_dep = cc.find_library('m', required: false)
Packit Service 6a0f92
clutter_dep = dependency('clutter-1.0', version: clutter_req_version)
Packit Service 6a0f92
gtk_dep = dependency('gtk+-3.0', version: gtk_req_version)
Packit Service 6a0f92
Packit Service 6a0f92
configure_file(output: 'config.h', configuration: config_h) 
Packit Service 6a0f92
Packit Service 6a0f92
pkgconf = configuration_data()
Packit Service 6a0f92
pkgconf.set('prefix', gtk_clutter_prefix)
Packit Service 6a0f92
pkgconf.set('exec_prefix', gtk_clutter_prefix)
Packit Service 6a0f92
pkgconf.set('libdir', gtk_clutter_libdir)
Packit Service 6a0f92
pkgconf.set('includedir', gtk_clutter_includedir)
Packit Service 6a0f92
pkgconf.set('CLUTTER_GTK_API_VERSION', gtk_clutter_api_version)
Packit Service 6a0f92
pkgconf.set('VERSION', meson.project_version())
Packit Service 6a0f92
configure_file(input: 'clutter-gtk.pc.in',
Packit Service 6a0f92
               output: 'clutter-gtk-@0@.pc'.format(gtk_clutter_api_version),
Packit Service 6a0f92
               configuration: pkgconf,
Packit Service 6a0f92
               install: true,
Packit Service 6a0f92
               install_dir: join_paths(gtk_clutter_libdir, 'pkgconfig'))
Packit Service 6a0f92
Packit Service 6a0f92
root_inc = include_directories('.')
Packit Service 6a0f92
Packit Service 6a0f92
gnome = import('gnome')
Packit Service 6a0f92
Packit Service 6a0f92
subdir('clutter-gtk')
Packit Service 6a0f92
subdir('po')
Packit Service 6a0f92
Packit Service 6a0f92
subdir('examples')
Packit Service 6a0f92
Packit Service 6a0f92
if get_option('enable_docs')
Packit Service 6a0f92
  subdir('doc')
Packit Service 6a0f92
endif