#ifndef CONFIG_BLAZINGSQL_H
#define CONFIG_BLAZINGSQL_H

#include "bsqlengine_internal_config.h"

#define STRINGIZE(x) #x
//STRINGIZE_VALUE_OF will catch a compiler definition -DKEY=VALUE and will convert the VALUE to string
#define STRINGIZE_VALUE_OF(x) STRINGIZE(x)

#define SYSTEM_NAME std::make_pair("SYSTEM_NAME", "@CMAKE_SYSTEM_NAME@")
#define SYSTEM std::make_pair("SYSTEM", "@CMAKE_SYSTEM@")
#define SYSTEM_PROCESSOR std::make_pair("SYSTEM_PROCESSOR", "@CMAKE_SYSTEM_PROCESSOR@")

#define OS_RELEASE std::make_pair("OS_RELEASE", "@OS_RELEASE@")
#define LSB_RELEASE std::make_pair("LSB_RELEASE", "@LSB_RELEASE@")

#define CXX_COMPILER_ID std::make_pair("CXX_COMPILER_ID", "@CMAKE_CXX_COMPILER_ID@")
#define CXX_COMPILER std::make_pair("CXX_COMPILER", "@CMAKE_CXX_COMPILER@")
#define CXX_COMPILER_VERSION std::make_pair("CXX_COMPILER_VERSION", "@CMAKE_CXX_COMPILER_VERSION@")

#define CMAKE_VERSION std::make_pair("CMAKE_VERSION", "@CMAKE_VERSION@")
#define CMAKE_GENERATOR std::make_pair("CMAKE_GENERATOR", "@CMAKE_GENERATOR@")

#define CUDA_COMPILER std::make_pair("CMAKE_CUDA_COMPILER", "@CMAKE_CUDA_COMPILER@")
#define CUDA_FLAGS std::make_pair("CMAKE_CUDA_FLAGS", "@CMAKE_CUDA_FLAGS@")

#define BLAZINGSQL_DESCRIPTIVE_METADATA {\
BLAZINGSQL_GIT_BRANCH, \
BLAZINGSQL_GIT_COMMIT_HASH, \
BLAZINGSQL_GIT_DESCRIBE_TAG, \
BLAZINGSQL_GIT_DESCRIBE_NUMBER, \
SYSTEM_NAME, \
SYSTEM, \
SYSTEM_PROCESSOR, \
OS_RELEASE, \
LSB_RELEASE, \
CXX_COMPILER_ID, \
CXX_COMPILER, \
CXX_COMPILER_VERSION, \
CMAKE_VERSION, \
CMAKE_GENERATOR, \
CUDA_COMPILER, \
CUDA_FLAGS, \
}

#endif // CONFIG_BLAZINGSQL_H
