#include <assert.h>
#include <stdio.h>
#include <string.h>

#include <gif_lib.h>

// GIFLIB before version 5 didn't know this macro
#ifndef GIFLIB_MAJOR
#  define GIFLIB_MAJOR 4
#endif

int main()
{
  // because of the API changes we have to test different functions depending
  // on the version of GIFLIB
#if GIFLIB_MAJOR >= 5
  // test the linker
  GifErrorString(D_GIF_SUCCEEDED);

  // check the version
  char gif_version_string[16];
  snprintf(gif_version_string, 16, "%i.%i.%i", GIFLIB_MAJOR, GIFLIB_MINOR,
           GIFLIB_RELEASE);

  assert(strcmp(gif_version_string, CMAKE_EXPECTED_GIF_VERSION) == 0);
#else
  // test the linker
  GifLastError();

  // unfortunately there is no way to check the version in older version of
  // GIFLIB
#endif

  return 0;
}
