From b807ddc78ed19d371a070d61c845ffb264417d8e Mon Sep 17 00:00:00 2001 From: hobyst <48522412+hobyst@users.noreply.github.com> Date: Tue, 15 Jun 2021 11:54:44 +0200 Subject: [PATCH] Removes old build method - Updates GitHub workflows to use the CMake toolchain files - Updates building.md to reflect the new build method - Updates old build scripts to just use the CMake project generation command --- .github/workflows/c-cpp.yml | 5 +- .github/workflows/codeql-analysis.yml | 2 +- _building/vs-cmd-prompt.png | Bin 0 -> 76301 bytes building.md | 133 +++++++++++++++++--------- gen-linux.sh | 28 +----- gen-macos.sh | 20 +--- gen-windows.bat | 26 +---- 7 files changed, 97 insertions(+), 117 deletions(-) create mode 100755 _building/vs-cmd-prompt.png diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index cb93340ab..f3af9bed7 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -38,12 +38,13 @@ jobs: include: - os: macos-latest cache_path: ~/Library/Caches/ccache + extra_cmake_args: -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/macos-x64.cmake - os: ubuntu-latest cache_path: ~/.ccache - extra_cmake_args: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DUSE_DISCORD_RICH_PRESENCE=OFF + extra_cmake_args: -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/linux-x64.cmake -DUSE_DISCORD_RICH_PRESENCE=OFF - os: windows-latest cache_path: ~\AppData\Local\Mozilla\sccache - extra_cmake_args: -DBOOST_ROOT=C:\hostedtoolcache\windows\Boost\1.72.0\x86_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache + extra_cmake_args: -DBOOST_ROOT=C:\hostedtoolcache\windows\Boost\1.72.0\x86_64 -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/windows-x64.cmake -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache steps: - name: Set up build environment (macos-latest) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ebc466df3..09f4b5453 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -60,7 +60,7 @@ jobs: - name: Build run: | - cmake -B build -DCI=ON -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DUSE_DISCORD_RICH_PRESENCE=OFF -G Ninja + cmake -B build -DCI=ON -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/linux-x64.cmake -DUSE_DISCORD_RICH_PRESENCE=OFF -G Ninja cmake --build build --config ${{ matrix.config }} - name: Perform CodeQL Analysis diff --git a/_building/vs-cmd-prompt.png b/_building/vs-cmd-prompt.png new file mode 100755 index 0000000000000000000000000000000000000000..db39fbefc3f39c8225f2360dbb01cdb0d3972026 GIT binary patch literal 76301 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 literal 0 HcmV?d00001 diff --git a/building.md b/building.md index 558746ee2..2c6a78f4b 100644 --- a/building.md +++ b/building.md @@ -1,37 +1,69 @@ # Build Vita3K -## Windows (Visual Studio) +Vita3K uses CMake for its project configuration and generation and should in theory be compatible with any project generator supported by CMake, C++17 compatible compiler and IDE with CMake support. However, the following settings are recommended to be used when compiling or developing: +Target OS | Host OS | [Project generator](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html) (`-G`) | C/C++ Compiler (`-DCMAKE_C_COMPILER` and `-DCMAKE_CXX_COMPILER`) +--- | --- | --- | --- +Windows | Windows | Visual Studio / MSBuild | `cl` a.k.a Microsoft Visual C/C++ Compiler (included as a part of the [Build Tools for Visual Studio 2019](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) and the ` Dekstop development with C++` Visual Studio workload) +macOS | macOS | Xcode | Clang (`clang` and `clang++`) +Linux | Linux | Ninja | Clang (`clang` and `clang++`) + +Vita3K also comes bundled with CMake toolchain files found in `./cmake/toolchain` for each target platform that automatically set up platform-specific variables such as the C/C++ compiler to the values shown in table above and must always be used when generating projects using CMake. Despite this, if needed the set values can be overwritten at project generation as well via CMake `-D` arguments and the project generator will be either the default one for the host OS platform or the one the person building the emulator decides to use. + +**Note: Vita3K doesn't support compilation for 32-bit/x86/i386 platforms.** + +For convenience, the following building instructions are given as examples based on the information from the table: + +## Windows + +### Visual Studio 2019 - Install Visual Studio 2019 and choose to install `Desktop development with C++`. You will get compiler and `cmake` required for building. -Example for Visual Studio 2019: + Example for Visual Studio 2019: -![Required tools for VS 2019](https://i.imgur.com/bkY15Oh.png) + ![Required tools for VS 2019](https://i.imgur.com/bkY15Oh.png) - Install `git` to `clone` the project. Download and install `git` from [here](https://git-scm.com). - Clone this repo. -```cmd -git clone --recursive https://github.com/Vita3K/Vita3K -cd Vita3K -``` + ```cmd + git clone --recursive https://github.com/Vita3K/Vita3K + cd Vita3K + ``` -- Open `Developer Command Prompt` for your respective Visual Studio version. `cmake` and other `C/C++` toolchain only available on `Developer Command Prompt`. +- Run Visual Studio 2019. On the project selection window open the local clone of the repository as a folder. Thanks to the integration between Visual Studio and CMake, Visual Studio will automatically setup the project for you. +- Use the [CMake Settings Editor](https://docs.microsoft.com/en-us/cpp/build/customize-cmake-settings?view=msvc-160) to set "CMake toolchain file" to `./cmake/toolchain/windows-x64.cmake`. If asked to do so, delete and re-generate the CMake cache. -Example for Visual Studio 2019: +From there, the project will be ready to build right from the Visual Studio UI. -![Developer Command Prompt for VS 2019](https://i.imgur.com/w6Umx1S.png) -- Run `gen-windows.bat` to create Visual Studio project in `build-windows` directory. +### Build using terminal +- Install: + - [Git](https://git-scm.com) + - [CMake](https://cmake.org/download/) + - Either the [Build Tools for Visual Studio 2019](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) or Visual Studio 2019 with the ` Dekstop development with C++` workload. +- On the Start Menu, open the `x64 Native Tools Command Prompt for Visual Studio 2019`. +

