Refs #227. Detected LLVM/Clang compiler.
authorZhang Xianyi <traits.zhang@gmail.com>
Thu, 6 Jun 2013 15:43:40 +0000 (23:43 +0800)
committerZhang Xianyi <traits.zhang@gmail.com>
Thu, 6 Jun 2013 15:43:40 +0000 (23:43 +0800)
Makefile.system
c_check
ctest.c

index efce81e..f48e5b4 100644 (file)
@@ -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 5663114..acd8df5 100644 (file)
--- 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 95a5e8b..624cad1 100644 (file)
--- a/ctest.c
+++ b/ctest.c
@@ -1,3 +1,7 @@
+#if defined(__clang__)
+COMPILER_CLANG
+#endif
+
 #if defined(__PGI) || defined(__PGIC__)
 COMPILER_PGI
 #endif