|
1 | 1 | cmake_minimum_required(VERSION 3.0) |
2 | 2 |
|
3 | | -project(ObjectBoxCRoot) |
| 3 | +project(ObjectBoxCRoot) # to be displayed in an IDE when this CMake is opened |
4 | 4 |
|
5 | | -IF(NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lib") |
6 | | - message( FATAL_ERROR "Directory lib does not exist; please run ./download.sh first" ) |
7 | | -ENDIF() |
| 5 | +if (${CMAKE_VERSION} VERSION_LESS "3.11.0") |
| 6 | + message("Please consider upgrading your CMake to a more recent version (v3.11+) to get automatic library download.") |
| 7 | + if (NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lib") |
| 8 | + message(FATAL_ERROR "Directory lib does not exist; please run ./download.sh first") |
| 9 | + endif () |
| 10 | + link_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") |
| 11 | +else () |
| 12 | + project(objectbox-download) |
8 | 13 |
|
9 | | -link_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") |
| 14 | + # Configuration updated for each release |
| 15 | + set(DL_VERSION 0.11.0) |
| 16 | + set(DL_CHANNEL testing) |
| 17 | + |
| 18 | + # Platform detection and other setup |
| 19 | + set(DL_URL https://dl.bintray.com/objectbox/conan/objectbox/objectbox-c) |
| 20 | + |
| 21 | + # ${CMAKE_SYSTEM_PROCESSOR} is invalid on Windows, see https://gitlab.kitware.com/cmake/cmake/-/issues/15170 |
| 22 | + if (${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
| 23 | + if (CMAKE_SIZEOF_VOID_P MATCHES 8) |
| 24 | + set(DL_PLATFORM ${CMAKE_SYSTEM_NAME}-x86_64) |
| 25 | + else () |
| 26 | + set(DL_PLATFORM ${CMAKE_SYSTEM_NAME}-x86) |
| 27 | + endif () |
| 28 | + else () |
| 29 | + set(DL_PLATFORM ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}) |
| 30 | + endif () |
| 31 | + |
| 32 | + if (${DL_PLATFORM} STREQUAL Linux-x86_64) |
| 33 | + set(DL_PACKAGE 4db1be536558d833e52e862fd84d64d75c2b3656) |
| 34 | + |
| 35 | + elseif (${DL_PLATFORM} MATCHES "^Linux-armv7") |
| 36 | + set(DL_PACKAGE d42930899c74345edc43f8b7519ec7645c13e4d8) |
| 37 | + set(DL_PLATFORM "Linux-armv7hf") # show what we actually download |
| 38 | + |
| 39 | + elseif (${DL_PLATFORM} MATCHES "^Linux-armv6") |
| 40 | + set(DL_PACKAGE 4a625f0bd5f477eacd9bd35e9c44c834d057524b) |
| 41 | + set(DL_PLATFORM "Linux-armv6hf") # show what we actually download |
| 42 | + |
| 43 | + elseif (${DL_PLATFORM} STREQUAL Darwin-x86_64) |
| 44 | + set(DL_PACKAGE 46f53f156846659bf39ad6675fa0ee8156e859fe) |
| 45 | + |
| 46 | + elseif (${DL_PLATFORM} STREQUAL Windows-x86_64) |
| 47 | + set(DL_PACKAGE ca33edce272a279b24f87dc0d4cf5bbdcffbc187) |
| 48 | + |
| 49 | + elseif (${DL_PLATFORM} STREQUAL Windows-x86) |
| 50 | + set(DL_PACKAGE 11e6a84a7894f41df553e7c92534c3bf26896802) |
| 51 | + |
| 52 | + else () |
| 53 | + message(FATAL_ERROR "Can't download pre-compiled ObjectBox library - platform not supported: ${DL_PLATFORM}") |
| 54 | + endif () |
| 55 | + |
| 56 | + include(FetchContent) |
| 57 | + FetchContent_Declare( |
| 58 | + ${PROJECT_NAME} |
| 59 | + URL ${DL_URL}/${DL_VERSION}/${DL_CHANNEL}/0/package/${DL_PACKAGE}/0/conan_package.tgz |
| 60 | + ) |
| 61 | + |
| 62 | + message(STATUS "Using pre-compiled ObjectBox library version ${DL_CHANNEL}:${DL_VERSION} for ${DL_PLATFORM}") |
| 63 | + FetchContent_Populate(${PROJECT_NAME}) |
| 64 | + message(STATUS "Pre-compiled ObjectBox library is saved in ${objectbox-download_SOURCE_DIR}") |
| 65 | + |
| 66 | + project(objectbox) |
| 67 | + add_library(${PROJECT_NAME} SHARED IMPORTED GLOBAL) |
| 68 | + set(objectbox_include_dirs ${objectbox-download_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/external/) |
| 69 | + set_target_properties( |
| 70 | + ${PROJECT_NAME} PROPERTIES |
| 71 | + IMPORTED_LOCATION ${objectbox-download_SOURCE_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}objectbox${CMAKE_SHARED_LIBRARY_SUFFIX} |
| 72 | + IMPORTED_IMPLIB ${objectbox-download_SOURCE_DIR}/lib/${CMAKE_IMPORT_LIBRARY_PREFIX}objectbox${CMAKE_IMPORT_LIBRARY_SUFFIX} |
| 73 | + INTERFACE_INCLUDE_DIRECTORIES "${objectbox_include_dirs}" |
| 74 | + ) |
| 75 | +endif () |
10 | 76 |
|
11 | 77 | add_subdirectory(src-test) |
12 | 78 | add_subdirectory(src-test-gen) |
|
0 commit comments