From b757183f51920e8445ed0ea0bbdb490d99781ec6 Mon Sep 17 00:00:00 2001 From: Vo Trung Chi Date: Wed, 3 Jul 2019 09:41:38 +0700 Subject: cmake-improvements (#135) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Allow building as a subproject of another cmake project (CMAKE_* vs PROJECT_* variables) 2. Do not generate header files within source – bad practice, use build directory for that(e.g. change location where dlt_version.h is being generated) 3. Use add_compile_options() instead of *_C/CXX_FLAGS variables for proper compile environment definition, also bad practice, also see p.2 4. Add WITH_DLT_PKGCONFIG – add generate pkgconfig .pc files as switchable option, should probably be part of headers install routine. Signed-off-by: Radoslaw Kaczorowski --- src/console/CMakeLists.txt | 48 +++++++++++-------------- src/daemon/CMakeLists.txt | 52 +++++++++++++++++++++------ src/lib/CMakeLists.txt | 32 +++++++++++------ src/tests/CMakeLists.txt | 90 +++++++++++++++++----------------------------- 4 files changed, 117 insertions(+), 105 deletions(-) (limited to 'src') diff --git a/src/console/CMakeLists.txt b/src/console/CMakeLists.txt index c2e5586..8bda257 100644 --- a/src/console/CMakeLists.txt +++ b/src/console/CMakeLists.txt @@ -15,33 +15,27 @@ # @licence end@ ####### -set(dlt_sortbytimestamp_SRCS dlt-sortbytimestamp.c) -add_executable(dlt-sortbytimestamp ${dlt_sortbytimestamp_SRCS} ${dlt_most_SRCS}) -target_link_libraries(dlt-sortbytimestamp dlt ${EXPAT_LIBRARIES}) -set_target_properties(dlt-sortbytimestamp PROPERTIES LINKER_LANGUAGE C) - -set(dlt_convert_SRCS dlt-convert.c) -add_executable(dlt-convert ${dlt_convert_SRCS} ${dlt_most_SRCS}) -target_link_libraries(dlt-convert dlt ${EXPAT_LIBRARIES}) -set_target_properties(dlt-convert PROPERTIES LINKER_LANGUAGE C) - -set(dlt_receive_SRCS dlt-receive.c) -add_executable(dlt-receive ${dlt_receive_SRCS} ${dlt_most_SRCS}) -target_link_libraries(dlt-receive dlt ${EXPAT_LIBRARIES}) -set_target_properties(dlt-receive PROPERTIES LINKER_LANGUAGE C) - -set(dlt_control_SRCS dlt-control.c dlt-control-common.c) -add_executable(dlt-control ${dlt_control_SRCS} ${dlt_most_SRCS}) -target_link_libraries(dlt-control dlt ${EXPAT_LIBRARIES}) -set_target_properties(dlt-control PROPERTIES LINKER_LANGUAGE C) - set(dlt_control_common_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/dlt-control-common.c) -add_subdirectory( logstorage ) +add_subdirectory(logstorage) + +set(dlt-sortbytimestamp_SRCS dlt-sortbytimestamp.c) +set(dlt-convert_SRCS dlt-convert.c) +set(dlt-receive_SRCS dlt-receive.c) +set(dlt-control_SRCS dlt-control.c ${dlt_control_common_SRCS}) +set(dlt-passive-node-ctrl_SRCS dlt-passive-node-ctrl.c ${dlt_control_common_SRCS}) -set(dlt_passive_node_ctrl_SRCS dlt-passive-node-ctrl.c dlt-control-common.c) -add_executable(dlt-passive-node-ctrl ${dlt_passive_node_ctrl_SRCS} ${dlt_most_SRCS}) -target_link_libraries(dlt-passive-node-ctrl dlt ${EXPAT_LIBRARIES}) +foreach(target + dlt-sortbytimestamp + dlt-convert + dlt-receive + dlt-control + dlt-passive-node-ctrl + ) + add_executable(${target} ${${target}_SRCS}) + target_link_libraries(${target} dlt) + set_target_properties(${target} PROPERTIES LINKER_LANGUAGE C) -install(TARGETS dlt-sortbytimestamp dlt-convert dlt-receive dlt-control dlt-passive-node-ctrl - RUNTIME DESTINATION bin - COMPONENT base) + install(TARGETS ${target} + RUNTIME DESTINATION bin + COMPONENT base) +endforeach() diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt index e9fb2ba..46f9ed7 100644 --- a/src/daemon/CMakeLists.txt +++ b/src/daemon/CMakeLists.txt @@ -17,15 +17,38 @@ if(WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD) - message( STATUS "Added ${systemd_SRCS} to dlt-daemon") -endif(WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD) + message(STATUS "Added ${systemd_SRCS} to dlt-daemon") +endif() -set(dlt_daemon_SRCS dlt-daemon.c dlt_daemon_common.c dlt_daemon_connection.c dlt_daemon_event_handler.c ${CMAKE_SOURCE_DIR}/src/gateway/dlt_gateway.c dlt_daemon_socket.c dlt_daemon_unix_socket.c dlt_daemon_serial.c dlt_daemon_client.c dlt_daemon_offline_logstorage.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_user_shared.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_common.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_offline_trace.c ${CMAKE_SOURCE_DIR}/src/offlinelogstorage/dlt_offline_logstorage.c ${CMAKE_SOURCE_DIR}/src/lib/dlt_client.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_config_file_parser.c ${CMAKE_SOURCE_DIR}/src/offlinelogstorage/dlt_offline_logstorage_behavior.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_protocol.c) +set(dlt_daemon_SRCS + dlt-daemon.c + dlt_daemon_client.c + dlt_daemon_common.c + dlt_daemon_connection.c + dlt_daemon_event_handler.c + dlt_daemon_offline_logstorage.c + dlt_daemon_serial.c + dlt_daemon_socket.c + dlt_daemon_unix_socket.c + ${PROJECT_SOURCE_DIR}/src/gateway/dlt_gateway.c + ${PROJECT_SOURCE_DIR}/src/lib/dlt_client.c + ${PROJECT_SOURCE_DIR}/src/shared/dlt_common.c + ${PROJECT_SOURCE_DIR}/src/shared/dlt_config_file_parser.c + ${PROJECT_SOURCE_DIR}/src/shared/dlt_offline_trace.c + ${PROJECT_SOURCE_DIR}/src/shared/dlt_protocol.c + ${PROJECT_SOURCE_DIR}/src/shared/dlt_user_shared.c + ${PROJECT_SOURCE_DIR}/src/offlinelogstorage/dlt_offline_logstorage.c + ${PROJECT_SOURCE_DIR}/src/offlinelogstorage/dlt_offline_logstorage_behavior.c + ) if(WITH_DLT_SHM_ENABLE) - set(dlt_daemon_SRCS ${dlt_daemon_SRCS} ${CMAKE_SOURCE_DIR}/src/shared/dlt_shm.c) + set(dlt_daemon_SRCS + ${dlt_daemon_SRCS} + ${PROJECT_SOURCE_DIR}/src/shared/dlt_shm.c) endif() +add_executable(dlt-daemon ${dlt_daemon_SRCS} ${systemd_SRCS}) + if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(RT_LIBRARY rt) set(SOCKET_LIBRARY "") @@ -34,19 +57,26 @@ else() set(SOCKET_LIBRARY socket) endif() -add_executable(dlt-daemon ${dlt_daemon_SRCS} ${systemd_SRCS}) target_link_libraries(dlt-daemon ${RT_LIBRARY} ${SOCKET_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) install(TARGETS dlt-daemon - RUNTIME DESTINATION bin - PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ - GROUP_EXECUTE GROUP_READ - WORLD_EXECUTE WORLD_READ - COMPONENT base) + RUNTIME DESTINATION bin + PERMISSIONS + OWNER_EXECUTE OWNER_WRITE OWNER_READ + GROUP_EXECUTE GROUP_READ + WORLD_EXECUTE WORLD_READ + COMPONENT base) if (WITH_DLT_UNIT_TESTS) - add_library(dlt_daemon ${dlt_daemon_SRCS}) + set(library_SRCS ${dlt_daemon_SRCS}) + + if (WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD) + set(library_SRCS ${library_SRCS} ${systemd_SRCS}) + endif(WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD) + + add_library(dlt_daemon ${library_SRCS}) target_link_libraries(dlt_daemon ${RT_LIBRARY} ${SOCKET_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) + install(TARGETS dlt_daemon RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 537e2ca..db3a38e 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -15,11 +15,19 @@ # @licence end@ ####### -set(dlt_LIB_SRCS dlt_user dlt_client dlt_filetransfer dlt_env_ll ${CMAKE_SOURCE_DIR}/src/shared/dlt_common.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_user_shared.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_protocol.c) +set(dlt_LIB_SRCS + dlt_user.c + dlt_client.c + dlt_filetransfer.c + dlt_env_ll.c + ${PROJECT_SOURCE_DIR}/src/shared/dlt_common.c + ${PROJECT_SOURCE_DIR}/src/shared/dlt_protocol.c + ${PROJECT_SOURCE_DIR}/src/shared/dlt_user_shared.c + ) if(WITH_DLT_SHM_ENABLE) - set(dlt_LIB_SRCS ${dlt_LIB_SRCS} ${CMAKE_SOURCE_DIR}/src/shared/dlt_shm.c) -endif(WITH_DLT_SHM_ENABLE) + set(dlt_LIB_SRCS ${dlt_LIB_SRCS} ${PROJECT_SOURCE_DIR}/src/shared/dlt_shm.c) +endif() add_library(dlt ${dlt_LIB_SRCS}) @@ -31,14 +39,18 @@ else() set(SOCKET_LIBRARY socket) endif() -target_link_libraries(dlt ${RT_LIBRARY} ${SOCKET_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) +if(HAVE_FUNC_PTHREAD_SETNAME_NP) + add_definitions(-DDLT_USE_PTHREAD_SETNAME_NP) + message(STATUS "Using pthread_setname_np API to set thread name") +else() + message(STATUS "pthread_setname_np API not available on this platform") +endif() +target_link_libraries(dlt ${RT_LIBRARY} ${SOCKET_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) set_target_properties(dlt PROPERTIES VERSION ${DLT_VERSION} SOVERSION ${DLT_MAJOR_VERSION}) install(TARGETS dlt - RUNTIME DESTINATION bin - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static - COMPONENT base) - - + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static + COMPONENT base) diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 7f9dc52..cb3898f 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -15,60 +15,36 @@ # @licence end@ ####### -set(dlt_test_multi_process_SRCS dlt-test-multi-process.c) -add_executable(dlt-test-multi-process ${dlt_test_multi_process_SRCS}) -target_link_libraries(dlt-test-multi-process dlt) -set_target_properties(dlt-test-multi-process PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_multi_process_client_SRCS dlt-test-multi-process-client.c) -add_executable(dlt-test-multi-process-client ${dlt_test_multi_process_client_SRCS}) -target_link_libraries(dlt-test-multi-process-client dlt) -set_target_properties(dlt-test-multi-process-client PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_user_SRCS dlt-test-user.c) -add_executable(dlt-test-user ${dlt_test_user_SRCS}) -target_link_libraries(dlt-test-user dlt) -set_target_properties(dlt-test-user PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_client_SRCS dlt-test-client.c) -add_executable(dlt-test-client ${dlt_test_client_SRCS}) -target_link_libraries(dlt-test-client dlt) -set_target_properties(dlt-test-client PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_stress_user_SRCS dlt-test-stress-user.c) -add_executable(dlt-test-stress-user ${dlt_test_stress_user_SRCS}) -target_link_libraries(dlt-test-stress-user dlt) -set_target_properties(dlt-test-stress-user PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_stress_client_SRCS dlt-test-stress-client.c) -add_executable(dlt-test-stress-client ${dlt_test_stress_client_SRCS}) -target_link_libraries(dlt-test-stress-client dlt) -set_target_properties(dlt-test-stress-client PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_stress_SRCS dlt-test-stress.c) -add_executable(dlt-test-stress ${dlt_test_stress_SRCS}) -target_link_libraries(dlt-test-stress dlt) -set_target_properties(dlt-test-stress PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_filetransfer_SRCS dlt-test-filetransfer.c) -add_executable(dlt-test-filetransfer ${dlt_test_filetransfer_SRCS}) -target_link_libraries(dlt-test-filetransfer dlt) -set_target_properties(dlt-test-filetransfer PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_fork_handler_SRCS dlt-test-fork-handler.c) -add_executable(dlt-test-fork-handler ${dlt_test_fork_handler_SRCS}) -target_link_libraries(dlt-test-fork-handler dlt) -set_target_properties(dlt-test-fork-handler PROPERTIES LINKER_LANGUAGE C) - -set(dlt_test_init_free_SRCS dlt-test-init-free.c) -add_executable(dlt-test-init-free ${dlt_test_init_free_SRCS}) -target_link_libraries(dlt-test-init-free dlt) -set_target_properties(dlt-test-init-free PROPERTIES LINKER_LANGUAGE C) - -install(TARGETS dlt-test-multi-process dlt-test-multi-process-client dlt-test-user dlt-test-client dlt-test-stress-user dlt-test-stress-client dlt-test-stress dlt-test-filetransfer dlt-test-fork-handler dlt-test-init-free - RUNTIME DESTINATION bin - COMPONENT base) - -INSTALL(FILES dlt-test-filetransfer-file dlt-test-filetransfer-image.png - DESTINATION share/dlt-filetransfer -) +set(dlt-test-multi-process_SRCS dlt-test-multi-process.c) +set(dlt-test-multi-process-client_SRCS dlt-test-multi-process-client.c) +set(dlt-test-user_SRCS dlt-test-user.c) +set(dlt-test-client_SRCS dlt-test-client.c) +set(dlt-test-stress-user_SRCS dlt-test-stress-user.c) +set(dlt-test-stress-client_SRCS dlt-test-stress-client.c) +set(dlt-test-stress_SRCS dlt-test-stress.c) +set(dlt-test-filetransfer_SRCS dlt-test-filetransfer.c) +set(dlt-test-fork-handler_SRCS dlt-test-fork-handler.c) +set(dlt-test-init-free_SRCS dlt-test-init-free.c) + +foreach(target + dlt-test-multi-process + dlt-test-multi-process-client + dlt-test-user + dlt-test-client + dlt-test-stress-user + dlt-test-stress-client + dlt-test-stress + dlt-test-filetransfer + dlt-test-fork-handler + dlt-test-init-free + ) + add_executable(${target} ${${target}_SRCS}) + target_link_libraries(${target} dlt) + set_target_properties(${target} PROPERTIES LINKER_LANGUAGE C) + install(TARGETS ${target} + RUNTIME DESTINATION bin + COMPONENT base) +endforeach() + +install(FILES dlt-test-filetransfer-file dlt-test-filetransfer-image.png + DESTINATION share/dlt-filetransfer) -- cgit v1.2.1