libmcl-sys 0.1.2-rc3

This system crate provides Rust language bindings to the Minos Compute Library (MCL)
Documentation
#ifndef MCL_TEST_UTILS_H
#define MCL_TEST_UTILS_H

#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <getopt.h>
#include <string.h>
#ifdef __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif

#define XSTR(x) STR(x)
#define STR(x) #x

#define KNRM  "\x1B[0m"
#define KRED  "\x1B[31m"
#define KGRN  "\x1B[32m"
#define KYEL  "\x1B[33m"
#define KBLU  "\x1B[34m"
#define KMAG  "\x1B[35m"
#define KCYN  "\x1B[36m"
#define KWHT  "\x1B[37m"

#define TEST_SUCCESS "\x1B[32mSUCCESS \x1B[0m"
#define TEST_FAILED   "\x1B[31mFAILED \x1B[0m"

#define BILLION 1000000000ULL
#define tdiff(end,start) BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec

#define DFT_WORKERS  1UL
#define DFT_SIZE     128UL
#ifdef __TEST_MCL
#define DFT_TYPE     2UL
#else
#define DFT_TYPE     0UL
#endif
#define DFT_REP      1UL
#define DFT_SYNC     0UL
#define DFT_VERIFY   1UL
#define DFT_DID      0UL
#define BASE         100
#define TOLERANCE    0.05f

#ifdef DOUBLE_PRECISION
#define FPTYPE double
typedef struct cplxdbl {
    double x;
    double y;
} CMPTYPE;
#else
#define FPTYPE float
typedef struct cplxflt {
    float x;
    float y;
} CMPTYPE;
#endif

extern uint64_t workers ;
extern size_t   size;
extern uint64_t type;    
extern uint64_t synct;   
extern uint64_t rep;     
extern uint64_t verify;  
extern uint64_t did;     
extern uint64_t flags;   

extern const struct option global_lopts[];

void mcl_banner(char*);
void mcl_verify(int);
int  mcl_load(char*, char**);
int  ocl_setup(cl_device_id**, cl_context*, cl_command_queue*, unsigned long, unsigned long);
void parse_global_opts(int, char**);
void print_global_help(char*);
#endif