generate_gir.cmake 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # This file is part of Desktop App Toolkit,
  2. # a set of libraries for developing nice desktop applications.
  3. #
  4. # For license and copyright information please follow this link:
  5. # https://github.com/desktop-app/legal/blob/master/LEGAL
  6. function(generate_gir target_name namespace deps src_target_name)
  7. find_program(DESKTOP_APP_GIRSCANNER g-ir-scanner REQUIRED)
  8. set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
  9. file(MAKE_DIRECTORY ${gen_dst})
  10. set(gen_timestamp ${gen_dst}/${target_name}_gir.timestamp)
  11. set(gen_file ${gen_dst}/${target_name}.gir)
  12. add_custom_command(
  13. OUTPUT
  14. ${gen_timestamp}
  15. BYPRODUCTS
  16. ${gen_file}
  17. COMMAND
  18. env
  19. $<$<BOOL:${DESKTOP_APP_ASAN}>:LDFLAGS=-fsanitize=address>
  20. ${DESKTOP_APP_GIRSCANNER}
  21. --quiet
  22. -n
  23. ${namespace}
  24. --nsversion
  25. 1.0
  26. -l
  27. $<TARGET_FILE:${src_target_name}>
  28. --c-include
  29. "$<JOIN:$<FILTER:$<TARGET_PROPERTY:${src_target_name},SOURCES>,INCLUDE,\\.h$>,$<SEMICOLON>--c-include>"
  30. -i
  31. "$<JOIN:${deps},$<SEMICOLON>-i>"
  32. -o
  33. ${gen_file}
  34. "$<TARGET_PROPERTY:${src_target_name},SOURCES>"
  35. COMMAND
  36. echo 1> ${gen_timestamp}
  37. COMMAND_EXPAND_LISTS
  38. COMMENT "Generating GIR (${target_name})"
  39. DEPENDS
  40. ${DESKTOP_APP_GIRSCANNER}
  41. ${src_target_name}
  42. )
  43. generate_target(${target_name} gir ${gen_timestamp} "${gen_file}" ${gen_dst})
  44. endfunction()