2016-04-11 17:50:11 -03:00
# Table of contents
* [Platforms ](#platforms )
* [Get the source code ](#get-the-source-code )
* [Dependencies ](#dependencies )
2016-04-27 00:11:45 -03:00
* [Windows dependencies ](#windows-dependencies )
2016-10-26 14:58:43 -03:00
* [macOS dependencies ](#macos-dependencies )
2016-04-11 17:50:11 -03:00
* [Linux dependencies ](#linux-dependencies )
* [Compiling ](#compiling )
2016-04-27 00:11:45 -03:00
* [Windows details ](#windows-details )
2020-06-24 15:37:12 -03:00
* [MinGW ](#mingw )
2016-10-26 14:58:43 -03:00
* [macOS details ](#macos-details )
2016-04-27 00:11:45 -03:00
* [Issues with Retina displays ](#issues-with-retina-displays )
* [Linux details ](#linux-details )
2016-04-11 17:50:11 -03:00
* [Using shared third party libraries ](#using-shared-third-party-libraries )
2015-01-06 09:34:40 -03:00
# Platforms
2012-07-08 01:41:14 -03:00
2013-11-23 16:01:34 -03:00
You should be able to compile Aseprite successfully on the following
2012-07-08 01:41:14 -03:00
platforms:
2021-08-14 12:02:59 -03:00
* Windows 10 + [Visual Studio Community 2019 + Windows 10.0 SDK (the latest version available) ](https://imgur.com/a/7zs51IT ) (we don't support [MinGW ](#mingw ))
2021-06-07 22:11:40 +07:00
* macOS 10.15.3 Catalina + Xcode 11.2.1 + macOS 10.15 SDK (older version might work)
2020-03-02 10:55:20 -03:00
* Linux + gcc 9.2 or clang 9.0
2012-07-08 01:41:14 -03:00
2015-01-06 09:34:40 -03:00
# Get the source code
2016-04-13 12:00:12 -03:00
You can get the source code downloading a `Aseprite-v1.x-Source.zip`
2018-08-23 17:35:05 -03:00
file from the latest Aseprite release (*in that case please follow the
compilation instructions inside the `.zip` file*):
2015-01-06 09:34:40 -03:00
2016-04-13 12:00:12 -03:00
https://github.com/aseprite/aseprite/releases
2015-01-06 09:34:40 -03:00
2016-04-13 12:00:12 -03:00
Or you can clone the repository and all its submodules using the
following command:
2015-01-06 09:34:40 -03:00
git clone --recursive https://github.com/aseprite/aseprite.git
2016-04-13 12:00:12 -03:00
To update an existing clone you can use the following commands:
2015-11-20 04:12:07 +02:00
cd aseprite
git pull
git submodule update --init --recursive
2016-04-27 00:54:47 -03:00
You can use [Git for Windows ](https://git-for-windows.github.io/ ) to
2016-04-27 00:11:45 -03:00
clone the repository on Windows.
2015-01-06 09:34:40 -03:00
2016-04-11 17:50:11 -03:00
# Dependencies
2012-07-08 01:41:14 -03:00
2016-04-27 00:11:45 -03:00
To compile Aseprite you will need:
2019-05-17 14:48:47 -03:00
* The latest version of [CMake ](https://cmake.org ) (3.14 or greater)
2016-04-27 00:11:45 -03:00
* [Ninja ](https://ninja-build.org ) build system
2021-11-19 07:32:11 -03:00
* And a compiled version of the `aseprite-m96` branch of
2020-03-01 23:42:08 -03: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 00:11:45 -03:00
## Windows dependencies
2020-06-24 15:45:26 -03:00
* Windows 10 (we don't support cross-compiling)
* [Visual Studio Community 2019 ](https://visualstudio.microsoft.com/downloads/ ) (we don't support [MinGW ](#mingw ))
2020-03-02 10:55:20 -03:00
* The [Desktop development with C++ item + Windows 10.0.18362.0 SDK ](https://imgur.com/a/7zs51IT )
2018-11-12 08:40:57 -03:00
from the Visual Studio installer
2016-04-27 00:11:45 -03:00
2016-10-26 14:58:43 -03:00
## macOS dependencies
2016-04-27 00:11:45 -03:00
2020-03-01 23:42:08 -03:00
On macOS you will need macOS 10.15 SDK and Xcode 11.2.1 (older
2019-05-17 14:48:47 -03:00
versions might work).
2016-04-27 00:11:45 -03:00
2016-04-11 17:50:11 -03:00
## Linux dependencies
2018-08-29 10:24:13 -03:00
You will need the following dependencies on Ubuntu/Debian:
2016-04-11 17:50:11 -03:00
2020-04-21 22:27:49 -03:00
sudo apt-get install -y g++ cmake ninja-build libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev
2018-08-29 10:24:13 -03:00
On Fedora:
2020-04-21 22:27:49 -03:00
sudo dnf install -y gcc-c++ cmake ninja-build libX11-devel libXcursor-devel libXi-devel mesa-libGL-devel fontconfig-devel
2016-04-11 17:50:11 -03:00
2021-06-20 11:25:52 +02:00
On Arch:
sudo pacman -S gcc cmake ninja libx11 libxcursor mesa-libgl fontconfig
2016-04-11 17:50:11 -03:00
# Compiling
2013-11-23 16:32:13 -03:00
2016-04-27 00:11:45 -03: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 01:41:14 -03:00
2016-04-27 00:11:45 -03:00
cd C:\aseprite
mkdir build
2012-07-08 01:41:14 -03:00
2013-11-23 16:01:34 -03:00
In this way, if you want to start with a fresh copy of Aseprite
2012-07-08 01:41:14 -03:00
source code, you can remove the `build` directory and start again.
2016-04-27 00:11:45 -03:00
2. Enter in the new directory and execute `cmake` :
2012-07-08 01:41:14 -03:00
2016-04-27 00:11:45 -03:00
cd C:\aseprite\build
2020-03-01 23:42:08 -03:00
cmake -G Ninja -DLAF_BACKEND=skia ..
2016-04-11 17:50:11 -03:00
2016-04-27 00:11:45 -03:00
Here `cmake` needs different options depending on your
platform. You must check the details for
2016-10-26 14:58:43 -03:00
[Windows ](#windows-details ), [macOS ](#macos-details ), and
2016-04-27 00:11:45 -03: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 17:50:11 -03:00
2016-04-27 00:11:45 -03:00
3. After you have executed and configured `cmake` , you have to compile
the project:
2012-07-08 01:41:14 -03:00
2016-04-27 00:11:45 -03:00
cd C:\aseprite\build
ninja aseprite
2012-07-08 01:41:14 -03:00
2016-04-27 00:11:45 -03:00
4. When `ninja` finishes the compilation, you can find the executable
inside `C:\aseprite\build\bin\aseprite.exe` .
2012-07-08 01:41:14 -03:00
2016-04-27 00:11:45 -03:00
## Windows details
2012-07-08 01:41:14 -03:00
2020-03-01 23:42:08 -03:00
Open a [developer command prompt ](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs )
2019-01-02 12:22:00 -03:00
or in the command line (`cmd.exe` ) call:
2019-05-17 14:48:47 -03:00
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" -arch=x64
2019-01-02 12:22:00 -03:00
And then
2012-07-08 01:41:14 -03:00
2016-04-27 00:11:45 -03:00
cd aseprite
mkdir build
cd build
2020-08-17 11:56:07 -03: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 00:11:45 -03:00
ninja aseprite
2016-02-29 12:25:15 -03:00
2016-04-27 00:11:45 -03:00
In this case, `C:\deps\skia` is the directory where Skia was compiled
2020-03-01 23:42:08 -03:00
or uncompressed.
2015-04-10 09:37:56 -03:00
2020-06-24 16:01:31 -03:00
### MinGW
2020-06-24 15:37:12 -03:00
2020-06-24 16:00:18 -03: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 15:37:12 -03:00
2016-10-26 14:58:43 -03:00
## macOS details
2015-12-30 17:29:53 +02:00
2020-03-01 23:42:08 -03:00
Run `cmake` with the following parameters and then `ninja` :
2015-12-30 17:29:53 +02:00
2016-04-27 00:11:45 -03:00
cd aseprite
mkdir build
cd build
cmake \
2019-01-02 12:22:00 -03:00
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
2016-04-27 00:11:45 -03:00
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
2018-12-28 19:17:54 -03:00
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
2021-11-16 21:20:00 -03:00
-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk \
2020-03-01 23:42:08 -03:00
-DLAF_BACKEND=skia \
2016-04-27 00:11:45 -03:00
-DSKIA_DIR=$HOME/deps/skia \
2020-03-01 23:42:08 -03:00
-DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \
2020-08-17 11:56:07 -03:00
-DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \
2016-04-27 00:11:45 -03:00
-G Ninja \
..
ninja aseprite
In this case, `$HOME/deps/skia` is the directory where Skia was
2020-03-01 23:42:08 -03:00
compiled or downloaded. Make sure that `CMAKE_OSX_SYSROOT` is
pointing to the correct SDK directory (in this case
2021-11-16 21:20:00 -03:00
`/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk` ),
2018-12-28 19:17:54 -03:00
but it could be different in your Mac.
2012-07-08 01:41:14 -03:00
2021-11-16 21:20:00 -03: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 00:11:45 -03:00
### Issues with Retina displays
2012-07-09 18:29:36 -03:00
2016-04-27 00:11:45 -03:00
If you have a Retina display, check the following issue:
2014-08-14 00:41:30 -03:00
2016-04-27 00:11:45 -03:00
https://github.com/aseprite/aseprite/issues/589
2016-04-26 13:01:10 -05:00
2016-04-27 00:11:45 -03:00
## Linux details
2016-04-26 13:01:10 -05:00
2020-03-01 23:42:08 -03:00
Run `cmake` with the following parameters and then `ninja` :
2016-04-26 13:01:10 -05:00
cd aseprite
mkdir build
cd build
2019-01-02 12:22:00 -03:00
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
2020-03-01 23:42:08 -03:00
-DLAF_BACKEND=skia \
2019-01-02 12:22:00 -03:00
-DSKIA_DIR=$HOME/deps/skia \
2020-03-01 23:42:08 -03:00
-DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \
2020-08-17 11:56:07 -03:00
-DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \
2019-01-02 12:22:00 -03:00
-G Ninja \
..
2016-04-27 00:11:45 -03:00
ninja aseprite
2016-04-26 13:01:10 -05:00
2018-08-08 18:31:48 -03:00
In this case, `$HOME/deps/skia` is the directory where Skia was
2020-03-01 23:42:08 -03:00
compiled or uncompressed.
2015-04-17 14:30:09 -03:00
2021-11-16 21:20:00 -03:00
### GCC compiler
In case that you are using the pre-compiled Skia version, you will
need to use the Clang compiler to compile Aseprite. Only if you
compile Skia with GCC, you will be able to compile Aseprite with GCC.
2015-01-06 09:34:40 -03:00
# Using shared third party libraries
2013-11-23 16:32:13 -03: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 12:34:55 -03: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.