Split the Qt part of the afb-helpers 71/19371/1 sandbox/claneys/shared-lib
authorRomain Forlot <romain.forlot@iot.bzh>
Thu, 27 Dec 2018 11:04:59 +0000 (12:04 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 27 Dec 2018 16:06:17 +0000 (17:06 +0100)
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 <romain.forlot@iot.bzh>
CMakeLists.txt
afb-helpers-qt.pc.in [new file with mode: 0644]

index 3477ff3..c54809b 100644 (file)
 
 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 (file)
index 0000000..9bda785
--- /dev/null
@@ -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}