Fixed some typos.
Updated c_check to set ARCH and BINARY64/32.
Added version variables.
cmake_minimum_required(VERSION 2.8.4)
project(OpenBLAS)
+set(OpenBLAS_MAJOR_VERSION 0)
+set(OpenBLAS_MINOR_VERSION 2)
+set(OpenBLAS_PATCH_VERSION 13)
+set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}")
# is this necessary? lapack-netlib has its own fortran checks in its CMakeLists.txt
#enable_language(Fortran)
endif ()\r
\r
if (NOT NO_EXPRECISION)\r
- if (${Fortran_COMPILER_NAME} MATCHES "gfortran.*")\r
+ if (${CMAKE_Fortran_COMPILER} MATCHES "gfortran.*")\r
# N.B. I'm not sure if CMake differentiates between GCC and LSB -hpa\r
if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB")\r
set(EXPRECISION 1)\r
set(NO_BINARY_MODE 1)\r
set(BINARY_DEFINED 1)\r
\r
- if (${Fortran_COMPILER_NAME} MATCHES "gfortran.*")\r
+ if (${CMAKE_Fortran_COMPILER} MATCHES "gfortran.*")\r
if (${CMAKE_C_COMPILER} STREQUAL "GNU")\r
# EXPRECISION = 1\r
# CCOMMON_OPT += -DEXPRECISION\r
## This is triggered by prebuild.cmake and runs before any of the code is built.
## Creates config.h and Makefile.conf.
+# CMake vars set by this file:
+# OSNAME (use CMAKE_SYSTEM_NAME)
+# ARCH
+# C_COMPILER (use CMAKE_C_COMPILER)
+# BINARY32
+# BINARY64
+# FU
+# CROSS_SUFFIX
+# CROSS
+# CEXTRALIB
+
+# Defines set by this file:
+# OS_
+# ARCH_
+# C_
+# __32BIT__
+# __64BIT__
+# FUNDERSCORE
+# PTHREAD_CREATE_FUNC
+
# N.B. c_check (and ctest.c) is not cross-platform, so instead try to use CMake variables.
# TODO: detect NEED_FU
endif ()
endif ()
+if (BINARY EQUAL 64)
+ set(BINARY64 1)
+else ()
+ set(BINARY32 1)
+endif ()
+
# CMake docs define these:
# CMAKE_SYSTEM_PROCESSOR - The name of the CPU CMake is building for.
# CMAKE_HOST_SYSTEM_PROCESSOR - The name of the CPU CMake is running on.
-set(HOST_ARCH ${CMAKE_SYSTEM_PROCESSOR})
-if (${HOST_ARCH} STREQUAL "AMD64")
- set(HOST_ARCH "X86_64")
+#
+# TODO: CMAKE_SYSTEM_PROCESSOR doesn't seem to be correct - instead get it from the compiler a la c_check
+set(ARCH ${CMAKE_SYSTEM_PROCESSOR})
+if (${ARCH} STREQUAL "AMD64")
+ set(ARCH "X86_64")
endif ()
# If you are using a 32-bit compiler on a 64-bit system CMAKE_SYSTEM_PROCESSOR will be wrong
-if (${HOST_ARCH} STREQUAL "X86_64" AND BINARY EQUAL 32)
- set(HOST_ARCH X86)
+if (${ARCH} STREQUAL "X86_64" AND BINARY EQUAL 32)
+ set(ARCH X86)
endif ()
set(COMPILER_ID ${CMAKE_CXX_COMPILER_ID})
file(WRITE ${TARGET_CONF}
"#define OS_${HOST_OS}\t1\n"
- "#define ARCH_${HOST_ARCH}\t1\n"
+ "#define ARCH_${ARCH}\t1\n"
"#define C_${COMPILER_ID}\t1\n"
"#define __${BINARY}BIT__\t1\n"
"#define FUNDERSCORE\t${NEED_FU}\n")
if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR ${CMAKE_C_COMPILER} STREQUAL "Clang")\r
\r
set(CCOMMON_OPT "${CCOMMON_OPT} -Wall")\r
- COMMON_PROF += -fno-inline\r
- NO_UNINITIALIZED_WARN = -Wno-uninitialized\r
+ set(COMMON_PROF "${COMMON_PROF} -fno-inline")\r
+ set(NO_UNINITIALIZED_WARN "-Wno-uninitialized")\r
\r
if (QUIET_MAKE)\r
set(CCOMMON_OPT "${CCOMMON_OPT} ${NO_UNINITIALIZED_WARN} -Wno-unused")\r
else ()\r
set(CCOMMON_OPT "${CCOMMON_OPT} -m64")\r
endif ()\r
- endif\r
-endif\r
+ endif ()\r
+endif ()\r
\r
if (${CMAKE_C_COMPILER} STREQUAL "SUN")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -w")\r
## This is triggered by prebuild.cmake and runs before any of the code is built.
## Appends Fortran information to config.h and Makefile.conf.
+# CMake vars set by this file:
+# F_COMPILER
+# FC
+# BU
+# NOFORTRAN
+# NEED2UNDERSCORES
+# FEXTRALIB
-if (NOT ${ONLY_CBLAS})
+# Defines set by this file:
+# BUNDERSCORE
+# NEEDBUNDERSCORE
+# NEED2UNDERSCORES
+
+if (NOT ONLY_CBLAS)
# N.B. f_check is not cross-platform, so instead try to use CMake variables
# run f_check (appends to TARGET files)
# message(STATUS "Running f_check...")
#When we only build CBLAS, we set NOFORTRAN=2
set(NOFORTRAN 2)
set(NO_FBLAS 1)
+ #set(F_COMPILER GFORTRAN) # CMake handles the fortran compiler
set(BU "_")
file(APPEND ${TARGET_CONF}
"#define BUNDERSCORE _\n"
## Description: Ported from portion of OpenBLAS/Makefile.system\r
## Sets Fortran related variables.\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "G77")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "G77")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_G77")\r
set(FCOMMON_OPT "${FCOMMON_OPT} -Wall")\r
if (NOT NO_BINARY_MODE)\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "G95")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "G95")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_G95")\r
set(FCOMMON_OPT "${FCOMMON_OPT} -Wall")\r
if (NOT NO_BINARY_MODE)\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "GFORTRAN")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "GFORTRAN")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_GFORT")\r
set(FCOMMON_OPT "${FCOMMON_OPT} -Wall")\r
#Don't include -lgfortran, when NO_LAPACK=1 or lsbcc\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "INTEL")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "INTEL")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_INTEL")\r
if (INTERFACE64)\r
set(FCOMMON_OPT "${FCOMMON_OPT} -i8")\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "FUJITSU")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "FUJITSU")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FUJITSU")\r
if (USE_OPENMP)\r
set(FCOMMON_OPT "${FCOMMON_OPT} -openmp")\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "IBM")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "IBM")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_IBM")\r
# FCOMMON_OPT += -qarch=440\r
if (BINARY64)\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "PGI")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "PGI")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_PGI")\r
set(COMMON_PROF "${COMMON_PROF} -DPGICOMPILER")\r
if (BINARY64)\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "PATHSCALE")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "PATHSCALE")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_PATHSCALE")\r
if (BINARY64)\r
if (INTERFACE64)\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "OPEN64")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "OPEN64")\r
\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_OPEN64")\r
if (BINARY64)\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} "SUN")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "SUN")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN")\r
if (${ARCH} STREQUAL "x86")\r
set(FCOMMON_OPT "${FCOMMON_OPT} -m32")\r
endif ()\r
endif ()\r
\r
-if (${Fortran_COMPILER_NAME} STREQUAL "COMPAQ")\r
+if (${CMAKE_Fortran_COMPILER} STREQUAL "COMPAQ")\r
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_COMPAQ")\r
if (USE_OPENMP)\r
set(FCOMMON_OPT "${FCOMMON_OPT} -openmp")\r
## Next it runs f_check and appends some fortran information to the files.
## Finally it runs getarch and getarch_2nd for even more environment information.
-# List of vars set by this file and included files:
-# OSNAME
-# ARCH
-# C_COMPILER
-# BINARY32
-# BINARY64
-# CEXTRALIB
-# F_COMPILER
-# FC
-# BU
-# CORE <- REQUIRED
+# CMake vars set by this file:
+# CORE
# LIBCORE
-# NUM_CORES <- REQUIRED
+# NUM_CORES
# HAVE_MMX
# HAVE_SSE
# HAVE_SSE2
set(CCOMMON_OPT "${CCOMMON_OPT} -fPIC")
endif ()
- if (${Fortran_COMPILER_NAME} STREQUAL "SUN")
+ if (${CMAKE_Fortran_COMPILER} STREQUAL "SUN")
set(FCOMMON_OPT "${FCOMMON_OPT} -pic")
else ()
set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC")
if (SMP)
set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER")
- if (${ARCH} STERQUAL "mips64")
+ if (${ARCH} STREQUAL "mips64")
if (NOT ${CORE} STREQUAL "LOONGSON3B")
set(USE_SIMPLE_THREADED_LEVEL3 1)
endif ()
set(CCOMMON_OPT "${CCOMMON_OPT} -DMIXED_MEMORY_ALLOCATION")
endif ()
-if (${OSNAME} STREQUAL "SunOS")
+if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
set(TAR gtar)
set(PATCH gpatch)
set(GREP ggrep)
set(AWK awk)
-set(REVISION "-r${VERSION}")
-string(REGEX MATCH "[0-9]+\\." MAJOR_VERSION "${VERSION}")
+set(REVISION "-r${OpenBLAS_VERSION}")
+set(MAJOR_VERSION ${OpenBLAS_MAJOR_VERSION})
if (DEBUG)
set(COMMON_OPT "${COMMON_OPT} -g")