forgot to remove that method in last merge
[jkt-jerboa.git] / OSXPackaging.cmake
blob84f26185f2a0be8087955077e1c1fd0033007061
1 INCLUDE(QtLibraries)
3 MACRO(RELOCATE_OSX_LIBRARY FROM_LIBRARY TO_LIBRARY IN_FILE)
4         INSTALL(CODE
5                 "EXECUTE_PROCESS(
6                         COMMAND install_name_tool
7                                 -change ${FROM_LIBRARY} ${TO_LIBRARY}
8                                 \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${IN_FILE}
9                 )"
10         )
11 ENDMACRO(RELOCATE_OSX_LIBRARY FROM_LIBRARY TO_LIBRARY IN_FILE)
13 MACRO(RENAME_OSX_LIBRARY NAME FILE)
14         INSTALL(CODE
15                 "EXECUTE_PROCESS(
16                         COMMAND install_name_tool
17                                 -id ${NAME}
18                                 \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${FILE}
19                 )"
20         )
21 ENDMACRO(RENAME_OSX_LIBRARY NAME FILE)
23 MACRO(INSTALL_OSX_LIBRARY LIBRARY)
24         GET_FILENAME_COMPONENT(LIBRARY_PATH ${LIBRARY} PATH)
25         GET_FILENAME_COMPONENT(LIBRARY_NAME ${LIBRARY} NAME)
26         GET_FILENAME_COMPONENT(LIBRARY_NOEXT ${LIBRARY} NAME_WE)
27         FILE(GLOB LIBRARY_FILES ${LIBRARY_PATH}/${LIBRARY_NOEXT}.*.dylib)
28         INSTALL(FILES ${LIBRARY} ${LIBRARY_FILES} DESTINATION MacOS/)
29         RENAME_OSX_LIBRARY("@executable_path/${LIBRARY_NAME}" MacOS/${LIBRARY_NAME})
30 ENDMACRO()
32 MACRO(RELOCATE_QT_LIBRARIES TARGET)
33         FOREACH(QT_LIBRARY ${QT_ACTIVE_LIBRARIES} ${PHONON_LIBRARY})
34                 GET_FILENAME_COMPONENT(QT_FRAMEWORK_DIR ${QT_LIBRARY} NAME) # Eg QtCore.framework
35                 GET_FILENAME_COMPONENT(QT_FRAMEWORK_NAME ${QT_LIBRARY} NAME_WE) # Eg QtCore
36                 RELOCATE_OSX_LIBRARY(
37                         ${QT_FRAMEWORK_DIR}/Versions/4/${QT_FRAMEWORK_NAME}
38                         @executable_path/../Frameworks/${QT_FRAMEWORK_DIR}/Versions/4/${QT_FRAMEWORK_NAME}
39                         ${TARGET}
40                 )
41         ENDFOREACH(QT_LIBRARY ${QT_ACTIVE_LIBRARIES})
42 ENDMACRO(RELOCATE_QT_LIBRARIES TARGET)
44 MACRO(INSTALL_QT_FRAMEWORKS)
45         INSTALL(
46                 DIRECTORY ${QT_ACTIVE_LIBRARIES} ${PHONON_LIBRARY}
47                 DESTINATION Frameworks
48                 REGEX "Headers|_debug" EXCLUDE
49         )
50         FOREACH(QT_FRAMEWORK ${QT_ACTIVE_LIBRARIES} ${PHONON_LIBRARY})
51                 GET_FILENAME_COMPONENT(QT_LIBRARY ${QT_FRAMEWORK} NAME_WE)
52                 RELOCATE_QT_LIBRARIES("Frameworks/${QT_LIBRARY}.framework/${QT_LIBRARY}")
53                 RENAME_OSX_LIBRARY("@executable_path/../Frameworks/${QT_LIBRARY}.framework/Versions/4/${QT_LIBRARY}" "Frameworks/${QT_LIBRARY}.framework/${QT_LIBRARY}")
54         ENDFOREACH(QT_FRAMEWORK ${QT_ACTIVE_LIBRARIES})
55 ENDMACRO(INSTALL_QT_FRAMEWORKS)
57 MACRO(INSTALL_QT_PLUGINS)
58         FOREACH(WANTED_QT_PLUGIN ${ARGN})
59                 GET_FILENAME_COMPONENT(WANTED_PLUGIN_DIR ${WANTED_QT_PLUGIN} PATH)
60                 INSTALL(FILES ${QT_PLUGINS_DIR}/${WANTED_QT_PLUGIN}.dylib DESTINATION MacOS/${WANTED_PLUGIN_DIR})
61                 RELOCATE_QT_LIBRARIES(MacOS/${WANTED_QT_PLUGIN}.dylib)
62         ENDFOREACH(WANTED_QT_PLUGIN ${ARGN})
63 ENDMACRO(INSTALL_QT_PLUGINS)
65 MACRO(COMPRESS_PACKAGE VERSION)
66         INSTALL(CODE
67                 "
68                 MESSAGE(STATUS Compressing...)
69                 FILE(REMOVE ${CMAKE_PROJECT_NAME}-${VERSION}.dmg)
70                 EXECUTE_PROCESS(COMMAND ln -sf /Applications OSXBundle/Applications)
71                 EXECUTE_PROCESS(
72                         COMMAND
73                                 hdiutil create -srcfolder OSXBundle -volname ${CMAKE_PROJECT_NAME}-${VERSION} -format UDBZ ${CMAKE_PROJECT_NAME}-${VERSION}.dmg
74                 )
75                 "
76         )
77 ENDMACRO(COMPRESS_PACKAGE)
79 # Build for tiger
80 SET(CMAKE_OSX_DEPLOYMENT_TARGET 10.4)
81 SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET})
82 SET(CMAKE_OSX_ARCHITECTURES "i386;ppc")
84 SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/OSXBundle/${CMAKE_PROJECT_NAME}.app/Contents")
85 IF(EXISTS ${CMAKE_SOURCE_DIR}/Info.plist)
86         INSTALL(FILES ${CMAKE_SOURCE_DIR}/Info.plist DESTINATION ${CMAKE_INSTALL_PREFIX}/)
87 ENDIF()