From cd29942ef0fd85c0f971e7f38a9077c3ed762e17 Mon Sep 17 00:00:00 2001 From: rnv Date: Wed, 29 Aug 2018 14:48:12 +0300 Subject: [PATCH] SALOME 9.1.0 Windows version --- src/bases/DynLibLoaderWin.cxx | 11 ++++++++++- src/engine/ComplexWeight.cxx | 7 ++++++- src/engine/ComplexWeight.hxx | 13 +++++++++++-- src/engine/ForEachLoop.cxx | 4 ++++ src/engine/LinkedBlocPoint.cxx | 5 +++++ src/engine/PlayGround.hxx | 4 ++-- src/engine_swig/CMakeLists.txt | 13 +++++++++++-- src/evalyfx_swig/CMakeLists.txt | 6 +++++- src/pmml/pmml_swig/CMakeLists.txt | 8 +++++++- src/runtime/CppContainer.cxx | 10 +++++++++- src/runtime/SalomeHPContainer.cxx | 4 ++-- src/runtime/XMLNode.cxx | 6 +++++- src/runtime_swig/CMakeLists.txt | 7 ++++++- src/salomegui_swig/CMakeLists.txt | 6 +++++- src/yacsloader_swig/CMakeLists.txt | 7 ++++++- src/ydfx_gui/YDFXResourceModel.cxx | 2 +- 16 files changed, 95 insertions(+), 18 deletions(-) diff --git a/src/bases/DynLibLoaderWin.cxx b/src/bases/DynLibLoaderWin.cxx index 9c10a8238..2b80e8e0e 100644 --- a/src/bases/DynLibLoaderWin.cxx +++ b/src/bases/DynLibLoaderWin.cxx @@ -86,7 +86,16 @@ bool DynLibLoaderWin::load() { std::string fullLibName(_libName); fullLibName+=_extForDynLib; - _handleOnLoadedLib=LoadLibrary(fullLibName.c_str()); +#if defined(UNICODE) && defined(WIN32) + size_t length = strlen(fullLibName.c_str()) + sizeof(char); + wchar_t* aPath = new wchar_t[length + 1]; + memset(aPath, '\0', length); + mbstowcs(aPath, fullLibName.c_str(), length); +#else + const char* aPath = fullLibName.c_str(); +#endif + + _handleOnLoadedLib=LoadLibrary(aPath); return _handleOnLoadedLib != NULL; } diff --git a/src/engine/ComplexWeight.cxx b/src/engine/ComplexWeight.cxx index a55f454a2..f85f1a7d1 100644 --- a/src/engine/ComplexWeight.cxx +++ b/src/engine/ComplexWeight.cxx @@ -17,12 +17,17 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + #include "ComplexWeight.hxx" #include "Exception.hxx" using namespace YACS::ENGINE; +#ifdef WIN32 +#include +#endif + ComplexWeight::ComplexWeight() { setToZero(); @@ -104,7 +109,7 @@ void ComplexWeight::max(ComplexWeight &other) _loopWeight=other._loopWeight; } -ComplexWeight& ComplexWeight::addWeight(const ComplexWeight *other) +void ComplexWeight::addWeight(const ComplexWeight *other) { bool found; if ((!_bootWeight) && ((other->isUnsetLoopWeight() && this->isDefaultValueLoop()) || (this->isUnsetLoopWeight() && other->isDefaultValueLoop()))) diff --git a/src/engine/ComplexWeight.hxx b/src/engine/ComplexWeight.hxx index e8bb55c32..0674ea552 100644 --- a/src/engine/ComplexWeight.hxx +++ b/src/engine/ComplexWeight.hxx @@ -20,13 +20,22 @@ #ifndef __COMPLEXWEIGHT_HXX__ #define __COMPLEXWEIGHT_HXX__ +#include "YACSlibEngineExport.hxx" + #include +#ifdef WIN32 +#ifdef max +#undef max +#endif +#endif + + namespace YACS { namespace ENGINE { - class ComplexWeight + class YACSLIBENGINE_EXPORT ComplexWeight { public: ComplexWeight(); @@ -49,7 +58,7 @@ namespace YACS void setToZero() {_bootWeight=true; unsetElementary(); unsetLoop(); } int getNbCoresConsoLoopMax() const; void max(ComplexWeight &other); - ComplexWeight& addWeight(const ComplexWeight *other); + void addWeight(const ComplexWeight *other); protected: bool _bootWeight; // _loopWeight: vect, for first element of vector: nbcorePerIteration<0 -> unset, nbcorePerIteration==0 -> no loopweight (means no loop inside) diff --git a/src/engine/ForEachLoop.cxx b/src/engine/ForEachLoop.cxx index 838bfb338..f417ab6e7 100644 --- a/src/engine/ForEachLoop.cxx +++ b/src/engine/ForEachLoop.cxx @@ -32,6 +32,10 @@ //#define _DEVDEBUG_ #include "YacsTrace.hxx" +#ifdef WIN32 +#include +#endif + using namespace YACS::ENGINE; using namespace std; diff --git a/src/engine/LinkedBlocPoint.cxx b/src/engine/LinkedBlocPoint.cxx index e9c32e8f5..93015ff2d 100644 --- a/src/engine/LinkedBlocPoint.cxx +++ b/src/engine/LinkedBlocPoint.cxx @@ -21,6 +21,11 @@ #include "PointVisitor.hxx" #include "Exception.hxx" +#ifdef WIN32 +#include +#endif + + using namespace YACS::ENGINE; LinkedBlocPoint::LinkedBlocPoint(const std::list& nodes, AbstractPoint *father):BlocPoint(nodes,father) diff --git a/src/engine/PlayGround.hxx b/src/engine/PlayGround.hxx index cd688aff8..964978d2b 100644 --- a/src/engine/PlayGround.hxx +++ b/src/engine/PlayGround.hxx @@ -126,7 +126,7 @@ namespace YACS std::vector _ids; }; - class AllPartDefinition : public PartDefinition + class YACSLIBENGINE_EXPORT AllPartDefinition : public PartDefinition { public: AllPartDefinition(const PlayGround *pg):PartDefinition(pg) { } @@ -139,7 +139,7 @@ namespace YACS ~AllPartDefinition() { } }; - class ForTestOmlyHPContCls + class YACSLIBENGINE_EXPORT ForTestOmlyHPContCls { public: diff --git a/src/engine_swig/CMakeLists.txt b/src/engine_swig/CMakeLists.txt index 320824aa6..1243ca28b 100644 --- a/src/engine_swig/CMakeLists.txt +++ b/src/engine_swig/CMakeLists.txt @@ -110,14 +110,23 @@ SET(SWIGINCLUDES ${ENGINEINCL} "IteratorPy3.hxx") SET(SWIG_MODULE_pilot_EXTRA_DEPS engtypemaps.i ${SWIGINCLUDES}) -SWIG_ADD_MODULE(pilot python pilot.i ExecutorSwig.cxx) +IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") + SWIG_ADD_MODULE(pilot python pilot.i ExecutorSwig.cxx) +ELSE() + SWIG_ADD_LIBRARY(pilot LANGUAGE python SOURCES pilot.i ExecutorSwig.cxx) +ENDIF() SWIG_CHECK_GENERATION(pilot) SET(SWIG_MODULE_pypilot_EXTRA_DEPS pilot.i engtypemaps.i _pilot ${SWIGINCLUDES}) -SWIG_ADD_MODULE(pypilot python pypilot.i) +IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") + SWIG_ADD_MODULE(pypilot python pypilot.i) +ELSE() + SWIG_ADD_LIBRARY(pypilot LANGUAGE python SOURCES pypilot.i) +ENDIF() SWIG_LINK_LIBRARIES(pilot "${_link_LIBRARIES}") SWIG_LINK_LIBRARIES(pypilot "${_link_LIBRARIES}") + IF(WIN32) SET_TARGET_PROPERTIES(_pilot PROPERTIES DEBUG_OUTPUT_NAME _pilot_d) SET_TARGET_PROPERTIES(_pypilot PROPERTIES DEBUG_OUTPUT_NAME _pypilot_d) diff --git a/src/evalyfx_swig/CMakeLists.txt b/src/evalyfx_swig/CMakeLists.txt index 3fd056879..aa5281aa0 100644 --- a/src/evalyfx_swig/CMakeLists.txt +++ b/src/evalyfx_swig/CMakeLists.txt @@ -52,7 +52,11 @@ SET(_link_LIBRARIES SET(_swig_SCRIPTS ${CMAKE_CURRENT_BINARY_DIR}/evalyfx.py) -SWIG_ADD_MODULE(evalyfx python evalyfx.i) +IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") + SWIG_ADD_MODULE(evalyfx python evalyfx.i) +ELSE() + SWIG_ADD_LIBRARY(evalyfx LANGUAGE python SOURCES evalyfx.i) +ENDIF() SWIG_LINK_LIBRARIES(evalyfx ${_link_LIBRARIES}) SWIG_CHECK_GENERATION(evalyfx) diff --git a/src/pmml/pmml_swig/CMakeLists.txt b/src/pmml/pmml_swig/CMakeLists.txt index b2c972765..837d9c592 100755 --- a/src/pmml/pmml_swig/CMakeLists.txt +++ b/src/pmml/pmml_swig/CMakeLists.txt @@ -47,7 +47,13 @@ SET (SWIG_MODULE_PMML_EXTRA_DEPS ${PMML_SWIG_DPYS_FILES} # Enusre proper dependencies mechanism for CMake since SWIG generates files # whose names are built from the SWIG *module* name, and not .i file name: SET_SOURCE_FILES_PROPERTIES(PMMLsalome.i PROPERTIES SWIG_MODULE_NAME PMML) -SWIG_ADD_MODULE(PMML python PMMLsalome.i) + +IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") + SWIG_ADD_MODULE(PMML python PMMLsalome.i) +ELSE() + SWIG_ADD_LIBRARY(PMML LANGUAGE python SOURCES PMMLsalome.i) +ENDIF() + SWIG_LINK_LIBRARIES(PMML ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} pmmlLib) SWIG_CHECK_GENERATION(PMML) # _ABR_ Ensure dependency mechanism on all SWIG files and headers diff --git a/src/runtime/CppContainer.cxx b/src/runtime/CppContainer.cxx index 0f2b8fceb..0224e9c47 100644 --- a/src/runtime/CppContainer.cxx +++ b/src/runtime/CppContainer.cxx @@ -339,7 +339,15 @@ LocalLibrary LocalContainer::loadComponentLibrary(const std::string & aCompName #if defined( WIN32 ) HMODULE handle; - handle = dlopen( impl_name.c_str() ) ; +#if defined(UNICODE) + size_t length = strlen(impl_name.c_str()) + sizeof(char); + wchar_t* aPath = new wchar_t[length + 1]; + memset(aPath, '\0', length); + mbstowcs(aPath, impl_name.c_str(), length); +#else + const char* aPath = fullLibName.c_str(); +#endif + handle = dlopen( aPath ) ; #else void* handle; handle = dlopen( impl_name.c_str() , RTLD_LAZY ) ; diff --git a/src/runtime/SalomeHPContainer.cxx b/src/runtime/SalomeHPContainer.cxx index b198882db..0e695063a 100644 --- a/src/runtime/SalomeHPContainer.cxx +++ b/src/runtime/SalomeHPContainer.cxx @@ -256,7 +256,7 @@ std::string SalomeHPContainer::getDiscreminantStrOfThis(const Task *askingNode) return tmpCont->getDiscreminantStrOfThis(askingNode); } -void SalomeHPContainer::start(const Task *askingNode) throw(Exception) +void SalomeHPContainer::start(const Task *askingNode) throw(YACS::Exception) { startInternal(askingNode,_sct,_componentNames); } @@ -344,7 +344,7 @@ std::string SalomeHPContainerShared::getDiscreminantStrOfThis(const Task *asking return getTheBoss()->getDiscreminantStrOfThis(askingNode); } -void SalomeHPContainerShared::start(const Task *askingNode) throw(Exception) +void SalomeHPContainerShared::start(const Task *askingNode) throw(YACS::Exception) { SalomeContainerToolsSpreadOverTheResDecorator sct(&getTheBoss()->getContainerInfo(),_pd->getPlayGround(),_launchModeType,askingNode); startInternal(askingNode,sct,getTheBoss()->getComponentNames()); diff --git a/src/runtime/XMLNode.cxx b/src/runtime/XMLNode.cxx index 856df28e4..0c02ddfeb 100644 --- a/src/runtime/XMLNode.cxx +++ b/src/runtime/XMLNode.cxx @@ -98,7 +98,11 @@ void XmlNode::execute() { YACS::BASES::AutoLocker alck(&MUTEX); #ifdef WIN32 - char mdir [512+1]; +#ifdef UNICODE +wchar_t mdir[512 + 1]; +#else + char mdir[512 + 1]; +#endif GetTempPath(MAX_PATH+1, mdir); CreateDirectory(mdir, NULL); #else diff --git a/src/runtime_swig/CMakeLists.txt b/src/runtime_swig/CMakeLists.txt index c5d9f59cf..c1887f629 100644 --- a/src/runtime_swig/CMakeLists.txt +++ b/src/runtime_swig/CMakeLists.txt @@ -99,7 +99,12 @@ SET(SWIG_MODULE_SALOMERuntime_EXTRA_DEPS ${PROJECT_SOURCE_DIR}/src/engine_swig/pilot.i ${PROJECT_SOURCE_DIR}/src/engine_swig/engtypemaps.i ${SWIGINCLUDES}) -SWIG_ADD_MODULE(SALOMERuntime python SALOMERuntime.i) + +IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") + SWIG_ADD_MODULE(SALOMERuntime python SALOMERuntime.i) +ELSE() + SWIG_ADD_LIBRARY(SALOMERuntime LANGUAGE python SOURCES SALOMERuntime.i) +ENDIF() SWIG_LINK_LIBRARIES(SALOMERuntime ${_link_LIBRARIES}) SWIG_CHECK_GENERATION(SALOMERuntime) diff --git a/src/salomegui_swig/CMakeLists.txt b/src/salomegui_swig/CMakeLists.txt index 9d1255437..e2235d0ca 100644 --- a/src/salomegui_swig/CMakeLists.txt +++ b/src/salomegui_swig/CMakeLists.txt @@ -87,7 +87,11 @@ TARGET_LINK_LIBRARIES(YACS_Swig ${_link_LIBRARIES}) INSTALL(TARGETS YACS_Swig EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) SET(SWIG_MODULE_libYACS_Swig_EXTRA_DEPS YACSGUI_Swig.hxx) -SWIG_ADD_MODULE(libYACS_Swig python libYACS_Swig.i YACSGUI_Swig.cxx) +IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") + SWIG_ADD_MODULE(libYACS_Swig python libYACS_Swig.i YACSGUI_Swig.cxx) +ELSE() + SWIG_ADD_LIBRARY(libYACS_Swig LANGUAGE python SOURCES libYACS_Swig.i YACSGUI_Swig.cxx) +ENDIF() SWIG_LINK_LIBRARIES(libYACS_Swig "${_link_LIBRARIES}") SWIG_CHECK_GENERATION(libYACS_Swig) diff --git a/src/yacsloader_swig/CMakeLists.txt b/src/yacsloader_swig/CMakeLists.txt index ec7048e51..78555077b 100644 --- a/src/yacsloader_swig/CMakeLists.txt +++ b/src/yacsloader_swig/CMakeLists.txt @@ -89,7 +89,12 @@ SET(SWIG_MODULE_loader_EXTRA_DEPS ${PROJECT_SOURCE_DIR}/src/engine_swig/pilot.i ${PROJECT_SOURCE_DIR}/src/engine_swig/engtypemaps.i ${SWIGINCLUDES}) -SWIG_ADD_MODULE(loader python loader.i) + +IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") + SWIG_ADD_MODULE(loader python loader.i) +ELSE() + SWIG_ADD_LIBRARY(loader LANGUAGE python SOURCES loader.i) +ENDIF() SWIG_LINK_LIBRARIES(loader ${_link_LIBRARIES}) SWIG_CHECK_GENERATION(loader) diff --git a/src/ydfx_gui/YDFXResourceModel.cxx b/src/ydfx_gui/YDFXResourceModel.cxx index 4ac1ef37c..a58b8d3e1 100644 --- a/src/ydfx_gui/YDFXResourceModel.cxx +++ b/src/ydfx_gui/YDFXResourceModel.cxx @@ -139,7 +139,7 @@ std::string YDFXResourceModel::getWantedMachine()const wantedMachine = fittingMachines[0]; } } - + return wantedMachine; } void YDFXResourceModel::setWantedMachine(const std::string& v) -- 2.39.2