diff --git a/Makefile b/Makefile index 6789272a3..d86fbadf3 100644 --- a/Makefile +++ b/Makefile @@ -118,6 +118,13 @@ endif #Save the config files for installation cp Makefile.conf Makefile.conf_last cp config.h config_last.h +ifdef QUAD_PRECISION + echo "#define QUAD_PRECISION">> config_last.h +endif +ifeq ($(EXPRECISION), 1) + echo "#define EXPRECISION">> config_last.h +endif +## ifdef DYNAMIC_ARCH $(MAKE) -C kernel commonlibs || exit 1 for d in $(DYNAMIC_CORE) ; \ diff --git a/common_interface.h b/common_interface.h index 36bf5aa48..898d91001 100644 --- a/common_interface.h +++ b/common_interface.h @@ -38,6 +38,11 @@ #ifndef ASSEMBLER +#ifdef __cplusplus +extern "C" { + /* Assume C declarations for C++ */ +#endif /* __cplusplus */ + int BLASFUNC(xerbla)(char *, blasint *info, blasint); FLOATRET BLASFUNC(sdot) (blasint *, float *, blasint *, float *, blasint *); @@ -733,4 +738,10 @@ xdouble BLASFUNC(qlamch)(char *); FLOATRET BLASFUNC(slamc3)(float *, float *); double BLASFUNC(dlamc3)(double *, double *); xdouble BLASFUNC(qlamc3)(xdouble *, xdouble *); + +#ifdef __cplusplus +} + +#endif /* __cplusplus */ + #endif diff --git a/openblas_config_template.h b/openblas_config_template.h index 9fb80aa4f..8bf972593 100644 --- a/openblas_config_template.h +++ b/openblas_config_template.h @@ -6,6 +6,16 @@ #define BLASFUNC(FUNC) FUNC #endif +#ifdef QUAD_PRECISION +typedef struct { + unsigned long x[2]; +} xdouble; +#elif defined EXPRECISION +#define xdouble long double +#else +#define xdouble double +#endif + #if defined(OS_WINDOWS) && defined(__64BIT__) typedef long long BLASLONG; typedef unsigned long long BLASULONG; @@ -19,3 +29,13 @@ typedef BLASLONG blasint; #else typedef int blasint; #endif + +#if defined(XDOUBLE) || defined(DOUBLE) +#define FLOATRET FLOAT +#else +#ifdef NEED_F2CCONV +#define FLOATRET double +#else +#define FLOATRET float +#endif +#endif