diff --git modules/ECMAddAppIcon.cmake modules/ECMAddAppIcon.cmake
index ca64314..aec7e1c 100644
--- modules/ECMAddAppIcon.cmake
+++ modules/ECMAddAppIcon.cmake
@@ -77,6 +77,31 @@ function(ecm_add_app_icon appsources)
         message(FATAL_ERROR "Unexpected arguments to ecm_add_app_icon: ${ARG_UNPARSED_ARGUMENTS}")
     endif()
 
+    if(APPLE)
+        find_program(KSVG2ICNS NAMES ksvg2icns)
+        foreach(icon ${ARG_ICONS})
+            get_filename_component(icon_full ${icon} ABSOLUTE)
+            get_filename_component(icon_type ${icon_full} EXT)
+            # do we have ksvg2icns in the path and did we receive an svg (or compressed svg) icon?
+            if(KSVG2ICNS AND (${icon_type} STREQUAL ".svg" OR ${icon_type} STREQUAL ".svgz"))
+                # convert the svg icon to an icon resource
+                execute_process(COMMAND ${KSVG2ICNS} "${icon_full}"
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} RESULT_VARIABLE KSVG2ICNS_ERROR)
+                if(${KSVG2ICNS_ERROR})
+                    message(AUTHOR_WARNING "ksvg2icns could not generate an OS X application icon from ${icon}")
+                else()
+                    # install the icns file we just created
+                    get_filename_component(icon_name ${icon_full} NAME_WE)
+                    set(MACOSX_BUNDLE_ICON_FILE ${icon_name}.icns PARENT_SCOPE)
+                    set(${appsources} "${${appsources}};${CMAKE_CURRENT_BINARY_DIR}/${icon_name}.icns" PARENT_SCOPE)
+                    set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${icon_name}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
+                    # we're done now
+                    return()
+                endif()
+            endif()
+        endforeach()
+    endif()
+
     set(known_sizes 16 32 48 64 128 256 512 1024)
     foreach(size ${known_sizes})
         set(icons_at_${size}px)