cmake: Clean up icon-related build options
[quassel.git] / icons / CMakeLists.txt
index d2ec9cb..7f3f6a2 100644 (file)
@@ -1,18 +1,63 @@
 # Install icons
-# We put them in DATA_INSTALL_DIR rather than ICON_INSTALL_DIR, to avoid
-# polluting the global namespace and to allow overriding
-
-if(EMBED_DATA)
-  set(CLIENT_RCS ${CLIENT_RCS} ../icons/hicolor.qrc ../icons/oxygen.qrc PARENT_SCOPE)
-else(EMBED_DATA)
-  install(DIRECTORY hicolor DESTINATION ${DATA_INSTALL_DIR}/quassel/icons)
-  install(DIRECTORY oxygen DESTINATION ${DATA_INSTALL_DIR}/quassel/icons)
-endif(EMBED_DATA)
-
-# Application icon
-if(NOT APPLE AND NOT WIN32)
-  install(FILES hicolor/48x48/apps/quassel.png DESTINATION ${ICON_INSTALL_DIR}/hicolor/48x48/apps)
-  if(CMAKE_INSTALL_PREFIX STREQUAL "/usr")
-    install(FILES hicolor/48x48/apps/quassel.png DESTINATION /usr/share/pixmaps)
-  endif(CMAKE_INSTALL_PREFIX STREQUAL "/usr")
-endif(NOT APPLE AND NOT WIN32)
+
+if (WANT_MONO OR WANT_QTCLIENT)
+    if (NOT WITH_BUNDLED_ICONS AND NOT WITH_OXYGEN_ICONS)
+        message(WARNING "Not including bundled icon themes. Ensure that the Breeze or Oxygen icon theme is installed!")
+    endif()
+
+    set(BUNDLED_ICON_THEME_DIR ${CMAKE_SOURCE_DIR}/3rdparty/icons)
+
+    if (EMBED_DATA)
+        # Always embed quassel-specific icons
+        message(STATUS "Embedding Quassel-specific icons")
+        list(APPEND ICON_RCS ${CMAKE_CURRENT_SOURCE_DIR}/breeze_icons.qrc)
+        list(APPEND ICON_RCS ${CMAKE_CURRENT_SOURCE_DIR}/breeze_dark_icons.qrc)
+        if (WITH_OXYGEN_ICONS)
+            list(APPEND ICON_RCS ${CMAKE_CURRENT_SOURCE_DIR}/oxygen_icons.qrc)
+        endif()
+
+        if (WITH_BUNDLED_ICONS)
+            message(STATUS "Embedding bundled Breeze icon theme")
+            list(APPEND ICON_RCS ${BUNDLED_ICON_THEME_DIR}/breeze_icon_theme.qrc)
+            list(APPEND ICON_RCS ${BUNDLED_ICON_THEME_DIR}/breeze_dark_icon_theme.qrc)
+            if (WITH_OXYGEN_ICONS)
+                message(STATUS "Embedding bundled Oxygen icon theme")
+                list(APPEND ICON_RCS ${BUNDLED_ICON_THEME_DIR}/oxygen_icon_theme.qrc)
+            endif()
+        endif()
+
+    else()
+        # Always install quassel-specific icons
+        install(DIRECTORY breeze breeze-dark DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+        if (WITH_OXYGEN_ICONS)
+            install(DIRECTORY oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+        endif()
+
+        # Install bundled icon themes into our data dir (instead of CMAKE_INSTALL_ICONDIR) to avoid conflicts
+        # with themes provided by the system
+        if (WITH_BUNDLED_ICONS)
+            message(STATUS "Installing bundled Breeze icon theme")
+            install(DIRECTORY   ${BUNDLED_ICON_THEME_DIR}/breeze
+                                ${BUNDLED_ICON_THEME_DIR}/breeze-dark
+                    DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons
+            )
+            if (WITH_OXYGEN_ICONS)
+                message(STATUS "Installing bundled Oxygen icon theme")
+                install(DIRECTORY ${BUNDLED_ICON_THEME_DIR}/oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+            endif()
+        endif()
+    endif()
+
+    set(CLIENT_RCS ${CLIENT_RCS} ${ICON_RCS} PARENT_SCOPE)
+
+    # Application icon
+    if (HAVE_KDE OR (UNIX AND NOT APPLE))
+        # hicolor contains the application icon in all relevant sizes
+        install(DIRECTORY hicolor DESTINATION ${CMAKE_INSTALL_ICONDIR})
+
+        # For a system install, also copy to pixmaps
+        if (CMAKE_INSTALL_PREFIX STREQUAL "/usr")
+            install(FILES hicolor/48x48/apps/quassel.png DESTINATION /usr/share/pixmaps)
+        endif()
+    endif()
+endif()