From b4df8d43e86c114ea35646459d6ec3c071a8c662 Mon Sep 17 00:00:00 2001 From: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com> Date: Tue, 21 Apr 2015 11:53:10 -0400 Subject: [PATCH] Win32 Portablity patch Win32 Portablity patch --- CMakeLists.txt | 7 ++++++- cmake/FindRing.cmake | 3 +++ cmake/winBuild.cmake | 10 ++++++++++ src/accountstatusmodel.cpp | 18 ++++++++++++++++++ src/collectionmanagerinterface.h | 2 +- src/qtwrapper/instancemanager.cpp | 4 ++-- src/qtwrapper/instancemanager_wrap.h | 3 ++- 7 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 cmake/winBuild.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index cd3fae90..fb10f4e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,10 @@ IF(POLICY CMP0043) CMAKE_POLICY(SET CMP0043 NEW) ENDIF(POLICY CMP0043) +IF(POLICY CMP0020) + CMAKE_POLICY(SET CMP0020 NEW) +ENDIF(POLICY CMP0020) + # First, check is the compiler is new enough, most version of Clang are fine # until problems arise, checking for GCC is enough IF (CMAKE_COMPILER_IS_GNUCC) @@ -504,7 +508,7 @@ IF(NOT ${ENABLE_STATIC} MATCHES false) ) ENDIF() -QT5_USE_MODULES(ringclient Core) +QT5_USE_MODULES(ringclient Core Concurrent) IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") QT5_USE_MODULES(ringclient DBus) @@ -579,6 +583,7 @@ STRING(REPLACE "${CMAKE_LIBRARY_ARCHITECTURE}" "" SANE_LIBRARY_PATH "${CMAKE_INS INSTALL( TARGETS ringclient ARCHIVE DESTINATION ${SANE_LIBRARY_PATH} + RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin LIBRARY DESTINATION ${SANE_LIBRARY_PATH} DESTINATION ${SANE_LIBRARY_PATH} ) diff --git a/cmake/FindRing.cmake b/cmake/FindRing.cmake index 86760349..713df9a2 100644 --- a/cmake/FindRing.cmake +++ b/cmake/FindRing.cmake @@ -20,6 +20,7 @@ FIND_LIBRARY(ring_BIN NAMES ring PATHS ${RING_BUILD_DIR}/.libs PATHS ${CMAKE_INSTALL_PREFIX}/lib PATHS ${CMAKE_INSTALL_PREFIX}/libexec + PATHS ${CMAKE_INSTALL_PREFIX}/bin ) # Try a static version too @@ -32,7 +33,9 @@ IF(${ring_BIN} MATCHES "") PATHS ${CMAKE_INSTALL_PREFIX}/libexec ) +IF(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows") ADD_DEFINITIONS(-fPIC) +ENDIF() ENDIF() diff --git a/cmake/winBuild.cmake b/cmake/winBuild.cmake new file mode 100644 index 00000000..3b2bf73a --- /dev/null +++ b/cmake/winBuild.cmake @@ -0,0 +1,10 @@ +# this one is important +SET(CMAKE_SYSTEM_NAME Windows) + +# specify the cross compiler +SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) +SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) +SET(CMAKE_ASM_YASM_COMPILER yasm) +SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32/) +set(LIB_FLAGS "-Wl,--output-def,libringclient.def") \ No newline at end of file diff --git a/src/accountstatusmodel.cpp b/src/accountstatusmodel.cpp index be13ab4b..c7d8c748 100644 --- a/src/accountstatusmodel.cpp +++ b/src/accountstatusmodel.cpp @@ -20,6 +20,24 @@ //System #include <errno.h> +#ifdef _WIN32 +#include <winerror.h> +#define ESHUTDOWN WSAESHUTDOWN +#define ENODATA WSANO_DATA +#define ETIME WSAETIMEDOUT +#define EPFNOSUPPORT WSAEPROTONOSUPPORT +#define EHOSTDOWN WSAEHOSTDOWN +#define ESTALE WSAESTALE +#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT +#define ETOOMANYREFS WSAETOOMANYREFS +#define EUSERS WSAEUSERS +#define EBADMSG 9905 +#define ENOLINK 9918 +#define ENOSR 9922 +#define ENOSTR 9924 +#define EMULTIHOP 2004 +#endif + //Qt #include <QtCore/QCoreApplication> #include <QtCore/QDateTime> diff --git a/src/collectionmanagerinterface.h b/src/collectionmanagerinterface.h index 78bc5fc3..8920c56f 100644 --- a/src/collectionmanagerinterface.h +++ b/src/collectionmanagerinterface.h @@ -46,7 +46,7 @@ class CollectionConfigurationInterface; /** * Common elements for each CollectionManagerInterface */ -class CollectionManagerInterfaceBase { +class LIB_EXPORT CollectionManagerInterfaceBase { public: virtual bool hasEnabledCollections (CollectionInterface::SupportedFeatures features = CollectionInterface::SupportedFeatures::NONE) const = 0; virtual bool hasCollections (CollectionInterface::SupportedFeatures features = CollectionInterface::SupportedFeatures::NONE) const = 0; diff --git a/src/qtwrapper/instancemanager.cpp b/src/qtwrapper/instancemanager.cpp index 486a4725..1f03a389 100644 --- a/src/qtwrapper/instancemanager.cpp +++ b/src/qtwrapper/instancemanager.cpp @@ -45,7 +45,7 @@ InstanceInterface::InstanceInterface() : m_pTimer(nullptr) m_pTimer = new QTimer(this); m_pTimer->setInterval(50); - connect(m_pTimer,&QTimer::timeout,this,&pollEvents); + connect(m_pTimer,SIGNAL(timeout()),this,SLOT(pollEvents())); m_pTimer->start(); ringFlags |= DRing::DRING_FLAG_DEBUG; ringFlags |= DRing::DRING_FLAG_CONSOLE_LOG; @@ -70,7 +70,7 @@ InstanceInterface::~InstanceInterface() } -void pollEvents() +void InstanceInterface::pollEvents() { DRing::pollEvents(); } diff --git a/src/qtwrapper/instancemanager_wrap.h b/src/qtwrapper/instancemanager_wrap.h index 792833cb..df7820f4 100644 --- a/src/qtwrapper/instancemanager_wrap.h +++ b/src/qtwrapper/instancemanager_wrap.h @@ -40,7 +40,6 @@ class InstanceInterface: public QObject Q_OBJECT public: InstanceInterface(); - ~InstanceInterface(); // TODO: These are not present in dring.h @@ -59,6 +58,8 @@ public Q_SLOTS: // METHODS bool isConnected(); + void pollEvents(); + private: QTimer* m_pTimer; -- GitLab