meson.build 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. project('pkgconfig-gen-dependencies', 'c', version: '1.0')
  2. pkgg = import('pkgconfig')
  3. # libmain internally use libinternal and expose libexpose in its API
  4. exposed_lib = shared_library('libexposed', 'exposed.c')
  5. internal_lib = shared_library('libinternal', 'internal.c')
  6. main_lib = both_libraries('libmain', link_with : [exposed_lib, internal_lib])
  7. pkgg.generate(exposed_lib)
  8. # Declare a few different Dependency objects
  9. pc_dep = dependency('libfoo', version : '>=1.0')
  10. pc_dep_dup = dependency('libfoo', version : '>= 1.0')
  11. notfound_dep = dependency('notfound', required : false)
  12. threads_dep = dependency('threads')
  13. custom_dep = declare_dependency(link_args : ['-lcustom'], compile_args : ['-DCUSTOM'])
  14. custom2_dep = declare_dependency(link_args : ['-lcustom2'], compile_args : ['-DCUSTOM2'])
  15. # Generate a PC file:
  16. # - Having libmain in libraries should pull implicitly libexposed and libinternal in Libs.private
  17. # - Having libexposed in libraries should remove it from Libs.private
  18. # - We generated a pc file for libexposed so it should be in Requires instead of Libs
  19. # - Having threads_dep in libraries should add '-pthread' in both Libs and Cflags
  20. # - Having custom_dep in libraries and libraries_private should only add it in Libs
  21. # - Having custom2_dep in libraries_private should not add its Cflags
  22. # - Having pc_dep in libraries_private should add it in Requires.private
  23. # - pc_dep_dup is the same library and same version, should be ignored
  24. # - notfound_dep is not required so it shouldn't appear in the pc file.
  25. pkgg.generate(libraries : [main_lib, exposed_lib, threads_dep , custom_dep],
  26. libraries_private : [custom_dep, custom2_dep, pc_dep, pc_dep_dup, notfound_dep],
  27. version : '1.0',
  28. name : 'dependency-test',
  29. filebase : 'dependency-test',
  30. description : 'A dependency test.'
  31. )
  32. pkgg.generate(
  33. name : 'requires-test',
  34. version : '1.0',
  35. description : 'Dependency Requires field test.',
  36. requires : [exposed_lib, pc_dep, 'libhello'],
  37. )
  38. pkgg.generate(
  39. name : 'requires-private-test',
  40. version : '1.0',
  41. description : 'Dependency Requires.private field test.',
  42. requires_private : [exposed_lib, pc_dep, 'libhello', notfound_dep],
  43. )