long's in windows are 4 bytes (MSVS, intel compilers). Use int64_t and int32_t to ensure 8 byte integers for ILP interface. support 8 byte integer flag for intel ifort compilertags/v0.3.21
@@ -1,6 +1,7 @@ | |||||
#ifndef CBLAS_H | #ifndef CBLAS_H | ||||
#define CBLAS_H | #define CBLAS_H | ||||
#include <stddef.h> | #include <stddef.h> | ||||
#include <stdint.h> | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
@@ -11,9 +12,9 @@ extern "C" { /* Assume C declarations for C++ */ | |||||
* Enumerated and derived types | * Enumerated and derived types | ||||
*/ | */ | ||||
#ifdef WeirdNEC | #ifdef WeirdNEC | ||||
#define CBLAS_INDEX long | |||||
#define CBLAS_INDEX int64_t | |||||
#else | #else | ||||
#define CBLAS_INDEX int | |||||
#define CBLAS_INDEX int32_t | |||||
#endif | #endif | ||||
typedef enum {CblasRowMajor=101, CblasColMajor=102} CBLAS_LAYOUT; | typedef enum {CblasRowMajor=101, CblasColMajor=102} CBLAS_LAYOUT; | ||||
@@ -9,6 +9,8 @@ | |||||
#ifndef CBLAS_F77_H | #ifndef CBLAS_F77_H | ||||
#define CBLAS_F77_H | #define CBLAS_F77_H | ||||
#include <stdint.h> | |||||
#ifdef CRAY | #ifdef CRAY | ||||
#include <fortran.h> | #include <fortran.h> | ||||
#define F77_CHAR _fcd | #define F77_CHAR _fcd | ||||
@@ -17,8 +19,12 @@ | |||||
#define F77_STRLEN(a) (_fcdlen) | #define F77_STRLEN(a) (_fcdlen) | ||||
#endif | #endif | ||||
#ifndef F77_INT | |||||
#ifdef WeirdNEC | #ifdef WeirdNEC | ||||
#define F77_INT long | |||||
#define F77_INT int64_t | |||||
#else | |||||
#define F77_INT int32_t | |||||
#endif | |||||
#endif | #endif | ||||
#ifdef F77_CHAR | #ifdef F77_CHAR | ||||
@@ -14,6 +14,19 @@ macro( CheckLAPACKCompilerFlags ) | |||||
set( FPE_EXIT FALSE ) | set( FPE_EXIT FALSE ) | ||||
# FORTRAN ILP default | |||||
if ( FORTRAN_ILP ) | |||||
if( CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" ) | |||||
if ( WIN32 ) | |||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /integer-size:64") | |||||
else () | |||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -integer-size 64") | |||||
endif() | |||||
else() | |||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-integer-8") | |||||
endif() | |||||
endif() | |||||
# GNU Fortran | # GNU Fortran | ||||
if( CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" ) | if( CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" ) | ||||
if( "${CMAKE_Fortran_FLAGS}" MATCHES "-ffpe-trap=[izoupd]") | if( "${CMAKE_Fortran_FLAGS}" MATCHES "-ffpe-trap=[izoupd]") | ||||
@@ -53,7 +53,7 @@ if(BUILD_INDEX64) | |||||
set(LAPACKELIB "lapacke64") | set(LAPACKELIB "lapacke64") | ||||
set(TMGLIB "tmglib64") | set(TMGLIB "tmglib64") | ||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWeirdNEC -DLAPACK_ILP64 -DHAVE_LAPACK_CONFIG_H") | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWeirdNEC -DLAPACK_ILP64 -DHAVE_LAPACK_CONFIG_H") | ||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-integer-8") | |||||
set(FORTRAN_ILP TRUE) | |||||
else() | else() | ||||
set(BLASLIB "blas") | set(BLASLIB "blas") | ||||
set(CBLASLIB "cblas") | set(CBLASLIB "cblas") | ||||
@@ -49,12 +49,13 @@ extern "C" { | |||||
#endif /* __cplusplus */ | #endif /* __cplusplus */ | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <stdint.h> | |||||
#ifndef lapack_int | #ifndef lapack_int | ||||
#if defined(LAPACK_ILP64) | #if defined(LAPACK_ILP64) | ||||
#define lapack_int long | |||||
#define lapack_int int64_t | |||||
#else | #else | ||||
#define lapack_int int | |||||
#define lapack_int int32_t | |||||
#endif | #endif | ||||
#endif | #endif | ||||