]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Allow to work without cblas.h
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 3 Jul 2019 11:36:18 +0000 (12:36 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 3 Jul 2019 11:36:18 +0000 (12:36 +0100)
config.h.in
contrib/kann/CMakeLists.txt
contrib/kann/kann.c
contrib/kann/kautodiff.c

index 9dcf51a50833793320a7d08e4154289813ea738e..8b876cd601e7acdce61d985c70f6fc199c48e0ba 100644 (file)
 
 #cmakedefine DISABLE_PTHREAD_MUTEX 1
 
-#ifdef HAVE_LIBEVENT2
-#define HAVE_EVUTIL_RNG_INIT 1
-#endif
-
 /* Detect endianness */
 
 #ifdef HAVE_ENDIAN_H
index d7bd73d28e30ab2426212a625b227f2efc1ba6b1..ba38e14c8f9e8b5ab957575139ac202b73fe330d 100644 (file)
@@ -15,6 +15,19 @@ ProcessPackage(BLAS OPTIONAL LIBRARY openblas blas
         LIB_OUTPUT BLAS_REQUIRED_LIBRARIES)
 IF(WITH_BLAS)
     MESSAGE(STATUS "Use openblas to accelerate kann")
+    IF(NOT BLAS_INCLUDE)
+        FIND_FILE(HAVE_CBLAS_H HINTS "${RSPAMD_SEARCH_PATH}"
+            NAMES cblas.h
+            DOC "Path to cblas.h header")
+        IF(NOT HAVE_CBLAS_H)
+            MESSAGE(STATUS "Blas header cblas.h has not been found, use internal workaround")
+        ELSE()
+            ADD_DEFINITIONS(-DHAVE_CBLAS_H)
+        ENDIF()
+    ELSE()
+        ADD_DEFINITIONS(-DHAVE_CBLAS_H)
+    ENDIF()
+
     TARGET_LINK_LIBRARIES(rspamd-kann  ${BLAS_REQUIRED_LIBRARIES})
     ADD_DEFINITIONS(-DHAVE_CBLAS)
 ENDIF(WITH_BLAS)
index 43227bdc66ea4829fceef8d1fee79e87c824a517..76ade6a526ca9b03a6b5f460dff8a46843a79482 100644 (file)
@@ -1,3 +1,5 @@
+#include "config.h"
+
 #include <math.h>
 #include <float.h>
 #include <string.h>
index f303a723fa291cef5240c7827f9b7eef0cc8ed3a..bc9458f42a2d02cb59f7075bb2f7025591a1f6ac 100644 (file)
@@ -1,3 +1,5 @@
+#include "config.h"
+
 #include <stdlib.h>
 #include <assert.h>
 #include <stdarg.h>
@@ -898,7 +900,20 @@ void kad_vec_mul_sum(int n, float *a, const float *b, const float *c)
 void kad_saxpy(int n, float a, const float *x, float *y) { kad_saxpy_inlined(n, a, x, y); }
 
 #ifdef HAVE_CBLAS
+#ifdef HAVE_CBLAS_H
 #include "cblas.h"
+#else
+/* Poor man approach */
+enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102 };
+enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112 };
+extern void cblas_sgemm(const enum CBLAS_ORDER Order,
+                 const enum CBLAS_TRANSPOSE TA,
+                 const enum CBLAS_TRANSPOSE TB,
+                 const int M, const int N, const int K,
+                 const float  alpha, const float *A, const int lda,
+                 const float *B, const int ldb, const float  beta,
+                 float *C, const int ldc);
+#endif
 void kad_sgemm_simple(int trans_A, int trans_B, int M, int N, int K, const float *A, const float *B, float *C)
 {
        cblas_sgemm(CblasRowMajor, trans_A? CblasTrans : CblasNoTrans, trans_B? CblasTrans : CblasNoTrans, M, N, K, 1.0f, A, trans_A? M : K, B, trans_B? K : N, 1.0f, C, N);