CMakeLists.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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(DNG REQUIRED libdng)
  13. PKG_CHECK_MODULES(XLIB REQUIRED x11)
  14. PKG_CHECK_MODULES(XRANDR REQUIRED xrandr)
  15. PKG_CHECK_MODULES(WAYLAND REQUIRED wayland-client)
  16. # Setup CMake to use GTK+, tell the compiler where to look for headers
  17. # and to the linker where to look for libraries
  18. INCLUDE_DIRECTORIES(
  19. ${GTK4_INCLUDE_DIRS}
  20. ${FEEDBACK_INCLUDE_DIRS}
  21. ${DNG_INCLUDE_DIRS}
  22. ${ZBAR_INCLUDE_DIRS}
  23. ${EPOXY_INCLUDE_DIRS}
  24. ${MEGAPIXELS_INCLUDE_DIRS}
  25. ${XLIB_INCLUDE_DIRS}
  26. ${XRANDR_INCLUDE_DIRS}
  27. ${WAYLAND_INCLUDE_DIRS}
  28. )
  29. LINK_DIRECTORIES(
  30. ${GTK4_LIBRARY_DIRS}
  31. ${FEEDBACK_LIBRARY_DIRS}
  32. ${DNG_LIBRARY_DIRS}
  33. ${ZBAR_LIBRARY_DIRS}
  34. ${EPOXY_LIBRARY_DIRS}
  35. ${MEGAPIXELS_LIBRARY_DIRS}
  36. ${XLIB_LIBRARY_DIRS}
  37. ${XRANDR_LIBRARY_DIRS}
  38. ${WAYLAND_LIBRARY_DIRS}
  39. )
  40. # Add other flags to the compiler
  41. ADD_DEFINITIONS(
  42. ${GTK4_CFLAGS_OTHER}
  43. ${FEEDBACK_CFLAGS_OTHER}
  44. ${DNG_CFLAGS_OTHER}
  45. ${ZBAR_CFLAGS_OTHER}
  46. ${EPOXY_CFLAGS_OTHER}
  47. ${MEGAPIXELS_CFLAGS_OTHER}
  48. ${XLIB_CFLAGS_OTHER}
  49. ${XRANDR_CFLAGS_OTHER}
  50. ${WAYLAND_CFLAGS_OTHER}
  51. )
  52. find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)
  53. set(GRESOURCE_C megapixels.gresource.c)
  54. set(GRESOURCE_XML data/org.postmarketos.Megapixels.gresource.xml)
  55. add_custom_command(
  56. OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
  57. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data
  58. COMMAND ${GLIB_COMPILE_RESOURCES}
  59. ARGS
  60. --generate-source
  61. --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
  62. ../${GRESOURCE_XML}
  63. VERBATIM
  64. MAIN_DEPENDENCY ${GRESOURCE_XML}
  65. )
  66. add_custom_target(
  67. dummy-resource
  68. DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
  69. )
  70. file(GLOB srcs src/*.c src/*h)
  71. add_executable(megapixels-gtk ${srcs} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} src/state.h)
  72. set_source_files_properties(
  73. ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
  74. PROPERTIES GENERATED TRUE
  75. )
  76. add_dependencies(megapixels-gtk dummy-resource)
  77. target_link_libraries(megapixels-gtk
  78. m
  79. ${GTK4_LIBRARIES}
  80. ${FEEDBACK_LIBRARIES}
  81. ${DNG_LIBRARIES}
  82. ${ZBAR_LIBRARIES}
  83. ${EPOXY_LIBRARIES}
  84. ${MEGAPIXELS_LIBRARIES}
  85. ${XLIB_LIBRARIES}
  86. ${XRANDR_LIBRARIES}
  87. ${WAYLAND_LIBRARIES}
  88. )
  89. add_compile_definitions(VERSION="${PROJECT_VERSION}")
  90. add_compile_definitions(SYSCONFDIR="/etc")
  91. add_compile_definitions(DATADIR="/usr/share")