Export symbols in cpu runner cblas library
authorLei Zhang <antiagainst@google.com>
Wed, 19 Jun 2019 18:13:36 +0000 (11:13 -0700)
committerMehdi Amini <joker.eph@gmail.com>
Thu, 20 Jun 2019 06:07:54 +0000 (23:07 -0700)
By default MSVC does not export any symbol and does not create a companion
.lib for a .dll. This will cause problems when trying to link against the
library.

PiperOrigin-RevId: 254033454

mlir/test/mlir-cpu-runner/CMakeLists.txt
mlir/test/mlir-cpu-runner/include/cblas.h

index c5688ff..8c1005b 100644 (file)
@@ -4,6 +4,7 @@ set(LLVM_OPTIONAL_SOURCES
   )
 
 add_llvm_library(cblas SHARED cblas.cpp)
+target_compile_definitions(cblas PRIVATE cblas_EXPORTS)
 add_llvm_library(cblas_interface SHARED cblas_interface.cpp)
 target_link_libraries(cblas_interface PRIVATE cblas)
 
index f3d3a2c..18b6aeb 100644 (file)
 #ifndef MLIR_CPU_RUNNER_CBLAS_H_
 #define MLIR_CPU_RUNNER_CBLAS_H_
 
+#ifdef _WIN32
+#ifndef MLIR_CBLAS_EXPORT
+#ifdef cblas_EXPORTS
+/* We are building this library */
+#define MLIR_CBLAS_EXPORT __declspec(dllexport)
+#else
+/* We are using this library */
+#define MLIR_CBLAS_EXPORT __declspec(dllimport)
+#endif
+#endif
+#else
+#define MLIR_CBLAS_EXPORT
+#endif
+
 /// This reproduces a minimal subset of cblas to allow integration testing
 /// without explicitly requiring a dependence on an external library.
 /// Without loss of generality, various cblas implementations may be swapped in
@@ -28,15 +42,15 @@ enum CBLAS_TRANSPOSE {
   CblasConjTrans = 113
 };
 
-extern "C" float cblas_sdot(const int N, const float *X, const int incX,
-                            const float *Y, const int incY);
+extern "C" MLIR_CBLAS_EXPORT float cblas_sdot(const int N, const float *X,
+                                              const int incX, const float *Y,
+                                              const int incY);
 
-extern "C" void cblas_sgemm(const enum CBLAS_ORDER Order,
-                            const enum CBLAS_TRANSPOSE TransA,
-                            const enum CBLAS_TRANSPOSE TransB, 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);
+extern "C" MLIR_CBLAS_EXPORT void
+cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+            const enum CBLAS_TRANSPOSE TransB, 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 // MLIR_CPU_RUNNER_CBLAS_H_