Commit 1fbfcbde authored by Tomas Touceda's avatar Tomas Touceda
Browse files

Merge branch 'dist-osx' into alpha

parents d661bfbe 3a1d2fa4
Loading
Loading
Loading
Loading

changes/newDistOSX

0 → 100644
+3 −0
Original line number Diff line number Diff line
  o Improve dist-osx* targets to be able to distribute qtscript
    extensions properly, and also handle deploying Qt with the
    macdeployqt tool instead of a macro.
 No newline at end of file
+38 −0
Original line number Diff line number Diff line
@@ -172,6 +172,44 @@ endmacro(VIDALIA_GET_TOR_VERSION)
if (APPLE)
  include(${Vidalia_SOURCE_DIR}/cmake/ParseArgumentsMacro.cmake)

  macro(VIDALIA_COPY_PLUGINS)
    parse_arguments(COPY_PLUGINS "DIR;APP_BUNDLE;FRAMEWORKS;COMPONENTS;TARGET" "" ${ARGN})

    set(outdir "${COPY_PLUGINS_APP_BUNDLE}/Contents/MacOS/script/")
    foreach(component ${COPY_PLUGINS_COMPONENTS})
      add_custom_command(TARGET ${COPY_PLUGINS_TARGET}
        COMMAND ${CMAKE_COMMAND} -E make_directory ${outdir}
        COMMAND cp
          ${COPY_PLUGINS_DIR}/libqtscript_${component}.dylib 
          ${outdir}/libqtscript_${component}.dylib
      )      
    endforeach(component)
  endmacro(VIDALIA_COPY_PLUGINS)
  
  macro(VIDALIA_DO_PLUGINS)
    parse_arguments(DO_PLUGINS "DIR;APP_BUNDLE;FRAMEWORKS;COMPONENTS;TARGET" "" ${ARGN})
 
    set(outdir "${DO_PLUGINS_APP_BUNDLE}/Contents/MacOS/script/")
    
    foreach(component ${DO_PLUGINS_COMPONENTS})
      foreach(framework ${DO_PLUGINS_FRAMEWORKS})
         add_custom_command(TARGET ${DO_PLUGINS_TARGET}
           COMMAND install_name_tool -change
             ${framework}.framework/Versions/4/${framework}
             @executable_path/../Frameworks/${framework}.framework/Versions/4/${framework} 
             ${outdir}/libqtscript_${component}.dylib
         )
      endforeach(framework)
      add_custom_command(TARGET ${DO_PLUGINS_TARGET}
        COMMAND install_name_tool -id
          @executable_path/script/libqtscript_${component}.dylib 
          ${outdir}/libqtscript_${component}.dylib
      )
    endforeach(component)

    
  endmacro(VIDALIA_DO_PLUGINS)

  ## Calls the install_name_tool utility to change the dependent shared
  ## library or framework install name to the corresponding library or
  ## framework that was previously installed in the .app bundle using
