project('c-plus-plus-dafuq', 'cpp',
  version: '0.1.0',
  default_options: [
    'cpp_std=c++20',
    'cpp_args=-DTRACY_ENABLE=1 -D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1',
    'cpp_args=-DTRACY_ENABLE=1',
  ])

exe_defaults = []

cc = meson.get_compiler('cpp')

tracy = dependency('tracy', static: true)
catch2 = dependency('catch2-with-main')
fmt = dependency('fmt', allow_fallback: true)
json = dependency('nlohmann_json')

# not sure if tracy needs these
opengl32 = cc.find_library('opengl32', required: true)
winmm = cc.find_library('winmm', required: true)
gdi32 = cc.find_library('gdi32', required: true)

# i know for sure tracy needs these
ws2_32 = cc.find_library('ws2_32', required: true)
dbghelp = cc.find_library('dbghelp', required: true)

if get_option('tracy_enable') and get_option('buildtype') != 'debugoptimized'
  warning('Profiling builds should set --buildtype=debugoptimized')
endif

dependencies = [
  tracy, catch2, fmt, json, opengl32,
  ws2_32, dbghelp
]

# use this for common options only for our executables
cpp_args=[ ]

executable('emplace_test', [
  'TracyClient.cpp',
  'emplace_move/test.cpp'
  ],
  override_options: exe_defaults,
  dependencies: dependencies)

executable('rvo_test', [
  'TracyClient.cpp',
  'rvo/test.cpp'
  ],
  override_options: exe_defaults,
  dependencies: dependencies)

executable('sfml-original', 'sfml-const/original.cpp',
  override_options: exe_defaults,
  dependencies: dependencies)

executable('sfml-fixed1', 'sfml-const/fixed.cpp',
  override_options: exe_defaults,
  dependencies: dependencies)