1
0
Fork 0
mirror of https://github.com/albfan/miraclecast.git synced 2025-02-15 04:42:06 +00:00
miraclecast/demo/CMakeLists.txt

100 lines
3.4 KiB
CMake

find_program(VALAC valac)
if(NOT VALAC)
message(FATAL_ERROR "valac not found")
endif()
find_program(VALA_DBUS_BINDING_TOOL vala-dbus-binding-tool)
if(NOT VALA_DBUS_BINDING_TOOL)
message(FATAL_ERROR "vala-dbus-binding-tool not found")
endif()
find_program(GLIB_COMPILE_RESOURCES glib-compile-resources)
if(NOT GLIB_COMPILE_RESOURCES)
message(FATAL_ERROR "glib-compile-resources not found")
endif()
find_library(READLINE REQUIRED)
pkg_check_modules(GIO2 REQUIRED gio-2.0)
pkg_check_modules(GDK3 REQUIRED gdk-3.0)
execute_process(COMMAND ${VALAC} --version
OUTPUT_VARIABLE VALAC_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE "Vala " "" VALAC_VERSION "${VALAC_VERSION}")
if(VALAC_VERSION VERSION_GREATER 0.34.0)
list(APPEND VALA_EXTRA_OPTIONS -D VALA_VERSION_NEWER_THEN_0_34)
endif()
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --atleast-version 3.22 gdk-3.0
RESULT_VARIABLE GDK_VERSION_NEWER_THEN_3_22)
if(NOT GDK_VERSION_NEWER_THEN_3_22)
list(APPEND VALA_EXTRA_OPTIONS -D GDK_VERSION_NEWER_THEN_3_22)
endif()
set(RES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/res)
set(DBUS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dbus)
add_custom_command(OUTPUT org-freedesktop-networkmanager.vala
org-freedesktop-miracle-wifi.vala
org-freedesktop-miracle-wfd.vala
COMMAND ${VALA_DBUS_BINDING_TOOL}
--gdbus
--no-synced
--rename-namespace=org:Org
--rename-namespace=freedesktop:Freedesktop
--rename-namespace=miracle:Miracle
--rename-namespace=wifi:Wifi
--rename-namespace=wfd:Wfd
--api-path=${DBUS_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_custom_command(OUTPUT wfdctl.c
wfdctl.h
org-freedesktop-networkmanager.c
org-freedesktop-miracle-wifi.c
org-freedesktop-miracle-wfd.c
COMMAND ${VALAC} --target-glib=2.50 -H wfdctl.h --use-header -C
--pkg=gio-2.0
--pkg=gdk-3.0
${CMAKE_CURRENT_SOURCE_DIR}/wfdctl.vala
${CMAKE_CURRENT_SOURCE_DIR}/sigint.vapi
org-freedesktop-networkmanager.vala
org-freedesktop-miracle-wifi.vala
org-freedesktop-miracle-wfd.vala
${VALA_EXTRA_OPTIONS}
DEPENDS wfdctl.vala
${CMAKE_CURRENT_BINARY_DIR}/org-freedesktop-networkmanager.vala
${CMAKE_CURRENT_BINARY_DIR}/org-freedesktop-miracle-wifi.vala
${CMAKE_CURRENT_BINARY_DIR}/org-freedesktop-miracle-wfd.vala
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_custom_command(OUTPUT wfdctl-res.c
COMMAND ${GLIB_COMPILE_RESOURCES}
--generate-source
--target=${CMAKE_CURRENT_BINARY_DIR}/wfdctl-res.c
${RES_DIR}/wfdctl-res.xml
DEPENDS ${RES_DIR}/wfdctl.ui
${RES_DIR}/wfdctl-res.xml
WORKING_DIRECTORY ${RES_DIR})
include_directories(${GIO2_INCLUDE_DIRS}
${GDK3_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR})
# silent C compiler warning about valac generated code, bad practice
set(CMAKE_C_FLAGS "-Wno-unused-label ${CMAKE_C_FLAGS}")
set(CMAKE_C_FLAGS "-Wno-incompatible-pointer-types ${CMAKE_C_FLAGS}")
set(CMAKE_C_FLAGS "-Wno-deprecated-declarations ${CMAKE_C_FLAGS}")
set(CMAKE_C_FLAGS "-Wno-unused-but-set-variable ${CMAKE_C_FLAGS}")
add_executable(miracle-wfdctl wfdctl
wfdctl-res.c
sigint.c
org-freedesktop-networkmanager.c
org-freedesktop-miracle-wifi.c
org-freedesktop-miracle-wfd.c)
target_link_libraries(miracle-wfdctl ${GIO2_LIBRARIES}
${GDK3_LIBRARIES})
install(TARGETS miracle-wfdctl DESTINATION bin)