+23 −85
Original line number Diff line number Diff line
@@ -15,65 +15,20 @@ set(VIDALIA_APP_BUNDLE_ROOT ${Vidalia_BINARY_DIR}/src/vidalia/Vidalia.app)
get_target_property(VIDALIA_EXECUTABLE Vidalia LOCATION)
add_custom_target(dist-osx-libraries DEPENDS Vidalia)
if (QT_USE_FRAMEWORKS)
  vidalia_install_qt4_framework(QtCore
    TARGET dist-osx-libraries NAME QtCore
    LIBRARY ${QT_QTCORE_LIBRARY_RELEASE}/QtCore
    APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
  )
  vidalia_install_qt4_framework(QtGui
    TARGET dist-osx-libraries NAME QtGui
    LIBRARY ${QT_QTGUI_LIBRARY_RELEASE}/QtGui
    APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
    DEPENDS_FRAMEWORKS ${QtCore}
  )
  vidalia_install_qt4_framework(QtNetwork
    TARGET dist-osx-libraries NAME QtNetwork
    LIBRARY ${QT_QTNETWORK_LIBRARY_RELEASE}/QtNetwork
    APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
    DEPENDS_FRAMEWORKS ${QtCore}
  )
  vidalia_install_qt4_framework(QtXml
    TARGET dist-osx-libraries NAME QtXml
    LIBRARY ${QT_QTXML_LIBRARY_RELEASE}/QtXml
    APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
    DEPENDS_FRAMEWORKS ${QtCore}
  )
  vidalia_install_name_tool(${VIDALIA_EXECUTABLE}
  vidalia_copy_plugins(
    TARGET dist-osx-libraries
    FRAMEWORKS ${QtCore} ${QtGui} ${QtNetwork} ${QtXml}
  )
  if (USE_MARBLE)
    vidalia_install_qt4_framework(QtSvg
      TARGET dist-osx-libraries NAME QtSvg
      LIBRARY ${QT_QTSVG_LIBRARY_RELEASE}/QtSvg
    DIR ${SCRIPT_DIR}
    APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
      DEPENDS_FRAMEWORKS ${QtCore} ${QtGui}
    COMPONENTS core gui network uitools xml
  )
    vidalia_install_qt4_framework(QtScript
      TARGET dist-osx-libraries NAME QtScript
      LIBRARY ${QT_QTSCRIPT_LIBRARY_RELEASE}/QtScript
      APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
      DEPENDS_FRAMEWORKS ${QtCore}
    )
    vidalia_install_qt4_framework(QtDBus
      TARGET dist-osx-libraries NAME QtDBus
      LIBRARY ${QT_QTDBUS_LIBRARY_RELEASE}/QtDBus
      APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
      DEPENDS_FRAMEWORKS ${QtCore} ${QtXml}
    )
    vidalia_install_qt4_framework(QtPhonon
      TARGET dist-osx-libraries NAME phonon
      LIBRARY ${QT_PHONON_LIBRARY_RELEASE}/phonon
      APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
      DEPENDS_FRAMEWORKS ${QtCore} ${QtGui} ${QtXml} ${QtDBus}
    )
    vidalia_install_qt4_framework(QtWebKit
      TARGET dist-osx-libraries NAME QtWebKit
      LIBRARY ${QT_QTWEBKIT_LIBRARY_RELEASE}/QtWebKit
  vidalia_do_plugins(
    TARGET dist-osx-libraries
    DIR ${SCRIPT_DIR}
    APP_BUNDLE ${VIDALIA_APP_BUNDLE_ROOT}
      DEPENDS_FRAMEWORKS ${QtCore} ${QtGui} ${QtNetwork} ${QtXml} ${QtDBus}
                         ${QtPhonon}
    FRAMEWORKS QtGui QtCore QtScript QtNetwork QtXml
    COMPONENTS core gui network uitools xml
  )
  if (USE_MARBLE)
    vidalia_install_dylib(MarbleWidget
      TARGET dist-osx-libraries
      LIBRARY ${MARBLEWIDGET_LIBRARY}
@@ -83,7 +38,6 @@ if (QT_USE_FRAMEWORKS)
    )
    vidalia_install_name_tool(${VIDALIA_EXECUTABLE}
      TARGET dist-osx-libraries
      FRAMEWORKS ${QtSvg} ${QtDBus} ${QtScript} ${QtWebKit}
      LIBRARIES ${MARBLEWIDGET_LIBRARY}
    )
  endif(USE_MARBLE)
@@ -96,11 +50,12 @@ else(OSX_FAT_BINARY)
endif(OSX_FAT_BINARY)

add_custom_target(dist-osx
  COMMAND ${QT_BINARY_DIR}/macdeployqt ${VIDALIA_APP_BUNDLE_ROOT}
  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/pkg-dmg
    --source ${VIDALIA_APP_BUNDLE_ROOT}
    --target ${Vidalia_BINARY_DIR}/vidalia-${VERSION}-${DMG_ARCH}.dmg
    --sourcefile --volname "Vidalia ${VERSION}"
    --icon ${Vidalia_SOURCE_DIR}/src/vidalia/res/icons/Vidalia.icns
    --icon ${Vidalia_SOURCE_DIR}/src/vidalia/res/icons/vidalia.icns
    --symlink "/Applications:/Drag to here"
    --mkdir /.background
    --copy ${CMAKE_CURRENT_SOURCE_DIR}/background.png:/.background/
@@ -118,10 +73,8 @@ add_custom_target(dist-osx
)
add_dependencies(dist-osx dist-osx-libraries)

if (TOR_SOURCE_DIR AND POLIPO_SOURCE_DIR AND TORBUTTON_XPI)
if (TOR_SOURCE_DIR AND SCRIPT_DIR)
  get_filename_component(TOR_SOURCE_DIR ${TOR_SOURCE_DIR} ABSOLUTE)
  get_filename_component(POLIPO_SOURCE_DIR ${POLIPO_SOURCE_DIR} ABSOLUTE)
  get_filename_component(TORBUTTON_XPI ${TORBUTTON_XPI} ABSOLUTE)

  ## Determine Tor's version string used to build the .dmg filename
  vidalia_get_tor_version(TOR_VERSION "${TOR_SOURCE_DIR}/src/or/tor")
@@ -131,26 +84,14 @@ if (TOR_SOURCE_DIR AND POLIPO_SOURCE_DIR AND TORBUTTON_XPI)
    message(FATAL_ERROR "Unable to determine version of ${TOR_SOURCE_DIR}/src/or/tor")
  endif(TOR_VERSION)

  ## Configure the Torbutton installation script file
  get_filename_component(TORBUTTON_XPI_FILENAME ${TORBUTTON_XPI} NAME)
  configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/InstallTorbutton.scpt.in
    ${CMAKE_CURRENT_BINARY_DIR}/InstallTorbutton.scpt
  )

  set(bundle_DMG "vidalia-bundle-${TOR_VERSION}-${VERSION}-${DMG_ARCH}.dmg")
  add_custom_target(dist-osx-bundle
    COMMAND osacompile
      -o "${CMAKE_CURRENT_BINARY_DIR}/Install Torbutton for Firefox.app"
          ${CMAKE_CURRENT_BINARY_DIR}/InstallTorbutton.scpt
    COMMAND ${CMAKE_COMMAND} -E copy
      ${TORBUTTON_XPI}
      "${CMAKE_CURRENT_BINARY_DIR}/Install Torbutton for Firefox.app/"
    COMMAND ${QT_BINARY_DIR}/macdeployqt ${VIDALIA_APP_BUNDLE_ROOT}
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/pkg-dmg
      --source ${VIDALIA_APP_BUNDLE_ROOT}
      --target ${Vidalia_BINARY_DIR}/${bundle_DMG}
      --sourcefile --volname "Vidalia Bundle ${VERSION}"
      --icon ${Vidalia_SOURCE_DIR}/src/vidalia/res/icons/Vidalia.icns
      --icon ${Vidalia_SOURCE_DIR}/src/vidalia/res/icons/vidalia.icns
      --symlink "/Applications:/Drag to here"
      --mkdir /.background
      --copy ${CMAKE_CURRENT_SOURCE_DIR}/bundle-background.png:/.background/
@@ -169,9 +110,6 @@ if (TOR_SOURCE_DIR AND POLIPO_SOURCE_DIR AND TORBUTTON_XPI)
      --copy ${TOR_SOURCE_DIR}/src/tools/tor-resolve:/Vidalia.app/Contents/MacOS/
      --copy ${TOR_SOURCE_DIR}/src/config/geoip:/Vidalia.app/share/tor/
      --copy ${TOR_SOURCE_DIR}/src/config/torrc.sample:/Vidalia.app/Contents/Resources/
      --copy ${POLIPO_SOURCE_DIR}/polipo:/Vidalia.app/Contents/MacOS/
      --copy ${CMAKE_CURRENT_SOURCE_DIR}/polipo.conf:/Vidalia.app/Contents/Resources/
      --copy "${CMAKE_CURRENT_BINARY_DIR}/Install Torbutton for Firefox.app:/"
    COMMENT "Creating ${bundle_DMG}"
    VERBATIM
  )
@@ -184,21 +122,21 @@ if (TOR_SOURCE_DIR AND POLIPO_SOURCE_DIR AND TORBUTTON_XPI)
    VERBATIM
  )
  add_dependencies(dist-osx-split-bundle dist-osx-bundle)
else(TOR_SOURCE_DIR AND POLIPO_SOURCE_DIR AND TORBUTTON_XPI)
else(TOR_SOURCE_DIR AND SCRIPT_DIR)
  message("-- Skipping dist-osx-bundle build target")
  add_custom_target(dist-osx-bundle
    COMMAND ${CMAKE_COMMAND} -E echo
      "!! The dist-osx-bundle target is not configured."
    COMMAND ${CMAKE_COMMAND} -E echo
      "!! You must set the -DTOR_SOURCE_DIR,-DPOLIPO_SOURCE_DIR and -DTORBUTTON_XPI CMake variables."
      "!! You must set the -DTOR_SOURCE_DIR and -DSCRIPT_DIR CMake variables."
    COMMAND ${CMAKE_COMMAND} -E echo "!! Quitting."
  )
  add_custom_target(dist-osx-split-bundle
    COMMAND ${CMAKE_COMMAND} -E echo
      "!! The dist-osx-split-bundle target is not configured. Quitting."
    COMMAND ${CMAKE_COMMAND} -E echo
      "!! You must set the -DTOR_SOURCE_DIR, -DPOLIPO_SOURCE_DIR and -DTORBUTTON_XPI CMake variables."
      "!! You must set the -DTOR_SOURCE_DIR and -DSCRIPT_DIR CMake variables."
    COMMAND ${CMAKE_COMMAND} -E echo "!! Quitting."
  )
endif(TOR_SOURCE_DIR AND POLIPO_SOURCE_DIR AND TORBUTTON_XPI)
endif(TOR_SOURCE_DIR AND SCRIPT_DIR)