diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2ba9611b2..fafcde394 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -82,12 +82,28 @@ git_describe(SRB2_COMP_REVISION "${CMAKE_CURRENT_SOURCE_DIR}")
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/config.h)
 
 
+# Mac bundle fixup
+if(CLANG)
+	install(CODE "
+		include(BundleUtilities)
+		fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/Sonic Robo Blast 2.app\"
+			\"\"
+			/Library/Frameworks
+		)"
+	)
+endif()
 
 ##### PACKAGE CONFIGURATION #####
 
 if(${CMAKE_SYSTEM} MATCHES "Windows")
 	set(CPACK_GENERATOR "ZIP")
 endif()
+if(${CMAKE_SYSTEM} MATCHES "Linux")
+	set(CPACK_GENERATOR "TGZ")
+endif()
+if(${CMAKE_SYSTEM} MATCHES "Darwin")
+	set(CPACK_GENERATOR "DragNDrop")
+endif()
 
 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Sonic Robo Blast 2")
 set(CPACK_PACKAGE_VENDOR "Sonic Team Jr.")
diff --git a/assets/CMakeLists.txt b/assets/CMakeLists.txt
index 8d149bf3f..3ce133c6a 100644
--- a/assets/CMakeLists.txt
+++ b/assets/CMakeLists.txt
@@ -25,6 +25,13 @@ endforeach()
 
 # Installation
 
-install(FILES ${SRB2_ASSET_ALL}
-	DESTINATION .
-)
+if(CLANG)
+	get_target_property(outname ${SRB2_SDL2_EXE_NAME} OUTPUT_NAME)
+	install(FILES ${SRB2_ASSET_ALL}
+		DESTINATION "${outname}.app/Contents/Resources"
+	)
+else()
+	install(FILES ${SRB2_ASSET_ALL}
+		DESTINATION .
+	)
+endif()
diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt
index 7d540b6c3..52a47dad5 100644
--- a/src/sdl/CMakeLists.txt
+++ b/src/sdl/CMakeLists.txt
@@ -99,6 +99,7 @@ if(${SDL2_FOUND})
 			${ZLIB_LIBRARIES}
 			${OPENGL_LIBRARIES}
 		)
+		set_target_properties(${SRB2_SDL2_EXE_NAME} PROPERTIES OUTPUT_NAME "Sonic Robo Blast 2")
 	else()
 		add_executable(${SRB2_SDL2_EXE_NAME} WIN32 ${SRB2_SDL2_TOTAL_SOURCES})
 
@@ -112,6 +113,8 @@ if(${SDL2_FOUND})
 
 	endif()
 
+	set_target_properties(${SRB2_SDL2_EXE_NAME} PROPERTIES VERSION ${SRB2_VERSION})
+
 	if(${CMAKE_SYSTEM} MATCHES Windows)
 		target_link_libraries(${SRB2_SDL2_EXE_NAME} PRIVATE
 			ws2_32
@@ -153,9 +156,15 @@ if(${SDL2_FOUND})
 	)
 
 	#### Installation ####
-	install(TARGETS ${SRB2_SDL2_EXE_NAME} ${SRB2_SDL2_EXE_NAME}
-		RUNTIME DESTINATION .
-	)
+	if (CLANG)
+		install(TARGETS ${SRB2_SDL2_EXE_NAME}
+			BUNDLE DESTINATION .
+		)
+	else()
+		install(TARGETS ${SRB2_SDL2_EXE_NAME} ${SRB2_SDL2_EXE_NAME}
+			RUNTIME DESTINATION .
+		)
+	endif()
 
 	if(${CMAKE_SYSTEM} MATCHES Windows)
 		find_library(SRB2_SDL2_DLL_SDL2 "SDL2.dll")