meson.build 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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/variable-translator.vala')
  47. sources += files('orm/projections/friendly-name-resolver.vala')
  48. sources += files('orm/projections/projection-builder.vala')
  49. sources += files('orm/projections/projection-sql-builder.vala')
  50. sources += files('orm/projections/projection-mapper.vala')
  51. sources += files('orm/projections/projection-query.vala')
  52. # Dialect sources
  53. sources += files('dialects/sql-dialect.vala')
  54. sources += files('dialects/sqlite-dialect.vala')
  55. # Expression sources
  56. sources += files('expressions/expression-to-sql-visitor.vala')
  57. # Migration sources
  58. sources += files('migrations/schema-operations.vala')
  59. sources += files('migrations/column-builder.vala')
  60. sources += files('migrations/foreign-key-builder.vala')
  61. sources += files('migrations/index-builder.vala')
  62. sources += files('migrations/table-builder.vala')
  63. sources += files('migrations/alter-table-builder.vala')
  64. sources += files('migrations/migration.vala')
  65. sources += files('migrations/migration-builder.vala')
  66. sources += files('migrations/migration-runner.vala')
  67. sources += files('migrations/dependency.vala')
  68. # Build shared library
  69. invercargill_sql = shared_library('invercargill-sql', sources,
  70. dependencies: dependencies,
  71. install: true,
  72. vala_gir: 'invercargill_sql-1.0.gir',
  73. install_dir: [true, true, true, true]
  74. )
  75. # Create dependency for downstream projects
  76. invercargill_sql_dep = declare_dependency(
  77. link_with: invercargill_sql,
  78. include_directories: include_directories('.')
  79. )
  80. # Generate pkg-config file
  81. pkg = import('pkgconfig')
  82. pkg.generate(invercargill_sql,
  83. version: '0.1',
  84. name: 'invercargill-sql'
  85. )
  86. # Generate GObject introspection typelib
  87. g_ir_compiler = find_program('g-ir-compiler')
  88. custom_target('invercargill-sql typelib',
  89. command: [g_ir_compiler, '--shared-library=libinvercargill-sql.so', '--output', '@OUTPUT@', meson.current_build_dir() / 'invercargill_sql-1.0.gir'],
  90. output: 'invercargill-sql-1.0.typelib',
  91. depends: invercargill_sql,
  92. install: true,
  93. install_dir: get_option('libdir') / 'girepository-1.0'
  94. )
  95. # Test executable
  96. test_exe = executable('basic-test', 'tests/basic-test.vala',
  97. dependencies: [dependencies, invercargill_sql_dep],
  98. link_with: invercargill_sql
  99. )
  100. test('Basic SQL tests', test_exe)
  101. # ORM test executable
  102. orm_test_exe = executable('orm-test', 'tests/orm-test.vala',
  103. dependencies: [dependencies, invercargill_sql_dep],
  104. link_with: invercargill_sql
  105. )
  106. test('ORM tests', orm_test_exe)
  107. # SQLite integration test executable
  108. sqlite_test_exe = executable('sqlite-test', 'tests/sqlite-test.vala',
  109. dependencies: [dependencies, invercargill_sql_dep],
  110. link_with: invercargill_sql
  111. )
  112. test('SQLite integration tests', sqlite_test_exe)
  113. # Migration test executable
  114. migration_test_exe = executable('migration-test', 'tests/migration-test.vala',
  115. dependencies: [dependencies, invercargill_sql_dep],
  116. link_with: invercargill_sql
  117. )
  118. test('Migration tests', migration_test_exe)
  119. # Projection test executable
  120. projection_test_exe = executable('projection-test', 'tests/projection-test.vala',
  121. dependencies: [dependencies, invercargill_sql_dep],
  122. link_with: invercargill_sql
  123. )
  124. test('Projection tests', projection_test_exe)