Skip to content

Commit

Permalink
Initial refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
tresf committed May 12, 2024
1 parent 655365e commit d5a8309
Show file tree
Hide file tree
Showing 9 changed files with 59 additions and 50 deletions.
59 changes: 23 additions & 36 deletions cmake/apple/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,40 +1,27 @@
SET(MACOSX_BUNDLE_ICON_FILE "icon.icns")
SET(MACOSX_BUNDLE_GUI_IDENTIFIER "${PROJECT_NAME_UCASE}")
SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION}")
SET(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME_UCASE}")
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION}")
SET(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION}")
SET(MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}")
SET(MACOSX_BUNDLE_MIMETYPE "application/x-lmms-project")
SET(MACOSX_BUNDLE_MIMETYPE_ICON "project.icns")
SET(MACOSX_BUNDLE_MIMETYPE_ID "io.lmms")
SET(MACOSX_BUNDLE_PROJECT_URL "${PROJECT_URL}")
SET(MACOSX_BUNDLE_DMG_TITLE "${MACOSX_BUNDLE_BUNDLE_NAME} ${MACOSX_BUNDLE_LONG_VERSION_STRING}")

# TODO: Re-evaluate these
set(MACOSX_BUNDLE_ICON_FILE "icon.icns")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "${PROJECT_NAME_UCASE}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION}")
set(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME_UCASE}")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION}")
set(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION}")
set(MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}")
set(MACOSX_BUNDLE_MIMETYPE "application/x-lmms-project")
set(MACOSX_BUNDLE_MIMETYPE_ICON "project.icns")
set(MACOSX_BUNDLE_MIMETYPE_ID "io.lmms")
set(MACOSX_BUNDLE_PROJECT_URL "${PROJECT_URL}")
set(MACOSX_BUNDLE_DMG_TITLE "${MACOSX_BUNDLE_BUNDLE_NAME} ${MACOSX_BUNDLE_LONG_VERSION_STRING}")
# appdmg won't allow volume names > 27 char https://github.com/LinusU/node-alias/issues/7
STRING(SUBSTRING "${MACOSX_BUNDLE_DMG_TITLE}" 0 27 MACOSX_BUNDLE_DMG_TITLE)
string(SUBSTRING "${MACOSX_BUNDLE_DMG_TITLE}" 0 27 MACOSX_BUNDLE_DMG_TITLE)

CONFIGURE_FILE("lmms.plist.in" "${CMAKE_BINARY_DIR}/Info.plist")
CONFIGURE_FILE("package_apple.sh.in" "${CMAKE_BINARY_DIR}/package_apple.sh" @ONLY)
CONFIGURE_FILE("appdmg.json.in" "${CMAKE_BINARY_DIR}/appdmg.json" @ONLY)
# Resource files
configure_file("lmms.plist.in" "Info.plist")
configure_file("package_apple.sh.in" "package_apple.sh" @ONLY)
configure_file("appdmg.json.in" "_appdmg.json.in" @ONLY)

# CPack vars
set(CPACK_GENERATOR "DragNDrop" PARENT_SCOPE)
# Disable strip, it causes missing symbols on macOS
set(CPACK_STRIP_FILES false PARENT_SCOPE)
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION}" PARENT_SCOPE)
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_SOURCE_DIR}/CPackApple.cmake" PARENT_SCOPE)
set(CPACK_DMG_VOLUME_NAME "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}.dmg" PARENT_SCOPE)
# tiff file is multi-resource (1x & 2x) created programatically using convert
execute_process(COMMAND convert "${CMAKE_SOURCE_DIR}/cmake/apple/*.png" "${CMAKE_BINARY_DIR}/dmg_branding.tiff")
set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_BINARY_DIR}/dmg_branding.tiff" PARENT_SCOPE)
# DS_Store contains the Finder layout
# - .DS_Store can be recreated using appdmg appdmg.json lmms.dmg
# - Update path to point to _CPack_Packages/Darwin/DragNDrop/lmms-x-x-x/LMMS.app
# - Find new .DS_Store from the root of the DMG file
set(CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/cmake/apple/DS_Store" PARENT_SCOPE)
unset(CPACK_RESOURCE_FILE_LICENSE PARENT_SCOPE)
# CPack settings/scripts
configure_file("CPackOptions.cmake.in" "CPackOptions.cmake")
configure_file("CPackPreBuild.cmake.in" "CPackPreBuild.cmake" @ONLY)

# Additional vars otherwise unexposed to CPack
set(CPACK_BINARY_DIR "${CMAKE_BINARY_DIR}" PARENT_SCOPE)
set(CPACK_DMG_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}.dmg" PARENT_SCOPE)
set(CPACK_GENERATOR "DragNDrop" PARENT_SCOPE)
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/CPackOptions.cmake" PARENT_SCOPE)
7 changes: 0 additions & 7 deletions cmake/apple/CPackApple.cmake

This file was deleted.

12 changes: 12 additions & 0 deletions cmake/apple/CPackOptions.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Supress license popup when opening DMG
unset(CPACK_RESOURCE_FILE_LICENSE)
# Disable strip, it causes missing symbols on macOS
set(CPACK_STRIP_FILES false)
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION}")
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_BINARY_DIR}/CPackPreBuild.cmake")
set(CPACK_DMG_VOLUME_NAME "${PROJECT_NAME_UCASE} ${VERSION}")
# tiff file is multi-resource (1x & 2x) created programatically using convert
execute_process(COMMAND convert "${CMAKE_CURRENT_SOURCE_DIR}/*.png" "${CMAKE_CURRENT_BINARY_DIR}/background.tiff")
set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_CURRENT_BINARY_DIR}/background.tiff")
set(CPACK_DMG_DS_STORE "${CMAKE_CURRENT_SOURCE_DIR}/DS_Store")
set(CPACK_DMG_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}.dmg")
21 changes: 21 additions & 0 deletions cmake/apple/CPackPreBuild.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Use @VAR@ for immediate expansion (e.g. @CMAKE_SOURCE_DIR@)
# Use ${VAR} for delayed expansion (e.g. ${CMAKE_INSTALL_PREFIX})

