project('gaming core tests', 'cpp')

sources = ['Main.cpp',
    'tests/Test.cpp',
    'tests/ArrayTests.cpp',
    'tests/ArrayListTests.cpp',
    'tests/HashMapTests.cpp',
    'tests/ListTests.cpp',
    'utils/BitArray.cpp',
    'tests/BitArrayTests.cpp',
    'tests/StringBufferTests.cpp',
    'tests/RandomTests.cpp',
    'utils/Random.cpp',
    'tests/RingBufferTests.cpp',
    'tests/SplitStringTests.cpp',
    'tests/VectorTests.cpp',
    'math/Vector.cpp',
    'math/Matrix.cpp',
    'tests/MatrixTests.cpp',
    'tests/StackTests.cpp',
    'tests/MatrixStackTests.cpp',
    'tests/PlaneTests.cpp',
    'math/Plane.cpp',
    'tests/FrustumTests.cpp',
    'math/Frustum.cpp',
    'utils/Size.cpp',
    'tests/QuaternionTests.cpp',
    'math/Quaternion.cpp',
    'tests/UtilsTests.cpp',
    'tests/ColorTests.cpp',
    'utils/Clock.cpp',
    'tests/ClockTests.cpp',
    'images/PNGReader.cpp',
    'tests/PNGReaderTests.cpp',
    'tests/BufferTests.cpp',
    'tests/TypedBufferTests.cpp',
    'wrapper/GL.cpp',
    'wrapper/GLFW.cpp',
    'wrapper/GLEW.cpp', 
    'rendering/Texture.cpp',
    'rendering/Shader.cpp', 
    'rendering/VertexBuffer.cpp',
    'rendering/Attributes.cpp',
    'rendering/Window.cpp',
    'rendering/WindowOptions.cpp',
    'rendering/TextureFormat.cpp',
    'rendering/FileTexture.cpp',
    'input/Button.cpp',
    'input/Buttons.cpp',
    'tests/UniquePointerTests.cpp',
    'utils/Buffer.cpp',
    'tests/NetworkTests.cpp',
    'network/Packet.cpp',
    'network/Server.cpp',
    'network/Client.cpp',
    'network/ENet.cpp']

threadDep = dependency('threads')
glewDep = dependency('glew')
glfwDep = dependency('glfw3')
pngDep = dependency('libpng')

executable('tests', 
    sources: sources,
    dependencies : [threadDep, glewDep, glfwDep, pngDep],
    cpp_args: ['-Wall', '-Wextra', '-pedantic', '-Werror'])