From 68f8a5b0f94fa9593f7e794767581281b219d45c Mon Sep 17 00:00:00 2001 From: Ronald Kinard Date: Wed, 28 Jan 2015 19:29:16 -0600 Subject: [PATCH] cmake: build bundle and dmg on install/package --- CMakeLists.txt | 16 ++++++++++++++++ assets/CMakeLists.txt | 13 ++++++++++--- src/sdl/CMakeLists.txt | 15 ++++++++++++--- 3 files changed, 38 insertions(+), 6 deletions(-) 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")