-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
82 lines (69 loc) · 3.16 KB
/
CMakeLists.txt
File metadata and controls
82 lines (69 loc) · 3.16 KB
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
cmake_minimum_required(VERSION 3.2)
cmake_policy(SET CMP0054 NEW)
project (eirballoon)
# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Specify lib path
set(LIBRARY_OUTPUT_PATH lib/)
# Link with the "Threads library (required to link with AFF3CT after)
set(CMAKE_THREAD_PREFER_PTHREAD ON)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
message(STATUS "${CMAKE_MODULE_PATH}")
# Link with AFF3CT
set (AFF3CT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/py_aff3ct/cmake/Modules/")
find_package(AFF3CT CONFIG 2.3.2 REQUIRED)
add_subdirectory(py_aff3ct/lib/pybind11)
file(GLOB_RECURSE SRC_FILES_CO ${CMAKE_CURRENT_SOURCE_DIR}/src/*)
file(GLOB_RECURSE PA_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/py_aff3ct/src/*)
# `pybind11_add_module` is a wrapper of the CMake `add_library` function
pybind11_add_module(eirballoon-lib MODULE ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/Wrapper/wrapper.cpp ${SRC_FILES_CO})
set_target_properties(eirballoon-lib PROPERTIES
OUTPUT_NAME eirballoon
POSITION_INDEPENDENT_CODE ON) # set -fpic
target_link_libraries(eirballoon-lib PRIVATE aff3ct::aff3ct-static-lib)
target_include_directories(eirballoon-lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp)
target_include_directories(eirballoon-lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/py_aff3ct/src)
# Link with UHD (& boost)
option(LINK_UHD "Link with the UHD library (used in the radio USRP)" ON)
if(LINK_UHD)
message(STATUS "UHD: on")
target_compile_definitions(eirballoon-lib PUBLIC
$<BUILD_INTERFACE:LINK_UHD>
$<INSTALL_INTERFACE:LINK_UHD>)
# Link UHD
find_package (UHD REQUIRED)
if (UHD_FOUND)
include_directories(${UHD_INCLUDE_DIRS})
target_link_libraries(eirballoon-lib PRIVATE ${UHD_LIBRARIES})
endif (UHD_FOUND)
# Link Boost
find_package(Boost QUIET COMPONENTS system filesystem thread REQUIRED)
if (Boost_FOUND)
target_link_libraries(eirballoon-lib PRIVATE ${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY})
endif (Boost_FOUND)
else()
message(STATUS "UHD: off")
endif(LINK_UHD)
option(LINK_LIBHACKRF "Link with the LIBHACKRF library (used in the radio HARCKRF)" ON)
if(LINK_LIBHACKRF)
message(STATUS "LIBHACKRF: on")
target_compile_definitions(eirballoon-lib PUBLIC
$<BUILD_INTERFACE:LINK_LIBHACKRF>
$<INSTALL_INTERFACE:LINK_LIBHACKRF>)
# Link UHD
find_package (LIBHACKRF REQUIRED)
if (LIBHACKRF_FOUND)
message(STATUS "LIBHACKRF : found")
message(STATUS "LIBHACKRF INC: ${LIBHACKRF_INCLUDE_DIRS}")
message(STATUS "LIBHACKRF LIB: ${LIBHACKRF_LIBRARIES}")
include_directories(${LIBHACKRF_INCLUDE_DIRS})
target_link_libraries(eirballoon-lib PRIVATE ${LIBHACKRF_LIBRARIES})
endif (LIBHACKRF_FOUND)
else()
message(STATUS "LIBHACKRF: off")
endif(LINK_LIBHACKRF)