Skip to content

Commit 8316dbd

Browse files
committed
fix: build system and install files
1 parent 2a03523 commit 8316dbd

4 files changed

Lines changed: 133 additions & 78 deletions

File tree

CMakeLists.txt

Lines changed: 102 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,119 @@
11
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})
319

420
include_directories(
5-
${STRING_UTIL_BASE}/include
621
${YAML_BASE}/include
722
build/${ARCH}/include
823
include/
924
src/
1025
)
1126

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+
3829
set(THREADS_PREFER_PTHREAD_FLAG ON)
30+
3931
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})
40111

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)
43113

44-
add_executable(robotkernel ${SOURCE_FILES})
114+
add_executable(robotkernel ${SOURCE_FILES} ${SERVICE_DEFINITION_HEADER})
45115
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})
47117
target_include_directories(robotkernel PUBLIC src/include)
48118

49119
set_property(TARGET robotkernel PROPERTY CXX_STANDARD 11)

src/Makefile.am

Lines changed: 29 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,8 @@ includedir = $(prefix)/include/robotkernel
99
headerdir = $(top_builddir)/include/robotkernel
1010
gen_headerdir = $(top_builddir)/include/robotkernel
1111

12-
13-
# $(headerdir)/bridge.h
14-
# $(headerdir)/kernel.h
15-
# $(headerdir)/kernel_worker.h
16-
# $(headerdir)/log_thread.h
17-
# $(headerdir)/module.h
18-
# $(headerdir)/service_provider.h
19-
# $(headerdir)/so_file.h
20-
# $(headerdir)/char_ringbuffer.h
21-
# $(headerdir)/dump_log.h
22-
# $(headerdir)/module_intf.h
23-
# $(headerdir)/bridge_intf.h
24-
2512
bin_PROGRAMS = robotkernel
26-
include_HEADERS = $(headerdir)/bridge_base.h \
27-
$(headerdir)/config.h.in \
13+
include_HEADERS = $(headerdir)/bridge_base.h \
2814
$(headerdir)/device.h \
2915
$(headerdir)/device_listener.h \
3016
$(headerdir)/exceptions.h \
@@ -45,34 +31,33 @@ include_HEADERS = $(headerdir)/bridge_base.h \
4531
$(headerdir)/trigger_base.h \
4632
$(headerdir)/trigger.h \
4733
$(headerdir)/trigger_collector.h \
48-
$(headerdir)/trigger_worker.h \
49-
$(gen_headerdir)/config.h
50-
51-
librobotkernel_la_SOURCES = bridge.cpp \
52-
char_ringbuffer.cpp \
53-
dump_log.cpp \
54-
exceptions.cpp \
55-
kernel.cpp \
56-
robotkernel.cpp \
57-
module_base.cpp \
58-
kernel_c_wrapper.cpp \
59-
log_base.cpp \
60-
log_thread.cpp \
61-
module.cpp \
62-
process_data.cpp \
63-
rk_type.cpp \
64-
runnable.cpp \
65-
service_provider.cpp \
66-
so_file.cpp \
67-
stream.cpp \
68-
trigger.cpp \
69-
trigger_worker.cpp \
70-
helpers.cpp \
34+
$(headerdir)/trigger_worker.h
35+
36+
librobotkernel_la_SOURCES = bridge.cpp \
37+
char_ringbuffer.cpp \
38+
dump_log.cpp \
39+
exceptions.cpp \
40+
kernel.cpp \
41+
robotkernel.cpp \
42+
module_base.cpp \
43+
kernel_c_wrapper.cpp \
44+
log_base.cpp \
45+
log_thread.cpp \
46+
module.cpp \
47+
process_data.cpp \
48+
rk_type.cpp \
49+
runnable.cpp \
50+
service_provider.cpp \
51+
so_file.cpp \
52+
stream.cpp \
53+
trigger.cpp \
54+
trigger_worker.cpp \
55+
helpers.cpp \
7156
rkc_loader.cpp
7257

73-
librobotkernel_la_CXXFLAGS = -Wno-unused-local-typedefs \
74-
-I$(top_builddir)/include \
75-
-I$(srcdir) \
58+
librobotkernel_la_CXXFLAGS = -Wno-unused-local-typedefs \
59+
-I$(top_builddir)/include \
60+
-I$(srcdir) \
7661
@YAML_CPP_CFLAGS@
7762

7863
librobotkernel_la_LDFLAGS=-static
@@ -107,9 +92,9 @@ $(top_builddir)/include/robotkernel/service_definitions.h: Makefile $(SERVICE_DE
10792

10893
robotkernel_SOURCES = main.cpp
10994

110-
robotkernel_CXXFLAGS = -Wno-unused-local-typedefs \
111-
-I$(top_builddir)/include \
112-
-I$(srcdir) \
95+
robotkernel_CXXFLAGS = -Wno-unused-local-typedefs \
96+
-I$(top_builddir)/include \
97+
-I$(srcdir) \
11398
@YAML_CPP_CFLAGS@
11499

115100
robotkernel_LDFLAGS = -Wl,-export-dynamic -Bdynamic -Wl,--whole-archive,.libs/librobotkernel.a,--no-whole-archive

src/lttng_tp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
#include "robotkernel/lttng_tp.h"
1+
#include "lttng_tp.h"

src/process_data.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*/
2626

2727
#include "kernel.h"
28-
#include "process_data.h"
28+
#include "robotkernel/process_data.h"
2929
#include "yaml-cpp/yaml.h"
3030

3131
using namespace std;

0 commit comments

Comments
 (0)