project('SQLiteCpp', 'cpp',
  version: '3.1.1',
  meson_version: '>=0.49.2',
  default_options: ['cpp_std=c++11'],
)

sqlite_dep = dependency('sqlite3', version: '>=3.32.1')

pub_incdir = include_directories('include')

compiler_opts = []
if get_option('sqlite_enable_column_metadata')
  compiler_opts += ['-DSQLITE_ENABLE_COLUMN_METADATA']
endif
if get_option('sqlite_enable_assert_handler')
  compiler_opts += ['SQLITECPP_ENABLE_ASSERT_HANDLER']
endif
if get_option('sqlite_has_codec')
  compiler_opts += ['SQLITE_HAS_CODEC']
endif
if get_option('sqlite_use_legacy_struct')
  compiler_opts += ['SQLITE_USE_LEGACY_STRUCT']
endif

sqlitecpp_target = library(meson.project_name(),
  'src/Backup.cpp',
  'src/Column.cpp',
  'src/Database.cpp',
  'src/Exception.cpp',
  'src/Statement.cpp',
  'src/Transaction.cpp',
  install: (not meson.is_subproject() or get_option('default_library')=='shared'),
  include_directories: [pub_incdir],
  dependencies: [sqlite_dep],
  c_args: compiler_opts,
  cpp_args: compiler_opts,
)

sqlitecpp_dep = declare_dependency(
  link_with: sqlitecpp_target,
  include_directories: pub_incdir,
  compile_args: compiler_opts,
  dependencies: sqlite_dep.partial_dependency(includes: true),
)

if not meson.is_subproject()
  install_headers(
	'include/SQLiteCpp/Assertion.h',
	'include/SQLiteCpp/Backup.h',
	'include/SQLiteCpp/Column.h',
	'include/SQLiteCpp/Database.h',
	'include/SQLiteCpp/Exception.h',
	'include/SQLiteCpp/ExecuteMany.h',
	'include/SQLiteCpp/SQLiteCpp.h',
	'include/SQLiteCpp/Statement.h',
	'include/SQLiteCpp/Transaction.h',
	'include/SQLiteCpp/Utils.h',
	'include/SQLiteCpp/VariadicBind.h',
	subdir: meson.project_name(),
  )
endif
