summaryrefslogtreecommitdiffstats
path: root/app/CMakeLists.txt
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2021-03-02 18:30:32 +0200
committerMarius Vlad <marius.vlad@collabora.com>2021-03-03 13:29:39 +0200
commitb89e581a2fab177e79d64b5990a464683eac49fa (patch)
tree67b289f621a34ecba93c50d7561199d56a9bda93 /app/CMakeLists.txt
parent99188584dda7a3f83b4cbbb34b11cf4361d23248 (diff)
Bug-AGL: SPEC-3629 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib1a221f03dfac3114bbd3477dc488dd90c86ba35
Diffstat (limited to 'app/CMakeLists.txt')
-rw-r--r--app/CMakeLists.txt124
1 files changed, 124 insertions, 0 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
new file mode 100644
index 0000000..02322d4
--- /dev/null
+++ b/app/CMakeLists.txt
@@ -0,0 +1,124 @@
+###########################################################################
+# Copyright 2018 Konsulko Group
+# Copyright 2020 Collabora, Ltd.
+#
+# Author: Scott Murray <scott.murray@konsulko.com>
+# Author: Marius Vlad <marius.vlad@collabora.com>
+#
+# 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.
+###########################################################################
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package(PkgConfig REQUIRED)
+find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
+
+PROJECT_TARGET_ADD(camera-gstreamer)
+
+add_custom_command(
+ OUTPUT agl-shell-desktop-client-protocol.h
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
+ < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ > ${CMAKE_SOURCE_DIR}/app/agl-shell-desktop-client-protocol.h
+ DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+)
+
+
+add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/app/agl-shell-desktop-client-protocol.h
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
+ < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ > ${CMAKE_SOURCE_DIR}/app/agl-shell-desktop-client-protocol.h
+ DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+)
+
+add_custom_command(
+ OUTPUT agl-shell-desktop-protocol.c
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code
+ < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ > ${CMAKE_BINARY_DIR}/app/agl-shell-desktop-protocol.c
+ DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+)
+
+
+pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0)
+pkg_check_modules(GSTREAMER_PLUGINS_BASE REQUIRED gstreamer-plugins-base-1.0)
+pkg_check_modules(GSTREAMER_VIDEO REQUIRED gstreamer-video-1.0)
+pkg_check_modules(GSTREAMER_PLUGINS_BAD REQUIRED gstreamer-plugins-bad-1.0)
+
+pkg_check_modules(WAYLAND_CLIENT REQUIRED wayland-client)
+pkg_check_modules(WAYLAND_PROTOCOLS REQUIRED wayland-protocols>=1.18)
+pkg_get_variable(WAYLAND_PROTOCOLS_BASE wayland-protocols pkgdatadir)
+
+add_custom_command(
+ OUTPUT xdg-shell-client-protocol.h
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
+ < ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+ > ${CMAKE_SOURCE_DIR}/app/xdg-shell-client-protocol.h
+ DEPENDS ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+)
+
+
+add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/app/xdg-shell-client-protocol.h
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
+ < ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+ > ${CMAKE_SOURCE_DIR}/app/xdg-shell-client-protocol.h
+ DEPENDS ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+)
+
+add_custom_command(
+ OUTPUT xdg-shell-protocol.c
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code
+ < ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+ > ${CMAKE_BINARY_DIR}/app/xdg-shell-protocol.c
+ DEPENDS ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+)
+
+add_executable(${TARGET_NAME}
+ main.cpp
+ utils.h
+ utils.cpp
+ agl-shell-desktop-protocol.c
+ agl-shell-desktop-client-protocol.h
+ xdg-shell-protocol.c
+ xdg-shell-client-protocol.h
+ ${RESOURCES}
+)
+
+include_directories(
+ "${GSTREAMER_INCLUDE_DIRS}"
+ "${GSTREAMER_PLUGINS_BASE_INCLUDE_DIRS}"
+ "${GSTREAMER_PLUGINS_BAD_INCLUDE_DIRS}"
+ "${GSTREAMER_VIDEO_INCLUDE_DIRS}"
+)
+
+set_target_properties(${TARGET_NAME} PROPERTIES
+ LABELS "EXECUTABLE"
+ PREFIX ""
+ COMPILE_FLAGS "${EXTRAS_CFLAGS} -DFOR_AFB_BINDING"
+ LINK_FLAGS "${BINDINGS_LINK_FLAG}"
+ LINK_LIBRARIES "${EXTRAS_LIBRARIES}"
+ OUTPUT_NAME "${TARGET_NAME}"
+)
+
+target_link_libraries(${TARGET_NAME}
+ ${GSTREAMER_LIBRARIES}
+ "${GSTREAMER_PLUGINS_BASE_LIBRARIES}"
+ "${GSTREAMER_PLUGINS_BAD_LIBRARIES}"
+ "${GSTREAMER_VIDEO_LIBRARIES}"
+ ${WAYLAND_CLIENT_LIBRARIES}
+ -lgstwayland-1.0
+)