22
qt4_wrap_cpp(qt_GEN_MOC_SRCS ${qt_MOC_HDRS})
23
set(qt_SRCS ${qt_SRCS} ${qt_GEN_MOC_SRCS})
26
# Icon and properties for .plist file
27
set(MACOSX_BUNDLE_BUNDLE_NAME "Kid3")
28
set(MACOSX_BUNDLE_ICON_FILE kid3.icns)
29
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${CPACK_PACKAGE_VERSION})
30
set(MACOSX_BUNDLE_GUI_IDENTIFIER "net.sourceforge.kid3")
31
set(MACOSX_BUNDLE_COPYRIGHT "Copyright (c) 2003-${RELEASE_YEAR} Urs Fleisch")
32
set_source_files_properties(kid3.icns
33
PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
34
set(qt_SRCS ${qt_SRCS} kid3.icns)
35
set_source_files_properties(qt.conf
36
PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
37
set(qt_SRCS ${qt_SRCS} qt.conf)
40
# support for Windows resource files with MinGW
41
set(CMAKE_RC_COMPILER_INIT windres)
43
set(CMAKE_RC_COMPILE_OBJECT
44
"<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
46
# add Windows resource file with icon
47
set(qt_SRCS ${qt_SRCS} kid3win.rc)
50
if (UNIX AND NOT APPLE)
51
find_program(GZIP_PROGRAM gzip)
52
# install desktop file and icons for Linux
53
add_custom_command(OUTPUT kid3-qt.desktop
54
COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/fixdesktop.pl
55
<${CMAKE_CURRENT_SOURCE_DIR}/../kid3.desktop >kid3-qt.desktop
56
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../kid3.desktop
58
add_custom_target("desktop-file" ALL DEPENDS kid3-qt.desktop)
59
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kid3-qt.desktop
60
DESTINATION "${WITH_DATAROOTDIR}/applications")
62
add_custom_command(OUTPUT kid3-qt.svg
63
COMMAND ${GZIP_PROGRAM} -cd ${CMAKE_CURRENT_SOURCE_DIR}/../hisc-app-kid3.svgz >kid3-qt.svg
64
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../hisc-app-kid3.svgz
66
set(qt_SRCS ${qt_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/kid3-qt.svg)
67
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kid3-qt.svg
68
DESTINATION "${WITH_DATAROOTDIR}/icons/hicolor/scalable/apps")
70
install(FILES ../hisc-app-kid3.svgz
71
DESTINATION "${WITH_DATAROOTDIR}/icons/hicolor/scalable/apps"
74
install(FILES ../hi48-app-kid3.png
75
DESTINATION "${WITH_DATAROOTDIR}/icons/hicolor/48x48/apps"
77
install(FILES ../hi32-app-kid3.png
78
DESTINATION "${WITH_DATAROOTDIR}/icons/hicolor/32x32/apps"
80
install(FILES ../hi16-app-kid3.png
81
DESTINATION "${WITH_DATAROOTDIR}/icons/hicolor/16x16/apps"
84
install(FILES ../hi48-app-kid3.png
85
DESTINATION ${WITH_DATAROOTDIR}
87
endif (UNIX AND NOT APPLE)
89
add_definitions(${QT_DEFINITIONS} ${QT_EXECUTABLE_COMPILE_FLAGS})
90
set(qt_RESOURCES kid3.qrc)
91
qt4_add_resources(qt_GEN_RCS ${qt_RESOURCES})
92
add_executable(${KID3_EXECUTABLE} MACOSX_BUNDLE WIN32
93
${qt_SRCS} ${qt_GEN_RCS})
95
target_link_libraries(${KID3_EXECUTABLE} kid3-gui -lstdc++)
98
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../../macosx/Info.plist.in
99
${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
100
set_target_properties(${KID3_EXECUTABLE} PROPERTIES
101
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
104
install(TARGETS ${KID3_EXECUTABLE}
106
RUNTIME DESTINATION ${WITH_BINDIR})
110
# Put Qt libraries and plugins into installation package to create a
111
# standalone bundle on Mac OS X and Windows
112
set(plugin_dest_dir ${WITH_BINDIR})
114
"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_BINDIR}/${KID3_EXECUTABLE}")
116
set(plugin_dest_dir kid3.app/Contents/PlugIns)
117
set(bundle_app "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/kid3.app")
121
"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_BINDIR}/kid3.exe")
123
string(REPLACE "/./" "/" bundle_app ${bundle_app})
125
# Install Qt JPEG and Phonon plugins
126
install(DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
127
DESTINATION ${plugin_dest_dir}
128
FILES_MATCHING PATTERN "*jpeg${CMAKE_SHARED_LIBRARY_SUFFIX}"
129
PATTERN "*jpeg4${CMAKE_SHARED_LIBRARY_SUFFIX}")
133
install(DIRECTORY "${QT_PLUGINS_DIR}/platforms"
134
DESTINATION kid3.app/Contents/MacOS
135
FILES_MATCHING PATTERN "libqcocoa${CMAKE_SHARED_LIBRARY_SUFFIX}")
136
install(DIRECTORY "${QT_PLUGINS_DIR}/mediaservice"
137
DESTINATION ${plugin_dest_dir}
138
FILES_MATCHING PATTERN "libqavfmediaplayer${CMAKE_SHARED_LIBRARY_SUFFIX}")
140
install(DIRECTORY "${QT_PLUGINS_DIR}/platforms"
141
DESTINATION ${plugin_dest_dir}
142
FILES_MATCHING PATTERN "qwindows${CMAKE_SHARED_LIBRARY_SUFFIX}")
143
install(DIRECTORY "${QT_PLUGINS_DIR}/mediaservice"
144
DESTINATION ${plugin_dest_dir}
145
FILES_MATCHING PATTERN "dsengine${CMAKE_SHARED_LIBRARY_SUFFIX}")
150
install(DIRECTORY "${QT_PLUGINS_DIR}/phonon_backend"
151
DESTINATION ${plugin_dest_dir}
153
PATTERN "*d4${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
154
PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}")
157
# Install and fix up all dependencies of the executable and the plugins.
158
# On Mac OS X only keep the i386 code in the Qt libraries and plugins.
160
file(GLOB_RECURSE QTPLUGINS
161
\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
163
file(GLOB_RECURSE QTPLATFORMPLUGINS
164
\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/kid3.app/Contents/MacOS/platforms/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
165
set(QTPLUGINS \"\${QTPLUGINS};\${QTPLATFORMPLUGINS}\")
167
file(GLOB_RECURSE KID3PLUGINS
168
\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_PLUGINSDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
169
include(BundleUtilities)
170
set(bundle_libs \"\${QTPLUGINS};\${KID3PLUGINS}\")
171
if (APPLE AND BUILD_CLI_APP)
172
set(bundle_libs \"\${bundle_libs};\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_LIBDIR}/kid3-cli\")
173
endif (APPLE AND BUILD_CLI_APP)
174
fixup_bundle(\"${bundle_app}\" \"\${bundle_libs}\" \"${QT_LIBRARY_DIR}\")
176
file(GLOB_RECURSE _qtlibs \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/kid3.app/Contents/Frameworks/*Qt*\")
177
file(GLOB_RECURSE _plugins \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/kid3.app/Contents/PlugIns/*.dylib\")
178
foreach (_universalBinary \${_plugins} \${_qtlibs})
179
execute_process(COMMAND lipo \${_universalBinary} -output \${_universalBinary} -thin i386)
180
endforeach (_universalBinary \${plugins})
184
endif (APPLE OR WIN32)
188
# Unfortunately, the binutils which come with the gcc-4.4.0 in the MinGW
189
# for Qt generate an executable which cannot be analyzed with dumpbin.
190
# This happens when Kid3 is linked with libav (used with Chromaprint).
191
# Therefore, the dependencies for kid3.exe are not added to the bundle.
192
# This workaround adds the missing files.
193
install(FILES "${QT_BINARY_DIR}/QtNetwork4.dll"
194
"${QT_BINARY_DIR}/QtXml4.dll"
195
DESTINATION ${WITH_BINDIR})
197
if (EXISTS "${_qt5Dir}/../ported-x32/bin/libjpeg-8.dll")
198
install(FILES "${_qt5Dir}/../ported-x32/bin/libjpeg-8.dll"
199
DESTINATION ${WITH_BINDIR})
201
string(TOUPPER ${CMAKE_BUILD_TYPE} _build_type_uc)
202
get_target_property(_qt5xml_location Qt5::Xml IMPORTED_LOCATION_${_build_type_uc})
203
install(FILES ${_qt5xml_location}
204
DESTINATION ${WITH_BINDIR})