CompleteBundleOSX.cmake.in 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. set(app "${CMAKE_INSTALL_PREFIX}/@EXE@")
  2. list(APPEND BINS "Contents/Resources/updater")
  3. list(APPEND BINS "Contents/Resources/@HELPER_NAME@")
  4. set(args ${app})
  5. list(APPEND args "-verbose=2")
  6. list(APPEND args "-qmldir=@SOURCE_ROOT@/src/ui")
  7. foreach(BIN ${BINS})
  8. list(APPEND args "-executable=${app}/${BIN}")
  9. endforeach(BIN ${BINS})
  10. set(ENV{DYLD_LIBRARY_PATH} @QTROOT@/lib:@DEPENDENCY_ROOT@/lib)
  11. set(ENV{DYLD_FRAMEWORK_PATH} @QTROOT@/lib:@DEPENDENCY_ROOT@/lib)
  12. set(QTCONFCONTENT "[Paths]
  13. Prefix=@QTROOT@
  14. ")
  15. file(WRITE @QTROOT@/bin/qt.conf ${QTCONFCONTENT})
  16. execute_process(
  17. COMMAND @QTROOT@/bin/macdeployqt ${args}
  18. WORKING_DIRECTORY @QTROOT@/bin
  19. )
  20. #set(ENTITLEMENTS --entitlements @SOURCE_ROOT@/bundle/osx/Konvergo.entitlements)
  21. set(CODESIGN codesign ${ENTITLEMENTS} --force --sign "Developer ID Application: Plex Inc.")
  22. macro(sign_binary BIN)
  23. message(STATUS "Signing: ${BIN}")
  24. execute_process(
  25. COMMAND ${CODESIGN} "${BIN}"
  26. RESULT_VARIABLE result
  27. )
  28. if(NOT ${result} EQUAL 0)
  29. message(FATAL_ERROR "Failed to sign ${BIN}")
  30. endif(NOT ${result} EQUAL 0)
  31. endmacro(sign_binary BIN)
  32. if(@DO_SIGN@)
  33. # we need to sign the webengine helper before the framework
  34. # add --entitlements @SOURCE_ROOT@/bundle/osx/WebEngine.entitlements when we want to sandbox
  35. set(WEB_PROC "${CMAKE_INSTALL_PREFIX}/@EXE@/Contents/Frameworks/QtWebEngineCore.framework/Versions/Current/Helpers/QtWebEngineProcess.app")
  36. sign_binary(${WEB_PROC})
  37. file(GLOB_RECURSE LIBS
  38. FOLLOW_SYMLINKS
  39. "${app}/*.dylib"
  40. )
  41. file(GLOB FRAMEWORKS FOLLOW_SYMLINKS LIST_DIRECTORIES true "${app}/Contents/Frameworks/*")
  42. foreach(LIB ${LIBS} ${FRAMEWORKS})
  43. sign_binary(${LIB})
  44. endforeach(LIB ${LIBS})
  45. foreach(BIN ${BINS})
  46. sign_binary(${app}/${BIN})
  47. endforeach(BIN ${BINS})
  48. sign_binary(${app})
  49. message("Verifing signature")
  50. execute_process(
  51. COMMAND codesign --verbose=4 --verify "${CMAKE_INSTALL_PREFIX}/@EXE@"
  52. RESULT_VARIABLE result
  53. )
  54. if(NOT ${result} EQUAL 0)
  55. message(FATAL_ERROR "Failed to verify binary!")
  56. endif(NOT ${result} EQUAL 0)
  57. execute_process(
  58. COMMAND spctl --verbose=4 --assess --type execute "${CMAKE_INSTALL_PREFIX}/@EXE@"
  59. RESULT_VARIABLE result
  60. )
  61. if(NOT ${result} EQUAL 0)
  62. message(FATAL_ERROR "Failed to verify binary!")
  63. endif(NOT ${result} EQUAL 0)
  64. endif(@DO_SIGN@)