perconfig.cmake 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # Print values for human reference.
  2. foreach(v
  3. configuration
  4. perconfig_file_dir
  5. perconfig_file_name
  6. perconfig_file
  7. pcStatic_file
  8. pcStatic_linker_file
  9. pcShared_file
  10. pcShared_linker_file
  11. pcShared_soname_file
  12. )
  13. message(STATUS "${v}=${${v}}")
  14. endforeach()
  15. # Verify that file names match as expected.
  16. set(pc_file_components ${perconfig_file_dir}/${perconfig_file_name})
  17. if(NOT "${pc_file_components}" STREQUAL "${perconfig_file}")
  18. message(SEND_ERROR
  19. "File components ${pc_file_components} do not match ${perconfig_file}")
  20. endif()
  21. if(NOT "${pcStatic_file}" STREQUAL "${pcStatic_linker_file}")
  22. message(SEND_ERROR
  23. "pcStatic_file does not match pcStatic_linker_file:\n"
  24. " ${pcStatic_file}\n"
  25. " ${pcStatic_linker_file}\n"
  26. )
  27. endif()
  28. # Verify that the implementation files are named correctly.
  29. foreach(lib pcStatic pcShared)
  30. file(STRINGS "${${lib}_file}" info LIMIT_COUNT 1 REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
  31. if(NOT "${info}" MATCHES "INFO:symbol\\[${lib}\\]")
  32. message(SEND_ERROR "No INFO:symbol[${lib}] found in:\n ${${lib}_file}")
  33. endif()
  34. endforeach()
  35. execute_process(COMMAND ${perconfig_file} RESULT_VARIABLE result)
  36. if(result)
  37. message(SEND_ERROR "Error running:\n ${perconfig_file}\n(${result})")
  38. endif()