|
Packit |
046f45 |
project('fribidi', 'c', version: '1.0.4',
|
|
Packit |
046f45 |
meson_version : '>= 0.44')
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# New release:
|
|
Packit |
046f45 |
# interface_age++
|
|
Packit |
046f45 |
# micro version++
|
|
Packit |
046f45 |
#
|
|
Packit |
046f45 |
# If any functions have been added:
|
|
Packit |
046f45 |
# interface_age = 0
|
|
Packit |
046f45 |
# interface_version++
|
|
Packit |
046f45 |
#
|
|
Packit |
046f45 |
# If binary backwards compatibility has been broken:
|
|
Packit |
046f45 |
# panic!
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
interface_age = 0
|
|
Packit |
046f45 |
interface_version = 4
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
soversion = 0
|
|
Packit |
046f45 |
libversion = '@0@.@1@.0'.format(soversion, interface_version, interface_age)
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# C compiler. This is the cross compiler if we're cross-compiling
|
|
Packit |
046f45 |
cc = meson.get_compiler('c')
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
if cc.get_id() == 'gcc' and cc.has_argument('-ansi')
|
|
Packit |
046f45 |
add_project_arguments('-ansi', language: 'c')
|
|
Packit |
046f45 |
endif
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# Symbol visibility
|
|
Packit |
046f45 |
have_visibility_hidden = cc.has_argument('-fvisibility=hidden')
|
|
Packit |
046f45 |
if have_visibility_hidden
|
|
Packit |
046f45 |
add_project_arguments('-fvisibility=hidden', language: 'c')
|
|
Packit |
046f45 |
endif
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# Must explicitly make symbols public if default visibility is hidden
|
|
Packit |
046f45 |
if have_visibility_hidden
|
|
Packit |
046f45 |
visibility_args = ['-DFRIBIDI_ENTRY=extern __attribute__ ((visibility ("default")))']
|
|
Packit |
046f45 |
else
|
|
Packit |
046f45 |
if host_machine.system() == 'windows' and get_option('default_library') != 'static'
|
|
Packit |
046f45 |
visibility_args = ['-DFRIBIDI_ENTRY=__declspec(dllexport)']
|
|
Packit |
046f45 |
else
|
|
Packit |
046f45 |
visibility_args = ['-DFRIBIDI_ENTRY=extern']
|
|
Packit |
046f45 |
endif
|
|
Packit |
046f45 |
endif
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
cdata = configuration_data()
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# Checks for library functions
|
|
Packit |
046f45 |
foreach f : ['memmove', 'memset', 'strdup']
|
|
Packit |
046f45 |
cdata.set('HAVE_' + f.to_upper(), cc.has_function(f))
|
|
Packit |
046f45 |
endforeach
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# Checks for header files
|
|
Packit |
046f45 |
# Some HAVE_FOO defines need to be defined to either 1 or 0, others need to
|
|
Packit |
046f45 |
# be defined or undefined. The code base is a bit inconsistent there.
|
|
Packit |
046f45 |
foreach h : ['stdlib.h', 'string.h', 'memory.h']
|
|
Packit |
046f45 |
cdata.set10('HAVE_' + h.underscorify().to_upper(), cc.has_header(h))
|
|
Packit |
046f45 |
endforeach
|
|
Packit |
046f45 |
foreach h : ['strings.h', 'sys/times.h']
|
|
Packit |
046f45 |
cdata.set('HAVE_' + h.underscorify().to_upper(), cc.has_header(h))
|
|
Packit |
046f45 |
endforeach
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# Not entirely correct, but sufficient for us. Should move away from this
|
|
Packit |
046f45 |
# ancient define and just include individual headers based on individual defs
|
|
Packit |
046f45 |
if cc.has_header('strings.h')
|
|
Packit |
046f45 |
# define to 1 or leave undefined otherwise, don't simplify
|
|
Packit |
046f45 |
cdata.set('STDC_HEADERS', 1)
|
|
Packit |
046f45 |
endif
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# This is available pretty much everywhere
|
|
Packit |
046f45 |
cdata.set('HAVE_STRINGIZE', 1)
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
buildtype = get_option('buildtype')
|
|
Packit |
046f45 |
if buildtype == 'debug' or buildtype == 'debugoptimized'
|
|
Packit |
046f45 |
cdata.set('DEBUG', 1)
|
|
Packit |
046f45 |
endif
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
no_deprecated = not get_option('deprecated')
|
|
Packit |
046f45 |
cdata.set('FRIBIDI_NO_DEPRECATED', no_deprecated)
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# write config.h
|
|
Packit |
046f45 |
config_h = configure_file(output: 'config.h', configuration: cdata)
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
incs = include_directories('.', 'lib')
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
subdir('gen.tab')
|
|
Packit |
046f45 |
subdir('lib')
|
|
Packit |
046f45 |
subdir('bin')
|
|
Packit |
046f45 |
subdir('test')
|
|
Packit |
046f45 |
if get_option('docs')
|
|
Packit |
046f45 |
subdir('doc')
|
|
Packit |
046f45 |
endif
|
|
Packit |
046f45 |
|
|
Packit |
046f45 |
# fribidi.pc
|
|
Packit |
046f45 |
pkg = import('pkgconfig')
|
|
Packit |
046f45 |
pkg.generate(name: 'GNU FriBidi',
|
|
Packit |
046f45 |
filebase: 'fribidi',
|
|
Packit |
046f45 |
description: 'Unicode Bidirectional Algorithm Library',
|
|
Packit |
046f45 |
libraries: libfribidi,
|
|
Packit |
046f45 |
subdirs: 'fribidi',
|
|
Packit |
046f45 |
version: meson.project_version())
|