|
1 | 1 | cmake_minimum_required(VERSION 3.3) |
2 | | -project(robotkernel) |
| 2 | +execute_process( |
| 3 | + COMMAND git describe --tags --abbrev=0 |
| 4 | + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| 5 | + OUTPUT_VARIABLE GIT_VER |
| 6 | + RESULT_VARIABLE GIT_RESULT |
| 7 | + ERROR_QUIET |
| 8 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 9 | +) |
| 10 | +if(GIT_RESULT EQUAL 0) |
| 11 | + string(REGEX MATCH "v?([0-9]+\\.[0-9]+\\.[0-9]+)" _ ${GIT_VER}) |
| 12 | + set(PROJECT_VERSION ${CMAKE_MATCH_1}) |
| 13 | +endif() |
| 14 | + |
| 15 | +if(NOT PROJECT_VERSION) |
| 16 | + set(PROJECT_VERSION 0.0.0) |
| 17 | +endif() |
| 18 | +project(robotkernel VERSION ${PROJECT_VERSION}) |
3 | 19 |
|
4 | 20 | include_directories( |
5 | | - ${STRING_UTIL_BASE}/include |
6 | 21 | ${YAML_BASE}/include |
7 | 22 | build/${ARCH}/include |
8 | 23 | include/ |
9 | 24 | src/ |
10 | 25 | ) |
11 | 26 |
|
12 | | -set(SOURCE_FILES |
13 | | - src/bridge.cpp |
14 | | - src/dump_log.cpp |
15 | | - src/kernel.cpp |
16 | | - src/lttng_tp.cpp |
17 | | - src/module_base.cpp |
18 | | - src/rkc_loader.cpp |
19 | | - src/runnable.cpp |
20 | | - src/kernel_c_wrapper.cpp |
21 | | - src/log_base.cpp |
22 | | - src/module.cpp |
23 | | - src/service_provider.cpp |
24 | | - src/stream.cpp |
25 | | - src/char_ringbuffer.cpp |
26 | | - src/exceptions.cpp |
27 | | - src/log_thread.cpp |
28 | | - src/main.cpp |
29 | | - src/rk_type.cpp |
30 | | - src/trigger.cpp |
31 | | - src/helpers.cpp |
32 | | - src/kernel_worker.cpp |
33 | | - src/process_data.cpp |
34 | | - src/robotkernel.cpp |
35 | | - src/so_file.cpp |
36 | | - src/trigger_worker.cpp |
37 | | - ) |
| 27 | +FILE(GLOB SOURCE_FILES src/*.cpp) |
| 28 | + |
38 | 29 | set(THREADS_PREFER_PTHREAD_FLAG ON) |
| 30 | + |
39 | 31 | find_package(Threads REQUIRED) |
| 32 | +find_package(yaml-cpp REQUIRED) |
| 33 | +find_package(robotkernel_service_helper REQUIRED) |
| 34 | + |
| 35 | +include_directories(${yaml-cpp_INCLUDE_DIRS} yaml-cpp) |
| 36 | + |
| 37 | +set(CMAKE_CXX_STANDARD 11) |
| 38 | +set(CMAKE_C_STANDARD 11) |
| 39 | + |
| 40 | +include(CheckIncludeFiles) |
| 41 | +include(CheckSymbolExists) |
| 42 | +include(CheckLibraryExists) |
| 43 | +include(ExternalProject) |
| 44 | +include(CMakePackageConfigHelpers) |
| 45 | + |
| 46 | +set(PACKAGE_VERSION "${PROJECT_VERSION}") |
| 47 | +set(VERSION "${PROJECT_VERSION}") |
| 48 | +set(PACKAGE_URL "${CMAKE_PROJECT_HOMEPAGE_URL}") |
| 49 | +set(PACKAGE "${CMAKE_PROJECT_NAME}") |
| 50 | +set(PACKAGE_NAME "${CMAKE_PROJECT_NAME}") |
| 51 | +set(PACKAGE_TARNAME "${CMAKE_PROJECT_NAME}") |
| 52 | +set(PACKAGE_STRING "${CMAKE_PROJECT_NAME} ${CMAKE_PROJECT_VERSION}") |
| 53 | + |
| 54 | +check_include_files("arpa/inet.h" HAVE_ARPA_INET_H) |
| 55 | +check_symbol_exists("clock_gettime" "time.h" HAVE_CLOCK_GETTIME) |
| 56 | +check_include_files("dlfcn.h" HAVE_DLFCN_H) |
| 57 | +check_include_files("fcntl.h" HAVE_FCNTL_H) |
| 58 | +check_include_files("inttypes.h" HAVE_INTTYPES_H) |
| 59 | +find_library(HAS_RT_RAW rt) |
| 60 | +if(HAS_RT_RAW) |
| 61 | + SET(HAVE_LIBRT 1) |
| 62 | +endif() |
| 63 | +check_include_files("limits.h" HAVE_LIMITS_H) |
| 64 | +check_symbol_exists("malloc" "stdlib.h" HAVE_MALLOC) |
| 65 | +check_include_files("memory.h" HAVE_MEMORY_H) |
| 66 | +check_symbol_exists("memset" "string.h" HAVE_MALLOC) |
| 67 | +check_include_files("net/bpf.h" HAVE_NET_BPF_H) |
| 68 | +check_include_files("net/if.h" HAVE_NET_IF_H) |
| 69 | +check_include_files("netinet/in.h" HAVE_NETINET_IN_H) |
| 70 | +check_include_files("pthread.h" HAVE_PTHREAD) |
| 71 | +list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) |
| 72 | +check_symbol_exists("pthread_setaffinity_np" "pthread.h" HAVE_PTHREAD_SETAFFINITY_NP) |
| 73 | +check_symbol_exists("realloc" "stdlib.h" HAVE_REALLOC) |
| 74 | +check_symbol_exists("socket" "sys/socket.h" HAVE_SOCKET) |
| 75 | +check_include_files("stdint.h" HAVE_STDINT_H) |
| 76 | +check_include_files("stdlib.h" HAVE_STDLIB_H) |
| 77 | +check_symbol_exists("strdup" "string.h" HAVE_STRDUP) |
| 78 | +check_symbol_exists("strerror" "string.h" HAVE_STRERROR) |
| 79 | +check_include_files("strings.h" HAVE_STRINGS_H) |
| 80 | +check_include_files("string.h" HAVE_STRING_H) |
| 81 | +check_symbol_exists("strndup" "string.h" HAVE_STRNDUP) |
| 82 | +check_include_files("sys/ioctl.h" HAVE_SYS_IOCTL_H) |
| 83 | +check_include_files("sys/socket.h" HAVE_SYS_SOCKET_H) |
| 84 | +check_include_files("sys/stat.h" HAVE_SYS_STAT_H) |
| 85 | +check_include_files("sys/time.h" HAVE_SYS_TIME_H) |
| 86 | +check_include_files("sys/types.h" HAVE_SYS_TYPES_H) |
| 87 | +check_include_files("unistd.h" HAVE_UNISTD_H) |
| 88 | + |
| 89 | +set(SERVICE_DEFINITION_HEADER include/robotkernel/service_definitions.h) |
| 90 | +set(SERVICE_DEFINITIONS |
| 91 | + robotkernel/module/set_state |
| 92 | + robotkernel/module/get_state |
| 93 | + robotkernel/module/get_config |
| 94 | + robotkernel/kernel/get_dump_log |
| 95 | + robotkernel/kernel/config_dump_log |
| 96 | + robotkernel/kernel/add_module |
| 97 | + robotkernel/kernel/remove_module |
| 98 | + robotkernel/kernel/module_list |
| 99 | + robotkernel/kernel/reconfigure_module |
| 100 | + robotkernel/kernel/list_devices |
| 101 | + robotkernel/kernel/process_data_info |
| 102 | + robotkernel/kernel/trigger_info |
| 103 | + robotkernel/kernel/stream_info |
| 104 | + robotkernel/kernel/service_interface_info |
| 105 | + robotkernel/kernel/add_pd_injection |
| 106 | + robotkernel/kernel/del_pd_injection |
| 107 | + robotkernel/kernel/list_pd_injections |
| 108 | + robotkernel/log_base/configure_loglevel) |
| 109 | + |
| 110 | +service_generate("services" ${CMAKE_SOURCE_DIR}/share/service_definitions ${SERVICE_DEFINITION_HEADER} ${SERVICE_DEFINITIONS}) |
40 | 111 |
|
41 | | -link_directories(${STRING_UTIL_BASE}/lib/${ARCH}) |
42 | | -link_directories(${YAML_BASE}/lib/${ARCH}) |
| 112 | +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/robotkernel/config.h) |
43 | 113 |
|
44 | | -add_executable(robotkernel ${SOURCE_FILES}) |
| 114 | +add_executable(robotkernel ${SOURCE_FILES} ${SERVICE_DEFINITION_HEADER}) |
45 | 115 | set_target_properties(robotkernel PROPERTIES ENABLE_EXPORTS ON) |
46 | | -target_link_libraries(robotkernel Threads::Threads ${CMAKE_DL_LIBS} string_util ln yaml-cpp) |
| 116 | +target_link_libraries(robotkernel Threads::Threads ${CMAKE_DL_LIBS} ${yaml-cpp_LIBS}) |
47 | 117 | target_include_directories(robotkernel PUBLIC src/include) |
48 | 118 |
|
49 | 119 | set_property(TARGET robotkernel PROPERTY CXX_STANDARD 11) |
0 commit comments