Advertisement
Guest User

Untitled

a guest
Jan 9th, 2021
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. project('libdazzle', 'c',
  2. version: '3.38.0',
  3. license: 'GPLv3+',
  4. meson_version: '>= 0.50.0',
  5. default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ],
  6. )
  7.  
  8. version_arr = meson.project_version().split('.')
  9. dazzle_version_major = version_arr[0].to_int()
  10. dazzle_version_minor = version_arr[1].to_int()
  11. dazzle_version_micro = version_arr[2].to_int()
  12.  
  13. apiversion = '1.0'
  14. soversion = 0
  15.  
  16. if dazzle_version_minor.is_odd()
  17. dazzle_interface_age = 0
  18. else
  19. dazzle_interface_age = dazzle_version_micro
  20. endif
  21.  
  22. # maintaining compatibility with the previous libtool versioning
  23. # current = minor * 100 + micro - interface
  24. # revision = interface
  25. current = dazzle_version_minor * 100 + dazzle_version_micro - dazzle_interface_age
  26. revision = dazzle_interface_age
  27. libversion = '@0@.@1@.@2@'.format(soversion, current, revision)
  28.  
  29. darwin_versions = [current + 1, '@0@.@1@'.format(current + 1, revision)]
  30.  
  31. package_string = 'libdazzle-@0@'.format(apiversion)
  32.  
  33. config_h = configuration_data()
  34. config_h.set_quoted('GETTEXT_PACKAGE', package_string)
  35. config_h.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir')))
  36.  
  37. add_project_arguments([
  38. '-DHAVE_CONFIG_H',
  39. '-DDAZZLE_COMPILATION',
  40. ], language: 'c')
  41.  
  42. root_inc = include_directories('.')
  43. src_inc = include_directories('src')
  44.  
  45. cc = meson.get_compiler('c')
  46.  
  47. global_c_args = []
  48. test_c_args = [
  49. '-Wcast-align',
  50. '-Wdeclaration-after-statement',
  51. '-Werror=address',
  52. '-Werror=array-bounds',
  53. '-Werror=empty-body',
  54. '-Werror=implicit',
  55. '-Werror=implicit-function-declaration',
  56. #'-Werror=incompatible-pointer-types',
  57. '-Werror=init-self',
  58. '-Werror=int-conversion',
  59. '-Werror=int-to-pointer-cast',
  60. '-Werror=main',
  61. '-Werror=misleading-indentation',
  62. '-Werror=missing-braces',
  63. '-Werror=missing-include-dirs',
  64. '-Werror=nonnull',
  65. '-Werror=overflow',
  66. '-Werror=parenthesis',
  67. '-Werror=pointer-arith',
  68. '-Werror=pointer-to-int-cast',
  69. '-Werror=redundant-decls',
  70. '-Werror=return-type',
  71. '-Werror=sequence-point',
  72. '-Werror=shadow',
  73. '-Werror=strict-prototypes',
  74. '-Werror=trigraphs',
  75. '-Werror=undef',
  76. '-Werror=write-strings',
  77. '-Wformat-nonliteral',
  78. ['-Werror=format-security', '-Werror=format=2' ],
  79. '-Wignored-qualifiers',
  80. '-Wimplicit-function-declaration',
  81. '-Wlogical-op',
  82. # '-Wmissing-declarations',
  83. '-Wmissing-format-attribute',
  84. '-Wmissing-include-dirs',
  85. '-Wmissing-noreturn',
  86. '-Wnested-externs',
  87. '-Wno-cast-function-type',
  88. '-Wno-missing-field-initializers',
  89. '-Wno-sign-compare',
  90. '-Wno-unused-parameter',
  91. '-Wold-style-definition',
  92. '-Wpointer-arith',
  93. '-Wredundant-decls',
  94. '-Wstrict-prototypes',
  95. '-Wswitch-default',
  96. '-Wswitch-enum',
  97. '-Wundef',
  98. '-Wuninitialized',
  99. '-Wunused',
  100. '-fno-strict-aliasing',
  101. ]
  102. if get_option('buildtype') != 'plain'
  103. test_c_args += '-fstack-protector-strong'
  104. endif
  105. if get_option('enable_profiling')
  106. test_c_args += '-pg'
  107. endif
  108.  
  109. foreach arg: test_c_args
  110. if cc.has_multi_arguments(arg)
  111. global_c_args += arg
  112. endif
  113. endforeach
  114.  
  115. # Detect and set symbol visibility
  116. hidden_visibility_args = []
  117. if get_option('default_library') != 'static'
  118. if host_machine.system() == 'windows'
  119. config_h.set('DLL_EXPORT', true)
  120. if cc.get_id() == 'msvc'
  121. config_h.set('_DZL_EXTERN', '__declspec(dllexport) extern')
  122. elif cc.has_argument('-fvisibility=hidden')
  123. config_h.set('_DZL_EXTERN', '__attribute__((visibility("default"))) __declspec(dllexport) extern')
  124. hidden_visibility_args = ['-fvisibility=hidden']
  125. endif
  126. elif cc.has_argument('-fvisibility=hidden')
  127. config_h.set('_DZL_EXTERN', '__attribute__((visibility("default"))) extern')
  128. hidden_visibility_args = ['-fvisibility=hidden']
  129. endif
  130. endif
  131.  
  132. add_project_arguments(global_c_args, language: 'c')
  133.  
  134. release_args = []
  135. global_link_args = []
  136. test_link_args = [
  137. '-Wl,-z,relro',
  138. '-Wl,-z,now',
  139. ]
  140. if not get_option('buildtype').startswith('debug')
  141. # TODO: Maybe reuse 'b_ndebug' option
  142. release_args += [ '-DG_DISABLE_ASSERT', '-DG_DISABLE_CAST_CHECKS' ]
  143. test_link_args += [
  144. '-Wl,-Bsymbolic',
  145. '-fno-plt',
  146. ]
  147. endif
  148. foreach link_arg: test_link_args
  149. if cc.links('int main () { return 0; }', name: link_arg, args: link_arg)
  150. global_link_args += link_arg
  151. endif
  152. endforeach
  153. add_project_link_arguments(global_link_args, language: 'c')
  154.  
  155. # Setup various paths that subdirectory meson.build files need
  156. package_subdir = get_option('package_subdir') # When used as subproject
  157. libdir = join_paths(get_option('libdir'), package_subdir)
  158. girdir = join_paths(get_option('datadir'), package_subdir, 'gir-1.0')
  159. typelibdir = join_paths(get_option('libdir'), package_subdir, 'girepository-1.0')
  160. if package_subdir != ''
  161. # Use libexecdir to avoid subdirectories under bindir
  162. bindir = join_paths(get_option('libexecdir'), package_subdir)
  163. vapidir = join_paths(get_option('datadir'), package_subdir, 'vapi')
  164. else
  165. bindir = get_option('bindir')
  166. vapidir = join_paths(get_option('datadir'), 'vala', 'vapi')
  167. endif
  168.  
  169. configure_file(
  170. output: 'config.h',
  171. configuration: config_h,
  172. )
  173.  
  174. i18n = import('i18n')
  175. gnome = import('gnome')
  176.  
  177. subdir('src')
  178. subdir('tools')
  179. subdir('tests')
  180. subdir('po')
  181. subdir('examples/app')
  182.  
  183. if get_option('enable_gtk_doc')
  184. subdir('doc')
  185. endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement