commit
1b9b1a356b
|
@ -1002,9 +1002,6 @@ add_subdirectory(Source)
|
||||||
########################################
|
########################################
|
||||||
# Install shared data files
|
# Install shared data files
|
||||||
#
|
#
|
||||||
if(NOT APPLE)
|
|
||||||
install(DIRECTORY Data/Sys/ DESTINATION ${datadir}/sys PATTERN)
|
|
||||||
endif()
|
|
||||||
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD|OpenBSD|Darwin")
|
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD|OpenBSD|Darwin")
|
||||||
install(FILES Data/license.txt DESTINATION ${datadir})
|
install(FILES Data/license.txt DESTINATION ${datadir})
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -49,41 +49,21 @@ if(APPLE)
|
||||||
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
||||||
)
|
)
|
||||||
|
|
||||||
# get rid of any old copies
|
# Update library references to make the bundle portable
|
||||||
file (REMOVE_RECURSE ${BUNDLE_PATH}/Contents/Resources/Sys)
|
add_custom_command(TARGET ${DOLPHINQT2_BINARY} POST_BUILD
|
||||||
if(NOT SKIP_POSTPROCESS_BUNDLE)
|
COMMAND echo "Fixing up application bundle: ${BUNDLE_PATH}"
|
||||||
# Fix up the bundle after it is finished.
|
COMMAND echo ${CMAKE_SOURCE_DIR}/Tools/deploy-mac.py $<TARGET_FILE_DIR:${DOLPHINQT2_BINARY}>/../..
|
||||||
# There does not seem to be an easy way to run CMake commands post-build,
|
)
|
||||||
# so we invoke CMake again on a generated script.
|
|
||||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/postprocess_bundle.cmake "
|
# Copy resources in the bundle
|
||||||
include(BundleUtilities)
|
file(GLOB_RECURSE resources RELATIVE "${CMAKE_SOURCE_DIR}/Data" "${CMAKE_SOURCE_DIR}/Data/Sys/*")
|
||||||
message(\"Fixing up application bundle: ${BUNDLE_PATH}\")
|
foreach(res ${resources})
|
||||||
message(\"(Note: This is only necessary to produce a redistributable binary.\")
|
target_sources(${DOLPHINQT2_BINARY} PRIVATE "${CMAKE_SOURCE_DIR}/Data/${res}")
|
||||||
message(\"To skip, pass -DSKIP_POSTPROCESS_BUNDLE=1 to cmake.)\")
|
get_filename_component(resdir "${res}" DIRECTORY)
|
||||||
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/Data/${res}" PROPERTIES
|
||||||
execute_process(
|
MACOSX_PACKAGE_LOCATION "Resources/${resdir}")
|
||||||
COMMAND ${CMAKE_SOURCE_DIR}/Tools/deploy-mac.py -p platforms/libqcocoa.dylib \"${BUNDLE_PATH}\"
|
source_group("Resources" FILES "${CMAKE_SOURCE_DIR}/Data/${res}")
|
||||||
RESULT_VARIABLE retcode
|
endforeach()
|
||||||
)
|
|
||||||
if(NOT \${retcode} EQUAL 0)
|
|
||||||
message(FATAL_ERROR \"Error when postprocessing bundle (return code: \${retcode}).\")
|
|
||||||
endif()
|
|
||||||
file(INSTALL ${CMAKE_SOURCE_DIR}/Data/Sys
|
|
||||||
DESTINATION ${BUNDLE_PATH}/Contents/Resources
|
|
||||||
)
|
|
||||||
")
|
|
||||||
add_custom_command(TARGET ${DOLPHINQT2_BINARY} POST_BUILD
|
|
||||||
COMMAND ${CMAKE_COMMAND} -P postprocess_bundle.cmake
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
add_custom_command(OUTPUT ${BUNDLE_PATH}/Contents/Resources/Sys
|
|
||||||
COMMAND ln -nfs ${CMAKE_SOURCE_DIR}/Data/Sys ${BUNDLE_PATH}/Contents/Resources/Sys
|
|
||||||
VERBATIM
|
|
||||||
)
|
|
||||||
add_custom_target(CopyDataIntoBundleQt ALL
|
|
||||||
DEPENDS ${BUNDLE_PATH}/Contents/Resources/Sys
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
install(TARGETS ${DOLPHINQT2_BINARY} RUNTIME DESTINATION ${bindir})
|
install(TARGETS ${DOLPHINQT2_BINARY} RUNTIME DESTINATION ${bindir})
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -114,18 +114,45 @@ endif()
|
||||||
|
|
||||||
set(DOLPHIN_EXE ${DOLPHIN_EXE_BASE})
|
set(DOLPHIN_EXE ${DOLPHIN_EXE_BASE})
|
||||||
|
|
||||||
find_package(Gettext)
|
|
||||||
if(GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE AND wxWidgets_FOUND)
|
|
||||||
file(GLOB LINGUAS ${CMAKE_SOURCE_DIR}/Languages/po/*.po)
|
|
||||||
add_custom_target(translations ALL)
|
|
||||||
GETTEXT_CREATE_TRANSLATIONS(${CMAKE_SOURCE_DIR}/Languages/po/dolphin-emu.pot ${LINGUAS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(wxWidgets_FOUND)
|
if(wxWidgets_FOUND)
|
||||||
add_executable(${DOLPHIN_EXE} ${SRCS} ${GUI_SRCS})
|
add_executable(${DOLPHIN_EXE} ${SRCS} ${GUI_SRCS})
|
||||||
target_link_libraries(${DOLPHIN_EXE} ${LIBS} ${WXLIBS})
|
target_link_libraries(${DOLPHIN_EXE} ${LIBS} ${WXLIBS})
|
||||||
|
|
||||||
|
# Handle localization
|
||||||
|
find_package(Gettext)
|
||||||
|
if(GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE)
|
||||||
|
set(pot_file "${CMAKE_SOURCE_DIR}/Languages/po/dolphin-emu.pot")
|
||||||
|
file(GLOB LINGUAS ${CMAKE_SOURCE_DIR}/Languages/po/*.po)
|
||||||
|
|
||||||
|
target_sources(${DOLPHIN_EXE} PRIVATE ${pot_file} ${LINGUAS})
|
||||||
|
source_group("Localization" FILES ${LINGUAS})
|
||||||
|
source_group("Localization\\\\Generated" FILES ${pot_file})
|
||||||
|
|
||||||
|
foreach(po ${LINGUAS})
|
||||||
|
get_filename_component(lang ${po} NAME_WE)
|
||||||
|
set(mo_dir ${CMAKE_CURRENT_BINARY_DIR}/${lang})
|
||||||
|
set(mo ${mo_dir}/dolphin-emu.mo)
|
||||||
|
|
||||||
|
target_sources(${DOLPHIN_EXE} PRIVATE ${mo})
|
||||||
|
source_group("Localization\\\\Generated" FILES ${mo})
|
||||||
|
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
set_source_files_properties(${mo} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/${lang}.lproj")
|
||||||
|
else()
|
||||||
|
install(FILES ${mo} DESTINATION share/locale/${lang}/LC_MESSAGES)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_custom_command(OUTPUT ${mo}
|
||||||
|
COMMAND mkdir -p ${mo_dir}
|
||||||
|
COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${po} ${pot_file}
|
||||||
|
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${mo} ${po}
|
||||||
|
DEPENDS ${po}
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
include(BundleUtilities)
|
|
||||||
set(BUNDLE_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${DOLPHIN_EXE}.app)
|
set(BUNDLE_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${DOLPHIN_EXE}.app)
|
||||||
|
|
||||||
# Ask for an application bundle.
|
# Ask for an application bundle.
|
||||||
|
@ -134,84 +161,25 @@ if(wxWidgets_FOUND)
|
||||||
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
||||||
)
|
)
|
||||||
|
|
||||||
# get rid of any old copies
|
# Copy resources in the bundle
|
||||||
file (REMOVE_RECURSE ${BUNDLE_PATH}/Contents/Resources/Sys)
|
file(GLOB_RECURSE resources RELATIVE "${CMAKE_SOURCE_DIR}/Data" "${CMAKE_SOURCE_DIR}/Data/Sys/*")
|
||||||
if(NOT SKIP_POSTPROCESS_BUNDLE)
|
foreach(res ${resources})
|
||||||
# Fix up the bundle after it is finished.
|
target_sources(${DOLPHIN_EXE} PRIVATE "${CMAKE_SOURCE_DIR}/Data/${res}")
|
||||||
# There does not seem to be an easy way to run CMake commands post-build,
|
get_filename_component(resdir "${res}" DIRECTORY)
|
||||||
# so we invoke CMake again on a generated script.
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/Data/${res}" PROPERTIES
|
||||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/postprocess_bundle.cmake "
|
MACOSX_PACKAGE_LOCATION "Resources/${resdir}")
|
||||||
include(BundleUtilities)
|
source_group("Resources" FILES "${CMAKE_SOURCE_DIR}/Data/${res}")
|
||||||
message(\"Fixing up application bundle: ${BUNDLE_PATH}\")
|
endforeach()
|
||||||
message(\"(Note: This is only necessary to produce a redistributable binary.\")
|
|
||||||
message(\"To skip, pass -DSKIP_POSTPROCESS_BUNDLE=1 to cmake.)\")
|
|
||||||
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${CMAKE_SOURCE_DIR}/Tools/deploy-mac.py \"${BUNDLE_PATH}\"
|
|
||||||
RESULT_VARIABLE retcode
|
|
||||||
)
|
|
||||||
if(NOT \${retcode} EQUAL 0)
|
|
||||||
message(FATAL_ERROR \"Error when postprocessing bundle (return code: \${retcode}).\")
|
|
||||||
endif()
|
|
||||||
file(INSTALL \"${CMAKE_SOURCE_DIR}/Data/Sys\"
|
|
||||||
DESTINATION \"${BUNDLE_PATH}/Contents/Resources\"
|
|
||||||
)
|
|
||||||
")
|
|
||||||
add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
|
|
||||||
COMMAND ${CMAKE_COMMAND} -P postprocess_bundle.cmake
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
add_custom_command(OUTPUT ${BUNDLE_PATH}/Contents/Resources/Sys
|
|
||||||
COMMAND ln -nfs ${CMAKE_SOURCE_DIR}/Data/Sys ${BUNDLE_PATH}/Contents/Resources/Sys
|
|
||||||
VERBATIM
|
|
||||||
)
|
|
||||||
add_custom_target(CopyDataIntoBundleWx ALL
|
|
||||||
DEPENDS ${BUNDLE_PATH}/Contents/Resources/Sys
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE AND wxWidgets_FOUND)
|
# Update library references to make the bundle portable
|
||||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/copy_translations_into_bundle.cmake "
|
add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
|
||||||
file(GLOB TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_BINARY_DIR}
|
COMMAND echo "Fixing up application bundle: ${BUNDLE_PATH}"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/*.gmo
|
COMMAND echo ${CMAKE_SOURCE_DIR}/Tools/deploy-mac.py $<TARGET_FILE_DIR:${DOLPHIN_EXE}>/../..
|
||||||
)
|
)
|
||||||
foreach(TRANSLATION_FILE \${TRANSLATION_FILES})
|
|
||||||
string(REPLACE \".gmo\" \".lproj\" TRANSLATION_DIR
|
|
||||||
\${TRANSLATION_FILE}
|
|
||||||
)
|
|
||||||
# It would be better to copy to the new name as a single action,
|
|
||||||
# but I can't figure out a way to let CMake do that.
|
|
||||||
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/\${TRANSLATION_FILE}
|
|
||||||
DESTINATION ${BUNDLE_PATH}/Contents/Resources/\${TRANSLATION_DIR}
|
|
||||||
NO_SOURCE_PERMISSIONS
|
|
||||||
)
|
|
||||||
file(RENAME
|
|
||||||
${BUNDLE_PATH}/Contents/Resources/\${TRANSLATION_DIR}/\${TRANSLATION_FILE}
|
|
||||||
${BUNDLE_PATH}/Contents/Resources/\${TRANSLATION_DIR}/dolphin-emu.mo
|
|
||||||
)
|
|
||||||
endforeach()
|
|
||||||
")
|
|
||||||
|
|
||||||
file(GLOB PO_FILES RELATIVE ${CMAKE_SOURCE_DIR}/Languages/po
|
|
||||||
${CMAKE_SOURCE_DIR}/Languages/po/*.po
|
|
||||||
)
|
|
||||||
string(REPLACE .po .gmo GMO_FILES "${PO_FILES}")
|
|
||||||
|
|
||||||
add_custom_command(OUTPUT ${BUNDLE_PATH}/Contents/Resources/en.lproj
|
|
||||||
COMMAND ${CMAKE_COMMAND} -P copy_translations_into_bundle.cmake
|
|
||||||
DEPENDS ${GMO_FILES}
|
|
||||||
${CMAKE_SOURCE_DIR}/Data/Sys
|
|
||||||
VERBATIM
|
|
||||||
)
|
|
||||||
add_custom_target(CopyTranslationsIntoBundleWx ALL
|
|
||||||
DEPENDS ${BUNDLE_PATH}/Contents/Resources/en.lproj
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Install bundle into systemwide /Applications directory.
|
# Install bundle into systemwide /Applications directory.
|
||||||
install(DIRECTORY ${BUNDLE_PATH} DESTINATION /Applications
|
install(TARGETS ${DOLPHIN_EXE} DESTINATION /Applications)
|
||||||
USE_SOURCE_PERMISSIONS
|
|
||||||
)
|
|
||||||
elseif(WIN32)
|
elseif(WIN32)
|
||||||
set_target_properties(${DOLPHIN_EXE} PROPERTIES
|
set_target_properties(${DOLPHIN_EXE} PROPERTIES
|
||||||
WIN32_EXECUTABLE ON
|
WIN32_EXECUTABLE ON
|
||||||
|
|
|
@ -139,23 +139,12 @@ if __name__ == '__main__':
|
||||||
installNameTool = args.install_name_tool
|
installNameTool = args.install_name_tool
|
||||||
verbose = args.verbose
|
verbose = args.verbose
|
||||||
|
|
||||||
try:
|
|
||||||
shutil.rmtree(os.path.join(args.bundle, 'Contents/Frameworks/'))
|
|
||||||
except OSError as e:
|
|
||||||
if e.errno != errno.ENOENT:
|
|
||||||
raise
|
|
||||||
|
|
||||||
for executable in os.listdir(os.path.join(args.bundle, 'Contents/MacOS')):
|
for executable in os.listdir(os.path.join(args.bundle, 'Contents/MacOS')):
|
||||||
if executable.endswith('.dSYM'):
|
if executable.endswith('.dSYM'):
|
||||||
continue
|
continue
|
||||||
fullPath = os.path.join(args.bundle, 'Contents/MacOS/', executable)
|
fullPath = os.path.join(args.bundle, 'Contents/MacOS/', executable)
|
||||||
updateMachO(fullPath, splitPath(os.path.join(args.bundle, 'Contents/MacOS')), splitPath(args.root))
|
updateMachO(fullPath, splitPath(os.path.join(args.bundle, 'Contents/MacOS')), splitPath(args.root))
|
||||||
if args.qt_plugins:
|
if args.qt_plugins:
|
||||||
try:
|
|
||||||
shutil.rmtree(os.path.join(args.bundle, 'Contents/PlugIns/'))
|
|
||||||
except OSError as e:
|
|
||||||
if e.errno != errno.ENOENT:
|
|
||||||
raise
|
|
||||||
makedirs(os.path.join(args.bundle, 'Contents/PlugIns'))
|
makedirs(os.path.join(args.bundle, 'Contents/PlugIns'))
|
||||||
makedirs(os.path.join(args.bundle, 'Contents/Resources'))
|
makedirs(os.path.join(args.bundle, 'Contents/Resources'))
|
||||||
with open(os.path.join(args.bundle, 'Contents/Resources/qt.conf'), 'w') as conf:
|
with open(os.path.join(args.bundle, 'Contents/Resources/qt.conf'), 'w') as conf:
|
||||||
|
|
Loading…
Reference in New Issue