#include <example.h>

#include <example_exe.h>

#include <kwsys/DynamicLoader.hxx>
#include <iostream>
#include <string>

#include <stdio.h>

// Implement the ABI used by plugins.
extern "C" int example_exe_function()
{
  std::cout << "hello" << std::endl;
  return 123;
}

#ifdef CMAKE_INTDIR
# define CONFIG_DIR "/" CMAKE_INTDIR
#else
# define CONFIG_DIR ""
#endif

int main()
{
  std::string libName = EXAMPLE_EXE_PLUGIN_DIR CONFIG_DIR "/";
  libName += kwsys::DynamicLoader::LibPrefix();
  libName += "example_mod_1";
  libName += kwsys::DynamicLoader::LibExtension();
  kwsys::DynamicLoader::LibraryHandle handle =
    kwsys::DynamicLoader::OpenLibrary(libName.c_str());
  if(!handle)
    {
    std::cerr << "Could not open plugin \""
              << libName.c_str() << "\"!" << std::endl;
    return 1;
    }
  kwsys::DynamicLoader::SymbolPointer sym =
    kwsys::DynamicLoader::GetSymbolAddress(handle, "example_mod_1_function");
  if(!sym)
    {
    std::cerr
      << "Could not get plugin symbol \"example_mod_1_function\"!"
      << std::endl;
    return 1;
    }
#ifdef __WATCOMC__
  int(__cdecl *f)(int) = (int(__cdecl *)(int))(sym);
#else
  int(*f)(int) = reinterpret_cast<int(*)(int)>(sym);
#endif
  if(f(456) != (123+456))
    {
    std::cerr << "Incorrect return value from plugin!"
              << std::endl;
    return 1;
    }
  kwsys::DynamicLoader::CloseLibrary(handle);
  return 0;
}
