thorvg/src/meson.build
Vincent Torri be2de28312 portability: fix usage of TVG_API
Rule of thumb on Windows:
  * for a DLL:
    * if the library is built, set TVG_API to __declspec(dllexport)
    * if the library is used, set TVG_API to __declspec(dllimport)
  * for a static library, set TVG_API to nothing

To set TVG_API for a static library, TVG_STATIC is defined when the stataic library is built.
Otherwise, TVG_API is correctly set for a DLL.
Also sun and intel compilers are handled

@issue: https://github.com/thorvg/thorvg/issues/1446
2023-05-16 18:55:33 +09:00

86 lines
2.3 KiB
Meson

compiler_flags = []
override_options = []
lib_type = get_option('default_library')
if (lib_type == 'shared')
compiler_flags += ['-DTVG_EXPORT', '-DTVG_BUILD']
else
compiler_flags += ['-DTVG_STATIC']
endif
cc = meson.get_compiler('cpp')
if (cc.get_id() == 'clang-cl')
if simd_type == 'avx'
compiler_flags += ['/clang:-mavx']
endif
if simd_type == 'neon'
compiler_flags += ['/clang:-mfpu=neon']
endif
if get_option('b_sanitize') == 'none'
override_options += ['cpp_eh=none','cpp_rtti=false']
compiler_flags += ['/clang:-fno-math-errno',
'/clang:-Woverloaded-virtual', '/clang:-Wno-unused-value', '-Wno-deprecated-declarations']
endif
elif (cc.get_id() != 'msvc')
if simd_type == 'avx'
compiler_flags += ['-mavx']
endif
if simd_type == 'neon'
compiler_flags += ['-mfpu=neon']
endif
if get_option('b_sanitize') == 'none'
compiler_flags += ['-s', '-fno-exceptions', '-fno-rtti', '-fno-stack-protector', '-fno-math-errno',
'-fno-unwind-tables' , '-fno-asynchronous-unwind-tables',
'-Woverloaded-virtual', '-Wno-unused-parameter']
endif
endif
subdir('lib')
subdir('loaders')
subdir('savers')
subdir('bindings')
thorvg_lib_dep = [common_dep, loader_dep, saver_dep, binding_dep]
if host_machine.system() != 'windows'
thread_dep = meson.get_compiler('cpp').find_library('pthread')
thorvg_lib_dep += [thread_dep]
endif
thorvg_lib = library(
'thorvg',
include_directories : headers,
version : meson.project_version(),
dependencies : thorvg_lib_dep,
install : true,
cpp_args : compiler_flags,
gnu_symbol_visibility : 'hidden',
override_options : override_options
)
if (cc.get_id() == 'emscripten')
subdir('wasm')
executable('thorvg-wasm',
[],
include_directories : headers,
dependencies : [thorvg_lib_dep, thorvg_wasm_dep],
)
endif
pkg_mod = import('pkgconfig')
pkg_mod.generate(
libraries : thorvg_lib,
version : meson.project_version(),
name : 'libthorvg',
filebase : 'thorvg',
description : 'A Thor library for rendering vector graphics'
)
subdir('bin')
if get_option('examples') == true
subdir('examples')
endif