Skip to content

Commit 7fbade4

Browse files
henrikedinajdavis
authored andcommitted
CDRIVER-2801 Possibility to install as darwin framework.
1 parent 3f5cd73 commit 7fbade4

File tree

5 files changed

+81
-13
lines changed

5 files changed

+81
-13
lines changed

CMakeLists.txt

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ option (ENABLE_RDTSCP
4848
"Fast performance counters on Intel using the RDTSCP instruction"
4949
OFF
5050
)
51+
option (ENABLE_APPLE_FRAMEWORK "Build libraries as frameworks on darwin platforms" OFF)
5152
set (ENABLE_ICU AUTO CACHE STRING "Enable ICU support, necessary to use non-ASCII usernames or passwords, default AUTO.")
5253

5354
project (mongo-c-driver C)
@@ -140,19 +141,8 @@ set (BUILD_SOURCE_DIR ${CMAKE_BINARY_DIR})
140141

141142
include (MakeDistFiles)
142143

143-
if (NOT BSON_LIBRARIES)
144-
message (" -- Using bundled libbson")
145-
if (ENABLE_STATIC MATCHES "ON|AUTO")
146-
set (MONGOC_ENABLE_STATIC ON)
147-
endif ()
148-
add_subdirectory (src/libbson)
149-
# Defined in src/libbson/CMakeLists.txt
150-
set (BSON_STATIC_LIBRARIES bson_static)
151-
set (BSON_LIBRARIES bson_shared)
152-
set (BSON_STATIC_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/libbson/src" "${PROJECT_BINARY_DIR}/src/libbson/src")
153-
set (BSON_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/libbson/src" "${PROJECT_BINARY_DIR}/src/libbson/src")
154-
set (BSON_STATIC_DEFINITIONS "BSON_STATIC")
155-
endif ()
144+
# Ensure the default behavior: don't ignore RPATH settings.
145+
set (CMAKE_SKIP_BUILD_RPATH OFF)
156146

157147
# Ensure the default behavior: don't use the final install destination as the
158148
# temporary RPATH for executables (ensure we can run tests and programs from
@@ -170,6 +160,20 @@ set (CMAKE_MACOSX_RPATH ON)
170160
# silence a CMake 3.11 warning that the old behavior is deprecated.
171161
cmake_policy (SET CMP0042 NEW)
172162

163+
if (NOT BSON_LIBRARIES)
164+
message (" -- Using bundled libbson")
165+
if (ENABLE_STATIC MATCHES "ON|AUTO")
166+
set (MONGOC_ENABLE_STATIC ON)
167+
endif ()
168+
add_subdirectory (src/libbson)
169+
# Defined in src/libbson/CMakeLists.txt
170+
set (BSON_STATIC_LIBRARIES bson_static)
171+
set (BSON_LIBRARIES bson_shared)
172+
set (BSON_STATIC_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/libbson/src" "${PROJECT_BINARY_DIR}/src/libbson/src")
173+
set (BSON_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/libbson/src" "${PROJECT_BINARY_DIR}/src/libbson/src")
174+
set (BSON_STATIC_DEFINITIONS "BSON_STATIC")
175+
endif ()
176+
173177
if (MSVC)
174178
add_definitions (-D_CRT_SECURE_NO_WARNINGS)
175179
endif ()

src/libbson/CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,13 @@ configure_file (
136136
"${PROJECT_BINARY_DIR}/src/bson/bson-version.h"
137137
)
138138

139+
if (ENABLE_APPLE_FRAMEWORK)
140+
configure_file (
141+
"${PROJECT_SOURCE_DIR}/src/bson/modules/module.modulemap.in"
142+
"${PROJECT_BINARY_DIR}/src/bson/modules/module.modulemap"
143+
)
144+
endif ()
145+
139146
include_directories ("${PROJECT_BINARY_DIR}/src")
140147
include_directories ("${PROJECT_SOURCE_DIR}/src")
141148
include_directories ("${PROJECT_SOURCE_DIR}/../../src/common")
@@ -216,6 +223,17 @@ set_target_properties (bson_shared PROPERTIES COMPILE_DEFINITIONS "BSON_COMPILAT
216223
set_target_properties (bson_shared PROPERTIES VERSION 0.0.0 SOVERSION 0)
217224
set_target_properties (bson_shared PROPERTIES OUTPUT_NAME "bson-${BSON_API_VERSION}" PREFIX "lib")
218225

226+
if (ENABLE_APPLE_FRAMEWORK)
227+
set_target_properties(bson_shared PROPERTIES
228+
FRAMEWORK TRUE
229+
MACOSX_FRAMEWORK_BUNDLE_VERSION ${MONGOC_VERSION}
230+
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${MONGOC_VERSION}
231+
MACOSX_FRAMEWORK_IDENTIFIER org.mongodb.bson
232+
OUTPUT_NAME "bson"
233+
PUBLIC_HEADER "${HEADERS}"
234+
)
235+
endif ()
236+
219237
if (RT_LIBRARY)
220238
target_link_libraries (bson_shared ${RT_LIBRARY})
221239
endif ()
@@ -291,13 +309,15 @@ install (
291309
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
292310
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
293311
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
312+
FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR}
294313
)
295314
if (ENABLE_STATIC MATCHES "ON|AUTO")
296315
install (
297316
TARGETS bson_static ${EXAMPLES}
298317
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
299318
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
300319
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
320+
FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR}
301321
)
302322
endif ()
303323
install (
@@ -309,6 +329,13 @@ install (
309329
DESTINATION "${BSON_HEADER_INSTALL_DIR}"
310330
)
311331

332+
if (ENABLE_APPLE_FRAMEWORK)
333+
install (
334+
FILES "${PROJECT_BINARY_DIR}/src/bson/modules/module.modulemap"
335+
DESTINATION "${CMAKE_INSTALL_BINDIR}/bson.framework/Modules/"
336+
)
337+
endif ()
338+
312339
set (LIBBSON_LIBRARIES "")
313340
foreach (_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${BSON_LIBRARIES})
314341
if (_lib MATCHES ".*/.*" OR _lib MATCHES "^-")
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
framework module bson [system] {
2+
umbrella header "bson.h"
3+
4+
export *
5+
}

src/libmongoc/CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,13 @@ configure_file (
374374
"${PROJECT_BINARY_DIR}/src/mongoc/mongoc-version.h"
375375
)
376376

377+
if (ENABLE_APPLE_FRAMEWORK)
378+
configure_file (
379+
"${PROJECT_SOURCE_DIR}/src/mongoc/modules/module.modulemap.in"
380+
"${PROJECT_BINARY_DIR}/src/mongoc/modules/module.modulemap"
381+
)
382+
endif ()
383+
377384
include_directories ("${PROJECT_BINARY_DIR}/src")
378385
include_directories ("${PROJECT_SOURCE_DIR}/src")
379386
include_directories ("${PROJECT_SOURCE_DIR}/../../src/common")
@@ -620,6 +627,17 @@ if (MONGOC_ENABLE_STATIC)
620627
set_target_properties (mongoc_static PROPERTIES OUTPUT_NAME "mongoc-static-${MONGOC_API_VERSION}")
621628
endif ()
622629

630+
if (ENABLE_APPLE_FRAMEWORK)
631+
set_target_properties (mongoc_shared PROPERTIES
632+
FRAMEWORK TRUE
633+
MACOSX_FRAMEWORK_BUNDLE_VERSION ${MONGOC_VERSION}
634+
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${MONGOC_VERSION}
635+
MACOSX_FRAMEWORK_IDENTIFIER org.mongodb.mongoc
636+
OUTPUT_NAME "mongoc"
637+
PUBLIC_HEADER "${HEADERS}"
638+
)
639+
endif ()
640+
623641
add_executable (mongoc-stat ${PROJECT_SOURCE_DIR}/../../src/tools/mongoc-stat.c)
624642
target_link_libraries (mongoc-stat mongoc_shared)
625643

@@ -857,6 +875,7 @@ install (
857875
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
858876
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
859877
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
878+
FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR}
860879
)
861880

862881
if (MONGOC_ENABLE_STATIC)
@@ -865,6 +884,7 @@ if (MONGOC_ENABLE_STATIC)
865884
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
866885
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
867886
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
887+
FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR}
868888
)
869889
endif ()
870890

@@ -882,6 +902,13 @@ install (
882902
DESTINATION "${MONGOC_HEADER_INSTALL_DIR}"
883903
)
884904

905+
if (ENABLE_APPLE_FRAMEWORK)
906+
install (
907+
FILES "${PROJECT_BINARY_DIR}/src/mongoc/modules/module.modulemap"
908+
DESTINATION "${CMAKE_INSTALL_BINDIR}/mongoc.framework/Modules/"
909+
)
910+
endif ()
911+
885912
# Define pkg-config files
886913
set (VERSION "${MONGOC_VERSION}")
887914
set (prefix "${CMAKE_INSTALL_PREFIX}")
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
framework module mongoc {
2+
umbrella header "mongoc.h"
3+
4+
export *
5+
}

0 commit comments

Comments
 (0)