zephyr_export.cmake 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # SPDX-License-Identifier: Apache-2.0
  2. # Purpose of this CMake file is to install a ZephyrConfig package reference in:
  3. # Unix/Linux/MacOS: ~/.cmake/packages/Zephyr
  4. # Windows : HKEY_CURRENT_USER
  5. #
  6. # Having ZephyrConfig package allows for find_package(Zephyr) to work when ZEPHYR_BASE is not defined.
  7. #
  8. # Create the reference by running `cmake -P zephyr_export.cmake` in this directory.
  9. set(MD5_INFILE "current_path.txt")
  10. # We write CMAKE_CURRENT_LIST_DIR into MD5_INFILE, as the content of that file will be used for MD5 calculation.
  11. # This means we effectively get the MD5 of CMAKE_CURRENT_LIST_DIR which must be used for CMake user package registry.
  12. file(WRITE ${CMAKE_CURRENT_LIST_DIR}/${MD5_INFILE} ${CMAKE_CURRENT_LIST_DIR})
  13. execute_process(COMMAND ${CMAKE_COMMAND} -E md5sum ${CMAKE_CURRENT_LIST_DIR}/${MD5_INFILE}
  14. OUTPUT_VARIABLE MD5_SUM
  15. )
  16. string(SUBSTRING ${MD5_SUM} 0 32 MD5_SUM)
  17. if(WIN32)
  18. execute_process(COMMAND ${CMAKE_COMMAND}
  19. -E write_regv
  20. "HKEY_CURRENT_USER\\Software\\Kitware\\CMake\\Packages\\Zephyr\;${MD5_SUM}" "${CMAKE_CURRENT_LIST_DIR}"
  21. )
  22. else()
  23. file(WRITE $ENV{HOME}/.cmake/packages/Zephyr/${MD5_SUM} ${CMAKE_CURRENT_LIST_DIR})
  24. endif()
  25. message("Zephyr (${CMAKE_CURRENT_LIST_DIR})")
  26. message("has been added to the user package registry in:")
  27. if(WIN32)
  28. message("HKEY_CURRENT_USER\\Software\\Kitware\\CMake\\Packages\\Zephyr\n")
  29. else()
  30. message("~/.cmake/packages/Zephyr\n")
  31. endif()
  32. file(REMOVE ${CMAKE_CURRENT_LIST_DIR}/${MD5_INFILE})