diff --git a/CMakeLists.txt b/CMakeLists.txt index 1273a8b9a..0bf0d2222 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -925,11 +925,6 @@ if(APPLE) src/res/oc.icns src/res/ocd.icns src/res/ocf.icns src/res/ocg.icns src/res/C4P.icns src/res/ocs.icns src/res/ocu.icns - src/res/MainMenu.xib - src/res/FullScreen.xib - src/res/EditorGUIWindow.xib - src/res/EditorViewport.xib - src/res/Editor.xib src/res/Mouse_Trans.png src/res/Cursor_Trans.png src/res/Brush_Trans.png @@ -945,6 +940,16 @@ if(APPLE) src/res/Ift_Trans.png src/res/NoIft_Trans.png ) + + if (CMAKE_GENERATOR STREQUAL Xcode) + list(APPEND OC_BUNDLE_RESOURCES + src/res/MainMenu.xib + src/res/FullScreen.xib + src/res/EditorGUIWindow.xib + src/res/EditorViewport.xib + src/res/Editor.xib + ) + endif() # Add icon resources set_source_files_properties( @@ -1241,32 +1246,43 @@ endif() ############################################################################ if (APPLE) - add_custom_command(TARGET openclonk - POST_BUILD COMMAND "/usr/bin/ruby" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_bundle_libs" - ) - - set(CMAKE_XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) - set(CMAKE_XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h") - - SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) - SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++") - SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h") - SET_TARGET_PROPERTIES(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) - SET_TARGET_PROPERTIES(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++") - SET_TARGET_PROPERTIES(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h") - SET_TARGET_PROPERTIES(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) - SET_TARGET_PROPERTIES(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++") - SET_TARGET_PROPERTIES(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h") - SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES) - + + # for good measure - seems to be part of default OSX installation + # linking with static freetype library requires it + target_link_libraries(openclonk "/usr/lib/libbz2.dylib") + + if (NOT CMAKE_GENERATOR STREQUAL Xcode) + add_custom_command(TARGET openclonk POST_BUILD + # yadda, hardcoding openclonk.app - WHO CARES + COMMAND ibtool "${CMAKE_CURRENT_SOURCE_DIR}/src/res/MainMenu.xib" --compile "${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources/MainMenu.nib" + COMMAND ibtool "${CMAKE_CURRENT_SOURCE_DIR}/src/res/FullScreen.xib" --compile "${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources/FullScreen.nib" + COMMAND ibtool "${CMAKE_CURRENT_SOURCE_DIR}/src/res/EditorGUIWindow.xib" --compile "${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources/EditorGUIWindow.nib" + COMMAND ibtool "${CMAKE_CURRENT_SOURCE_DIR}/src/res/EditorViewport.xib" --compile "${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources/EditorViewport.nib" + COMMAND ibtool "${CMAKE_CURRENT_SOURCE_DIR}/src/res/Editor.xib" --compile "${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources/Editor.nib" + VERBATIM + ) + else() + set(CMAKE_XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) + set(CMAKE_XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h") + set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) + set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++") + set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h") + set_target_properties(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) + set_target_properties(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++") + set_target_properties(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h") + set_target_properties(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) + set_target_properties(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++") + set_target_properties(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h") + set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES) + endif() + if (USE_APPLE_CLANG) set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0") set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x") set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++0x -stdlib=libc++ -g -Wall") - SET_TARGET_PROPERTIES(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++0x objective-c++0x") - SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++0x objective-c++0x") - + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++ -g -Wall -fobjc-arc") + set_target_properties(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++0x objective-c++0x") + set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++0x objective-c++0x") set(HAVE_RVALUE_REF ON) else() set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42") @@ -1489,12 +1505,23 @@ get_target_property(C4GROUP_LOCATION c4group LOCATION) get_target_property(CLONK_LOCATION openclonk LOCATION) foreach(group ${OC_C4GROUPS}) if (APPLE) - add_custom_command(TARGET openclonk - POST_BUILD COMMAND "/bin/sh" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh" - "${C4GROUP_LOCATION}" - "${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}" - DEPENDS c4group + if (CMAKE_GENERATOR STREQUAL Xcode) + add_custom_command(TARGET openclonk + POST_BUILD COMMAND "/bin/sh" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh" + "${C4GROUP_LOCATION}" + "${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}" + # leave out third parameter here so the script can figure out Xcode-ish paths as usual + DEPENDS c4group ) + else() + add_custom_command(TARGET openclonk + POST_BUILD COMMAND "/bin/sh" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh" + "${C4GROUP_LOCATION}" + "${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}" + "${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources" + DEPENDS c4group + ) + endif() else() add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${group} @@ -1502,7 +1529,7 @@ foreach(group ${OC_C4GROUPS}) MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/planet/${group} DEPENDS c4group VERBATIM - ) + ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${group} DESTINATION share/games/openclonk) endif() endforeach() diff --git a/tools/osx_bundle_libs b/tools/osx_bundle_libs index 9906a12d4..8ece25efc 100755 --- a/tools/osx_bundle_libs +++ b/tools/osx_bundle_libs @@ -5,7 +5,7 @@ $libs_to_bundle=".*?/lib(jpeg|GLEW|llvm|SDL|SDL_mixer|freetype|ogg|vorbis|vorbis $executable_path = ENV['EXECUTABLE_PATH'] $frameworks_folder_path = ENV['FRAMEWORKS_FOLDER_PATH'] -Dir.chdir ENV['TARGET_BUILD_DIR'] +Dir.chdir ENV['TARGET_BUILD_DIR'] if ENV['TARGET_BUILD_DIR'] puts "Bundling libraries..." def bundle_dependencies(executable_path) diff --git a/tools/osx_pack_gamedata.sh b/tools/osx_pack_gamedata.sh old mode 100644 new mode 100755 index b8249326f..0b29b2858 --- a/tools/osx_pack_gamedata.sh +++ b/tools/osx_pack_gamedata.sh @@ -2,8 +2,7 @@ C4GROUP=$1 SRC_GROUP=$2 - -RESOURCES=$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH +RESOURCES=${3:-$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH} TARGET_GROUP=$RESOURCES/`basename $SRC_GROUP` should_update() {