| CMake/packaging/mac/MacPackagingTasks.cmake.in | |
|---|---|
| OS X packaging tasks |  | 
| This file is processed by  | SET(PROJECT_NAME @PROJECT_NAME@)
SET(PROJECT_SOURCE_DIR @PROJECT_SOURCE_DIR@)
SET(PROJECT_BINARY_DIR @PROJECT_BINARY_DIR@)
SET(TeXworks_LIB_DIRS @TeXworks_LIB_DIRS@)
SET(CMAKE_SHARED_LIBRARY_SUFFIX @CMAKE_SHARED_LIBRARY_SUFFIX@)
SET(QT_PLUGINS @QT_PLUGINS@) | 
| This  | IF ( ${CMAKE_INSTALL_PREFIX} MATCHES .*/_CPack_Packages/.* ) | 
| Download and install Poppler data |   IF ( NOT EXISTS ${PROJECT_SOURCE_DIR}/poppler-data-0.4.4.tar.gz )
    MESSAGE(STATUS "Downloading Poppler data files")
    FILE(DOWNLOAD "http://poppler.freedesktop.org/poppler-data-0.4.4.tar.gz"
      ${PROJECT_SOURCE_DIR}/poppler-data-0.4.4.tar.gz
      EXPECTED_MD5 f3a1afa9218386b50ffd262c00b35b31
      SHOW_PROGRESS
    )
  ENDIF ()
  IF ( NOT EXISTS ${PROJECT_SOURCE_DIR}/poppler-data-0.4.4 )
    EXECUTE_PROCESS(COMMAND tar xzf ${PROJECT_SOURCE_DIR}/poppler-data-0.4.4.tar.gz
      WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    )
  ENDIF ()
  FILE(INSTALL ${PROJECT_SOURCE_DIR}/poppler-data-0.4.4/
    DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/poppler-data
    PATTERN CMakeLists.txt EXCLUDE
    PATTERN Makefile EXCLUDE
  ) | 
| Download and install TeXworks manual |   IF ( NOT EXISTS ${PROJECT_SOURCE_DIR}/TeXworks-manual-html-r814.zip )
    MESSAGE(STATUS "Downloading TeXworks HTML manual")
    FILE(DOWNLOAD "http://texworks.googlecode.com/files/TeXworks-manual-html-r814.zip"
      ${PROJECT_SOURCE_DIR}/TeXworks-manual-html-r814.zip
      EXPECTED_MD5 2894969a6ac4bba31953264e04553717
      SHOW_PROGRESS
    )
  ENDIF ()
  IF ( NOT EXISTS ${PROJECT_SOURCE_DIR}/TeXworks-manual )
    EXECUTE_PROCESS(COMMAND unzip ${PROJECT_SOURCE_DIR}/TeXworks-manual-html-r814.zip
      WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    )
  ENDIF ()
  FILE(INSTALL ${PROJECT_SOURCE_DIR}/TeXworks-manual
    DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/texworks-help/
  ) | 
| Copy all runtime dependencies and rewrite loader paths |  | 
| Bring in  This module offers the  
 |   SET(CMAKE_MODULE_PATH @CMAKE_MODULE_PATH@)
  INCLUDE(DeployQt4) | 
| Gather all TeXworks Plugin libraries. |   FILE(GLOB TeXworks_PLUGINS
    ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/PlugIns/*${CMAKE_SHARED_LIBRARY_SUFFIX}) | 
| If  |   SET(BU_CHMOD_BUNDLE_ITEMS ON)
  FIXUP_QT4_BUNDLE(${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app "${QT_PLUGINS}" "${TeXworks_PLUGINS}" "${TeXworks_LIB_DIRS}") | 
| Remove unecessary architectures from universal binaries |  | 
| Some libraries copied from the OS X system, such as X11 libraries, may
contain up to 4 different architectures. Here we will iterate over these
libraries and use  |  | 
| Another useful function from  |   GET_BUNDLE_MAIN_EXECUTABLE(${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app APP_MAIN) | 
| We look at the TeXworks binary that was built rather than consulting the
value of the  |   MESSAGE(STATUS "Reducing the size of bundled libraries.")
  MESSAGE(STATUS "Scanning architectures of: ${APP_MAIN}")
  EXECUTE_PROCESS( | 
| 
 Piping this output to  |     COMMAND lipo -info ${APP_MAIN}
    COMMAND cut -d : -f 3-
    OUTPUT_VARIABLE APP_ARCHS
  ) | 
| Strip leading and trailing whitespace. |   STRING(STRIP ${APP_ARCHS} APP_ARCHS) | 
| Convert spaces to semicolons so CMake will interpret the string as a list. |   STRING(REPLACE " " ";" APP_ARCHS ${APP_ARCHS})
  MESSAGE(STATUS "Will reduce bundled libraries to: ${APP_ARCHS}")
  FOREACH(ARCH IN LISTS APP_ARCHS)
    SET(ARCHS_TO_EXTRACT "${ARCHS_TO_EXTRACT} -extract ${ARCH}")
  ENDFOREACH () | 
| NOTE: This will not process any dylibs from Frameworks copied by
 |   FILE(GLOB BUNDLED_DYLIBS
    ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/MacOS/*${CMAKE_SHARED_LIBRARY_SUFFIX})
  FOREACH(DYLIB IN LISTS BUNDLED_DYLIBS)
    MESSAGE(STATUS "Processing included library: ${DYLIB}") | 
| 
 |     EXECUTE_PROCESS(COMMAND bash -c "lipo ${ARCHS_TO_EXTRACT} ${DYLIB} -output ${DYLIB}")
  ENDFOREACH ()
  MESSAGE(STATUS "Finished stripping architectures from bundled libraries.")
ENDIF () |