fixbundle.cmake.in 1.94 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")
44
file (GLOB_RECURSE _qtplugins "@CMAKE_BINARY_DIR@/Build/OpenFlipper.app/Contents/Resources/QtPlugins/*.dylib")
45

Jan Möbius's avatar
 
Jan Möbius committed
46 47 48 49 50
foreach (_qtp ${_qtplugins})
  get_filename_component(_dir "${_qtp}" PATH)
  list(APPEND _qtdirs "${_dir}")
endforeach ()

51 52 53
# This will enforce copied libraries to be writeable
SET( BU_CHMOD_BUNDLE_ITEMS TRUE)

Jan Möbius's avatar
 
Jan Möbius committed
54
# fix all dependencies
55
fixup_bundle (@CMAKE_BINARY_DIR@/Build/OpenFlipper.app "${_plugins};${_qtplugins}" "/usr/lib;${_qtdirs};@QWT6_LIBRARY_DIR@")
Jan Möbius's avatar
 
Jan Möbius committed
56 57 58 59

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