#include <cuda.h>
#include <cuda_runtime.h>
#include <iostream>

#include <inc_cuda.h>
#ifndef INC_CUDA
#  error "INC_CUDA not defined!"
#endif

#ifndef HOST_DEFINE
#  error "HOST_DEFINE not defined!"
#endif

#ifndef PACKED_DEFINE
#  error "PACKED_DEFINE not defined!"
#endif

#ifndef FLAG_COMPILE_LANG_CUDA
#  error "FLAG_COMPILE_LANG_CUDA not defined!"
#endif

#ifndef FLAG_LANG_IS_CUDA
#  error "FLAG_LANG_IS_CUDA not defined!"
#endif

#if !FLAG_LANG_IS_CUDA
#  error "Expected FLAG_LANG_IS_CUDA"
#endif

#ifndef DEF_COMPILE_LANG_CUDA
#  error "DEF_COMPILE_LANG_CUDA not defined!"
#endif

#ifndef DEF_LANG_IS_CUDA
#  error "DEF_LANG_IS_CUDA not defined!"
#endif

#if !DEF_LANG_IS_CUDA
#  error "Expected DEF_LANG_IS_CUDA"
#endif

#ifndef DEF_CUDA_COMPILER
#  error "DEF_CUDA_COMPILER not defined!"
#endif

#ifndef DEF_CUDA_COMPILER_VERSION
#  error "DEF_CUDA_COMPILER_VERSION not defined!"
#endif

static __global__ void DetermineIfValidCudaDevice()
{
}

#ifdef _MSC_VER
#  pragma pack(push, 1)
#  undef PACKED_DEFINE
#  define PACKED_DEFINE
#endif
struct PACKED_DEFINE result_type
{
  bool valid;
  int value;
#if defined(NDEBUG) && !defined(DEFREL)
#  error missing DEFREL flag
#endif
};
#ifdef _MSC_VER
#  pragma pack(pop)
#endif

result_type can_launch_kernel()
{
  result_type r;
  DetermineIfValidCudaDevice<<<1, 1>>>();
  r.valid = (cudaSuccess == cudaGetLastError());
  if (r.valid) {
    r.value = 1;
  } else {
    r.value = -1;
  }
  return r;
}

int main(int argc, char** argv)
{
  cudaError_t err;
  int nDevices = 0;
  err = cudaGetDeviceCount(&nDevices);
  if (err != cudaSuccess) {
    std::cerr << cudaGetErrorString(err) << std::endl;
    return 1;
  }
  return 0;
}
