Update to use CMake app template
[apps/agl-service-windowmanager.git] / src / CMakeLists.txt
index 47d4bf8..d35c17e 100644 (file)
@@ -1,5 +1,6 @@
 #
 # Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+# Copyright (C) 2020 Konsulko Group
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # limitations under the License.
 #
 
-wlproto(IVI_CON ivi-wm)
-
-include(FindPkgConfig)
-pkg_check_modules(AFB REQUIRED afb-daemon)
-pkg_check_modules(SD REQUIRED libsystemd>=222)
-
-# We do not want a prefix for our module
-set(CMAKE_SHARED_MODULE_PREFIX "")
-
-set(TARGETS_WM windowmanager-service)
-
-add_library(${TARGETS_WM} MODULE
-   main.cpp
-   wayland_ivi_wm.cpp
-   util.cpp
-   layout.cpp
-   ${IVI_CON_PROTO}
-   json_helper.cpp
-   app.cpp
-   layers.cpp
-   config.cpp)
-
-target_include_directories(${TARGETS_WM}
-    PRIVATE
-        ${AFB_INCLUDE_DIRS}
-        ${SD_INCLUDE_DIRS}
-        ../include
-        ../src)
-
-target_link_libraries(${TARGETS_WM}
-    PRIVATE
-        ${AFB_LIBRARIES}
-        ${WLC_LIBRARIES}
-        ${SD_LIBRARIES})
-
-target_compile_definitions(${TARGETS_WM}
-    PRIVATE
-        AFB_BINDING_VERSION=2
+PROJECT_TARGET_ADD(windowmanager-service)
+
+# Define project Targets
+add_library(${TARGET_NAME} MODULE
+       main.cpp
+       util.cpp
+       json_helper.cpp
+       applist.cpp
+       request.cpp
+       pm_wrapper.cpp
+       window_manager.cpp
+       wm_client.cpp
+       wm_error.cpp
+       wm_layer.cpp
+       wm_layer_control.cpp)
+
+target_include_directories(${TARGET_NAME} PRIVATE
+       ../${PLUGIN_PM})
+
+target_compile_definitions(${TARGET_NAME} PRIVATE
+        AFB_BINDING_VERSION=3
         # We do not want source location of messages
         AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS
-        WINMAN_VERSION_STRING="${PACKAGE_VERSION}"
-        _GNU_SOURCE)
-
-if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release")
-   target_compile_definitions(${TARGETS_WM}
-       PRIVATE
-           _GLIBCXX_DEBUG)
-endif()
-
-target_compile_options(${TARGETS_WM}
-    PRIVATE
-        -Wall -Wextra -Wno-unused-parameter -Wno-comment)
+       WINMAN_VERSION_STRING="${PACKAGE_VERSION}")
 
-set_target_properties(${TARGETS_WM}
-    PROPERTIES
-    # INTERPROCEDURAL_OPTIMIZATION ON
+set_target_properties(${TARGET_NAME} PROPERTIES
+       LABELS "BINDING"
+       PREFIX ""
+       LINK_FLAGS ${BINDINGS_LINK_FLAG}
+       OUTPUT_NAME ${TARGET_NAME}
 
+       # INTERPROCEDURAL_OPTIMIZATION ON
         CXX_EXTENSIONS OFF
         CXX_STANDARD 14
         CXX_STANDARD_REQUIRED ON
@@ -78,37 +54,23 @@ set_target_properties(${TARGETS_WM}
         C_EXTENSIONS OFF
         C_STANDARD 99
         C_STANDARD_REQUIRED ON
+)
 
-        LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map")
+target_link_libraries(${TARGET_NAME} PRIVATE ${PLUGIN_PM})
 
-if (LINK_LIBCXX)
-   set_target_properties(${TARGETS_WM}
-           PROPERTIES
-           LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map -lc++")
-endif()
+target_link_options(${TARGET_NAME} PRIVATE "-Wl,-rpath,'$ORIGIN'")
 
 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
-   target_compile_options(${TARGETS_WM}
-      PRIVATE
-         -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
-   set_target_properties(${TARGETS_WM}
-      PROPERTIES
-         LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
+       target_compile_options(${TARGET_NAME} PRIVATE
+               -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
+       set_target_properties(${TARGET_NAME} PROPERTIES
+               LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
 endif()
 
-if(NOT EXISTS ${PROJECT_BINARY_DIR}/package)
-   add_custom_command(TARGET ${TARGETS_WM} POST_BUILD
-      COMMAND cp -rf ${PROJECT_SOURCE_DIR}/package ${PROJECT_BINARY_DIR}
-   )
-endif()
-
-add_custom_command(TARGET ${TARGETS_WM} POST_BUILD
-   COMMAND mkdir -p ${PROJECT_BINARY_DIR}/package/root/lib
-   COMMAND cp -rf ${PROJECT_BINARY_DIR}/src/${TARGETS_WM}.so ${PROJECT_BINARY_DIR}/package/root/lib
-   COMMAND mkdir -p ${PROJECT_BINARY_DIR}/package/root/etc
-   COMMAND cp -f ${PROJECT_SOURCE_DIR}/layers.json ${PROJECT_BINARY_DIR}/package/root/etc
+add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
+       COMMAND mkdir -p ${PROJECT_BINARY_DIR}/package/etc
+       COMMAND cp -f ${CMAKE_SOURCE_DIR}/conf/layers.json ${PROJECT_BINARY_DIR}/package/etc
+       COMMAND cp -f ${CMAKE_SOURCE_DIR}/conf/areas.json ${PROJECT_BINARY_DIR}/package/etc
 )
 
-add_custom_target(package DEPENDS ${PROJECT_BINARY_DIR}/package/root
-   COMMAND wgtpkg-pack -f -o ${PROJECT_BINARY_DIR}/package/${TARGETS_WM}-2017.wgt ${PROJECT_BINARY_DIR}/package/root
-)
+