Commit b880d34f authored by Ian Craggs's avatar Ian Craggs

Windows CMake build additions and corrections

parent 526ffc18
......@@ -19,6 +19,7 @@
PROJECT("paho" C)
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
MESSAGE(STATUS "CMake version: " ${CMAKE_VERSION})
MESSAGE(STATUS "CMake system name: " ${CMAKE_SYSTEM_NAME})
## build settings
SET(PAHO_VERSION_MAJOR 1)
......
setlocal
mkdir build.paho
cd build.paho
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
cmake -G "NMake Makefiles" -DPAHO_WITH_SSL=FALSE -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=TRUE ..
nmake
cd ..
endlocal
......@@ -28,6 +28,10 @@ CONFIGURE_FILE(VersionInfo.h.in
@ONLY
)
IF (WIN32)
ADD_DEFINITIONS(/DCMAKE_BUILD /D_CRT_SECURE_NO_DEPRECATE)
ENDIF()
IF (PAHO_WITH_SSL)
SET(OPENSSL_LIB_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL libraries")
SET(OPENSSL_INC_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL includes")
......@@ -95,7 +99,12 @@ SET_PROPERTY(TARGET common_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET_PROPERTY(TARGET common_obj PROPERTY
COMPILE_DEFINITIONS "OSX=1")
ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
ENDIF ()
## IF (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
## MESSAGE(STATUS "Setting secure_no_warnings")
## SET_PROPERTY(TARGET common_obj PROPERTY
## COMPILE_DEFINITIONS "_CRT_SECURE_NO_DEPRECATE")
## ENDIF ()
ADD_EXECUTABLE(MQTTVersion MQTTVersion.c)
......@@ -165,9 +174,11 @@ IF (PAHO_WITH_SSL)
SET_PROPERTY(TARGET common_ssl_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;OSX=1")
ELSE (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
ELSIF (WIN32)
SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;_CRT_SECURE_NO_WARNINGS")
ELSE ()
SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1")
ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
ENDIF ()
ADD_LIBRARY(paho-mqtt3cs SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTClient.c SSLSocket.c)
ADD_LIBRARY(paho-mqtt3as SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTAsync.c SSLSocket.c)
......
......@@ -106,7 +106,7 @@ int Socket_error(char* aString, int sock)
if (errno != EINTR && errno != EAGAIN && errno != EINPROGRESS && errno != EWOULDBLOCK)
{
if (strcmp(aString, "shutdown") != 0 || (errno != ENOTCONN && errno != ECONNRESET))
Log(TRACE_MINIMUM, -1, "Socket error %s in %s for socket %d", strerror(errno), aString, sock);
Log(TRACE_MINIMUM, -1, "Socket error %s(%d) in %s for socket %d", strerror(errno), errno, aString, sock);
}
FUNC_EXIT_RC(errno);
return errno;
......@@ -828,7 +828,7 @@ char* Socket_getaddrname(struct sockaddr* sa, int sock)
#if defined(WIN32) || defined(WIN64)
int buflen = ADDRLEN*2;
wchar_t buf[ADDRLEN*2];
if (WSAAddressToString(sa, sizeof(struct sockaddr_in6), NULL, buf, (LPDWORD)&buflen) == SOCKET_ERROR)
if (WSAAddressToStringW(sa, sizeof(struct sockaddr_in6), NULL, buf, (LPDWORD)&buflen) == SOCKET_ERROR)
Socket_error("WSAAddressToString", sock);
else
wcstombs(addr_string, buf, sizeof(addr_string));
......@@ -874,4 +874,3 @@ int main(int argc, char *argv[])
}
#endif
......@@ -25,12 +25,19 @@
#include <ws2tcpip.h>
#define MAXHOSTNAMELEN 256
#if !defined(SSLSOCKET_H)
#undef EAGAIN
#define EAGAIN WSAEWOULDBLOCK
#undef EINTR
#define EINTR WSAEINTR
#undef EINPROGRESS
#define EINPROGRESS WSAEINPROGRESS
#undef EWOULDBLOCK
#define EWOULDBLOCK WSAEWOULDBLOCK
#undef ENOTCONN
#define ENOTCONN WSAENOTCONN
#undef ECONNRESET
#define ECONNRESET WSAECONNRESET
#undef ETIMEDOUT
#define ETIMEDOUT WAIT_TIMEOUT
#endif
#define ioctl ioctlsocket
......
......@@ -90,6 +90,8 @@ mutex_type Thread_create_mutex(void)
FUNC_ENTRY;
#if defined(WIN32) || defined(WIN64)
mutex = CreateMutex(NULL, 0, NULL);
if (mutex == NULL)
rc = GetLastError();
#else
mutex = malloc(sizeof(pthread_mutex_t));
rc = pthread_mutex_init(mutex, NULL);
......@@ -100,8 +102,7 @@ mutex_type Thread_create_mutex(void)
/**
* Lock a mutex which has already been created, block until ready
* @param mutex the mutex
* Lock a mutex which has alrea
* @return completion code, 0 is success
*/
int Thread_lock_mutex(mutex_type mutex)
......
......@@ -24,6 +24,10 @@ INCLUDE_DIRECTORIES(
${CMAKE_BINARY_DIR}
)
IF (WIN32)
ADD_DEFINITIONS(/DCMAKE_BUILD /D_CRT_SECURE_NO_DEPRECATE)
ENDIF()
# sample files c
ADD_EXECUTABLE(paho_c_pub paho_c_pub.c)
ADD_EXECUTABLE(paho_c_sub paho_c_sub.c)
......
......@@ -81,7 +81,7 @@ int main(int argc, char* argv[])
exit(EXIT_FAILURE);
}
pubmsg.payload = PAYLOAD;
pubmsg.payloadlen = strlen(PAYLOAD);
pubmsg.payloadlen = (int)strlen(PAYLOAD);
pubmsg.qos = QOS;
pubmsg.retained = 0;
deliveredtoken = 0;
......@@ -94,4 +94,3 @@ int main(int argc, char* argv[])
MQTTClient_destroy(&client);
return rc;
}
......@@ -135,7 +135,6 @@ void onConnectFailure(void* context, MQTTAsync_failureData* response)
void onConnect(void* context, MQTTAsync_successData* response)
{
MQTTAsync client = (MQTTAsync)context;
int rc;
printf("Connected\n");
connected = 1;
......@@ -250,7 +249,7 @@ int main(int argc, char** argv)
int data_len = 0;
int delim_len = 0;
delim_len = strlen(opts.delimiter);
delim_len = (int)strlen(opts.delimiter);
do
{
buffer[data_len++] = getchar();
......@@ -382,4 +381,3 @@ void getopts(int argc, char** argv)
}
}
......@@ -162,7 +162,7 @@ int main(int argc, char** argv)
int data_len = 0;
int delim_len = 0;
delim_len = strlen(opts.delimiter);
delim_len = (int)strlen(opts.delimiter);
do
{
buffer[data_len++] = getchar();
......@@ -276,4 +276,3 @@ void getopts(int argc, char** argv)
}
}
......@@ -6,7 +6,7 @@ SET(MQTT_SSL_HOSTNAME "localhost" CACHE STRING "Hostname of a test SSL MQTT brok
SET(CERTDIR $ENV{TRAVIS_BUILD_DIR}/test/ssl )
IF (WIN32)
ADD_DEFINITIONS(/DCMAKE_BUILD)
ADD_DEFINITIONS(/DCMAKE_BUILD /D_CRT_SECURE_NO_WARNINGS)
ENDIF()
......@@ -313,5 +313,3 @@ ADD_TEST(
NAME test9-5-offline-buffering-max-buffered
COMMAND test9 "--test_no" "5" "--connection" ${MQTT_TEST_BROKER} "--proxy_connection" ${MQTT_TEST_PROXY}
)
......@@ -39,16 +39,8 @@
#include <unistd.h>
#include <errno.h>
#else
#include <winsock2.h>
#include <ws2tcpip.h>
#define MAXHOSTNAMELEN 256
#define EAGAIN WSAEWOULDBLOCK
#define EINTR WSAEINTR
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ENOTCONN WSAENOTCONN
#define ECONNRESET WSAECONNRESET
#define setenv(a, b, c) _putenv_s(a, b)
#include <windows.h>
#define setenv(a, b, c) _putenv_s(a, b)
#endif
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
......@@ -1011,7 +1003,7 @@ int test6(struct Options options)
assert("Good rc from subscribe", rc == MQTTCLIENT_SUCCESS, "rc was %d\n", rc);
/* now send the command which will break the connection and cause the will message to be sent */
rc = MQTTClient_publish(test6_c1, mqttsas_topic, strlen("TERMINATE"), "TERMINATE", 0, 0, NULL);
rc = MQTTClient_publish(test6_c1, mqttsas_topic, (int)strlen("TERMINATE"), "TERMINATE", 0, 0, NULL);
assert("Good rc from publish", rc == MQTTCLIENT_SUCCESS, "rc was %d\n", rc);
MyLog(LOGA_INFO, "Waiting to receive the will message");
......
......@@ -32,24 +32,8 @@
#include <errno.h>
#define WINAPI
#else
#define WIN32_LEAN_AND_MEAN
#if !defined(CMAKE_BUILD)
/*
* These causes the cmake build to fail. In order to prevent affecting
* other builds, remove them only from CMAKE-related builds
*/
#include <winsock2.h>
#include <ws2tcpip.h>
#endif // CMAKE_BUILD
#define MAXHOSTNAMELEN 256
#define EAGAIN WSAEWOULDBLOCK
#define EINTR WSAEINTR
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ENOTCONN WSAENOTCONN
#define ECONNRESET WSAECONNRESET
#define setenv(a, b, c) _putenv_s(a, b)
#include <windows.h>
#define setenv(a, b, c) _putenv_s(a, b)
#endif
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
......
......@@ -30,15 +30,8 @@
#include <unistd.h>
#include <errno.h>
#else
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#define MAXHOSTNAMELEN 256
#define EAGAIN WSAEWOULDBLOCK
#define EINTR WSAEINTR
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ENOTCONN WSAENOTCONN
#define ECONNRESET WSAECONNRESET
#define snprintf _snprintf
#define setenv(a, b, c) _putenv_s(a, b)
#endif
......
......@@ -33,15 +33,7 @@
#include <unistd.h>
#include <errno.h>
#else
#include <winsock2.h>
#include <ws2tcpip.h>
#define MAXHOSTNAMELEN 256
#define EAGAIN WSAEWOULDBLOCK
#define EINTR WSAEINTR
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ENOTCONN WSAENOTCONN
#define ECONNRESET WSAECONNRESET
#include <windows.h>
#endif
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
......
......@@ -37,15 +37,8 @@
#include <unistd.h>
#include <errno.h>
#else
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#define MAXHOSTNAMELEN 256
#define EAGAIN WSAEWOULDBLOCK
#define EINTR WSAEINTR
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ENOTCONN WSAENOTCONN
#define ECONNRESET WSAECONNRESET
#define snprintf _snprintf
#endif
......@@ -2071,4 +2064,3 @@ int main(int argc, char** argv)
return rc;
}
......@@ -35,7 +35,7 @@
#include <unistd.h>
#include <signal.h>
#else
#include <winsock2.h>
#include <windows.h>
#endif
void usage(void)
......@@ -332,7 +332,7 @@ int control_send(char* message)
MQTTAsync_responseOptions ropts = MQTTAsync_responseOptions_initializer;
sprintf(buf, "%s: %s", opts.clientid, message);
rc = MQTTAsync_send(control_client, pub_topic, strlen(buf),
rc = MQTTAsync_send(control_client, pub_topic, (int)strlen(buf),
buf, 1, 0, &ropts);
MyLog(LOGA_DEBUG, "Control message sent: %s", buf);
......@@ -636,7 +636,7 @@ void one_iteration(void)
sprintf(payload, "message number %d", i);
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
rc = MQTTAsync_send(client, opts.topic, (int)(strlen(payload)+1), payload,
opts.qos, opts.retained, NULL);
while (rc != MQTTASYNC_SUCCESS)
{
......@@ -645,7 +645,7 @@ void one_iteration(void)
if (stopping)
goto exit;
mqsleep(1);
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
rc = MQTTAsync_send(client, opts.topic, (int)(strlen(payload)+1), payload,
opts.qos, opts.retained, NULL);
}
}
......@@ -687,7 +687,7 @@ void one_iteration(void)
ropts.onSuccess = messageSent;
seqno++;
sprintf(payload, "message number %d", seqno);
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
rc = MQTTAsync_send(client, opts.topic, (int)(strlen(payload)+1), payload,
opts.qos, opts.retained, &ropts);
while (rc != MQTTASYNC_SUCCESS)
{
......@@ -697,7 +697,7 @@ void one_iteration(void)
if (stopping)
goto exit;
mqsleep(1);
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
rc = MQTTAsync_send(client, opts.topic, (int)(strlen(payload)+1), payload,
opts.qos, opts.retained, &ropts);
}
//MyLog(LOGA_DEBUG, "Successful publish with payload %s", payload);
......
......@@ -33,15 +33,7 @@
#include <unistd.h>
#include <errno.h>
#else
#include <winsock2.h>
#include <ws2tcpip.h>
#define MAXHOSTNAMELEN 256
#define EAGAIN WSAEWOULDBLOCK
#define EINTR WSAEINTR
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ENOTCONN WSAENOTCONN
#define ECONNRESET WSAECONNRESET
#include <windows.h>
#endif
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
......@@ -321,7 +313,6 @@ void test1_onConnectFailure(void* context, MQTTAsync_failureData* response)
{
MQTTAsync c = (MQTTAsync)context;
MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer;
int rc;
MyLog(LOGA_DEBUG, "In connect onFailure callback, context %p", context);
......@@ -695,7 +686,7 @@ int test3(struct Options options)
for (i = 0; i < num_clients; ++i)
MQTTAsync_destroy(&clientdata[i].c);
exit:
/*exit:*/
MyLog(LOGA_INFO, "TEST3: test %s. %d tests run, %d failures.",
(failures == 0) ? "passed" : "failed", tests, failures);
......
......@@ -34,15 +34,7 @@
#include <unistd.h>
#include <errno.h>
#else
#include <winsock2.h>
#include <ws2tcpip.h>
#define MAXHOSTNAMELEN 256
#define EAGAIN WSAEWOULDBLOCK
#define EINTR WSAEINTR
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ENOTCONN WSAENOTCONN
#define ECONNRESET WSAECONNRESET
#include <windows.h>
#endif
char unique[50]; // unique suffix/prefix to add to clientid/topic etc
......@@ -328,7 +320,7 @@ void test1cOnConnect(void* context, MQTTAsync_successData* response)
/* send a message to the proxy to break the connection */
pubmsg.payload = "TERMINATE";
pubmsg.payloadlen = strlen(pubmsg.payload);
pubmsg.payloadlen = (int)strlen(pubmsg.payload);
pubmsg.qos = 0;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL);
......@@ -487,7 +479,7 @@ int test1(struct Options options)
MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer;
sprintf(buf, "QoS %d message", i);
pubmsg.payload = buf;
pubmsg.payloadlen = strlen(pubmsg.payload) + 1;
pubmsg.payloadlen = (int)strlen(pubmsg.payload) + 1;
pubmsg.qos = i;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts);
......@@ -604,7 +596,7 @@ void test2cOnConnect(void* context, MQTTAsync_successData* response)
/* send a message to the proxy to break the connection */
pubmsg.payload = "TERMINATE";
pubmsg.payloadlen = strlen(pubmsg.payload);
pubmsg.payloadlen = (int)strlen(pubmsg.payload);
pubmsg.qos = 0;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL);
......@@ -764,7 +756,7 @@ int test2(struct Options options)
MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer;
sprintf(buf, "QoS %d message", i);
pubmsg.payload = buf;
pubmsg.payloadlen = strlen(pubmsg.payload) + 1;
pubmsg.payloadlen = (int)(strlen(pubmsg.payload) + 1);
pubmsg.qos = i;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts);
......@@ -880,7 +872,7 @@ void test3cOnConnect(void* context, MQTTAsync_successData* response)
/* send a message to the proxy to break the connection */
pubmsg.payload = "TERMINATE";
pubmsg.payloadlen = strlen(pubmsg.payload);
pubmsg.payloadlen = (int)strlen(pubmsg.payload);
pubmsg.qos = 0;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL);
......@@ -1040,7 +1032,7 @@ int test3(struct Options options)
MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer;
sprintf(buf, "QoS %d message", i);
pubmsg.payload = buf;
pubmsg.payloadlen = strlen(pubmsg.payload) + 1;
pubmsg.payloadlen = (int)(strlen(pubmsg.payload) + 1);
pubmsg.qos = i;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts);
......@@ -1154,7 +1146,7 @@ void test4cOnConnect(void* context, MQTTAsync_successData* response)
/* send a message to the proxy to break the connection */
pubmsg.payload = "TERMINATE";
pubmsg.payloadlen = strlen(pubmsg.payload);
pubmsg.payloadlen = (int)strlen(pubmsg.payload);
pubmsg.qos = 0;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL);
......@@ -1315,7 +1307,7 @@ int test4(struct Options options)
MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer;
sprintf(buf, "QoS %d message", i);
pubmsg.payload = buf;
pubmsg.payloadlen = strlen(pubmsg.payload) + 1;
pubmsg.payloadlen = (int)(strlen(pubmsg.payload) + 1);
pubmsg.qos = i;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts);
......@@ -1429,7 +1421,7 @@ void test5cOnConnect(void* context, MQTTAsync_successData* response)
/* send a message to the proxy to break the connection */
pubmsg.payload = "TERMINATE";
pubmsg.payloadlen = strlen(pubmsg.payload);
pubmsg.payloadlen = (int)strlen(pubmsg.payload);
pubmsg.qos = 0;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL);
......@@ -1589,7 +1581,7 @@ int test5(struct Options options)
MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer;
sprintf(buf, "QoS %d message", i);
pubmsg.payload = buf;
pubmsg.payloadlen = strlen(pubmsg.payload) + 1;
pubmsg.payloadlen = (int)(strlen(pubmsg.payload) + 1);
pubmsg.qos = i % 3;
pubmsg.retained = 0;
rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts);
......@@ -1664,7 +1656,7 @@ int main(int argc, char** argv)
MyLog(LOGA_INFO, "Random prefix/suffix is %s", unique);
xml = fopen("TEST-test9.xml", "w");
fprintf(xml, "<testsuite name=\"test9\" tests=\"%lu\">\n", ARRAY_SIZE(tests) - 1);
fprintf(xml, "<testsuite name=\"test9\" tests=\"%d\">\n", (int)(ARRAY_SIZE(tests) - 1));
MQTTAsync_setTraceCallback(handleTrace);
getopts(argc, argv);
......@@ -1695,4 +1687,3 @@ int main(int argc, char** argv)
return rc;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment