From 960b0c88a7f9f1dc08cebcdcf23b29a1c71ad858 Mon Sep 17 00:00:00 2001 From: Zhang Xianyi Date: Thu, 6 Jun 2013 23:43:40 +0800 Subject: [PATCH] Refs #227. Detected LLVM/Clang compiler. --- Makefile.system | 24 +++++++++++++++++++++++- c_check | 5 +++++ ctest.c | 4 ++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/Makefile.system b/Makefile.system index efce81e2a..f48e5b4d2 100644 --- a/Makefile.system +++ b/Makefile.system @@ -153,6 +153,11 @@ EXTRALIB += -defaultlib:advapi32 SUFFIX = obj PSUFFIX = pobj LIBSUFFIX = a + +ifeq ($(C_COMPILER), CLANG) +CCOMMON_OPT += -DMS_ABI +endif + ifeq ($(C_COMPILER), GCC) #Test for supporting MS_ABI GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4) @@ -232,6 +237,11 @@ EXPRECISION = 1 CCOMMON_OPT += -DEXPRECISION -m128bit-long-double FCOMMON_OPT += -m128bit-long-double endif +ifeq ($(C_COMPILER), CLANG) +EXPRECISION = 1 +CCOMMON_OPT += -DEXPRECISION +FCOMMON_OPT += -m128bit-long-double +endif endif endif endif @@ -244,6 +254,11 @@ EXPRECISION = 1 CCOMMON_OPT += -DEXPRECISION -m128bit-long-double FCOMMON_OPT += -m128bit-long-double endif +ifeq ($(C_COMPILER), CLANG) +EXPRECISION = 1 +CCOMMON_OPT += -DEXPRECISION +FCOMMON_OPT += -m128bit-long-double +endif endif endif endif @@ -257,6 +272,11 @@ ifeq ($(C_COMPILER), GCC) CCOMMON_OPT += -fopenmp endif +ifeq ($(C_COMPILER), CLANG) +$(error OpenBLAS: Clang didn't support OpenMP yet.) +CCOMMON_OPT += -fopenmp +endif + ifeq ($(C_COMPILER), INTEL) CCOMMON_OPT += -openmp endif @@ -322,7 +342,9 @@ endif # C Compiler dependent settings # -ifeq ($(C_COMPILER), GCC) +# ifeq logical or. GCC or CLANG +# http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or +ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG)) CCOMMON_OPT += -Wall COMMON_PROF += -fno-inline NO_UNINITIALIZED_WARN = -Wno-uninitialized diff --git a/c_check b/c_check index 566311487..acd8df5f4 100644 --- a/c_check +++ b/c_check @@ -33,6 +33,7 @@ if ($ARGV[0] =~ /(.*)(-[.\d]+)/) { } $compiler = ""; +$compiler = CLANG if ($data =~ /COMPILER_CLANG/); $compiler = PGI if ($data =~ /COMPILER_PGI/); $compiler = PATHSCALE if ($data =~ /COMPILER_PATHSCALE/); $compiler = INTEL if ($data =~ /COMPILER_INTEL/); @@ -117,6 +118,10 @@ if ($compiler eq "OPEN64") { $openmp = "-mp"; } +if ($compiler eq "CLANG") { + $openmp = "-fopenmp"; +} + if ($compiler eq "GCC") { $openmp = "-fopenmp"; } diff --git a/ctest.c b/ctest.c index 95a5e8bb2..624cad159 100644 --- a/ctest.c +++ b/ctest.c @@ -1,3 +1,7 @@ +#if defined(__clang__) +COMPILER_CLANG +#endif + #if defined(__PGI) || defined(__PGIC__) COMPILER_PGI #endif