meson.build 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. # Invercargill-Sql library build configuration
  2. gio_dep = dependency('gio-2.0')
  3. dependencies = [
  4. glib_dep,
  5. gobject_dep,
  6. gio_dep,
  7. invercargill_dep,
  8. sqlite_dep
  9. ]
  10. # Interface sources
  11. sources = files('sql-error.vala')
  12. sources += files('connection-flags.vala')
  13. sources += files('interfaces/connection.vala')
  14. sources += files('interfaces/command.vala')
  15. sources += files('interfaces/transaction.vala')
  16. # Connection string factory
  17. sources += files('connection-string.vala')
  18. sources += files('connection-factory.vala')
  19. sources += files('dialect-factory.vala')
  20. sources += files('providers/connection-provider.vala')
  21. sources += files('providers/sqlite-provider.vala')
  22. # SQLite implementation sources
  23. sources += files('sqlite/sqlite-connection.vala')
  24. sources += files('sqlite/sqlite-command.vala')
  25. sources += files('sqlite/sqlite-result-enumerable.vala')
  26. sources += files('sqlite/sqlite-transaction.vala')
  27. sources += files('sqlite/sqlite-elements.vala')
  28. sources += files('sqlite/sqlite-drop-constraint.vala')
  29. # ORM sources
  30. sources += files('orm/column-type.vala')
  31. sources += files('orm/column-definition.vala')
  32. sources += files('orm/index-definition.vala')
  33. sources += files('orm/table-schema.vala')
  34. sources += files('orm/entity-mapper.vala')
  35. sources += files('orm/entity-mapper-builder.vala')
  36. sources += files('orm/type-provider.vala')
  37. sources += files('orm/type-registry.vala')
  38. sources += files('orm/query.vala')
  39. sources += files('orm/entity-query.vala')
  40. sources += files('orm/orm-session.vala')
  41. # Projection sources
  42. sources += files('orm/projections/projection-errors.vala')
  43. sources += files('orm/projections/projection-definition.vala')
  44. sources += files('orm/projections/selection-types.vala')
  45. sources += files('orm/projections/aggregate-analyzer.vala')
  46. sources += files('orm/projections/join-condition-analyzer.vala')
  47. sources += files('orm/projections/variable-translator.vala')
  48. sources += files('orm/projections/friendly-name-resolver.vala')
  49. sources += files('orm/projections/projection-builder.vala')
  50. sources += files('orm/projections/projection-sql-builder.vala')
  51. sources += files('orm/projections/projection-mapper.vala')
  52. sources += files('orm/projections/projection-query.vala')
  53. # Dialect sources
  54. sources += files('dialects/sql-dialect.vala')
  55. sources += files('dialects/sqlite-dialect.vala')
  56. # Expression sources
  57. sources += files('expressions/expression-to-sql-visitor.vala')
  58. # Migration sources
  59. sources += files('migrations/schema-operations.vala')
  60. sources += files('migrations/column-builder.vala')
  61. sources += files('migrations/foreign-key-builder.vala')
  62. sources += files('migrations/index-builder.vala')
  63. sources += files('migrations/table-builder.vala')
  64. sources += files('migrations/alter-table-builder.vala')
  65. sources += files('migrations/migration.vala')
  66. sources += files('migrations/migration-builder.vala')
  67. sources += files('migrations/migration-runner.vala')
  68. sources += files('migrations/dependency.vala')
  69. # Build shared library
  70. invercargill_sql = shared_library('invercargill-sql', sources,
  71. dependencies: dependencies,
  72. install: true,
  73. vala_gir: 'invercargill_sql-1.0.gir',
  74. install_dir: [true, true, true, true]
  75. )
  76. # Create dependency for downstream projects
  77. invercargill_sql_dep = declare_dependency(
  78. link_with: invercargill_sql,
  79. include_directories: include_directories('.')
  80. )
  81. # Generate pkg-config file
  82. pkg = import('pkgconfig')
  83. pkg.generate(invercargill_sql,
  84. version: '0.1',
  85. name: 'invercargill-sql'
  86. )
  87. # Generate GObject introspection typelib
  88. g_ir_compiler = find_program('g-ir-compiler')
  89. custom_target('invercargill-sql typelib',
  90. command: [g_ir_compiler, '--shared-library=libinvercargill-sql.so', '--output', '@OUTPUT@', meson.current_build_dir() / 'invercargill_sql-1.0.gir'],
  91. output: 'invercargill-sql-1.0.typelib',
  92. depends: invercargill_sql,
  93. install: true,
  94. install_dir: get_option('libdir') / 'girepository-1.0'
  95. )
  96. # Test executable
  97. test_exe = executable('basic-test', 'tests/basic-test.vala',
  98. dependencies: [dependencies, invercargill_sql_dep],
  99. link_with: invercargill_sql
  100. )
  101. test('Basic SQL tests', test_exe)
  102. # ORM test executable
  103. orm_test_exe = executable('orm-test', 'tests/orm-test.vala',
  104. dependencies: [dependencies, invercargill_sql_dep],
  105. link_with: invercargill_sql
  106. )
  107. test('ORM tests', orm_test_exe)
  108. # SQLite integration test executable
  109. sqlite_test_exe = executable('sqlite-test', 'tests/sqlite-test.vala',
  110. dependencies: [dependencies, invercargill_sql_dep],
  111. link_with: invercargill_sql
  112. )
  113. test('SQLite integration tests', sqlite_test_exe)
  114. # Migration test executable
  115. migration_test_exe = executable('migration-test', 'tests/migration-test.vala',
  116. dependencies: [dependencies, invercargill_sql_dep],
  117. link_with: invercargill_sql
  118. )
  119. test('Migration tests', migration_test_exe)
  120. # Projection test executable
  121. projection_test_exe = executable('projection-test', 'tests/projection-test.vala',
  122. dependencies: [dependencies, invercargill_sql_dep],
  123. link_with: invercargill_sql
  124. )
  125. test('Projection tests', projection_test_exe)