فهرست منبع

some changes to plugins

Nicolas Winkler 4 سال پیش
والد
کامیت
eafb6783ff

+ 5 - 2
libmandel/CMakeLists.txt

@@ -26,7 +26,6 @@ find_package(Boost 1.65 REQUIRED)
 set(CMAKE_CXX_STANDARD 17)
 
 
-
 SET(MandelSources
     src/ClGenerators.cpp
     src/CpuGenerators.cpp
@@ -91,7 +90,6 @@ else()
     add_library(mandel STATIC ${MandelSources})
 endif()
 
-target_link_libraries(mandel PUBLIC ${CMAKE_DL_LIBS})
 
 
 # avx+fma plugin
@@ -99,6 +97,7 @@ add_library(avxfma MODULE src/plugins/CpuGeneratorsAVXFMA.cpp)
 set_target_properties(avxfma PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${MANDEL_PLUGIN_DIR})
 target_include_directories(avxfma PUBLIC "include")
 add_dependencies(mandel avxfma)
+target_link_libraries(avxfma PUBLIC mandel)
 
 # avx512 plugin
 add_library(avx512 MODULE src/plugins/CpuGeneratorsAVX512.cpp)
@@ -139,6 +138,10 @@ endif()
 if(Boost_FOUND)
     target_compile_definitions(mandel PUBLIC WITH_BOOST)
     target_include_directories(mandel PUBLIC ${Boost_INCLUDE_DIRS})
+    target_compile_definitions(avx512 PUBLIC WITH_BOOST)
+    target_include_directories(avx512 PUBLIC ${Boost_INCLUDE_DIRS})
+    target_compile_definitions(avxfma PUBLIC WITH_BOOST)
+    target_include_directories(avxfma PUBLIC ${Boost_INCLUDE_DIRS})
     #target_link_libraries(mandel PRIVATE ${Boost_LIBRARIES})
 endif(Boost_FOUND)
 

+ 6 - 0
libmandel/include/CalcPlugin.h

@@ -2,13 +2,19 @@
 #define MANDEL_CALCPLUGIN_H
 
 #include <string>
+#include <vector>
 
 #if defined(__GNUC__)
     #define MANDEL_EXPORT __attribute__((visibility("default")))
     #define MANDEL_IMPORT
 #elif defined(_MSC_VER)
+#ifdef MANDEL_PLUGIN
+    #define MANDEL_EXPORT __declspec(dllimport)
+    #define MANDEL_IMPORT __declspec(dllexport)
+#else
     #define MANDEL_EXPORT __declspec(dllexport)
     #define MANDEL_IMPORT __declspec(dllimport)
+#endif
 #else
     #define MANDEL_EXPORT
     #define MANDEL_IMPORT

+ 3 - 1
libmandel/include/Generators.h

@@ -3,6 +3,8 @@
 
 #include "MandelUtil.h"
 
+#include "CalcPlugin.h"
+
 #include <vector>
 #include <map>
 #include <utility>
@@ -59,7 +61,7 @@ namespace mnd
 }
 
 
-class mnd::MandelGenerator
+class MANDEL_EXPORT mnd::MandelGenerator
 {
 protected:
     Real precision;

+ 2 - 2
libmandel/src/Mandel.cpp

@@ -350,8 +350,8 @@ MandelContext::~MandelContext(void)
 
 void MandelContext::loadPlugin(std::unique_ptr<CalcPlugin> cp)
 {
-    auto&& gens = cp->getGenerators();
-    if (auto&& gen : gens) {
+    const std::vector<mnd::MandelGenerator*>& gens = cp->getGenerators();
+    if (mnd::MandelGenerator* gen : gens) {
         cpuGenerators.insert({ GeneratorType{ gen->getType(), gen->getExtension() }, gen });
         if (adaptiveGenerator) {
             adaptiveGenerator->addGenerator(*gen);

+ 1 - 1
libmandel/src/plugins/CpuGeneratorsAVX512.cpp

@@ -17,7 +17,7 @@ public:
 };
 
 
-extern "C" const std::vector<mnd::MandelGenerator*>& mandel_get_generators(void)
+extern "C" MANDEL_EXPORT const std::vector<mnd::MandelGenerator*>& mandel_get_generators(void)
 {
     static CpuGeneratorFloatAVX512 instance;
     static std::vector<mnd::MandelGenerator*> vec { &instance };

+ 6 - 5
libmandel/src/plugins/CpuGeneratorsAVXFMA.cpp

@@ -3,11 +3,12 @@
 
 #include <cmath>
 #include <vector>
-#include "CpuGenerators.h"
 
-#include "LightDoubleDouble.h"
-#include "QuadDouble.h"
-#include "HexDouble.h"
+#define MANDEL_PLUGIN
+
+#include "Generators.h"
+#include "Types.h"
+
 
 class CpuGeneratorFloatAVXFMA : public mnd::MandelGenerator
 {
@@ -21,7 +22,7 @@ public:
 };
 
 
-extern "C" const std::vector<mnd::MandelGenerator*>& mandel_get_generators(void)
+extern "C" MANDEL_IMPORT const std::vector<mnd::MandelGenerator*>&  mandel_get_generators(void)
 {
     static CpuGeneratorFloatAVXFMA instance;
     static std::vector<mnd::MandelGenerator*> vec { &instance };