diff --git a/Building-from-source.md b/Building-from-source.md new file mode 100644 index 0000000..4d32123 --- /dev/null +++ b/Building-from-source.md @@ -0,0 +1,165 @@ +Instructions on how to build Lime3DS from source +-------- +Firstly, clone the Lime3DS repository using the following command: + +`git submodule update --init --recursive` + +After this has finished, use the following instructions depending on your operating system: + +
+

Windows

+ +
+

⠀⠀MSVC

+ +Ensure that the following are installed: +- [Visual Studio 2022](https://visualstudio.microsoft.com/) (Install C++ Support) +- [CMake GUI](https://cmake.org/) + +Then, follow these instructions: +- Open the CMake GUI Application and point it to the Lime3DS directory +- Use the preexisting build/ directory or tell CMake to make one +- Click the configure button and choose Visual Studio 17 2022 with x64 for the optional platform + - If you get errors like "XXX does not contain a CMakeLists.txt file", it means you did not use the --recursive flag when cloning the repo. + - Please run `git submodule update --init --recursive` to get the submodules +- Click Generate to create the project files +- Open the solution file in Visual Studio 2022, which is located in the build folder +- Depending on which frontend (SDL2 or Qt) you want to build or run, select "lime" or "lime-qt" in the Solution Explorer, right click and "Set as Starup Project" +- Select the appropriate build type, Debug for debug purposes or Release for performance (if in doubt, choose the latter) +- Press F5 or select Build → Rebuild Solution in the menu +
+ + +
+

⠀⠀MSYS2

+ +First, ensure that [MSYS2](https://www.msys2.org/) is installed. + +Then, follow these instructions: + +- Open the "MSYS2 Clang64" (clang64.exe) shell +- Download and install all dependencies using: `pacman -S mingw-w64-clang-x86_64-{gcc,qt6,cmake} make git` +- Make a build directory: `mkdir build && cd build` +- Make CMake files: `cmake -DCMAKE_BUILD_TYPE=Release ..` + - If you wish to build Lime3DS without the Qt GUI, `pass -DENABLE_QT=no to CMake`. +- Make the executable: `cmake --build . -- -j$(nproc)` +- You can run the exe from command line with: `./bin/lime-qt.exe` +
+
+ + +
+

MacOS

+ +Ensure that the following are installed: +- CMake (`brew install cmake`) +- A recent version of Xcode and the Xcode command line tools + +Then, follow these instructions: +- Make the build directory: mkdir build && cd build +- Make CMake files for your machine's architecture: + - ARM: `cmake .. -DCMAKE_OSX_ARCHITECTURES="arm64"` + - x86: `cmake .. -DCMAKE_OSX_ARCHITECTURES="x86_64"` +- Make executable: `make -j$(sysctl -n hw.logicalcpu)` +- Make a distributable executable with: `make bundle` +
+ + +
+

Linux

+ +Ensure that the following are installed: +- SDL2 + - Deb: sudo apt install libsdl2-dev + - Arch: pacman -S --needed sdl2 + - Fedora: sudo dnf install SDL2-devel + - OpenSUSE: zypper in libSDL2-devel +- OpenSSL (Optional) + - Deb: sudo apt install libssl-dev + - Arch: pacman -S --needed openssl-1.0 + - Fedora: sudo dnf install openssl-devel + - OpenSUSE: zypper in openssl-devel +- Qt 6.2+ + - Deb: sudo apt install qt6-base-dev qt6-base-private-dev qt6-multimedia-dev + - For Translation Support: apt install qt6-l10n-tools qt6-tools-dev qt6-tools-dev-tools + - For WrapOpenGL Errors: apt install libgl-dev + - Arch: pacman -S --needed qt6-base qt6-multimedia qt6-multimedia-ffmpeg + - You also need a multimedia backend: qt6-multimedia-ffmpeg or qt6-multimedia-gstreamer + - Fedora: sudo dnf install qt6-qtbase-devel qt6-qtbase-private-devel qt6-qtmultimedia-devel + - OpenSUSE: zypper in qt6-base qt6-multimedia +- PortAudio + - Deb: sudo apt install libasound-dev + - Fedora: sudo dnf install portaudio-devel + - OpenSUSE Leap 15: zypper in portaudio-devel + - OpenSUSE Tumbleweed: zypper in portaudio-devel +- XORG + - Deb: sudo apt install xorg-dev libx11-dev libxext-dev + - Fedora: sudo dnf install xorg-x11-server-devel libX11-devel libXext-devel + - OpenSUSE Leap 15: zypper in xorg-x11-util-devel libX11-devel libXext-devel + - OpenSUSE Tumbleweed: zypper in xorg-x11-util-devel libX11-devel libXext-devel +- JACK Audio Connection Kit + - Deb: sudo apt install jackd + - Fedora: sudo dnf install jack-audio-connection-kit-devel + - OpenSUSE Leap 15: zypper in libjack-devel + - OpenSUSE Tumbleweed: zypper in libjack-devel +- PipeWire + - Deb: sudo apt install libpipewire-0.3-dev + - Fedora: sudo dnf install pipewire-devel + - OpenSUSE Leap 15: zypper in pipewire-devel + - OpenSUSE Tumbleweed: zypper in pipewire-devel +- sndio (Optional) + - Deb: sudo apt install libsndio-dev + - Fedora: sudo dnf -y copr enable andykimpe/shadow && sudo dnf -y install sndio + - OpenSUSE Leap 15: zypper in sndio-devel + - OpenSUSE Tumbleweed: zypper in sndio-devel +- Gnome ESound (Optional) + - Deb: echo "esound require build use source code https://download.gnome.org/sources/esound/" + - Fedora: sudo dnf install esound-devel + - OpenSUSE Leap 15: zypper in libesd0-devel + - OpenSUSE Tumbleweed: zypper in libesd0-devel +- Compiler (You only need one of these) + - GCC 11.0+ + - Deb: apt install build-essential + - Arch: pacman -S --needed base-devel + - Fedora: dnf install gcc-c++ + - OpenSUSE: zypper in gcc-c++ + - Clang 18.0+ + - Deb: apt install clang clang-format libc++-dev + - Arch: pacman -S --needed clang, libc++ is in the AUR. Use pacaur or yaourt to install it. + - Fedora: dnf install clang libcxx-devel + - OpenSUSE: zypper in clang +- CMake 3.20+ + - Deb: apt install cmake + - Arch: pacman -S --needed cmake + - Fedora: dnf install cmake + - OpenSUSE: zypper in cmake extra-cmake-modules + +Then, enter one of the following depending on your compiler: +### GCC +``` +mkdir build +cd build +cmake ../ +cmake --build . -- -j"$(nproc)" +sudo make install (optional) +``` +### Clang +``` + mkdir build + cd build + cmake .. -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_FLAGS="-O2 -g -stdlib=libc++" + cmake --build . -- -j"$(nproc)" + sudo make install (optional) +``` +If you get a weird compile error related to std::span conversions, make sure you are using clang and libc++ 15 or up. This is an issue with libc++ 14. + +### Installing newer Qt Version +If your distribution’s version of Qt is too old, there are a few places you may be able to find newer versions. + +This Ubuntu PPA contains backports of Qt 6 to various older versions: https://launchpad.net/~savoury1/+archive/ubuntu/qt-6-2 +This unofficial CLI installer allows downloading and installing the latest first-party builds of Qt to your system +(whether it works against your distribution may vary): https://github.com/miurahr/aqtinstall + +
\ No newline at end of file