CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-##### Configure project version, especially when using
+##### Configure project version when using
##### outdated tools like CMake v2
IF(POLICY CMP0048)
INCLUDE(cmake/CheckFrameworks.cmake)
INCLUDE(cmake/CStandard.cmake)
-SET(ENABLE_DUMMY_BACKEND OFF)
-
-IF(NOT ARTIK_SECURITY_FOUND)
- SET(ENABLE_DUMMY_BACKEND ON)
- message(WARNING "Dummy backend enabled as no usable frameworks found")
-ENDIF()
+option(ENABLE_DUMMY_BACKEND "Enable dummy crypto backend" OFF)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/dcm_build_config.h.in
${CMAKE_CURRENT_BINARY_DIR}/dcm_build_config.h)
CHECK_INCLUDE_FILE("pkix_interface.h" HAVE_PKIX_INTERFACE)
+FIND_PACKAGE(Boost 1.54 COMPONENTS unit_test_framework)
+
FIND_PACKAGE(Boost 1.54
REQUIRED
COMPONENTS
program_options
log
thread
- system
- )
+ system)
FIND_PACKAGE(PkgConfig REQUIRED)
ApplyCxx11Standard(device-certificate-manager)
target_link_libraries(device-certificate-manager
- ${Boost_LIBRARIES}
+ ${Boost_SYSTEM_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${PROTOBUF_LIBRARIES}
${MBEDTLS_LIB}
${MBEDCRYPTO_LIB})
+set_property(TARGET device-certificate-manager APPEND PROPERTY LINK_FLAGS "-Wl,--no-undefined")
+
IF(DLOG_FOUND)
target_link_libraries(device-certificate-manager ${DLOG_LIBRARIES})
ENDIF()
IF(ARTIK_SECURITY_FOUND)
include_directories(${ARTIK_SECURITY_INCLUDE_DIRS})
add_definitions(${ARTIK_SECURITY_CFLAGS_OTHER})
+ add_definitions(-DUSE_ARTIK_SECURITY_HEADERS=1)
ENDIF(ARTIK_SECURITY_FOUND)
IF(SMACK_FOUND)
SET(DUMMY_BACKEND_OBJECTS $<TARGET_OBJECTS:dummy_backend_objects>)
ENDIF(ENABLE_DUMMY_BACKEND)
-IF(ARTIK_SECURITY_FOUND)
+IF(SECURITY_MANAGER_FOUND)
SET(SEE_BACKEND_OBJECTS $<TARGET_OBJECTS:see-backend>)
-ENDIF(ARTIK_SECURITY_FOUND)
+ENDIF(SECURITY_MANAGER_FOUND)
###### Main executable #######
###### Framework linking #######
-target_link_libraries(device-certificate-managerd ${Boost_LIBRARIES}
- ${CMAKE_THREAD_LIBS_INIT}
+target_link_libraries(device-certificate-managerd
+ ${Boost_LOG_LIBRARY}
+ ${Boost_THREAD_LIBRARY}
+ ${Boost_FILESYSTEM_LIBRARY}
+ ${Boost_PROGRAM_OPTIONS_LIBRARY}
+ ${Boost_SYSTEM_LIBRARY}
+ ${CMAKE_THREAD_LIBS_INIT}
device-certificate-manager
dl)
auto backend = crypto_backend_roster::instance().choose_backend(message.service(), message.usage());
if(!backend) {
+ BOOST_LOG_SEV(dcm_logger::get(), log_severity::error) << "No crypto usable backend available";
throw std::invalid_argument("Unable to find crypto backend");
}
-IF(ARTIK_SECURITY_FOUND)
- add_library(see-backend
- OBJECT
- seebackend.cpp
- seebackendcontext.cpp)
-
- add_dependencies(see-backend protobuf_generated)
-ENDIF()
+add_library(see-backend
+ OBJECT
+ seebackend.cpp
+ seebackendcontext.cpp)
+
+add_dependencies(see-backend protobuf_generated)
-/*
- * Workaround for broken header definitions
- */
-#undef public
-#define public
+#ifdef USE_ARTIK_SECURITY_HEADERS
#include <artik/security.h>
-#undef public
+#else
+
+#ifndef _ARTIK_SECURITY_H_
+#define _ARTIK_SECURITY_H_
+
+typedef struct {
+ void *data;
+ unsigned int length;
+} see_data;
+
+typedef enum {
+ ECDSA_SEC_P256R1 = 3 /**< nist curve for P256r1 */
+} see_ecdsa_curve;
+
+#endif
+
+#endif
Source1002: device-certificate-manager-devel.manifest
BuildRequires: cmake
BuildRequires: pkgconfig(dlog)
-# BuildRequires: pkgconfig(artik-security)
BuildRequires: pkgconfig(libsystemd-daemon)
BuildRequires: pkgconfig(security-manager)
BuildRequires: pkgconfig(libsmack)
install(TARGETS dcm_example_client dcm_hw_api_test
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+IF(Boost_UNIT_TEST_FRAMEWORK_FOUND)
+ELSE()
+ message(STATUS "Boost::test library not found. Disabling unit test build")
+ENDIF()