fixbundle.cmake.in 1.79 KB
Newer Older
Jan Möbius's avatar
 
Jan Möbius committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
# gp_item_default_embedded_path_override item default_embedded_path_var
#
# Return the path that others should refer to the item by when the item
# is embedded inside a bundle.
#
# This is a project-specific override of BundleUtilities.cmake's
# gp_item_default_embedded_path
#
function(gp_item_default_embedded_path_override item default_embedded_path_var)

  # By default, embed items as set by gp_item_default_embedded_path:
  #
  set(path "${${default_embedded_path_var}}")

  # But for OpenFlipper...
  #
  # ...embed *.dylib in the Libraries folder:
  #
  if(item MATCHES "\\.dylib$")
    set(path "@executable_path/../Libraries")
  endif()

  # ...embed qt plugins in the Libraries folder:
  #
Mike Kremer's avatar
Mike Kremer committed
25
  if(item MATCHES "@QT_PLUGINS_DIR@" AND item MATCHES "\\.bundle")
Jan Möbius's avatar
 
Jan Möbius committed
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
    file (RELATIVE_PATH _plugin "@QT_PLUGINS_DIR@" "${item}")
    get_filename_component(_dir "${_plugin}" PATH)
    set(path "@executable_path/../Resources/QtPlugins/${_dir}")
  endif()

  # ...embed *.so in the Plugins folder:
  #
  if(item MATCHES "\\.so$")
    set(path "@executable_path/../Resources/Plugins")
  endif()

  set(${default_embedded_path_var} "${path}" PARENT_SCOPE)
endfunction(gp_item_default_embedded_path_override)

include (BundleUtilities)

# copy qt plugins to bundle
file (GLOB _plugins "@CMAKE_BINARY_DIR@/Build/OpenFlipper.app/Contents/Resources/Plugins/*.so")
Mike Kremer's avatar
Mike Kremer committed
44
file (GLOB_RECURSE _qtplugins "@QT_PLUGINS_DIR@/*.bundle")
Jan Möbius's avatar
 
Jan Möbius committed
45 46 47 48 49 50 51 52 53 54 55
foreach (_qtp ${_qtplugins})
  get_filename_component(_dir "${_qtp}" PATH)
  list(APPEND _qtdirs "${_dir}")
endforeach ()

# fix all dependencies
fixup_bundle (@CMAKE_BINARY_DIR@/Build/OpenFlipper.app "${_plugins};${_qtplugins}" "/usr/lib;${_qtdirs}")

# create qt plugin configuration file
file(WRITE "@CMAKE_BINARY_DIR@/Build/OpenFlipper.app/Contents/Resources/qt.conf" "[Paths]\nPlugins = Resources/QtPlugins")