Fix WM connection
[apps/agl-service-windowmanager.git] / CMakeLists.txt
index 8a69a43..7cf640f 100644 (file)
@@ -26,6 +26,37 @@ set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE
 find_package(PkgConfig REQUIRED)
 include(GNUInstallDirs)
 
+macro(wlproto var_basename proto_xml_basename)
+   if("${WLSCAN}" STREQUAL "")
+      find_program(WLSCAN NAMES wayland-scanner)
+   endif()
+
+   if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/protocol)
+      set(proto_dir "${CMAKE_CURRENT_SOURCE_DIR}/protocol")
+   elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../protocol)
+      set(proto_dir "${CMAKE_CURRENT_SOURCE_DIR}/../protocol")
+   else()
+      message(FATAL_ERROR "Could not find ${CMAKE_CURRENT_SOURCE_DIR}/protocol or ${CMAKE_CURRENT_SOURCE_DIR}/../protocol")
+   endif()
+
+   add_custom_command(
+      OUTPUT
+         ${proto_xml_basename}-protocol.c
+         #${proto_xml_basename}-server-protocol.h
+         ${proto_xml_basename}-client-protocol.h
+      MAIN_DEPENDENCY ${proto_dir}/${proto_xml_basename}.xml
+      COMMAND ${WLSCAN} code <          ${proto_dir}/${proto_xml_basename}.xml > ${proto_xml_basename}-protocol.c
+      #COMMAND ${WLSCAN} server-header < ${proto_dir}/${proto_xml_basename}.xml > ${proto_xml_basename}-server-protocol.h
+      COMMAND ${WLSCAN} client-header < ${proto_dir}/${proto_xml_basename}.xml > ${proto_xml_basename}-client-protocol.h
+   )
+
+   set(${var_basename}_PROTO ${CMAKE_CURRENT_BINARY_DIR}/${proto_xml_basename}-protocol.c)
+   set(${var_basename}_CLIENT ${CMAKE_CURRENT_BINARY_DIR}/${proto_xml_basename}-client-protocol.h)
+   #set(${var_basename}_SERVER ${CMAKE_CURRENT_BINARY_DIR}/${proto_xml_basename}-server-protocol.h)
+
+   include_directories(${CMAKE_CURRENT_BINARY_DIR})
+endmacro()
+
 set(SANITIZER_MODE "none" CACHE STRING "Build using a specific sanitizer (e.g. 'address', 'thread', 'leak', 'undefined'), depends on compiler; default none")
 
 set(LINK_LIBCXX OFF CACHE BOOL "Link against LLVMs libc++")