CMakeLists.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. cmake_minimum_required(VERSION 3.14)
  2. project(Megapixels C)
  3. set(CMAKE_C_STANDARD 11)
  4. # Use the package PkgConfig to detect GTK+ headers/library files
  5. FIND_PACKAGE(PkgConfig REQUIRED)
  6. PKG_CHECK_MODULES(GTK4 REQUIRED gtk4)
  7. PKG_CHECK_MODULES(FEEDBACK REQUIRED libfeedback-0.0)
  8. PKG_CHECK_MODULES(TIFF REQUIRED libtiff-4)
  9. PKG_CHECK_MODULES(ZBAR REQUIRED zbar)
  10. PKG_CHECK_MODULES(EPOXY REQUIRED epoxy)
  11. PKG_CHECK_MODULES(MEGAPIXELS REQUIRED libmegapixels)
  12. PKG_CHECK_MODULES(XLIB REQUIRED x11)
  13. PKG_CHECK_MODULES(XRANDR REQUIRED xrandr)
  14. PKG_CHECK_MODULES(WAYLAND REQUIRED wayland-client)
  15. # Setup CMake to use GTK+, tell the compiler where to look for headers
  16. # and to the linker where to look for libraries
  17. INCLUDE_DIRECTORIES(
  18. ${GTK4_INCLUDE_DIRS}
  19. ${FEEDBACK_INCLUDE_DIRS}
  20. ${TIFF_INCLUDE_DIRS}
  21. ${ZBAR_INCLUDE_DIRS}
  22. ${EPOXY_INCLUDE_DIRS}
  23. ${MEGAPIXELS_INCLUDE_DIRS}
  24. ${XLIB_INCLUDE_DIRS}
  25. ${XRANDR_INCLUDE_DIRS}
  26. ${WAYLAND_INCLUDE_DIRS}
  27. )
  28. LINK_DIRECTORIES(
  29. ${GTK4_LIBRARY_DIRS}
  30. ${FEEDBACK_LIBRARY_DIRS}
  31. ${TIFF_LIBRARY_DIRS}
  32. ${ZBAR_LIBRARY_DIRS}
  33. ${EPOXY_LIBRARY_DIRS}
  34. ${MEGAPIXELS_LIBRARY_DIRS}
  35. ${XLIB_LIBRARY_DIRS}
  36. ${XRANDR_LIBRARY_DIRS}
  37. ${WAYLAND_LIBRARY_DIRS}
  38. )
  39. # Add other flags to the compiler
  40. ADD_DEFINITIONS(
  41. ${GTK4_CFLAGS_OTHER}
  42. ${FEEDBACK_CFLAGS_OTHER}
  43. ${TIFF_CFLAGS_OTHER}
  44. ${ZBAR_CFLAGS_OTHER}
  45. ${EPOXY_CFLAGS_OTHER}
  46. ${MEGAPIXELS_CFLAGS_OTHER}
  47. ${XLIB_CFLAGS_OTHER}
  48. ${XRANDR_CFLAGS_OTHER}
  49. ${WAYLAND_CFLAGS_OTHER}
  50. )
  51. find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)
  52. set(GRESOURCE_C megapixels.gresource.c)
  53. set(GRESOURCE_XML data/org.postmarketos.Megapixels.gresource.xml)
  54. add_custom_command(
  55. OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
  56. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data
  57. COMMAND ${GLIB_COMPILE_RESOURCES}
  58. ARGS
  59. --generate-source
  60. --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
  61. ../${GRESOURCE_XML}
  62. VERBATIM
  63. MAIN_DEPENDENCY ${GRESOURCE_XML}
  64. )
  65. add_custom_target(
  66. dummy-resource
  67. DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
  68. )
  69. file(GLOB srcs src/*.c src/*h)
  70. add_executable(megapixels-gtk ${srcs} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} src/state.h)
  71. set_source_files_properties(
  72. ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
  73. PROPERTIES GENERATED TRUE
  74. )
  75. add_dependencies(megapixels-gtk dummy-resource)
  76. target_link_libraries(megapixels-gtk
  77. m
  78. ${GTK4_LIBRARIES}
  79. ${FEEDBACK_LIBRARIES}
  80. ${TIFF_LIBRARIES}
  81. ${ZBAR_LIBRARIES}
  82. ${EPOXY_LIBRARIES}
  83. ${MEGAPIXELS_LIBRARIES}
  84. ${XLIB_LIBRARIES}
  85. ${XRANDR_LIBRARIES}
  86. ${WAYLAND_LIBRARIES}
  87. )
  88. add_compile_definitions(VERSION="${PROJECT_VERSION}")
  89. add_compile_definitions(SYSCONFDIR="/etc")
  90. add_compile_definitions(DATADIR="/usr/share")