Conversion to using agl-compositor
[apps/agl-cluster-demo-dashboard.git] / app / CMakeLists.txt
1 ###########################################################################
2 # Copyright 2018,2019 Konsulko Group
3 #
4 # Author: Scott Murray <scott.murray@konsulko.com>
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 #     http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 ###########################################################################
18
19 set(CMAKE_INCLUDE_CURRENT_DIR ON)
20 set(CMAKE_AUTOMOC ON)
21 set(CMAKE_AUTORCC ON)
22 set(CMAKE_CXX_STANDARD 14)
23 set(CMAKE_CXX_STANDARD_REQUIRED ON)
24 set(OE_QMAKE_PATH_EXTERNAL_HOST_BINS $ENV{OE_QMAKE_PATH_HOST_BINS})
25
26 find_package(Qt5 COMPONENTS Core Gui QuickControls2 QuickWidgets REQUIRED)
27 find_package(Qt5Gui ${QT_MIN_VERSION} CONFIG REQUIRED Private)
28 find_package(PkgConfig REQUIRED)
29 find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
30
31 qt5_add_resources(RESOURCES cluster-gauges.qrc images/images.qrc)
32
33 PROJECT_TARGET_ADD(cluster-gauges)
34
35 add_custom_command(
36         OUTPUT  agl-shell-client-protocol.h
37         COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
38         < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell.xml
39         > ${CMAKE_SOURCE_DIR}/app/agl-shell-client-protocol.h
40         DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell.xml
41 )
42
43 add_custom_command(
44         OUTPUT  ${CMAKE_BINARY_DIR}/app/agl-shell-client-protocol.h
45         COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
46         < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell.xml
47         > ${CMAKE_SOURCE_DIR}/app/agl-shell-client-protocol.h
48         DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell.xml
49 )
50
51 add_custom_command(
52         OUTPUT  agl-shell-protocol.c
53         COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code
54         < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell.xml
55         > ${CMAKE_BINARY_DIR}/app/agl-shell-protocol.c
56         DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell.xml
57 )
58
59 add_executable(${TARGET_NAME}
60         main.cpp
61         agl-shell-protocol.c
62         agl-shell-client-protocol.h
63         ${RESOURCES}
64 )
65
66 pkg_check_modules(QTAPPFW REQUIRED qtappfw-signal-composer)
67 pkg_check_modules(GLIB REQUIRED glib-2.0)
68 pkg_check_modules(WAYLAND_CLIENT REQUIRED wayland-client)
69
70 include_directories(
71         include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
72         ${QTAPPFW_INCLUDE_DIRS}
73         ${GLIB_INCLUDE_DIRS}
74 )
75
76 set_target_properties(${TARGET_NAME} PROPERTIES
77         LABELS "EXECUTABLE"
78         PREFIX ""
79         COMPILE_FLAGS "${QTAPPFW_FLAGS} ${GLIB_FLAGS} ${EXTRAS_CFLAGS} -DFOR_AFB_BINDING"
80         LINK_FLAGS "${BINDINGS_LINK_FLAG}"
81         LINK_LIBRARIES "${EXTRAS_LIBRARIES}"
82         OUTPUT_NAME "${TARGET_NAME}"
83 )
84
85 target_link_libraries(${TARGET_NAME}
86         Qt5::QuickControls2
87         Qt5::QuickWidgets
88         ${QTAPPFW_LIBRARIES}
89         ${GLIB_LDFLAGS}
90         ${WAYLAND_CLIENT_LIBRARIES}
91 )