|
1 | | -cmake_minimum_required(VERSION 3.3) |
2 | | - |
3 | | -# Name of the project |
4 | | -project (pc-ble-driver-py) |
5 | | - |
6 | | -set(PC_BLE_DRIVER_PY_OUTDIR ${CMAKE_BINARY_DIR}/outdir) |
7 | | - |
8 | | -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PC_BLE_DRIVER_PY_OUTDIR}) |
9 | | -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PC_BLE_DRIVER_PY_OUTDIR}) |
10 | | -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PC_BLE_DRIVER_PY_OUTDIR}) |
11 | | -set(CMAKE_SWIG_OUTDIR ${PC_BLE_DRIVER_PY_OUTDIR}) |
12 | | -foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} ) |
13 | | - string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) |
14 | | - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PC_BLE_DRIVER_PY_OUTDIR} ) |
15 | | - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PC_BLE_DRIVER_PY_OUTDIR} ) |
16 | | - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PC_BLE_DRIVER_PY_OUTDIR} ) |
17 | | -endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES ) |
18 | | - |
19 | | -# All projects depending on pc-ble-driver need to include this first |
20 | | -include(pc-ble-driver/cmake/pc-ble-driver.cmake) |
21 | | -add_subdirectory(pc-ble-driver) |
22 | | - |
23 | | -# Include folders |
24 | | -include_directories(${PC_BLE_DRIVER_INCLUDE_DIR}) |
25 | | - |
26 | | -# SWIG |
27 | | -find_package(SWIG REQUIRED) |
28 | | -include(${SWIG_USE_FILE}) |
29 | | - |
30 | | -find_package(PythonLibs 2.7 REQUIRED) |
31 | | -include_directories(${PYTHON_INCLUDE_PATH}) |
32 | | - |
33 | | -foreach(SD_API_VER ${SD_API_VERS}) |
34 | | - set(PYTHON_MODULE_${SD_API_VER} ${PC_BLE_DRIVER_${SD_API_VER}_PROJECT_NAME}) |
35 | | -endforeach(SD_API_VER) |
36 | | - |
37 | | -set(SWIG_I_FILE ${CMAKE_CURRENT_LIST_DIR}/swig/pc_ble_driver.i.in) |
38 | | - |
39 | | -# Use release lib of Python even when building with DEBUG |
40 | | -add_definitions( -DSWIG_PYTHON_INTERPRETER_NO_DEBUG -DHAVE_ROUND=1) |
41 | | - |
42 | | -# Avoid warning on Windows |
43 | | -if(WIN32) |
44 | | - add_definitions( -DHAVE_ROUND ) |
45 | | -endif() |
46 | | - |
47 | | -# Copy .i file into N variant files |
48 | | -foreach(SD_API_VER ${SD_API_VERS}) |
49 | | - # Copy SWIG-generated wrapper |
50 | | - set(SWIG_I_FILE_${SD_API_VER} ${PC_BLE_DRIVER_PY_OUTDIR}/${PYTHON_MODULE_${SD_API_VER}}.i) |
51 | | - #MESSAGE( STATUS "swig i: " "${SWIG_I_FILE_${SD_API_VER}}") |
52 | | - set(SWIG_MODULE_NAME ${PYTHON_MODULE_${SD_API_VER}}) |
53 | | - configure_file(${SWIG_I_FILE} ${SWIG_I_FILE_${SD_API_VER}}) |
54 | | - #add_custom_command(OUTPUT ${SWIG_I_FILE_${SD_API_VER}} |
55 | | - # COMMAND ${CMAKE_COMMAND} -E copy ${SWIG_I_FILE} ${SWIG_I_FILE_${SD_API_VER}} |
56 | | - #) |
57 | | - set_property(SOURCE ${SWIG_I_FILE_${SD_API_VER}} PROPERTY CPLUSPLUS OFF) |
58 | | - set_property(SOURCE ${SWIG_I_FILE_${SD_API_VER}} APPEND PROPERTY SWIG_FLAGS "-threads") |
59 | | - set_property(SOURCE ${SWIG_I_FILE_${SD_API_VER}} APPEND PROPERTY SWIG_FLAGS "-DPC_BLE_DRIVER_STATIC") |
60 | | -endforeach(SD_API_VER) |
61 | | - |
62 | | - |
63 | | -foreach(SD_API_VER ${SD_API_VERS}) |
64 | | - set(SWIG_C_SRC_FILES_${SD_API_VER} ${PC_BLE_DRIVER_PY_OUTDIR}/${PYTHON_MODULE_${SD_API_VER}}PYTHON_wrap.c) |
65 | | - set_source_files_properties(SWIG_C_SRC_FILES_${SD_API_VER} PROPERTIES LANGUAGE CXX) |
66 | | - |
67 | | - set(CMAKE_SWIG_FLAGS) |
68 | | - foreach(it ${PC_BLE_DRIVER_${SD_API_VER}_PUBLIC_INCLUDE_DIRS}) |
69 | | - #MESSAGE( STATUS "${SD_API_VER} it: " "${it}" ) |
70 | | - set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} "-I${it}") |
71 | | - endforeach() |
72 | | - |
73 | | - string(REGEX MATCH "[0-9]+$" _SD_API_VER_NUM "${SD_API_VER}") |
74 | | - set(SD_API_VER_COMPILER_DEF_NUM "-D${SD_API_VER_COMPILER_DEF}=${_SD_API_VER_NUM}") |
75 | | - set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} "${SD_API_VER_COMPILER_DEF_NUM}") |
76 | | - |
77 | | - swig_add_module(${PYTHON_MODULE_${SD_API_VER}} python ${SWIG_I_FILE_${SD_API_VER}}) |
78 | | - target_include_directories(${SWIG_MODULE_${PYTHON_MODULE_${SD_API_VER}}_REAL_NAME} PRIVATE ${PC_BLE_DRIVER_${SD_API_VER}_PUBLIC_INCLUDE_DIRS}) |
79 | | -endforeach(SD_API_VER) |
80 | | - |
81 | | -# These are the files required for the pc_ble_driver Python module: |
82 | | - |
83 | | -# Windows |
84 | | -# pc_ble_driver_<variant>.py |
85 | | -# _pc_ble_driver_<variant>.pyd |
86 | | -# pc_ble_driver_<variant>_shared.dll |
87 | | - |
88 | | -# Linux |
89 | | -# pc_ble_driver_<variant>.py |
90 | | -# _pc_ble_driver_<variant>.so |
91 | | -# libpc_ble_driver_<variant>_shared.so |
92 | | - |
93 | | -# macOS / OS X |
94 | | -# pc_ble_driver_<variant>.py |
95 | | -# _pc_ble_driver_<variant>.so |
96 | | -# libpc_ble_driver_<variant>_shared.dylib |
97 | | - |
98 | | -foreach(SD_API_VER ${SD_API_VERS}) |
99 | | - swig_link_libraries(${PYTHON_MODULE_${SD_API_VER}} ${PYTHON_LIBRARIES} ${PC_BLE_DRIVER_${SD_API_VER}_SHARED_LIB}) |
100 | | -endforeach(SD_API_VER) |
101 | | - |
102 | | -set(PY_PACKAGE_DIR ${CMAKE_CURRENT_LIST_DIR}/python) |
103 | | -set(PY_MODULE_DIR ${PY_PACKAGE_DIR}/pc_ble_driver_py) |
104 | | -set(PY_MODULE_HEX_DIR ${PY_MODULE_DIR}/hex) |
105 | | - |
106 | | -if(WIN32) |
107 | | - set(PY_MODULE_SHARED_LIB_DIR ${PY_MODULE_DIR}/lib/win/x86_${ARCH_BITS}) |
108 | | - set(SWIG_WRAPPER_SHARED_LIB_EXT pyd) |
109 | | -elseif(APPLE) |
110 | | - set(PY_MODULE_SHARED_LIB_DIR ${PY_MODULE_DIR}/lib/macos_osx) |
111 | | - set(SWIG_WRAPPER_SHARED_LIB_EXT so) |
112 | | -else() |
113 | | - set(PY_MODULE_SHARED_LIB_DIR ${PY_MODULE_DIR}/lib/linux/x86_${ARCH_BITS}) |
114 | | - set(SWIG_WRAPPER_SHARED_LIB_EXT so) |
115 | | -endif() |
116 | | - |
117 | | -set(PY_MODULE_BUILD_INFO build_info.txt) |
118 | | -set(PY_MODULE_BUILD_INFO_PRE_PATH ${PC_BLE_DRIVER_PY_OUTDIR}/${PY_MODULE_BUILD_INFO}) |
119 | | -set(PY_MODULE_BUILD_INFO_POST_PATH ${PY_MODULE_SHARED_LIB_DIR}/${PY_MODULE_BUILD_INFO}) |
120 | | - |
121 | | -foreach(SD_API_VER ${SD_API_VERS}) |
122 | | - |
123 | | - set(SWIG_WRAPPER_${SD_API_VER}_PY_FILE ${PYTHON_MODULE_${SD_API_VER}}.py) |
124 | | - set(SWIG_WRAPPER_${SD_API_VER}_PY_PATH ${PC_BLE_DRIVER_PY_OUTDIR}/${SWIG_WRAPPER_${SD_API_VER}_PY_FILE}) |
125 | | - |
126 | | - set(SWIG_WRAPPER_${SD_API_VER}_SHARED_LIB_FILE _${PYTHON_MODULE_${SD_API_VER}}.${SWIG_WRAPPER_SHARED_LIB_EXT}) |
127 | | - set(SWIG_WRAPPER_${SD_API_VER}_SHARED_LIB_PATH ${PC_BLE_DRIVER_PY_OUTDIR}/${SWIG_WRAPPER_${SD_API_VER}_SHARED_LIB_FILE}) |
128 | | - |
129 | | - set(PC_BLE_DRIVER_${SD_API_VER}_SHARED_LIB_FILE ${CMAKE_SHARED_LIBRARY_PREFIX}${PC_BLE_DRIVER_${SD_API_VER}_SHARED_LIB}${CMAKE_SHARED_LIBRARY_SUFFIX}) |
130 | | - set(PC_BLE_DRIVER_${SD_API_VER}_SHARED_LIB_PATH ${PC_BLE_DRIVER_PY_OUTDIR}/${PC_BLE_DRIVER_${SD_API_VER}_SHARED_LIB_FILE}) |
131 | | - |
132 | | - # Copy SWIG-generated .py wrapper |
133 | | - add_custom_command(TARGET ${SWIG_MODULE_${PYTHON_MODULE_${SD_API_VER}}_REAL_NAME} POST_BUILD |
134 | | - COMMAND ${CMAKE_COMMAND} -E copy ${SWIG_WRAPPER_${SD_API_VER}_PY_PATH} ${PY_MODULE_SHARED_LIB_DIR} |
135 | | - ) |
136 | | - |
137 | | - # Copy SWIG wrapper lib |
138 | | - add_custom_command(TARGET ${SWIG_MODULE_${PYTHON_MODULE_${SD_API_VER}}_REAL_NAME} POST_BUILD |
139 | | - COMMAND ${CMAKE_COMMAND} -E copy ${SWIG_WRAPPER_${SD_API_VER}_SHARED_LIB_PATH} ${PY_MODULE_SHARED_LIB_DIR} |
140 | | - ) |
141 | | - |
142 | | - # Copy DLL |
143 | | - add_custom_command(TARGET ${SWIG_MODULE_${PYTHON_MODULE_${SD_API_VER}}_REAL_NAME} POST_BUILD |
144 | | - COMMAND ${CMAKE_COMMAND} -E copy ${PC_BLE_DRIVER_${SD_API_VER}_SHARED_LIB_PATH} ${PY_MODULE_SHARED_LIB_DIR} |
145 | | - ) |
146 | | - |
147 | | - # Copy .hex files |
148 | | - add_custom_command(TARGET ${SWIG_MODULE_${PYTHON_MODULE_${SD_API_VER}}_REAL_NAME} POST_BUILD |
149 | | - COMMAND ${CMAKE_COMMAND} -E copy_directory ${PC_BLE_DRIVER_HEX_DIR}/${SD_API_VER} ${PY_MODULE_HEX_DIR}/${SD_API_VER} |
150 | | - ) |
151 | | -endforeach(SD_API_VER) |
152 | | - |
153 | | -# Generate build information file |
154 | | -set(BUILD_INFO "Build information:\n") |
155 | | - |
156 | | -build_metadata(${CMAKE_CURRENT_LIST_DIR} BUILD_MD_STRING) |
157 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} ${BUILD_MD_STRING} ) |
158 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "* SWIG version: " ${SWIG_VERSION} "\n") |
159 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "* Pyhon version: " ${PYTHONLIBS_VERSION_STRING} "\n") |
160 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "* Pyhon libs: " ${PYTHON_LIBRARIES} "\n") |
161 | | -git_repo_metadata(${CMAKE_CURRENT_LIST_DIR} PY_GIT_COMMIT PY_GIT_BRANCH PY_GIT_REMOTES) |
162 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "* Git repo: " ${PROJECT_NAME} "\n") |
163 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "** Git revision: " ${PY_GIT_COMMIT} "\n") |
164 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "** Git branch: " ${PY_GIT_BRANCH} "\n") |
165 | | -git_repo_metadata(${PC_BLE_DRIVER_ROOT_DIR} DRIVER_GIT_COMMIT DRIVER_GIT_BRANCH DRIVER_GIT_REMOTES) |
166 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "* Git repo: " "pc-ble-driver" "\n") |
167 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "** Git revision: " ${DRIVER_GIT_COMMIT} "\n") |
168 | | -string(CONCAT BUILD_INFO ${BUILD_INFO} "** Git branch: " ${DRIVER_GIT_BRANCH} "\n") |
169 | | - |
170 | | -file(WRITE ${PY_MODULE_BUILD_INFO_PRE_PATH} ${BUILD_INFO}) |
171 | | - |
172 | | -# iterate to count-1 |
173 | | -math(EXPR _COUNT "${SD_API_VER_COUNT} - 1") |
174 | | -# Post-build build info |
175 | | -foreach(i RANGE ${_COUNT}) |
176 | | - list(GET SD_API_VERS ${i} SD_API_VER) |
177 | | - |
178 | | - # copy the build info only once, on the first iteration |
179 | | - if(${i} EQUAL 0) |
180 | | - add_custom_command(TARGET ${SWIG_MODULE_${PYTHON_MODULE_${SD_API_VER}}_REAL_NAME} POST_BUILD |
181 | | - COMMAND ${CMAKE_COMMAND} -E copy ${PY_MODULE_BUILD_INFO_PRE_PATH} ${PY_MODULE_BUILD_INFO_POST_PATH} |
182 | | - COMMAND ${CMAKE_COMMAND} -E echo "* MD5 sums: " >> ${PY_MODULE_BUILD_INFO_POST_PATH} |
183 | | - ) |
184 | | - endif() |
185 | | - |
186 | | - add_custom_command(TARGET ${SWIG_MODULE_${PYTHON_MODULE_${SD_API_VER}}_REAL_NAME} POST_BUILD |
187 | | - COMMAND ${CMAKE_COMMAND} -E echo_append "** " >> ${PY_MODULE_BUILD_INFO_POST_PATH} |
188 | | - COMMAND ${CMAKE_COMMAND} -E md5sum ${SWIG_WRAPPER_${SD_API_VER}_PY_FILE} >> ${PY_MODULE_BUILD_INFO_POST_PATH} WORKING_DIRECTORY ${PY_MODULE_SHARED_LIB_DIR} |
189 | | - COMMAND ${CMAKE_COMMAND} -E echo_append "** " >> ${PY_MODULE_BUILD_INFO_POST_PATH} |
190 | | - COMMAND ${CMAKE_COMMAND} -E md5sum ${SWIG_WRAPPER_${SD_API_VER}_SHARED_LIB_FILE} >> ${PY_MODULE_BUILD_INFO_POST_PATH} WORKING_DIRECTORY ${PY_MODULE_SHARED_LIB_DIR} |
191 | | - COMMAND ${CMAKE_COMMAND} -E echo_append "** " >> ${PY_MODULE_BUILD_INFO_POST_PATH} |
192 | | - COMMAND ${CMAKE_COMMAND} -E md5sum ${PC_BLE_DRIVER_${SD_API_VER}_SHARED_LIB_FILE} >> ${PY_MODULE_BUILD_INFO_POST_PATH} WORKING_DIRECTORY ${PY_MODULE_SHARED_LIB_DIR} |
193 | | - ) |
194 | | -endforeach(i) |
195 | | - |
196 | | - |
197 | | - |
| 1 | +cmake_minimum_required(VERSION 3.13) |
| 2 | + |
| 3 | +if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE) |
| 4 | + set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" |
| 5 | + CACHE STRING "") |
| 6 | +endif() |
| 7 | + |
| 8 | +# Name of the project |
| 9 | +project (pc-ble-driver-py) |
| 10 | + |
| 11 | +find_package(PythonExtensions REQUIRED) |
| 12 | + |
| 13 | +if(WIN32) |
| 14 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_hypot=hypot") |
| 15 | +endif() |
| 16 | + |
| 17 | +set(PC_BLE_DRIVER_PY_OUTDIR ${CMAKE_BINARY_DIR}/outdir) |
| 18 | + |
| 19 | +# There is no reason to compile more than two SoftDevice API versions |
| 20 | +# The Python module only supports one SoftDevice API |
| 21 | +# version for NRF51 and one for NRF52 |
| 22 | +set(SD_API_VERS "2;5") |
| 23 | + |
| 24 | +# SWIG |
| 25 | +find_package(SWIG REQUIRED) |
| 26 | +include(${SWIG_USE_FILE}) |
| 27 | + |
| 28 | +# nrf-ble-driver |
| 29 | +find_package(nrf-ble-driver 4.1.1 CONFIG REQUIRED) |
| 30 | + |
| 31 | +# PYTHON_INCLUDE_DIR provided by scikit-build |
| 32 | +include_directories(${PYTHON_INCLUDE_DIR}) |
| 33 | + |
| 34 | +set(SWIG_I_FILE ${CMAKE_CURRENT_LIST_DIR}/swig/pc_ble_driver.i.in) |
| 35 | + |
| 36 | +# Use release lib of Python even when building with DEBUG |
| 37 | +add_definitions(-DSWIG_PYTHON_INTERPRETER_NO_DEBUG) |
| 38 | + |
| 39 | +# Avoid warning on Windows |
| 40 | +if(WIN32) |
| 41 | + add_definitions(-DHAVE_ROUND) |
| 42 | +endif() |
| 43 | + |
| 44 | +# Copy .i file into N variant files |
| 45 | +foreach(SD_API_VER ${SD_API_VERS}) |
| 46 | + set(PYTHON_MODULE_${SD_API_VER} nrf_ble_driver_sd_api_v${SD_API_VER}) |
| 47 | + # Copy SWIG-generated wrapper |
| 48 | + set(SWIG_I_FILE_${SD_API_VER} ${PC_BLE_DRIVER_PY_OUTDIR}/${PYTHON_MODULE_${SD_API_VER}}.i) |
| 49 | + set(SWIG_MODULE_NAME ${PYTHON_MODULE_${SD_API_VER}}) |
| 50 | + configure_file(${SWIG_I_FILE} ${SWIG_I_FILE_${SD_API_VER}}) |
| 51 | + set_property(SOURCE ${SWIG_I_FILE_${SD_API_VER}} APPEND PROPERTY SWIG_FLAGS "-threads") |
| 52 | + set_property(SOURCE ${SWIG_I_FILE_${SD_API_VER}} APPEND PROPERTY SWIG_FLAGS "-Wall") |
| 53 | + # Builtin is not supported in the customized wrappers for callbacks yet |
| 54 | + # set_property(SOURCE ${SWIG_I_FILE_${SD_API_VER}} APPEND PROPERTY SWIG_FLAGS "-builtin") |
| 55 | +endforeach() |
| 56 | + |
| 57 | +set(MSFT_NON_STANDARD_COMPILER 0) |
| 58 | + |
| 59 | +if(WIN32 AND MSVC_VERSION LESS 1600) |
| 60 | + # See https://cmake.org/cmake/help/v3.12/variable/MSVC_VERSION.html for more details on compiler version |
| 61 | + # See https://en.cppreference.com/w/c/types/integer for more details on fixed width integer types |
| 62 | + set(MSFT_NON_STANDARD_COMPILER 1) |
| 63 | + message(STATUS "Detected non-standard C99 MSVC compiler, adding stdint.h") |
| 64 | +endif() |
| 65 | + |
| 66 | +set(NRF_BLE_DRIVER_LINKAGE_TYPE "static") |
| 67 | + |
| 68 | +if(WIN32) |
| 69 | + set(NRF_BLE_DRIVER_LINKAGE_TYPE "shared") |
| 70 | +endif() |
| 71 | + |
| 72 | +if(MSFT_NON_STANDARD_COMPILER) |
| 73 | + execute_process( |
| 74 | + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/swig/win32/vc90-compat/stdint.h ${PC_BLE_DRIVER_PY_OUTDIR} |
| 75 | + RESULT_VARIABLE result |
| 76 | + ) |
| 77 | + |
| 78 | + if(NOT (result EQUAL 0)) |
| 79 | + message(FATAL_ERROR "Not able to copy stdint.h compatibility file for Microsoft VC90") |
| 80 | + endif() |
| 81 | +endif() |
| 82 | + |
| 83 | +foreach(SD_API_VER ${SD_API_VERS}) |
| 84 | + set_property( |
| 85 | + SOURCE ${SWIG_I_FILE_${SD_API_VER}} |
| 86 | + # C++ must be off since SWIG C++ parser does not handle nested structs/classes |
| 87 | + # Warning 312. Unnamed nested class not currently supported (ignored) |
| 88 | + PROPERTY CPLUSPLUS OFF |
| 89 | + ) |
| 90 | + |
| 91 | + set_property( |
| 92 | + SOURCE ${SWIG_I_FILE_${SD_API_VER}} |
| 93 | + PROPERTY INCLUDE_DIRECTORIES ${nrf-ble-driver_SD_API_V${SD_API_VER}_INCLUDE_DIR} ${PC_BLE_DRIVER_PY_OUTDIR} |
| 94 | + ) |
| 95 | + |
| 96 | + set_property( |
| 97 | + SOURCE ${SWIG_I_FILE_${SD_API_VER}} |
| 98 | + PROPERTY COMPILE_DEFINITIONS "NRF_SD_BLE_API_VERSION=${SD_API_VER}" "SUPPRESS_INLINE_IMPLEMENTATION" "PC_BLE_DRIVER_STATIC" |
| 99 | + ) |
| 100 | + |
| 101 | + swig_add_library( |
| 102 | + ${PYTHON_MODULE_${SD_API_VER}} |
| 103 | + TYPE SHARED |
| 104 | + LANGUAGE python |
| 105 | + SOURCES ${SWIG_I_FILE_${SD_API_VER}} |
| 106 | + OUTPUT_DIR ${PC_BLE_DRIVER_PY_OUTDIR} |
| 107 | + ) |
| 108 | + |
| 109 | + set_property(TARGET ${PYTHON_MODULE_${SD_API_VER}} PROPERTY CXX_STANDARD 14) |
| 110 | + |
| 111 | + set_source_files_properties(${PC_BLE_DRIVER_PY_OUTDIR}/${PYTHON_MODULE_${SD_API_VER}}PYTHON_wrap.c PROPERTIES LANGUAGE CXX) |
| 112 | + |
| 113 | + if(MSFT_NON_STANDARD_COMPILER) |
| 114 | + target_include_directories(${PYTHON_MODULE_${SD_API_VER}} PRIVATE ${PC_BLE_DRIVER_PY_OUTDIR}) |
| 115 | + endif() |
| 116 | + |
| 117 | + target_link_libraries(${PYTHON_MODULE_${SD_API_VER}} PRIVATE nrf::nrf_ble_driver_sd_api_v${SD_API_VER}_${NRF_BLE_DRIVER_LINKAGE_TYPE} ${PYTHON_LIBRARY}) |
| 118 | + |
| 119 | + get_target_property(CONNECTIVITY_SD_API_V${SD_API_VER}_PATH nrf::nrf_ble_driver_sd_api_v${SD_API_VER}_${NRF_BLE_DRIVER_LINKAGE_TYPE} INTERFACE_INCLUDE_DIRECTORIES) |
| 120 | + set(CONNECTIVITY_SD_API_V${SD_API_VER}_PATH ${CONNECTIVITY_SD_API_V${SD_API_VER}_PATH}/../../share/nrf-ble-driver/hex/sd_api_v${SD_API_VER}) |
| 121 | + file(GLOB_RECURSE CONNECTIVITY_SD_API_V${SD_API_VER}_FILES "${CONNECTIVITY_SD_API_V${SD_API_VER}_PATH}/*.hex") |
| 122 | + |
| 123 | + set_property( |
| 124 | + TARGET ${PYTHON_MODULE_${SD_API_VER}} |
| 125 | + PROPERTY RESOURCE "${CONNECTIVITY_SD_API_V${SD_API_VER}_FILES}" |
| 126 | + ) |
| 127 | + if(APPLE) |
| 128 | + set_property(TARGET ${PYTHON_MODULE_${SD_API_VER}} PROPERTY SUFFIX ".so") |
| 129 | + endif() |
| 130 | +endforeach() |
| 131 | + |
| 132 | +set(BUILD_OUTPUT_LIB_DIR "pc_ble_driver_py/lib") |
| 133 | +set(BUILD_OUTPUT_HEX_DIR "pc_ble_driver_py/hex") |
| 134 | + |
| 135 | +foreach(SD_API_VER ${SD_API_VERS}) |
| 136 | + install( |
| 137 | + TARGETS ${PYTHON_MODULE_${SD_API_VER}} |
| 138 | + RUNTIME DESTINATION ${BUILD_OUTPUT_LIB_DIR} |
| 139 | + LIBRARY DESTINATION ${BUILD_OUTPUT_LIB_DIR} |
| 140 | + ARCHIVE DESTINATION ${BUILD_OUTPUT_LIB_DIR} |
| 141 | + RESOURCE DESTINATION "${BUILD_OUTPUT_HEX_DIR}/sd_api_v${SD_API_VER}" |
| 142 | + ) |
| 143 | + |
| 144 | + install( |
| 145 | + FILES ${PC_BLE_DRIVER_PY_OUTDIR}/nrf_ble_driver_sd_api_v${SD_API_VER}.py |
| 146 | + DESTINATION ${BUILD_OUTPUT_LIB_DIR} |
| 147 | + ) |
| 148 | + |
| 149 | + if(NRF_BLE_DRIVER_LINKAGE_TYPE STREQUAL "shared") |
| 150 | + install( |
| 151 | + FILES $<TARGET_FILE:nrf::nrf_ble_driver_sd_api_v${SD_API_VER}_${NRF_BLE_DRIVER_LINKAGE_TYPE}> |
| 152 | + DESTINATION ${BUILD_OUTPUT_LIB_DIR} |
| 153 | + ) |
| 154 | + endif() |
| 155 | +endforeach() |
0 commit comments