2016-04-11 20:50:11 +00:00
# Table of contents
* [Platforms ](#platforms )
* [Get the source code ](#get-the-source-code )
* [Dependencies ](#dependencies )
2016-04-27 03:11:45 +00:00
* [Windows dependencies ](#windows-dependencies )
2016-10-26 17:58:43 +00:00
* [macOS dependencies ](#macos-dependencies )
2016-04-11 20:50:11 +00:00
* [Linux dependencies ](#linux-dependencies )
* [Compiling ](#compiling )
2016-04-27 03:11:45 +00:00
* [Windows details ](#windows-details )
2020-06-24 18:37:12 +00:00
* [MinGW ](#mingw )
2016-10-26 17:58:43 +00:00
* [macOS details ](#macos-details )
2016-04-27 03:11:45 +00:00
* [Issues with Retina displays ](#issues-with-retina-displays )
* [Linux details ](#linux-details )
2016-04-11 20:50:11 +00:00
* [Using shared third party libraries ](#using-shared-third-party-libraries )
2015-01-06 12:34:40 +00:00
# Platforms
2012-07-08 04:41:14 +00:00
2013-11-23 19:01:34 +00:00
You should be able to compile Aseprite successfully on the following
2012-07-08 04:41:14 +00:00
platforms:
2023-01-09 12:47:14 +00:00
* Windows 11 + [Visual Studio Community 2022 + Windows 10.0 SDK (the latest version available) ](https://imgur.com/a/7zs51IT ) (we don't support [MinGW ](#mingw ))
* macOS 13.0.1 Ventura + Xcode 14.1 + macOS 11.3 SDK (older version might work)
* Linux Ubuntu Bionic 18.04 + clang 10.0
2012-07-08 04:41:14 +00:00
2015-01-06 12:34:40 +00:00
# Get the source code
2016-04-13 15:00:12 +00:00
You can get the source code downloading a `Aseprite-v1.x-Source.zip`
2018-08-23 20:35:05 +00:00
file from the latest Aseprite release (*in that case please follow the
compilation instructions inside the `.zip` file*):
2015-01-06 12:34:40 +00:00
2016-04-13 15:00:12 +00:00
https://github.com/aseprite/aseprite/releases
2015-01-06 12:34:40 +00:00
2016-04-13 15:00:12 +00:00
Or you can clone the repository and all its submodules using the
following command:
2015-01-06 12:34:40 +00:00
git clone --recursive https://github.com/aseprite/aseprite.git
2016-04-13 15:00:12 +00:00
To update an existing clone you can use the following commands:
2015-11-20 02:12:07 +00:00
cd aseprite
git pull
git submodule update --init --recursive
2016-04-27 03:54:47 +00:00
You can use [Git for Windows ](https://git-for-windows.github.io/ ) to
2016-04-27 03:11:45 +00:00
clone the repository on Windows.
2015-01-06 12:34:40 +00:00
2016-04-11 20:50:11 +00:00
# Dependencies
2012-07-08 04:41:14 +00:00
2016-04-27 03:11:45 +00:00
To compile Aseprite you will need:
2022-05-09 13:57:34 +00:00
* The latest version of [CMake ](https://cmake.org ) (3.16 or greater)
2016-04-27 03:11:45 +00:00
* [Ninja ](https://ninja-build.org ) build system
2022-05-09 13:57:34 +00:00
* And a compiled version of the `aseprite-m102` branch of
2020-03-02 02:42:08 +00:00
the [Skia library ](https://github.com/aseprite/skia#readme ).
There are [pre-built packages available ](https://github.com/aseprite/skia/releases ).
You can get some extra information in
the [*laf* dependencies ](https://github.com/aseprite/laf#dependencies ) page.
2016-04-27 03:11:45 +00:00
## Windows dependencies
2020-06-24 18:45:26 +00:00
* Windows 10 (we don't support cross-compiling)
2022-05-09 13:57:34 +00:00
* [Visual Studio Community 2022 ](https://visualstudio.microsoft.com/downloads/ ) (we don't support [MinGW ](#mingw ))
2020-03-02 13:55:20 +00:00
* The [Desktop development with C++ item + Windows 10.0.18362.0 SDK ](https://imgur.com/a/7zs51IT )
2018-11-12 11:40:57 +00:00
from the Visual Studio installer
2016-04-27 03:11:45 +00:00
2016-10-26 17:58:43 +00:00
## macOS dependencies
2016-04-27 03:11:45 +00:00
2022-05-09 13:57:34 +00:00
On macOS you will need macOS 11.3 SDK and Xcode 13.1 (older versions
might work).
2016-04-27 03:11:45 +00:00
2016-04-11 20:50:11 +00:00
## Linux dependencies
2018-08-29 13:24:13 +00:00
You will need the following dependencies on Ubuntu/Debian:
2016-04-11 20:50:11 +00:00
2023-01-09 12:47:28 +00:00
sudo apt-get install -y g++ clang libc++-dev libc++abi-dev cmake ninja-build libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev
Or use clang-10 packages (or newer) in case that clang in your distribution is older than clang 10.0:
sudo apt-get install -y clang-10 libc++-10-dev libc++abi-10-dev
2018-08-29 13:24:13 +00:00
On Fedora:
2022-06-02 15:05:11 +00:00
sudo dnf install -y gcc-c++ clang libcxx-devel cmake ninja-build libX11-devel libXcursor-devel libXi-devel mesa-libGL-devel fontconfig-devel
2016-04-11 20:50:11 +00:00
2021-06-20 09:25:52 +00:00
On Arch:
2022-05-09 13:57:34 +00:00
sudo pacman -S gcc clang libc++ cmake ninja libx11 libxcursor mesa-libgl fontconfig
2021-06-20 09:25:52 +00:00
2022-09-09 01:06:01 +00:00
On SUSE:
sudo zypper install gcc-c++ clang libc++-devel libc++abi-devel cmake ninja libX11-devel libXcursor-devel libXi-devel Mesa-libGL-devel fontconfig-devel
2016-04-11 20:50:11 +00:00
# Compiling
2013-11-23 19:32:13 +00:00
2016-04-27 03:11:45 +00:00
1. [Get Aseprite code ](#get-the-source-code ), put it in a folder like
`C:\aseprite` , and create a `build` directory inside to leave all
the files that are result of the compilation process (`.exe`,
`.lib` , `.obj` , `.a` , `.o` , etc).
2012-07-08 04:41:14 +00:00
2016-04-27 03:11:45 +00:00
cd C:\aseprite
mkdir build
2012-07-08 04:41:14 +00:00
2013-11-23 19:01:34 +00:00
In this way, if you want to start with a fresh copy of Aseprite
2012-07-08 04:41:14 +00:00
source code, you can remove the `build` directory and start again.
2016-04-27 03:11:45 +00:00
2. Enter in the new directory and execute `cmake` :
2012-07-08 04:41:14 +00:00
2016-04-27 03:11:45 +00:00
cd C:\aseprite\build
2020-03-02 02:42:08 +00:00
cmake -G Ninja -DLAF_BACKEND=skia ..
2016-04-11 20:50:11 +00:00
2016-04-27 03:11:45 +00:00
Here `cmake` needs different options depending on your
platform. You must check the details for
2016-10-26 17:58:43 +00:00
[Windows ](#windows-details ), [macOS ](#macos-details ), and
2016-04-27 03:11:45 +00:00
[Linux ](#linux-details ). Some `cmake` options can be modified using tools like
[`ccmake` ](https://cmake.org/cmake/help/latest/manual/ccmake.1.html )
or [`cmake-gui` ](https://cmake.org/cmake/help/latest/manual/cmake-gui.1.html ).
2016-04-11 20:50:11 +00:00
2016-04-27 03:11:45 +00:00
3. After you have executed and configured `cmake` , you have to compile
the project:
2012-07-08 04:41:14 +00:00
2016-04-27 03:11:45 +00:00
cd C:\aseprite\build
ninja aseprite
2012-07-08 04:41:14 +00:00
2016-04-27 03:11:45 +00:00
4. When `ninja` finishes the compilation, you can find the executable
inside `C:\aseprite\build\bin\aseprite.exe` .
2012-07-08 04:41:14 +00:00
2016-04-27 03:11:45 +00:00
## Windows details
2012-07-08 04:41:14 +00:00
2020-03-02 02:42:08 +00:00
Open a [developer command prompt ](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs )
2019-01-02 15:22:00 +00:00
or in the command line (`cmd.exe`) call:
2022-05-09 13:57:34 +00:00
call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" -arch=x64
2019-01-02 15:22:00 +00:00
And then
2012-07-08 04:41:14 +00:00
2016-04-27 03:11:45 +00:00
cd aseprite
mkdir build
cd build
2020-08-17 14:56:07 +00:00
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=C:\deps\skia -DSKIA_LIBRARY_DIR=C:\deps\skia\out\Release-x64 -DSKIA_LIBRARY=C:\deps\skia\out\Release-x64\skia.lib -G Ninja ..
2016-04-27 03:11:45 +00:00
ninja aseprite
2016-02-29 15:25:15 +00:00
2016-04-27 03:11:45 +00:00
In this case, `C:\deps\skia` is the directory where Skia was compiled
2020-03-02 02:42:08 +00:00
or uncompressed.
2015-04-10 12:37:56 +00:00
2020-06-24 19:01:31 +00:00
### MinGW
2020-06-24 18:37:12 +00:00
2020-06-24 19:00:18 +00:00
We don't support MinGW compiler and it might bring some problems into
the compilation process. If you see that the detected C++ compiler by
cmake is `C:\MinGW\bin\c++.exe` or something similar, you have to get
rid of MinGW path (`C:\MinGW\bin`) from the `PATH` environment
variable and run cmake again from scratch, so the Visual Studio C++
compiler (`cl.exe`) is used instead.
You can define the `CMAKE_IGNORE_PATH` variable when running cmake for
the first time in case that you don't know or don't want to modify the
`PATH` variable, e.g.:
cmake -DCMAKE_IGNORE_PATH=C:\MinGW\bin ...
More information in [issue #2449 ](https://github.com/aseprite/aseprite/issues/2449 )
2020-06-24 18:37:12 +00:00
2016-10-26 17:58:43 +00:00
## macOS details
2015-12-30 15:29:53 +00:00
2020-03-02 02:42:08 +00:00
Run `cmake` with the following parameters and then `ninja` :
2015-12-30 15:29:53 +00:00
2016-04-27 03:11:45 +00:00
cd aseprite
mkdir build
cd build
cmake \
2019-01-02 15:22:00 +00:00
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
2016-04-27 03:11:45 +00:00
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
2018-12-28 22:17:54 +00:00
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
2021-11-17 00:20:00 +00:00
-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk \
2020-03-02 02:42:08 +00:00
-DLAF_BACKEND=skia \
2016-04-27 03:11:45 +00:00
-DSKIA_DIR=$HOME/deps/skia \
2020-03-02 02:42:08 +00:00
-DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \
2020-08-17 14:56:07 +00:00
-DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \
2016-04-27 03:11:45 +00:00
-G Ninja \
..
ninja aseprite
In this case, `$HOME/deps/skia` is the directory where Skia was
2020-03-02 02:42:08 +00:00
compiled or downloaded. Make sure that `CMAKE_OSX_SYSROOT` is
pointing to the correct SDK directory (in this case
2021-11-17 00:20:00 +00:00
`/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk` ),
2018-12-28 22:17:54 +00:00
but it could be different in your Mac.
2012-07-08 04:41:14 +00:00
2021-11-17 00:20:00 +00:00
### Apple Silicon
If you running macOS on an ARM64/AArch64/Apple Silicon Mac (e.g. M1),
you can compile a native ARM64 version of Aseprite following the same
steps as above but when we call `cmake` , we have some differences:
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk \
-DLAF_BACKEND=skia \
-DSKIA_DIR=$HOME/deps/skia \
-DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-arm64 \
-DSKIA_LIBRARY=$HOME/deps/skia/out/Release-arm64/libskia.a \
-DPNG_ARM_NEON:STRING=on \
-G Ninja \
..
2016-04-27 03:11:45 +00:00
### Issues with Retina displays
2012-07-09 21:29:36 +00:00
2016-04-27 03:11:45 +00:00
If you have a Retina display, check the following issue:
2014-08-14 03:41:30 +00:00
2016-04-27 03:11:45 +00:00
https://github.com/aseprite/aseprite/issues/589
2016-04-26 18:01:10 +00:00
2016-04-27 03:11:45 +00:00
## Linux details
2016-04-26 18:01:10 +00:00
2022-05-09 13:57:34 +00:00
You need to use clang and libc++ to compile Aseprite:
2016-04-26 18:01:10 +00:00
cd aseprite
mkdir build
cd build
2022-05-09 13:57:34 +00:00
export CC=clang
export CXX=clang++
2019-01-02 15:22:00 +00:00
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
2022-05-09 13:57:34 +00:00
-DCMAKE_CXX_FLAGS:STRING=-stdlib=libc++ \
-DCMAKE_EXE_LINKER_FLAGS:STRING=-stdlib=libc++ \
2020-03-02 02:42:08 +00:00
-DLAF_BACKEND=skia \
2019-01-02 15:22:00 +00:00
-DSKIA_DIR=$HOME/deps/skia \
2020-03-02 02:42:08 +00:00
-DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \
2020-08-17 14:56:07 +00:00
-DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \
2019-01-02 15:22:00 +00:00
-G Ninja \
..
2016-04-27 03:11:45 +00:00
ninja aseprite
2016-04-26 18:01:10 +00:00
2018-08-08 21:31:48 +00:00
In this case, `$HOME/deps/skia` is the directory where Skia was
2020-03-02 02:42:08 +00:00
compiled or uncompressed.
2015-04-17 17:30:09 +00:00
2021-11-17 00:20:00 +00:00
### GCC compiler
2022-05-09 13:57:34 +00:00
In case that you are using the pre-compiled Skia version, you must use
the clang compiler and libc++ to compile Aseprite. Only if you compile
Skia with GCC, you will be able to compile Aseprite with GCC, and this
is not recommended as you will have a performance penalty doing so.
2021-11-17 00:20:00 +00:00
2015-01-06 12:34:40 +00:00
# Using shared third party libraries
2013-11-23 19:32:13 +00:00
If you don't want to use the embedded code of third party libraries
(i.e. to use your installed versions), you can disable static linking
configuring each `USE_SHARED_` option.
2016-02-29 15:34:55 +00:00
After running `cmake -G` , you can edit `build/CMakeCache.txt` file,
and enable the `USE_SHARED_` flag (set its value to `ON` ) of the
library that you want to be linked dynamically.