mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-20 11:12:49 +01:00
Avoid unnecessary bundle copies on OS X:
- Make "copy data into bundle" depend on the files actually being changed, rather than being run on every build. - postprocess_bundle depends on system files and checking the Dolphin binary and all that, and would be iffy to try to avoid rerunning; but it's only needed to produce a redistributable bundle, so add SKIP_POSTPROCESS_BUNDLE to skip it for development.
This commit is contained in:
parent
ae8f4a7054
commit
b6728c1405
@ -773,11 +773,6 @@ if((NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin"))
|
||||
install(DIRECTORY Data/User/ DESTINATION ${datadir}/user PATTERN)
|
||||
install(DIRECTORY Data/Sys/ DESTINATION ${datadir}/sys PATTERN)
|
||||
endif()
|
||||
include(FindGettext)
|
||||
if(GETTEXT_FOUND AND NOT DISABLE_WX)
|
||||
file(GLOB LINGUAS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} Languages/po/*.po)
|
||||
GETTEXT_CREATE_TRANSLATIONS(Languages/po/dolphin-emu.pot ALL ${LINGUAS})
|
||||
endif()
|
||||
if((NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD|Darwin"))
|
||||
install(FILES Data/license.txt DESTINATION ${datadir})
|
||||
endif()
|
||||
|
@ -1,3 +1,7 @@
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
option(SKIP_POSTPROCESS_BUNDLE "Skip postprocessing bundle for redistributability" OFF)
|
||||
endif()
|
||||
|
||||
set(LIBS core
|
||||
${LZO}
|
||||
discio
|
||||
@ -170,6 +174,13 @@ if(USE_UPNP)
|
||||
set(LIBS ${LIBS} miniupnpc)
|
||||
endif()
|
||||
|
||||
include(FindGettext)
|
||||
if(GETTEXT_FOUND 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(ANDROID)
|
||||
set(DOLPHIN_EXE main)
|
||||
add_library(${DOLPHIN_EXE} SHARED ${SRCS})
|
||||
@ -217,47 +228,76 @@ else()
|
||||
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
||||
)
|
||||
|
||||
# Fix up the bundle after it is finished.
|
||||
# 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 "
|
||||
include(BundleUtilities)
|
||||
message(\"Fixing up application bundle: ${BUNDLE_PATH}\")
|
||||
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
||||
fixup_bundle(\"${BUNDLE_PATH}\" \"\" \"\")
|
||||
")
|
||||
add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -P postprocess_bundle.cmake
|
||||
)
|
||||
if(NOT SKIP_POSTPROCESS_BUNDLE)
|
||||
# Fix up the bundle after it is finished.
|
||||
# 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 "
|
||||
include(BundleUtilities)
|
||||
message(\"Fixing up application bundle: ${BUNDLE_PATH}\")
|
||||
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)
|
||||
fixup_bundle(\"${BUNDLE_PATH}\" \"\" \"\")
|
||||
")
|
||||
add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -P postprocess_bundle.cmake
|
||||
)
|
||||
endif()
|
||||
|
||||
# Copy data files into application bundle.
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/copy_data_into_bundle.cmake "
|
||||
file(INSTALL ${CMAKE_SOURCE_DIR}/Data/Sys ${CMAKE_SOURCE_DIR}/Data/User
|
||||
DESTINATION ${BUNDLE_PATH}/Contents/Resources
|
||||
)
|
||||
file(GLOB TRANSLATION_FILES RELATIVE ${CMAKE_BINARY_DIR}
|
||||
${CMAKE_BINARY_DIR}/*.gmo
|
||||
)
|
||||
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_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(TRANSLATION_FILE)
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/did_copy_data_into_bundle \"\")
|
||||
")
|
||||
add_custom_target(CopyDataIntoBundle ALL
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/did_copy_data_into_bundle
|
||||
COMMAND ${CMAKE_COMMAND} -P copy_data_into_bundle.cmake
|
||||
DEPENDS ${CMAKE_SOURCE_DIR}/Data/Sys ${CMAKE_SOURCE_DIR}/Data/User
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target(CopyDataIntoBundle ALL
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/did_copy_data_into_bundle
|
||||
)
|
||||
|
||||
if(GETTEXT_FOUND AND wxWidgets_FOUND)
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/copy_translations_into_bundle.cmake "
|
||||
file(GLOB TRANSLATION_FILES RELATIVE ${CMAKE_BINARY_DIR}
|
||||
${CMAKE_BINARY_DIR}/*.gmo
|
||||
)
|
||||
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_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(TRANSLATION_FILE)
|
||||
")
|
||||
|
||||
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 ${CMAKE_SOURCE_DIR}/Data/User
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target(CopyTranslationsIntoBundle ALL
|
||||
DEPENDS ${BUNDLE_PATH}/Contents/Resources/en.lproj
|
||||
)
|
||||
endif()
|
||||
|
||||
# Install bundle into systemwide /Applications directory.
|
||||
install(DIRECTORY ${BUNDLE_PATH} DESTINATION /Applications
|
||||
|
Loading…
x
Reference in New Issue
Block a user