generate_midl.cmake 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # This file is part of Telegram Desktop,
  2. # the official desktop application for the Telegram messaging service.
  3. #
  4. # For license and copyright information please follow this link:
  5. # https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. function(generate_midl target_name src_loc)
  7. set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
  8. file(MAKE_DIRECTORY ${gen_dst})
  9. if (build_winarm)
  10. set(env arm64)
  11. elseif (build_win64)
  12. set(env x64)
  13. else()
  14. set(env win32)
  15. endif()
  16. set(gen_timestamp ${gen_dst}/${target_name}_midl.timestamp)
  17. set(gen_files "")
  18. set(full_generation_sources "")
  19. set(full_dependencies_list "")
  20. foreach (file ${ARGN})
  21. list(APPEND full_generation_sources ${src_loc}/${file})
  22. get_filename_component(file_name ${file} NAME_WLE)
  23. list(APPEND gen_files
  24. ${gen_dst}/${file_name}_i.c
  25. ${gen_dst}/${file_name}_h.h
  26. )
  27. list(APPEND gen_commands
  28. COMMAND
  29. midl
  30. /out ${gen_dst}
  31. /h ${file_name}_h.h
  32. /env ${env}
  33. /notlb
  34. ${src_loc}/${file}
  35. )
  36. endforeach()
  37. add_custom_command(
  38. OUTPUT
  39. ${gen_timestamp}
  40. BYPRODUCTS
  41. ${gen_files}
  42. ${gen_commands}
  43. COMMAND
  44. echo 1> ${gen_timestamp}
  45. COMMENT "Generating headers from IDLs (${target_name})"
  46. DEPENDS
  47. ${full_generation_sources}
  48. )
  49. generate_target(${target_name} midl ${gen_timestamp} "${gen_files}" ${gen_dst})
  50. endfunction()