+ +

-```cmd -.\gen-windows -``` +- Clone the repository: + ```cmd + git clone --recursive https://github.com/Vita3K/Vita3K + cd Vita3K + ``` -- Open the project generated in the `build-windows` directory. +- Generate the project: + ```cmd + cmake -S . -B build-windows -G "Visual Studio 2019 16" -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/windows-x64.cmake + ``` + The line above will generate a Visual Studio 2019 project inside a folder called `build-windows`. -- Build and run it. +- Build the project: + ```cmd + cmake --build build-windows + ``` ## macOS (Xcode) @@ -41,28 +73,32 @@ Example for Visual Studio 2019: - Install dependencies with `brew`. -```sh -brew install git cmake -``` + ```sh + brew install git cmake + ``` - Clone this repo. -```sh -git clone --recursive https://github.com/Vita3K/Vita3K -cd Vita3K -``` + ```sh + git clone --recursive https://github.com/Vita3K/Vita3K + cd Vita3K + ``` - Generate Xcode project. -``` -./gen-macos.sh -``` + ``` + cmake -S . -B build-macos -G Xcode -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/macos-x64.cmake + ``` + This example will generate a Xcode project inside a folder called `build-macos`. - Open Xcode project `vita3k.xcodeproj` generated in `build-macos` directory. - When prompted to create schemes, create one for the `vita3k` target only. The project builds many targets, so it will make your life easier if you create schemes as needed. -- Build. +- Build the project using the Xcode UI. If needed, the build process can be invoked as well the same way as with the other platforms using a terminal: + ```sh + cmake --build build-macos + ``` ## Linux @@ -70,34 +106,39 @@ cd Vita3K - Install dependencies. -```sh -sudo apt install git cmake ninja-build libsdl2-dev pkg-config libgtk-3-dev clang -``` + ```sh + sudo apt install git cmake ninja-build libsdl2-dev pkg-config libgtk-3-dev clang + ``` - Clone this repo. -```sh -git clone --recursive https://github.com/Vita3K/Vita3K -cd Vita3K -``` + ```sh + git clone --recursive https://github.com/Vita3K/Vita3K + cd Vita3K + ``` -- Build the project. +- Generate the project. -```sh -./gen-linux.sh -cd build-linux -ninja -``` + ```sh + cmake -S . -B build-linux -G Ninja -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/linux-x64.cmake + ``` + This example will generate a Ninja (`ninja-build`) project instead of a Make (`make`, the default project generator for Linux) one inside a folder called `build-linux`. + +- Build the project: + ```sh + cmake --build build-linux + ``` ## Note - After cloning or checking out a branch, you should always update submodules. - -`git submodule update --init --recursive` + ```sh + `git submodule update --init --recursive` + ``` - If `boost` failed to build, you can opt out for system `boost` package (Linux and macOS only). -```sh -brew install boost # for macOS -sudo apt install libboost-all-dev # for Ubuntu/Debian -``` + ```sh + brew install boost # for macOS + sudo apt install libboost-all-dev # for Ubuntu/Debian + ``` diff --git a/gen-linux.sh b/gen-linux.sh index fb13d4ae1..19c380106 100755 --- a/gen-linux.sh +++ b/gen-linux.sh @@ -1,29 +1,5 @@ #!/usr/bin/env bash set -ex -cmake_args= -CLANG= -command -v clang > /dev/null && CLANG=1 - -# CI uses pre-built Boost -if [[ -z "${CI}" ]]; then - # Create build dir - mkdir -p external/boost-build - cd external/boost - - chmod +x tools/build/src/engine/build.sh - sh bootstrap.sh - - # Build our Boost subset - ./b2 --ignore-site-config -j$(nproc) --build-dir=../boost-build --stagedir=../boost-build stage - cd ../.. -fi - -if [ "$CLANG" ]; then - cmake_args="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++" -fi - -# Generate project files -mkdir -p build-linux -cd build-linux -cmake .. -GNinja ${cmake_args} +# Generate project files for Ninja +cmake -S . -B build-linux -G Ninja -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/linux-x64.cmake diff --git a/gen-macos.sh b/gen-macos.sh index d379a1dc5..6738f1cb8 100755 --- a/gen-macos.sh +++ b/gen-macos.sh @@ -1,21 +1,5 @@ #!/usr/bin/env bash set -ex -# CI uses pre-built Boost -if [[ -z "${CI}" ]]; then - # Create build dir - mkdir -p external/boost-build - cd external/boost - - chmod +x tools/build/src/engine/build.sh - sh bootstrap.sh - - # Build our Boost subset - ./b2 -j$(sysctl -n hw.logicalcpu) --build-dir=../boost-build --stagedir=../boost-build stage - cd ../.. -fi - -# Generate project files -mkdir -p build-macos -cd build-macos -cmake -G Xcode .. +# Generate project files for Xcode +cmake -S . -B build-macos -G Xcode -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/macos-x64.cmake diff --git a/gen-windows.bat b/gen-windows.bat index 175f3de31..493384ee3 100644 --- a/gen-windows.bat +++ b/gen-windows.bat @@ -1,26 +1,4 @@ @echo off -REM CI uses pre-built Boost -IF "%CI%"=="" IF NOT EXIST external\boost-build ( - REM Create build dir - mkdir external\boost-build - cd external\boost - - call bootstrap.bat - - REM Build our Boost subset - call b2 -j%NUMBER_OF_PROCESSORS% --build-dir=../boost-build --stagedir=../boost-build toolset=msvc stage - cd ../.. -) - -REM Create build folder -mkdir build-windows -pushd build-windows - -REM Generate project files -IF "%CI%"=="" ( - call cmake -G "Visual Studio 16 2019" .. -) ELSE ( - call cmake -G "Visual Studio 16 2019" -DCI:BOOL=ON -DCMAKE_CONFIGURATION_TYPES=%CONFIGURATION% .. -) -popd +REM Generate project files for Visual Studio 2019 +call cmake -S . -B build-windows -G "Visual Studio 2019 16" -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/windows-x64.cmake