# Copyright 2015, 2016, 2017 IoT.bzh
#
# author: Fulup Ar Foll <fulup@iot.bzh>
+# contrib: Romain Forlot <romain.forlot@iot.bzh>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
###########################################################################
# Add target to project dependency list
-PROJECT_TARGET_ADD(low-can-binding)
- # Define project Targets
- fill_include_dir(${PROJECT_LIBDIR})
- file(GLOB filelist "${PROJECT_LIBDIR}/*")
- foreach(filename ${filelist})
- if(IS_DIRECTORY ${filename})
- include_directories(${filename})
- STRING(REGEX REPLACE "^.*\/(.*)$" "\\1" shortname ${filename})
- find_source_files(${PROJECT_LIBDIR})
- add_library(${shortname} STATIC ${sources_files})
- endif(IS_DIRECTORY ${filename})
- endforeach()
+PROJECT_TARGET_ADD(low-can)
- add_library(${TARGET_NAME} MODULE ${TARGET_NAME}.cpp configuration.cpp configuration-generated.cpp
- can/can-bus.cpp can/can-bus-dev.cpp can/can-message-set.cpp can/can-message-definition.cpp can/can-message.cpp can/can-signals.cpp can/can-decoder.cpp
- diagnostic/diagnostic-message.cpp diagnostic/diagnostic-manager.cpp diagnostic/active-diagnostic-request.cpp
- utils/signals.cpp utils/openxc-utils.cpp utils/timer.cpp utils/socket.cpp)
+ if(WITH_FEATURE_ISOTP)
+ set(SOURCES_ISOTP
+ utils/socketcan-isotp.cpp
+ )
+ endif()
- # Binder exposes a unique public entry point
- SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
- PREFIX ""
- LINK_FLAGS ${BINDINGS_LINK_FLAG}
- OUTPUT_NAME ${TARGET_NAME}
+
+ if(WITH_FEATURE_J1939)
+ set(SOURCES_J1939
+ can/message/j1939-message.cpp
+ utils/socketcan-j1939/socketcan-j1939.cpp
+ utils/socketcan-j1939/socketcan-j1939-data.cpp
+ utils/socketcan-j1939/socketcan-j1939-addressclaiming.cpp
)
+ endif()
- # Library dependencies (include updates automatically)
- TARGET_LINK_LIBRARIES(${TARGET_NAME}
- ${EXTRA_LINK_LIBRARIES}
- ${link_libraries}
+ set (SOURCES_LIB
+ binding/low-can-hat.cpp
+ binding/low-can-subscription.cpp
+ binding/application.cpp
+ can/can-bus.cpp
+ can/can-decoder.cpp
+ can/can-encoder.cpp
+ can/message-set.cpp
+ can/message-definition.cpp
+ can/message/message.cpp
+ can/message/can-message.cpp
+ can/signals.cpp
+ diagnostic/diagnostic-message.cpp
+ diagnostic/diagnostic-manager.cpp
+ diagnostic/active-diagnostic-request.cpp
+ utils/signals.cpp
+ utils/openxc-utils.cpp
+ utils/timer.cpp
+ utils/socketcan.cpp
+ #utils/socketcan-raw.cpp
+ utils/socketcan-bcm.cpp
+ utils/config-parser.cpp
+ utils/converter.cpp
)
- # installation directory
- INSTALL(TARGETS ${TARGET_NAME}
- LIBRARY DESTINATION ${BINDINGS_INSTALL_DIR})
+ add_library(${TARGET_NAME} SHARED ${SOURCES_LIB} ${SOURCES_J1939} ${SOURCES_ISOTP})
- # WGT packaging
- message(STATUS "Creation of ${TARGET_NAME}.wgt package for AppFW")
+ TARGET_LINK_LIBRARIES(${TARGET_NAME}
+ ini-config
+ openxc-message-format
+ uds-c
+ isotp-c
+ bitfield-c
+ ${link_libraries})
- configure_file(${PROJECT_WGT_DIR}/config.xml config.xml)
+PROJECT_TARGET_ADD(low-can-binding)
+
+ # Define project Targets
+ set (SOURCES
+ binding/low-can-cb.cpp
+ )
- if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_WGT_DIR}/etc")
- file(GLOB conf_files "${PROJECT_WGT_DIR}/etc/*")
- foreach(filename ${conf_files})
- STRING(REGEX REPLACE "^.*\/(.*)$" "\\1" shortname ${filename})
- message(STATUS "Copying config file ${shortname}")
- configure_file(${filename} ${shortname})
- endforeach()
- endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_WGT_DIR}/etc")
+ add_library(${TARGET_NAME} MODULE ${SOURCES})
- add_custom_command(
- OUTPUT ${TARGET_NAME}.wgt
- DEPENDS ${TARGET_NAME} ${EXTRA_LINK_LIBRARIES} ${conf_files} ${PROJECT_WGT_DIR}/config.xml
- COMMAND rm -rf package
- COMMAND mkdir -p package/lib package/htdocs package/etc
- COMMAND cp config.xml package/
- COMMAND cp ${conf_files} package/etc
- COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/packaging/wgt/${PROJECT_ICON} package/icon.png
- COMMAND cp ${TARGET_NAME}.so package/lib
- COMMAND wgtpkg-pack -f -o ${TARGET_NAME}.wgt package
+ set(OPENAPI_DEF "binding/low-can-apidef" CACHE STRING "name and path to the JSON API definition without extension")
+ # Binder exposes a unique public entry point
+ SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
+ PREFIX "afb-"
+ LABELS "BINDINGV3"
+ LINK_FLAGS ${BINDINGS_LINK_FLAG}
+ OUTPUT_NAME ${TARGET_NAME}
)
- add_custom_target(widget ALL DEPENDS ${TARGET_NAME}.wgt)
+
+ # Library dependencies (include updates automatically)
+ TARGET_LINK_LIBRARIES(${TARGET_NAME}
+ low-can
+ ini-config
+ openxc-message-format
+ uds-c
+ isotp-c
+ bitfield-c
+ appcontroller
+ ${link_libraries})