mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 06:26:39 +00:00 
			
		
		
		
	Merge remote branch 'corristo/osx-packaging' into packaging
This commit is contained in:
		
						commit
						facc36fa34
					
				
					 5 changed files with 118 additions and 50 deletions
				
			
		
							
								
								
									
										142
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										142
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| 
						 | 
					@ -1,11 +1,13 @@
 | 
				
			||||||
project(OpenMW)
 | 
					project(OpenMW)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IF (APPLE)
 | 
					if (APPLE)
 | 
				
			||||||
    set(APP_BUNDLE_DIR "${OpenMW_BINARY_DIR}/OpenMW.app")
 | 
					    set(APP_BUNDLE_NAME "${CMAKE_PROJECT_NAME}.app")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    set(APP_BUNDLE_DIR "${OpenMW_BINARY_DIR}/${APP_BUNDLE_NAME}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # using 10.6 sdk
 | 
					    # using 10.6 sdk
 | 
				
			||||||
    set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk")
 | 
					    set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk")
 | 
				
			||||||
ENDIF (APPLE)
 | 
					endif (APPLE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Macros
 | 
					# Macros
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -200,6 +202,13 @@ include_directories("."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
link_directories(${Boost_LIBRARY_DIRS} ${OGRE_LIB_DIR})
 | 
					link_directories(${Boost_LIBRARY_DIRS} ${OGRE_LIB_DIR})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(APPLE)
 | 
				
			||||||
 | 
					    # List used Ogre plugins
 | 
				
			||||||
 | 
					    SET(USED_OGRE_PLUGINS "RenderSystem_GL"
 | 
				
			||||||
 | 
					                          "Plugin_OctreeSceneManager"
 | 
				
			||||||
 | 
					                          "Plugin_ParticleFX")
 | 
				
			||||||
 | 
					endif(APPLE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_subdirectory( extern/caelum )
 | 
					add_subdirectory( extern/caelum )
 | 
				
			||||||
add_subdirectory( extern/mygui_3.0.1 )
 | 
					add_subdirectory( extern/mygui_3.0.1 )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -243,22 +252,17 @@ if (APPLE)
 | 
				
			||||||
        "${OpenMW_BINARY_DIR}/plugins.cfg")
 | 
					        "${OpenMW_BINARY_DIR}/plugins.cfg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    configure_file(${OpenMW_SOURCE_DIR}/files/mac/Info.plist
 | 
					    configure_file(${OpenMW_SOURCE_DIR}/files/mac/Info.plist
 | 
				
			||||||
        "${APP_BUNDLE_DIR}/Contents/Info.plist" COPYONLY)
 | 
					        "${APP_BUNDLE_DIR}/Contents/Info.plist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    configure_file(${OpenMW_SOURCE_DIR}/files/mac/openmw.icns
 | 
					    configure_file(${OpenMW_SOURCE_DIR}/files/mac/openmw.icns
 | 
				
			||||||
        "${APP_BUNDLE_DIR}/Contents/Resources/OpenMW.icns" COPYONLY)
 | 
					        "${APP_BUNDLE_DIR}/Contents/Resources/OpenMW.icns" COPYONLY)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    # prepare plugins
 | 
					    # prepare plugins
 | 
				
			||||||
    configure_file(${OGRE_PLUGIN_DIR}/RenderSystem_GL.dylib
 | 
					    foreach(plugin ${USED_OGRE_PLUGINS})
 | 
				
			||||||
        "${APP_BUNDLE_DIR}/Contents/Plugins/RenderSystem_GL.dylib" COPYONLY)
 | 
					        configure_file("${OGRE_PLUGIN_DIR}/${plugin}.dylib"
 | 
				
			||||||
 | 
					                        "${APP_BUNDLE_DIR}/Contents/Plugins/${plugin}.dylib"
 | 
				
			||||||
    configure_file(${OGRE_PLUGIN_DIR}/Plugin_OctreeSceneManager.dylib
 | 
					                        COPYONLY)
 | 
				
			||||||
        "${APP_BUNDLE_DIR}/Contents/Plugins/Plugin_OctreeSceneManager.dylib" COPYONLY)
 | 
					    endforeach()
 | 
				
			||||||
 | 
					 | 
				
			||||||
    configure_file(${OGRE_PLUGIN_DIR}/Plugin_ParticleFX.dylib
 | 
					 | 
				
			||||||
        "${APP_BUNDLE_DIR}/Contents/Plugins/Plugin_ParticleFX.dylib" COPYONLY)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
endif (APPLE)
 | 
					endif (APPLE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -268,36 +272,6 @@ if (CMAKE_COMPILER_IS_GNUCC)
 | 
				
			||||||
    add_definitions (-Wall)
 | 
					    add_definitions (-Wall)
 | 
				
			||||||
endif (CMAKE_COMPILER_IS_GNUCC)
 | 
					endif (CMAKE_COMPILER_IS_GNUCC)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Apple bundling
 | 
					 | 
				
			||||||
# TODO REWRITE!
 | 
					 | 
				
			||||||
if (APPLE)
 | 
					 | 
				
			||||||
    set(MISC_FILES
 | 
					 | 
				
			||||||
        ${APP_BUNDLE_DIR}/Contents/MacOS/openmw.cfg
 | 
					 | 
				
			||||||
        ${APP_BUNDLE_DIR}/Contents/MacOS/plugins.cfg)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    set(OGRE_PLUGINS
 | 
					 | 
				
			||||||
        ${APP_BUNDLE_DIR}/Contents/Plugins/*)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
install(FILES ${MISC_FILES} DESTINATION ../MacOS)
 | 
					 | 
				
			||||||
install(DIRECTORY "${APP_BUNDLE_DIR}/Contents/Plugins" DESTINATION ..)
 | 
					 | 
				
			||||||
install(DIRECTORY "${APP_BUNDLE_DIR}/Contents/Resources/resources" DESTINATION ../Resources)
 | 
					 | 
				
			||||||
set(CPACK_GENERATOR "Bundle")
 | 
					 | 
				
			||||||
set(CPACK_BUNDLE_PLIST "${CMAKE_SOURCE_DIR}/files/mac/Info.plist")
 | 
					 | 
				
			||||||
set(CPACK_BUNDLE_ICON  "${CMAKE_SOURCE_DIR}/files/mac/openmw.icns")
 | 
					 | 
				
			||||||
set(CPACK_BUNDLE_NAME "OpenMW")
 | 
					 | 
				
			||||||
set(CPACK_PACKAGE_VERSION ${OPENMW_VERSION})
 | 
					 | 
				
			||||||
set(CPACK_PACKAGE_VERSION_MAJOR ${OPENMW_VERSION_MAJOR})
 | 
					 | 
				
			||||||
set(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINO})
 | 
					 | 
				
			||||||
set(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
include(CPack)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set(CMAKE_EXE_LINKER_FLAGS "-arch i386")
 | 
					 | 
				
			||||||
set(CMAKE_CXX_FLAGS "-arch i386")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
endif (APPLE)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if(DPKG_PROGRAM)
 | 
					if(DPKG_PROGRAM)
 | 
				
			||||||
    SET(CMAKE_INSTALL_PREFIX "/usr")
 | 
					    SET(CMAKE_INSTALL_PREFIX "/usr")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -436,3 +410,83 @@ if (WIN32)
 | 
				
			||||||
  #set_target_properties(openmw PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
 | 
					  #set_target_properties(openmw PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
 | 
				
			||||||
  #set_target_properties(openmw PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
 | 
					  #set_target_properties(openmw PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Apple bundling
 | 
				
			||||||
 | 
					if (APPLE)
 | 
				
			||||||
 | 
					    set(MISC_FILES
 | 
				
			||||||
 | 
					        ${APP_BUNDLE_DIR}/Contents/MacOS/openmw.cfg
 | 
				
			||||||
 | 
					        ${APP_BUNDLE_DIR}/Contents/MacOS/plugins.cfg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #install(FILES ${MISC_FILES} DESTINATION ../MacOS)
 | 
				
			||||||
 | 
					    #install(DIRECTORY "${APP_BUNDLE_DIR}/Contents/Plugins" DESTINATION ..)
 | 
				
			||||||
 | 
					    #install(DIRECTORY "${APP_BUNDLE_DIR}/Contents/Resources/resources" DESTINATION ../Resources)
 | 
				
			||||||
 | 
					    install(DIRECTORY "${APP_BUNDLE_DIR}" USE_SOURCE_PERMISSIONS DESTINATION . COMPONENT Runtime)
 | 
				
			||||||
 | 
					    set(CPACK_GENERATOR "DragNDrop")
 | 
				
			||||||
 | 
					    # set(CPACK_BUNDLE_PLIST "${CMAKE_SOURCE_DIR}/files/mac/Info.plist")
 | 
				
			||||||
 | 
					    # set(CPACK_BUNDLE_ICON  "${CMAKE_SOURCE_DIR}/files/mac/openmw.icns")
 | 
				
			||||||
 | 
					    # set(CPACK_BUNDLE_NAME "OpenMW")
 | 
				
			||||||
 | 
					    set(CPACK_PACKAGE_VERSION ${OPENMW_VERSION})
 | 
				
			||||||
 | 
					    set(CPACK_PACKAGE_VERSION_MAJOR ${OPENMW_VERSION_MAJOR})
 | 
				
			||||||
 | 
					    set(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINO})
 | 
				
			||||||
 | 
					    set(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    set(APPS "\${CMAKE_INSTALL_PREFIX}/${APP_BUNDLE_NAME}")
 | 
				
			||||||
 | 
					    set(PLUGINS "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Scan Plugins dir for *.dylibs
 | 
				
			||||||
 | 
					    file(GLOB ALL_PLUGINS "${APP_BUNDLE_DIR}/Contents/Plugins/*.dylib")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach(PLUGIN ${ALL_PLUGINS})
 | 
				
			||||||
 | 
					        get_filename_component(PLUGIN_FILENAME ${PLUGIN} NAME)
 | 
				
			||||||
 | 
					        set(PLUGINS ${PLUGINS} "\${CMAKE_INSTALL_PREFIX}/${APP_BUNDLE_NAME}/Contents/Plugins/${PLUGIN_FILENAME}")
 | 
				
			||||||
 | 
					    endforeach()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #For now, search unresolved dependencies only in default system paths, so if you put unresolveable (i.e. with @executable_path in id name) lib or framework somewhere else, it would fail
 | 
				
			||||||
 | 
					    set(DIRS "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Overriding item resolving during installation, it needed if
 | 
				
			||||||
 | 
					    # some library already has be "fixed up", i.e. its id name contains @executable_path,
 | 
				
			||||||
 | 
					    # but library is not embedded in bundle. For example, it's Ogre.framework from Ogre SDK.
 | 
				
			||||||
 | 
					    # Current implementation of GetPrerequsities/BundleUtilities doesn't handle that case.
 | 
				
			||||||
 | 
					    # 
 | 
				
			||||||
 | 
					    # Current limitations:
 | 
				
			||||||
 | 
					    #   1. Handles only frameworks, not simple libs
 | 
				
			||||||
 | 
					    INSTALL(CODE "
 | 
				
			||||||
 | 
					        set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES})
 | 
				
			||||||
 | 
					        set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
 | 
				
			||||||
 | 
					        set(CMAKE_SYSTEM_FRAMEWORK_PATH ${CMAKE_SYSTEM_FRAMEWORK_PATH})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        set(OPENMW_RESOLVED_ITEMS \"\")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function(gp_resolve_item_override context item exepath dirs resolved_item_var resolved_var)
 | 
				
			||||||
 | 
					            if(item MATCHES \"@executable_path\" AND NOT \${\${resolved_var}})
 | 
				
			||||||
 | 
					                if (item MATCHES \"Frameworks\") # if it is a framework
 | 
				
			||||||
 | 
					                    # get last segment of path
 | 
				
			||||||
 | 
					                    get_filename_component(fname \"\${item}\" NAME_WE)
 | 
				
			||||||
 | 
					                    find_library(ri NAMES \${fname} PATHS \${exepath} \${dirs} /Library/Frameworks)
 | 
				
			||||||
 | 
					                    if (ri)
 | 
				
			||||||
 | 
					                        message(STATUS \"found \${ri} for \${item}\")
 | 
				
			||||||
 | 
					                        string(REGEX REPLACE \"^.*/Frameworks/.*\\\\.framework\" \"\" item_part \${item})
 | 
				
			||||||
 | 
					                        set(ri \"\${ri}\${item_part}\")
 | 
				
			||||||
 | 
					                        set(\${resolved_item_var} \${ri} PARENT_SCOPE)
 | 
				
			||||||
 | 
					                        set(\${resolved_var} 1 PARENT_SCOPE)
 | 
				
			||||||
 | 
					                        set(OPENMW_RESOLVED_ITEMS \${_OPENMW_RESOLVED_ITEMS} \${ri})
 | 
				
			||||||
 | 
					                    endif()
 | 
				
			||||||
 | 
					                else()
 | 
				
			||||||
 | 
					                    # code path for standard (non-framework) libs (ogre & qt pugins)
 | 
				
			||||||
 | 
					                endif()
 | 
				
			||||||
 | 
					            endif()
 | 
				
			||||||
 | 
					        endfunction(gp_resolve_item_override)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cmake_policy(SET CMP0009 OLD)
 | 
				
			||||||
 | 
					        set(BU_CHMOD_BUNDLE_ITEMS ON)
 | 
				
			||||||
 | 
					        include(BundleUtilities)
 | 
				
			||||||
 | 
					        fixup_bundle(\"${APPS}\" \"${PLUGINS}\" \"${DIRS}\")
 | 
				
			||||||
 | 
					        " COMPONENT Runtime)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CPack)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(CMAKE_EXE_LINKER_FLAGS "-arch i386")
 | 
				
			||||||
 | 
					set(CMAKE_CXX_FLAGS "-arch i386")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					endif (APPLE)
 | 
				
			||||||
| 
						 | 
					@ -49,6 +49,17 @@ QT4_WRAP_CPP(MOC_SRCS ${LAUNCHER_HEADER_MOC})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include(${QT_USE_FILE})
 | 
					include(${QT_USE_FILE})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# list here plugins that can't be detected statically, but loaded in runtime
 | 
				
			||||||
 | 
					# it needed for packaging automatisation
 | 
				
			||||||
 | 
					#set(USED_QT_PLUGINS imageformats/libqgif
 | 
				
			||||||
 | 
					#                    imageformats/libqico
 | 
				
			||||||
 | 
					#                    imageformats/libqjpeg
 | 
				
			||||||
 | 
					#                    imageformats/libqmng
 | 
				
			||||||
 | 
					#                    imageformats/libqsvg
 | 
				
			||||||
 | 
					#                    imageformats/libqtga
 | 
				
			||||||
 | 
					#                    imageformats/libqtiff)
 | 
				
			||||||
 | 
					# It seems that launcher works without this plugins, but it loads them into memory if they exists
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Main executable
 | 
					# Main executable
 | 
				
			||||||
add_executable(omwlauncher
 | 
					add_executable(omwlauncher
 | 
				
			||||||
    ${LAUNCHER}
 | 
					    ${LAUNCHER}
 | 
				
			||||||
| 
						 | 
					@ -73,6 +84,13 @@ if (APPLE)
 | 
				
			||||||
        "${APP_BUNDLE_DIR}/../launcher.qss")
 | 
					        "${APP_BUNDLE_DIR}/../launcher.qss")
 | 
				
			||||||
    configure_file(${CMAKE_SOURCE_DIR}/files/launcher.qss
 | 
					    configure_file(${CMAKE_SOURCE_DIR}/files/launcher.qss
 | 
				
			||||||
        "${APP_BUNDLE_DIR}/../launcher.cfg")
 | 
					        "${APP_BUNDLE_DIR}/../launcher.cfg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # copy used QT plugins into ${APP_BUNDLE_DIR}/Contents/Plugins
 | 
				
			||||||
 | 
					    #foreach(PLUGIN ${USED_QT_PLUGINS})
 | 
				
			||||||
 | 
					    #    get_filename_component(PLUGIN_FILENAME ${PLUGIN} NAME)
 | 
				
			||||||
 | 
					    #    configure_file("${QT_PLUGINS_DIR}/${PLUGIN}.dylib" "${APP_BUNDLE_DIR}/Contents/Plugins/${PLUGIN_FILENAME}.dylib" COPYONLY)
 | 
				
			||||||
 | 
					    #endforeach()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
    configure_file(${CMAKE_SOURCE_DIR}/files/launcher.qss
 | 
					    configure_file(${CMAKE_SOURCE_DIR}/files/launcher.qss
 | 
				
			||||||
        "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/launcher.qss")
 | 
					        "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/launcher.qss")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,10 +86,6 @@ target_link_libraries(openmw
 | 
				
			||||||
if(APPLE)
 | 
					if(APPLE)
 | 
				
			||||||
    find_library(CARBON_FRAMEWORK Carbon)
 | 
					    find_library(CARBON_FRAMEWORK Carbon)
 | 
				
			||||||
    target_link_libraries(openmw ${CARBON_FRAMEWORK})
 | 
					    target_link_libraries(openmw ${CARBON_FRAMEWORK})
 | 
				
			||||||
    install(TARGETS openmw
 | 
					 | 
				
			||||||
        BUNDLE DESTINATION .
 | 
					 | 
				
			||||||
        RUNTIME DESTINATION ../MacOS
 | 
					 | 
				
			||||||
        COMPONENT Runtime)
 | 
					 | 
				
			||||||
endif(APPLE)
 | 
					endif(APPLE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(DPKG_PROGRAM)
 | 
					if(DPKG_PROGRAM)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1268,7 +1268,7 @@ void NIFLoader::loadResource(Resource *resource)
 | 
				
			||||||
                Nif::Node *o = dynamic_cast<Nif::Node*>(f->target.getPtr());
 | 
					                Nif::Node *o = dynamic_cast<Nif::Node*>(f->target.getPtr());
 | 
				
			||||||
                Nif::NiKeyframeDataPtr data = f->data;
 | 
					                Nif::NiKeyframeDataPtr data = f->data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (f->timeStart == 10000000000000000)
 | 
					                if (f->timeStart == 10000000000000000.0f)
 | 
				
			||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
                data->setBonename(o->name.toString());
 | 
					                data->setBonename(o->name.toString());
 | 
				
			||||||
                data->setStartTime(f->timeStart);
 | 
					                data->setStartTime(f->timeStart);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@
 | 
				
			||||||
	<key>CFBundleSignature</key>
 | 
						<key>CFBundleSignature</key>
 | 
				
			||||||
	<string>????</string>
 | 
						<string>????</string>
 | 
				
			||||||
	<key>CFBundleVersion</key>
 | 
						<key>CFBundleVersion</key>
 | 
				
			||||||
	<string>0.10</string>
 | 
						<string>${OPENMW_VERSION}</string>
 | 
				
			||||||
	<key>CSResourcesFileMapped</key>
 | 
						<key>CSResourcesFileMapped</key>
 | 
				
			||||||
	<true/>
 | 
						<true/>
 | 
				
			||||||
	<key>LSRequiresCarbon</key>
 | 
						<key>LSRequiresCarbon</key>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue