aboutsummaryrefslogtreecommitdiff
path: root/ports/libbson/fix-uwp.patch
blob: 8a793aece30b708862f3261999f73c7712ad9c3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
--- a/src/libbson/CMakeLists.txt
+++ b/src/libbson/CMakeLists.txt
@@ -217,6 +217,9 @@ set (HEADERS_FORWARDING
    ${PROJECT_SOURCE_DIR}/src/bson/forwarding/bson.h
 )
 
+add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+
+if (NOT ENABLE_STATIC MATCHES "ON|AUTO")
 add_library (bson_shared SHARED ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING})
 set (CMAKE_CXX_VISIBILITY_PRESET hidden)
 set_target_properties (bson_shared PROPERTIES COMPILE_DEFINITIONS "BSON_COMPILATION;JSONSL_PARSE_NAN")
@@ -258,16 +261,21 @@ if (WIN32)
    # must be handled specially since we can't resolve them
    set (BSON_SYSTEM_LIBRARIES ${BSON_SYSTEM_LIBRARIES} ws2_32)
 endif ()
+endif ()
 
 if (ENABLE_STATIC MATCHES "ON|AUTO")
    add_library (bson_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING})
+   set(CMAKE_CXX_VISIBILITY_PRESET hidden)
    set_target_properties (bson_static PROPERTIES COMPILE_DEFINITIONS "BSON_COMPILATION;BSON_STATIC;JSONSL_PARSE_NAN")
    set_target_properties (bson_static PROPERTIES VERSION 0.0.0)
    set_target_properties (bson_static PROPERTIES OUTPUT_NAME "bson-static-${BSON_API_VERSION}")
+   set(THREADS_PREFER_PTHREAD_FLAG 1)
+   find_package (Threads REQUIRED)
    target_link_libraries (bson_static Threads::Threads)
    if (RT_LIBRARY)
       target_link_libraries (bson_static ${RT_LIBRARY})
    endif ()
+   find_library(M_LIBRARY m)
    if (M_LIBRARY)
       target_link_libraries (bson_static ${M_LIBRARY})
    endif ()
@@ -282,7 +290,7 @@ function (add_example bin src)
    add_executable (${bin} ${BSON_EXAMPLE_SOURCES})
 
    # Link against the shared lib like normal apps
-   target_link_libraries (${bin} bson_shared)
+   target_link_libraries (${bin} bson_shared bson_static)
 
    set (EXAMPLES ${EXAMPLES} ${bin})
 endfunction ()
@@ -304,6 +312,7 @@ set (BSON_HEADER_INSTALL_DIR
    "${CMAKE_INSTALL_INCLUDEDIR}/libbson-${BSON_API_VERSION}"
 )
 
+if (NOT ENABLE_STATIC MATCHES "ON|AUTO")
 install (
    TARGETS bson_shared ${EXAMPLES}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -311,6 +320,7 @@ install (
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR} 
 )
+endif ()
 if (ENABLE_STATIC MATCHES "ON|AUTO")
    install (
       TARGETS bson_static ${EXAMPLES}
--- a/src/libmongoc/CMakeLists.txt
+++ b/src/libmongoc/CMakeLists.txt
@@ -609,6 +609,7 @@ if (WIN32)
    set (LIBRARIES ${LIBRARIES} ws2_32)
 endif ()
 
+if (NOT MONGOC_ENABLE_STATIC)
 add_library (mongoc_shared SHARED ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING})
 set_target_properties (mongoc_shared PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden)
 target_link_libraries (mongoc_shared ${LIBRARIES} ${BSON_LIBRARIES})
@@ -617,6 +618,7 @@ target_compile_definitions (mongoc_shared PUBLIC MONGOC_COMPILATION ${BSON_DEFIN
 
 set_target_properties (mongoc_shared PROPERTIES VERSION 0.0.0 SOVERSION 0)
 set_target_properties (mongoc_shared PROPERTIES OUTPUT_NAME "mongoc-${MONGOC_API_VERSION}" PREFIX "lib")
+endif ()
 
 if (MONGOC_ENABLE_STATIC)
    add_library (mongoc_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING})
@@ -639,7 +641,11 @@ if (ENABLE_APPLE_FRAMEWORK)
 endif ()
 
 add_executable (mongoc-stat ${PROJECT_SOURCE_DIR}/../../src/tools/mongoc-stat.c)
+if (MONGOC_ENABLE_STATIC)
+target_link_libraries (mongoc-stat mongoc_static)
+else ()
 target_link_libraries (mongoc-stat mongoc_shared)
+endif ()
 
 # mongoc-stat works if shared memory performance counters are enabled.
 if (ENABLE_SHM_COUNTERS STREQUAL "ON")
@@ -870,6 +876,7 @@ file (COPY ${PROJECT_SOURCE_DIR}/tests/json DESTINATION ${PROJECT_BINARY_DIR}/te
 file (COPY ${PROJECT_SOURCE_DIR}/tests/x509gen DESTINATION ${PROJECT_BINARY_DIR}/tests)
 file (COPY ${PROJECT_SOURCE_DIR}/tests/release_files DESTINATION ${PROJECT_BINARY_DIR}/tests)
 
+if (NOT MONGOC_ENABLE_STATIC)
 install (
    TARGETS mongoc_shared ${EXAMPLES}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -877,10 +884,11 @@ install (
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR} 
 )
+endif ()
 
 if (MONGOC_ENABLE_STATIC)
    install (
-      TARGETS mongoc_shared mongoc_static ${EXAMPLES}
+      TARGETS mongoc_static ${EXAMPLES}
       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
       RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
--- a/src/libmongoc/src/mongoc/mongoc-gridfs-file.c
+++ b/src/libmongoc/src/mongoc/mongoc-gridfs-file.c
@@ -765,7 +765,7 @@ _mongoc_gridfs_file_refresh_page (mongoc_gridfs_file_t *file)
    bson_t query;
    bson_t child;
    bson_t opts;
-   const bson_t *chunk;
+   const bson_t *chunk = NULL;
    const char *key;
    bson_iter_t iter;
    int64_t existing_chunks;
--- a/src/libmongoc/src/mongoc/mongoc-handshake.c
+++ b/src/libmongoc/src/mongoc/mongoc-handshake.c
@@ -286,7 +286,8 @@ _get_os_version (void)
    char *ret = bson_malloc (HANDSHAKE_OS_VERSION_MAX);
    bool found = false;
 
-#ifdef _WIN32
+#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
+#elif defined (_WIN32)
    OSVERSIONINFO osvi;
    ZeroMemory (&osvi, sizeof (OSVERSIONINFO));
    osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
--- a/src/libmongoc/src/mongoc/mongoc-util.c
+++ b/src/libmongoc/src/mongoc/mongoc-util.c
@@ -84,7 +84,11 @@ _mongoc_hex_md5 (const char *input)
 void
 _mongoc_usleep (int64_t usec)
 {
-#ifdef _WIN32
+#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
+   if (usec / 1000 > MAXDWORD || usec < 0)
+      __fastfail(-1);
+   Sleep((DWORD)(usec / 1000));
+#elif defined(_WIN32)
    LARGE_INTEGER ft;
    HANDLE timer;