From 30be55150258a38e0ca0db133d1d4754e58f404e Mon Sep 17 00:00:00 2001 From: Hank Anderson Date: Tue, 3 Feb 2015 14:21:22 -0600 Subject: [PATCH] Corrected fortran compiler name variables. Fixed some typos. Updated c_check to set ARCH and BINARY64/32. Added version variables. --- CMakeLists.txt | 4 ++++ cmake/arch.cmake | 4 ++-- cmake/c_check.cmake | 40 ++++++++++++++++++++++++++++++++++------ cmake/cc.cmake | 8 ++++---- cmake/f_check.cmake | 15 ++++++++++++++- cmake/fc.cmake | 22 +++++++++++----------- cmake/prebuild.cmake | 15 +++------------ cmake/system.cmake | 10 +++++----- 8 files changed, 77 insertions(+), 41 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 66292940d..0869e6fad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,10 @@ 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) diff --git a/cmake/arch.cmake b/cmake/arch.cmake index b32c8b654..5848c2409 100644 --- a/cmake/arch.cmake +++ b/cmake/arch.cmake @@ -12,7 +12,7 @@ if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64") endif () if (NOT NO_EXPRECISION) - if (${Fortran_COMPILER_NAME} MATCHES "gfortran.*") + if (${CMAKE_Fortran_COMPILER} MATCHES "gfortran.*") # N.B. I'm not sure if CMake differentiates between GCC and LSB -hpa if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB") set(EXPRECISION 1) @@ -86,7 +86,7 @@ if (${ARCH} STREQUAL "ia64") set(NO_BINARY_MODE 1) set(BINARY_DEFINED 1) - if (${Fortran_COMPILER_NAME} MATCHES "gfortran.*") + if (${CMAKE_Fortran_COMPILER} MATCHES "gfortran.*") if (${CMAKE_C_COMPILER} STREQUAL "GNU") # EXPRECISION = 1 # CCOMMON_OPT += -DEXPRECISION diff --git a/cmake/c_check.cmake b/cmake/c_check.cmake index 2fbfd5745..961bb00c4 100644 --- a/cmake/c_check.cmake +++ b/cmake/c_check.cmake @@ -4,6 +4,26 @@ ## 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 @@ -23,17 +43,25 @@ if (NOT DEFINED BINARY) 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}) @@ -43,7 +71,7 @@ endif () 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") diff --git a/cmake/cc.cmake b/cmake/cc.cmake index 0cae8f9cf..28daa72dc 100644 --- a/cmake/cc.cmake +++ b/cmake/cc.cmake @@ -6,8 +6,8 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR ${CMAKE_C_COMPILER} STREQUAL "Clang") set(CCOMMON_OPT "${CCOMMON_OPT} -Wall") - COMMON_PROF += -fno-inline - NO_UNINITIALIZED_WARN = -Wno-uninitialized + set(COMMON_PROF "${COMMON_PROF} -fno-inline") + set(NO_UNINITIALIZED_WARN "-Wno-uninitialized") if (QUIET_MAKE) set(CCOMMON_OPT "${CCOMMON_OPT} ${NO_UNINITIALIZED_WARN} -Wno-unused") @@ -89,8 +89,8 @@ if (${CMAKE_C_COMPILER} STREQUAL "OPEN64") else () set(CCOMMON_OPT "${CCOMMON_OPT} -m64") endif () - endif -endif + endif () +endif () if (${CMAKE_C_COMPILER} STREQUAL "SUN") set(CCOMMON_OPT "${CCOMMON_OPT} -w") diff --git a/cmake/f_check.cmake b/cmake/f_check.cmake index a291430aa..6c1dbdf18 100644 --- a/cmake/f_check.cmake +++ b/cmake/f_check.cmake @@ -7,8 +7,20 @@ ## 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...") @@ -30,6 +42,7 @@ else () #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" diff --git a/cmake/fc.cmake b/cmake/fc.cmake index 727098d34..61f0e0187 100644 --- a/cmake/fc.cmake +++ b/cmake/fc.cmake @@ -3,7 +3,7 @@ ## Description: Ported from portion of OpenBLAS/Makefile.system ## Sets Fortran related variables. -if (${Fortran_COMPILER_NAME} STREQUAL "G77") +if (${CMAKE_Fortran_COMPILER} STREQUAL "G77") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_G77") set(FCOMMON_OPT "${FCOMMON_OPT} -Wall") if (NOT NO_BINARY_MODE) @@ -15,7 +15,7 @@ if (${Fortran_COMPILER_NAME} STREQUAL "G77") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "G95") +if (${CMAKE_Fortran_COMPILER} STREQUAL "G95") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_G95") set(FCOMMON_OPT "${FCOMMON_OPT} -Wall") if (NOT NO_BINARY_MODE) @@ -27,7 +27,7 @@ if (${Fortran_COMPILER_NAME} STREQUAL "G95") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "GFORTRAN") +if (${CMAKE_Fortran_COMPILER} STREQUAL "GFORTRAN") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_GFORT") set(FCOMMON_OPT "${FCOMMON_OPT} -Wall") #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc @@ -58,7 +58,7 @@ if (${Fortran_COMPILER_NAME} STREQUAL "GFORTRAN") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "INTEL") +if (${CMAKE_Fortran_COMPILER} STREQUAL "INTEL") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_INTEL") if (INTERFACE64) set(FCOMMON_OPT "${FCOMMON_OPT} -i8") @@ -68,14 +68,14 @@ if (${Fortran_COMPILER_NAME} STREQUAL "INTEL") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "FUJITSU") +if (${CMAKE_Fortran_COMPILER} STREQUAL "FUJITSU") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FUJITSU") if (USE_OPENMP) set(FCOMMON_OPT "${FCOMMON_OPT} -openmp") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "IBM") +if (${CMAKE_Fortran_COMPILER} STREQUAL "IBM") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_IBM") # FCOMMON_OPT += -qarch=440 if (BINARY64) @@ -91,7 +91,7 @@ if (${Fortran_COMPILER_NAME} STREQUAL "IBM") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "PGI") +if (${CMAKE_Fortran_COMPILER} STREQUAL "PGI") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_PGI") set(COMMON_PROF "${COMMON_PROF} -DPGICOMPILER") if (BINARY64) @@ -107,7 +107,7 @@ if (${Fortran_COMPILER_NAME} STREQUAL "PGI") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "PATHSCALE") +if (${CMAKE_Fortran_COMPILER} STREQUAL "PATHSCALE") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_PATHSCALE") if (BINARY64) if (INTERFACE64) @@ -134,7 +134,7 @@ if (${Fortran_COMPILER_NAME} STREQUAL "PATHSCALE") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "OPEN64") +if (${CMAKE_Fortran_COMPILER} STREQUAL "OPEN64") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_OPEN64") if (BINARY64) @@ -172,7 +172,7 @@ if (${Fortran_COMPILER_NAME} STREQUAL "OPEN64") endif () endif () -if (${Fortran_COMPILER_NAME} "SUN") +if (${CMAKE_Fortran_COMPILER} STREQUAL "SUN") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN") if (${ARCH} STREQUAL "x86") set(FCOMMON_OPT "${FCOMMON_OPT} -m32") @@ -184,7 +184,7 @@ if (${Fortran_COMPILER_NAME} "SUN") endif () endif () -if (${Fortran_COMPILER_NAME} STREQUAL "COMPAQ") +if (${CMAKE_Fortran_COMPILER} STREQUAL "COMPAQ") set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_COMPAQ") if (USE_OPENMP) set(FCOMMON_OPT "${FCOMMON_OPT} -openmp") diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake index 8e05647a3..6312a515e 100644 --- a/cmake/prebuild.cmake +++ b/cmake/prebuild.cmake @@ -6,19 +6,10 @@ ## 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 diff --git a/cmake/system.cmake b/cmake/system.cmake index ad4a6f3be..f85d13f03 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -150,7 +150,7 @@ if (NEED_PIC) 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") @@ -186,7 +186,7 @@ endif () 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 () @@ -299,7 +299,7 @@ if (MIXED_MEMORY_ALLOCATION) 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) @@ -315,8 +315,8 @@ endif () 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")