본문 바로가기

작업 공간/프로그래밍 실리콘 맥 m2에서 Aseprite 빌드

by 서울나기 2024. 1. 9.

아래 스크립트를 aseprite_macos_install.sh 라는 이름으로 바탕화면에 저장하면 쉽게 빌드를 할 수 있다. 실리콘 맥에서만 사용했는데 인텔맥에선 어떨지 모르겠다. 누가 해보고 댓글 남겨주길.

 

아래 스크리트에서 두가지를 고치자.

 

1. 사용자 폴더 이름으로 교체 (자기 환경에 맞게)

project_dir=/Users/사용자이름/development/aseprite
skia_dir=/Users/사용자이름/development/skia

 

2. 빌드할 프로그램 버전

홈페이지 들어가서 트라이얼버전 다운받아보면 최신이 몇 버전인지 알수 있다.

(2024.01.08 현재) Aseprite-v1.3.2-trial-macOS.dmg

 

#!/usr/bin/env bash

set -e

target_osx=$(sw_vers -productVersion)
project_dir=/Users/사용자이름/development/aseprite
skia_dir=/Users/사용자이름/development/skia
arch="$(uname -m)"

bundle_trial_url=https://www.aseprite.org/downloads/trial/Aseprite-v1.3.2-trial-macOS.dmg

install_update_deps() {
  macos_deps
  dep_skia
  dep_aseprite
}

macos_deps() {
  brew update
  brew install cmake ninja
}

dep_skia() {
  rm -rf $skia_dir
  mkdir -p $skia_dir
  cd $skia_dir

  latest_url=$(curl -s https://api.github.com/repos/aseprite/skia/releases/latest | grep "browser_download_url.*-macOS.*${arch}.zip" | cut -d : -f 2,3 | tr -d \")
  name=$(basename "${latest_url}")

  if [ ! -f "${name}" ]; then
    echo "Downloading ${name}"

    # Use curl as an alternative to wget
    curl -O -L ${latest_url}
  fi

  unzip "${name}"
}

dep_aseprite() {
  if [ ! -d $project_dir ]; then
    git clone --recursive https://github.com/aseprite/aseprite.git $project_dir
  fi

  cd $project_dir
  git pull
}

build_bin() {
  cd $project_dir
  mkdir -p build
  cd build

  cmake \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DCMAKE_OSX_ARCHITECTURES="${arch}" \
    -DCMAKE_OSX_DEPLOYMENT_TARGET="${target_osx}" \
    -DCMAKE_MACOSX_RPATH=ON \
    -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk \
    -DLAF_BACKEND=skia \
    -DSKIA_DIR="${skia_dir}" \
    -DSKIA_LIBRARY_DIR="${skia_dir}/out/Release-${arch}" \
    -DSKIA_LIBRARY="${skia_dir}/out/Release-${arch}/libskia.a" \
    -DPNG_ARM_NEON:STRING=on \
    -G Ninja ..

  ninja aseprite
}

package_app() {
  mkdir -p "${project_dir}/bundle"
  cd "${project_dir}/bundle"

  name=$(basename "${bundle_trial_url}")
  if [ ! -f "${name}" ]; then
    echo "Downloading bundle assets"
    # Use curl as an alternative to wget
    curl -O -L "${bundle_trial_url}"
  fi

  mkdir -p mount
  yes qy | hdiutil attach -quiet -nobrowse -noverify -noautoopen -mountpoint mount "${name}"
  cp -r mount/Aseprite.app .
  hdiutil detach -quiet mount

  rm -rf Aseprite.app/Contents/MacOS/aseprite
  rm -rf Aseprite.app/Contents/Resources/data
  cp -r "${project_dir}/build/bin/aseprite" Aseprite.app/Contents/MacOS/aseprite
  cp -r "${project_dir}/build/bin/data" Aseprite.app/Contents/Resources/data
}

install_app() {
  sudo cp -r "${project_dir}/bundle/Aseprite.app" /Applications/
}

install_update_deps
build_bin
package_app
install_app

 

실행은 터미널을 이용하여 다음 명령어로 실행하면 최종적으로 응용프로그램에 빌드되어 들어간다.

cd Desktop/
sh aseprite_macos_install.sh

 

댓글