cmake_minimum_required(VERSION 3.3) project(can-utils LANGUAGES C) set(LIB_CURRENT 4) set(LIB_REVISION 1) set(LIB_AGE 2) math(EXPR LIB_SOVERSION "${LIB_CURRENT} - ${LIB_AGE}") set(LIB_VERSION ${LIB_SOVERSION}.${LIB_AGE}.${LIB_REVISION}) include (GNUInstallDirs) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") add_definitions(-D_GNU_SOURCE) endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-parentheses") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FILE_OFFSET_BITS=64") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSO_RXQ_OVFL=40") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DPF_CAN=29") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAF_CAN=PF_CAN") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DN_SLCAN=17") include_directories (.) include_directories (./include) set(PROGRAMS_CANLIB asc2log canbusload candump cangen canlogserver canplayer cansend log2asc log2long ) set(PROGRAMS_J1939 jacd jspy jsr testj1939 ) set(PROGRAMS ${PROGRAMS_CANLIB} bcmserver can-calc-bit-timing canfdtest cangw cansniffer isotpdump isotpperf isotprecv isotpsend isotpserver isotpsniffer isotptun slcan_attach slcand slcanpty ) if(NOT ANDROID) list(APPEND PROGRAMS ${PROGRAMS_J1939}) endif() add_library(can STATIC lib.c canframelen.c ) add_library(j1939 STATIC libj1939.c ) add_library(socketcan SHARED libsocketcan.c ) set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix \${prefix}) set(libdir \${exec_prefix}/${CMAKE_INSTALL_LIBDIR}) set(includedir \${prefix}/${CMAKE_INSTALL_INCLUDEDIR}) configure_file(config/libsocketcan.pc.in config/libsocketcan.pc @ONLY) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/config/libsocketcan.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) set_target_properties(socketcan PROPERTIES PUBLIC_HEADER include/libsocketcan.h SOVERSION ${LIB_SOVERSION} VERSION ${LIB_VERSION} ) install(TARGETS socketcan LIBRARY DESTINATION lib COMPONENT Development PUBLIC_HEADER DESTINATION include COMPONENT Development ) foreach(name ${PROGRAMS}) add_executable(${name} ${name}.c) if("${name}" IN_LIST PROGRAMS_J1939) target_link_libraries(${name} PRIVATE j1939 ) elseif("${name}" IN_LIST PROGRAMS_CANLIB) target_link_libraries(${name} PRIVATE can ) endif() install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR}) endforeach() ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/make_uninstall.cmake")