# Install resource files
file(INSTALL "@CMAKE_CURRENT_BINARY_DIR@/Info.plist" DESTINATION "${CPACK_TEMPORARY_INSTALL_DIRECTORY}")
file(INSTALL "@CMAKE_CURRENT_SOURCE_DIR@/icon.icns" DESTINATION "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/Resources")
file(INSTALL "@CMAKE_CURRENT_SOURCE_DIR@/project.icns" DESTINATION "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/Resources")

# Updates appdmg.json with CPACK_TEMPORARY_INSTALL_DIRECTORY
# - .DS_Store can be recreated using appdmg appdmg.json lmms.dmg
# - Find new .DS_Store from the root of the DMG file
# - cp /Volumes/lmms-x.x.x/.DS_Store ../cmake/apple/DS_Store
configure_file("@CMAKE_CURRENT_BINARY_DIR@/_appdmg.json.in" "@CMAKE_CURRENT_BINARY_DIR@/appdmg.json")
file(REMOVE "@CMAKE_CURRENT_BINARY_DIR@/_appdmg.json.in")

# TODO: Port this script to CMake
execute_process(COMMAND chmod u+x @CMAKE_CURRENT_BINARY_DIR@/package_apple.sh)
execute_process(COMMAND @CMAKE_CURRENT_BINARY_DIR@/package_apple.sh ${CPACK_TEMPORARY_INSTALL_DIRECTORY} RESULT_VARIABLE EXIT_CODE)
if(NOT EXIT_CODE EQUAL 0)
message(FATAL_ERROR "Execution of package_apple.sh failed")
endif()
Binary file modified cmake/apple/DS_Store
Binary file not shown.
4 changes: 2 additions & 2 deletions cmake/apple/appdmg.json.in
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"title": "@MACOSX_BUNDLE_DMG_TITLE@",
"background": "@CMAKE_SOURCE_DIR@/cmake/apple/dmg_branding.png",
"background": "@CMAKE_SOURCE_DIR@/cmake/apple/background.png",
"icon-size": 128,
"contents": [
{ "x": 139, "y": 200, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" },
{ "x": 139, "y": 200, "type": "file", "path": "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/@MACOSX_BUNDLE_BUNDLE_NAME@.app" },
{ "x": 568, "y": 200, "type": "link", "path": "/Applications" }
]
}
File renamed without changes
File renamed without changes
6 changes: 1 addition & 5 deletions cmake/apple/package_apple.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ for file in *; do
fi
done


cp "@CMAKE_BINARY_DIR@/Info.plist" "$APP/Contents/" # TODO: MOVE TO INSTALL
cp "@CMAKE_SOURCE_DIR@/cmake/apple/"*.icns "$APP/Contents/Resources/" # TODO: MOVE TO INSTALL

# Make all libraries writable for macdeployqt
cd "$APP"
find . -type f -print0 | xargs -0 chmod u+w
Expand Down Expand Up @@ -81,7 +77,7 @@ done

# Finalize .app
# shellcheck disable=SC2086
macdeployqt "$APP" $_executables
# macdeployqt "$APP" $_executables

# Carla is a standalone plugin. Remove library, look for it side-by-side LMMS.app
# This MUST be done AFTER calling macdeployqt
Expand Down

0 comments on commit d5a8309

Please sign in to comment.