mirror of
https://github.com/jwinterm/xmr-stak.git
synced 2026-10-17 05:41:41 +02:00
fix windows compile
- fix build documentation - fix plugin load methods - fix symbol export for plugins
This commit is contained in:
+2
-2
@@ -390,7 +390,7 @@ if( NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "${PROJECT_BINARY_DIR}" )
|
||||
LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
else()
|
||||
set(WIN_OUTPUT_RELEASE "/Release")
|
||||
endif()
|
||||
|
||||
@@ -400,7 +400,7 @@ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/opencl"
|
||||
# avoid overwrite of user defined settings
|
||||
# install `config.txt`if file not exists in `${CMAKE_INSTALL_PREFIX}/bin`
|
||||
install(CODE " \
|
||||
if(NOT EXISTS ${CMAKE_INSTALL_PREFIX}/bin/config.txt)\n \
|
||||
if(NOT EXISTS ${CMAKE_INSTALL_PREFIX}/bin${WIN_OUTPUT_RELEASE}/config.txt)\n \
|
||||
file(INSTALL ${CMAKE_CURRENT_SOURCE_DIR}/config.txt \
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/bin${WIN_OUTPUT_RELEASE})\n \
|
||||
endif()"
|
||||
|
||||
+1
-1
@@ -67,7 +67,7 @@
|
||||
set CMAKE_PREFIX_PATH=C:\xmr-stak-dep\hwloc;C:\xmr-stak-dep\libmicrohttpd;C:\xmr-stak-dep\openssl
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G "Visual Studio 15 2017 Win64" -T v141,host=x64 ..
|
||||
cmake -G "Visual Studio 15 2017 Win64" -T v140,host=x64 ..
|
||||
cmake --build . --config Release --target install
|
||||
cd bin\Release
|
||||
```
|
||||
|
||||
@@ -63,7 +63,7 @@ std::vector<IBackend*>* BackendConnector::thread_starter(miner_work& pWork)
|
||||
std::vector<IBackend*>* pvThreads = new std::vector<IBackend*>;
|
||||
|
||||
#ifndef CONF_NO_CUDA
|
||||
Plugin nvidiaPlugin("NVIDIA", "libxmrstak_cuda_backend");
|
||||
Plugin nvidiaPlugin("NVIDIA", "xmrstak_cuda_backend");
|
||||
std::vector<IBackend*>* nvidiaThreads = nvidiaPlugin.startBackend(static_cast<uint32_t>(pvThreads->size()), pWork);
|
||||
pvThreads->insert(std::end(*pvThreads), std::begin(*nvidiaThreads), std::end(*nvidiaThreads));
|
||||
if(nvidiaThreads->size() == 0)
|
||||
@@ -71,7 +71,7 @@ std::vector<IBackend*>* BackendConnector::thread_starter(miner_work& pWork)
|
||||
#endif
|
||||
|
||||
#ifndef CONF_NO_OPENCL
|
||||
Plugin amdPlugin("AMD", "libxmrstak_opencl_backend");
|
||||
Plugin amdPlugin("AMD", "xmrstak_opencl_backend");
|
||||
std::vector<IBackend*>* amdThreads = amdPlugin.startBackend(static_cast<uint32_t>(pvThreads->size()), pWork);
|
||||
pvThreads->insert(std::end(*pvThreads), std::begin(*amdThreads), std::end(*amdThreads));
|
||||
if(amdThreads->size() == 0)
|
||||
|
||||
+6
-6
@@ -27,14 +27,14 @@ struct Plugin
|
||||
{
|
||||
#ifdef WIN32
|
||||
libBackend = LoadLibrary(TEXT((libName + ".dll").c_str()));
|
||||
if (!libBackend)
|
||||
if(!libBackend)
|
||||
{
|
||||
std::cerr << "WARNING: "<< m_backendName <<" cannot load backend library: " << (libName + ".dll") << std::endl;
|
||||
return;
|
||||
}
|
||||
#else
|
||||
libBackend = dlopen((libName + ".so").c_str(), RTLD_LAZY);
|
||||
if (!libBackend)
|
||||
libBackend = dlopen((std::string("lib") + libName + ".so").c_str(), RTLD_LAZY);
|
||||
if(!libBackend)
|
||||
{
|
||||
std::cerr << "WARNING: "<< m_backendName <<" cannot load backend library: " << dlerror() << std::endl;
|
||||
return;
|
||||
@@ -45,16 +45,16 @@ struct Plugin
|
||||
fn_starterBackend = (starterBackend_t) GetProcAddress(libBackend, "xmrstak_start_backend");
|
||||
if (!fn_starterBackend)
|
||||
{
|
||||
std::cerr << "WARNING: backend plugin " << libName << " contains no entry 'xmrstak_start_backend'" << std::endl;
|
||||
std::cerr << "WARNING: backend plugin " << libName << " contains no entry 'xmrstak_start_backend': " <<GetLastError()<< std::endl;
|
||||
}
|
||||
#else
|
||||
// reset last error
|
||||
dlerror();
|
||||
fn_starterBackend = (starterBackend_t) dlsym(libBackend, "xmrstak_start_backend");
|
||||
const char* dlsym_error = dlerror();
|
||||
if (dlsym_error)
|
||||
if(dlsym_error)
|
||||
{
|
||||
std::cerr << "WARNING: backend plugin " << libName << " contains no entry 'xmrstak_start_backend'" << std::endl;
|
||||
std::cerr << "WARNING: backend plugin " << libName << " contains no entry 'xmrstak_start_backend': " << dlsym_error << std::endl;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -60,11 +60,15 @@ minethd::minethd(miner_work& pWork, size_t iNo, GpuContext* ctx)
|
||||
oWorkThd = std::thread(&minethd::work_main, this);
|
||||
}
|
||||
|
||||
extern "C" std::vector<IBackend*>* xmrstak_start_backend(uint32_t threadOffset, miner_work& pWork)
|
||||
extern "C" {
|
||||
#ifdef WIN32
|
||||
__declspec(dllexport)
|
||||
#endif
|
||||
std::vector<IBackend*>* xmrstak_start_backend(uint32_t threadOffset, miner_work& pWork)
|
||||
{
|
||||
return amd::minethd::thread_starter(threadOffset, pWork);
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
bool minethd::init_gpus()
|
||||
{
|
||||
|
||||
@@ -61,7 +61,7 @@ public:
|
||||
#endif
|
||||
if( cuda_get_deviceinfo(&ctx) != 1 )
|
||||
{
|
||||
printer::inst()->print_msg(L0, "Setup failed for GPU %d. Exitting.\n", cfg.id);
|
||||
printer::inst()->print_msg(L0, "Setup failed for GPU %d. Exitting.\n", i);
|
||||
std::exit(0);
|
||||
}
|
||||
nvidCtxVec.push_back(ctx);
|
||||
|
||||
@@ -105,10 +105,16 @@ bool minethd::self_test()
|
||||
}
|
||||
|
||||
|
||||
extern "C" std::vector<IBackend*>* xmrstak_start_backend(uint32_t threadOffset, miner_work& pWork)
|
||||
extern "C"
|
||||
{
|
||||
#ifdef WIN32
|
||||
__declspec(dllexport)
|
||||
#endif
|
||||
std::vector<IBackend*>* xmrstak_start_backend(uint32_t threadOffset, miner_work& pWork)
|
||||
{
|
||||
return nvidia::minethd::thread_starter(threadOffset, pWork);
|
||||
}
|
||||
} // extern "C"
|
||||
|
||||
std::vector<IBackend*>* minethd::thread_starter(uint32_t threadOffset, miner_work& pWork)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user