From f430407fd34ec2897359245a6e1ff951e5da5bc6 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Thu, 27 Dec 2018 12:04:59 +0100 Subject: Split the Qt part of the afb-helpers Split the Qt part of the afb-helpers in another library with only Qt helpers functions that could be enabled using the CMake option: AFB_HELPERS_QT=ON Bug-AGL: SPEC-1689 Change-Id: I761fef574ea61235226f3a1cb1663ddebec41c6d Signed-off-by: Romain Forlot --- CMakeLists.txt | 102 +++++++++++++++++++++++++++++++-------------------- afb-helpers-qt.pc.in | 30 +++++++++++++++ 2 files changed, 93 insertions(+), 39 deletions(-) create mode 100644 afb-helpers-qt.pc.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 3477ff3..c54809b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,11 +18,11 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.3) include(GNUInstallDirs) + set(TARGET_NAME "afb-helpers") set(PROJECT_PRETTY_NAME "Afb Helpers") -set(PROJECT_DESCRIPTION "afb helpers") -set(PROJECT_URL "https://github.com/iotbzh/4a-softmixer") -set(PROJECT_URL "https://gerrit.automotivelinux.org:29418/apps/app-afb-helpers-submodule.git") +set(PROJECT_DESCRIPTION "Library providing some helpful functions for apps using Application Framework Binder") +set(PROJECT_URL "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/libafb-helpers") set(PROJECT_AUTHOR "Ar Foll, Fulup") set(PROJECT_AUTHOR_MAIL "fulup@iot.bzh") set(PROJECT_LICENSE "APL2.0") @@ -35,12 +35,19 @@ set(CMAKE_AUTORCC ON) if(NOT CMAKE_INSTALL_PREFIX) set(CMAKE_INSTALL_PREFIX "/usr") endif() + add_definitions(-DAFB_BINDING_VERSION=3) +ADD_COMPILE_OPTIONS(-DCONTROL_SUPPORT_LUA -Wall -Wextra -Wconversion -Wno-unused-parameter -Wno-sign-compare -Wno-sign-conversion -Werror=maybe-uninitialized -Werror=implicit-function-declaration -ffunction-sections -fdata-sections -fPIC) + +option(AFB_HELPERS "Enable the basics helpers functions for the Application Framework Binders" ON) +option(AFB_HELPERS_QT "Enable the Qt helpers functions for the Application Framework Binders" OFF) INCLUDE(FindPkgConfig) set (PKG_REQUIRED_LIST afb-daemon - ) +) + +find_package(CURL REQUIRED) # Loop on required package and add options foreach (PKG_CONFIG ${PKG_REQUIRED_LIST}) @@ -52,48 +59,65 @@ foreach (PKG_CONFIG ${PKG_REQUIRED_LIST}) add_compile_options (${${XPREFIX}_CFLAGS}) endforeach(PKG_CONFIG) -set(AFB_HELPERS_SRCS wrap-json.c filescan-utils.c escape.c afb-timer.c) - -option(AFB_HELPERS_QTWSCLIENT "Enable the Qt's websocket client to Application Framework Binders" ON) -find_package(CURL REQUIRED) +if(${AFB_HELPERS}) + set(AFB_HELPERS_SRCS wrap-json.c filescan-utils.c escape.c afb-timer.c curl-wrap.c) -set(AFB_HELPERS_HEADERS afb-helpers-utils.h curl-wrap.h escape.h - filescan-utils.h qafbwebsocketclient.h wrap-json.h afb-timer.h + set(AFB_HELPERS_HEADERS afb-helpers-utils.h curl-wrap.h escape.h + filescan-utils.h wrap-json.h afb-timer.h ) -set(AFB_HELPERS_SRCS ${AFB_HELPERS_SRCS} qafbwebsocketclient.cpp qafbwebsocketclient.h) -find_package(Qt5WebSockets REQUIRED) -include_directories(${Qt5WebSockets_INCLUDE_DIRS}) - -set(AFB_HELPERS_SRCS ${AFB_HELPERS_SRCS} curl-wrap.c) + # Define targets + ADD_LIBRARY(${TARGET_NAME} STATIC ${AFB_HELPERS_SRCS}) + + target_link_libraries(${TARGET_NAME} curl) + + # Define target includes + TARGET_INCLUDE_DIRECTORIES(${TARGET_NAME} + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + ) + + CONFIGURE_FILE(afb-helpers.pc.in afb-helpers.pc @ONLY) + INSTALL(FILES + ${CMAKE_CURRENT_BINARY_DIR}/afb-helpers.pc + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/pkgconfig + ) + INSTALL(TARGETS ${TARGET_NAME} + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) + INSTALL(FILES ${AFB_HELPERS_HEADERS} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) +endif() -# Define targets -ADD_LIBRARY(${TARGET_NAME} STATIC ${AFB_HELPERS_SRCS}) +if(${AFB_HELPERS_QT}) + find_package(Qt5WebSockets REQUIRED) -target_link_libraries(${TARGET_NAME} Qt5::WebSockets) + set(AFB_HELPERS_QT_HEADERS qafbwebsocketclient.h) -target_link_libraries(${TARGET_NAME} curl) + set(AFB_HELPERS_QT_SRCS qafbwebsocketclient.cpp) -# Library properties -SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES - OUTPUT_NAME ${TARGET_NAME} - ) + # Define Qt targets + ADD_LIBRARY(${TARGET_NAME}-qt STATIC ${AFB_HELPERS_QT_SRCS}) -# Define target includes -TARGET_INCLUDE_DIRECTORIES(${TARGET_NAME} - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} - ) + include_directories(${Qt5WebSockets_INCLUDE_DIRS}) + target_link_libraries(${TARGET_NAME}-qt Qt5::WebSockets) -CONFIGURE_FILE(afb-helpers.pc.in afb-helpers.pc @ONLY) -INSTALL(FILES - ${CMAKE_CURRENT_BINARY_DIR}/afb-helpers.pc - DESTINATION - ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) + # Define Qt target includes + TARGET_INCLUDE_DIRECTORIES(${TARGET_NAME}-qt + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + ) -INSTALL(TARGETS ${TARGET_NAME} - DESTINATION ${CMAKE_INSTALL_LIBDIR} - ) -INSTALL(FILES ${AFB_HELPERS_HEADERS} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ) + CONFIGURE_FILE(afb-helpers-qt.pc.in afb-helpers-qt.pc @ONLY) + INSTALL(FILES + ${CMAKE_CURRENT_BINARY_DIR}/afb-helpers-qt.pc + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/pkgconfig + ) + INSTALL(TARGETS ${TARGET_NAME}-qt + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) + INSTALL(FILES ${AFB_HELPERS_QT_HEADERS} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) +endif() diff --git a/afb-helpers-qt.pc.in b/afb-helpers-qt.pc.in new file mode 100644 index 0000000..9bda785 --- /dev/null +++ b/afb-helpers-qt.pc.in @@ -0,0 +1,30 @@ +## +## Copyright (C) 2016, 2017, 2018 "IoT.bzh" +## +## This file is part of afb-daemon project. +## +## Licensed under the Apache License, Version 2.0 (the "License"); +## you may not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## + +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: @TARGET_NAME@-qt +Description: @PROJECT_DESCRIPTION@ and Qt +Version: @PROJECT_VERSION@ +URL: @PROJECT_URL@ +Libs.private: +Libs: -L@CMAKE_INSTALL_LIBDIR@ -l@TARGET_NAME@-qt +Cflags: -I${includedir} -- cgit 1.2.3-korg