Updates based on universal branch

This commit is contained in:
Luke Street 2021-06-11 21:19:33 -04:00
parent f8363b90a7
commit 5815fa6577
15 changed files with 254 additions and 359 deletions

View File

@ -8,10 +8,19 @@ on:
- '*LICENSE' - '*LICENSE'
pull_request: pull_request:
env:
BUILDCACHE_VERSION: v0.27.0
BUILDCACHE_ACCURACY: STRICT
BUILDCACHE_MAX_CACHE_SIZE: 1073741824 # 1GiB
jobs: jobs:
build-linux: build-linux:
name: Build Linux (${{matrix.name}} x86_64) name: Build Linux (${{matrix.name}} x86_64)
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
env:
BUILDCACHE_DIR: ${{github.workspace}}/.buildcache
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@ -33,14 +42,17 @@ jobs:
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
sudo apt-get -y install curl git cmake ninja-build llvm-dev libclang-dev clang lld libcurl4-openssl-dev \ sudo apt-get -y install curl git cmake ninja-build clang lld libcurl4-openssl-dev intel-oneapi-ipp-devel \
zlib1g-dev libglu1-mesa-dev libdbus-1-dev libvulkan-dev libxi-dev libxrandr-dev libasound2-dev \ zlib1g-dev libglu1-mesa-dev libdbus-1-dev libvulkan-dev libxi-dev libxrandr-dev libasound2-dev \
libpulse-dev libudev-dev libpng-dev libncurses5-dev libx11-xcb-dev python3 python-is-python3 qt5-default \ libpulse-dev libudev-dev libpng-dev libncurses5-dev libx11-xcb-dev python3 python-is-python3 qt5-default
intel-oneapi-ipp-devel ccache
yarn global add @sentry/cli yarn global add @sentry/cli
echo "$(yarn global bin)" >> $GITHUB_PATH echo "$(yarn global bin)" >> $GITHUB_PATH
# setup buildcache
curl -LSfs https://github.com/mbitsnbites/buildcache/releases/download/$BUILDCACHE_VERSION/buildcache-linux.tar.gz | tar xz -C "$RUNNER_WORKSPACE"
echo "$RUNNER_WORKSPACE"/buildcache/bin >> $GITHUB_PATH
# free up disk space # free up disk space
# https://github.com/actions/virtual-environments/issues/2840#issuecomment-790492173 # https://github.com/actions/virtual-environments/issues/2840#issuecomment-790492173
echo Before echo Before
@ -53,26 +65,20 @@ jobs:
echo After echo After
df -h . df -h .
- name: Configure ccache - name: Restore buildcache
uses: hendrikmuhs/ccache-action@v1 uses: actions/cache@v2
with: with:
key: ubuntu-20.04-${{matrix.cc}} path: ${{env.BUILDCACHE_DIR}}
max-size: 1G key: buildcache-ubuntu-20.04-${{matrix.preset}}
# - name: Configure CMake
# run: |
# cmake -B build . -GNinja -DCMAKE_BUILD_TYPE:STRING=$BUILD_TYPE \
# -DCMAKE_INSTALL_PREFIX:PATH="$GITHUB_WORKSPACE/install" \
# -DCMAKE_C_COMPILER:STRING=${{matrix.cc}} \
# -DCMAKE_CXX_COMPILER:STRING=${{matrix.cxx}} \
# -DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache \
# -DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
- name: Configure CMake - name: Configure CMake
run: cmake --preset linux-ci-${{matrix.preset}} run: cmake --preset x-linux-ci-${{matrix.preset}}
- name: Build - name: Build
run: cmake --build --preset linux-ci-${{matrix.preset}} run: cmake --build --preset x-linux-ci-${{matrix.preset}}
- name: Print buildcache stats
run: buildcache -s
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
@ -83,9 +89,12 @@ jobs:
build-macos: build-macos:
name: Build macOS (AppleClang universal) name: Build macOS (AppleClang universal)
runs-on: macos-10.15 runs-on: macos-10.15
env: env:
Qt_VERSION: 5.15.2 Qt_VERSION: 5.15.2
IPP_VERSION: 2021.2.0.192 IPP_VERSION: 2021.2.0.192
BUILDCACHE_DIR: ${{env.RUNNER_WORKSPACE}}/.buildcache
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
@ -96,12 +105,18 @@ jobs:
run: | run: |
brew update brew update
brew upgrade --formula brew upgrade --formula
brew install ninja graphicsmagick imagemagick ccache brew install ninja graphicsmagick imagemagick
yarn global add create-dmg yarn global add create-dmg
# universal qt5 from macports # universal qt5 from macports
curl -LSfs https://axiodl.com/files/qt-$Qt_VERSION.mpkg -o /tmp/qt-$Qt_VERSION.mpkg curl -LSfs https://axiodl.com/files/qt-$Qt_VERSION.mpkg -o /tmp/qt-$Qt_VERSION.mpkg
sudo installer -pkg /tmp/qt-$Qt_VERSION.mpkg -target / sudo installer -pkg /tmp/qt-$Qt_VERSION.mpkg -target /
# setup buildcache
curl -LSfs https://github.com/mbitsnbites/buildcache/releases/download/$BUILDCACHE_VERSION/buildcache-macos.zip -o /tmp/buildcache-macos.zip
unzip /tmp/buildcache-macos.zip -d "$RUNNER_WORKSPACE"
echo "$RUNNER_WORKSPACE"/buildcache/bin >> $GITHUB_PATH
- name: Install Intel IPP - name: Install Intel IPP
if: 'false' # not supported for universal build if: 'false' # not supported for universal build
run: | run: |
@ -112,24 +127,20 @@ jobs:
sudo hdiutil detach /Volumes/$NAME -quiet sudo hdiutil detach /Volumes/$NAME -quiet
rm /tmp/$NAME.dmg rm /tmp/$NAME.dmg
- name: Configure ccache - name: Restore buildcache
uses: hendrikmuhs/ccache-action@v1 uses: actions/cache@v2
with: with:
key: macos-10.15-appleclang path: ${{env.BUILDCACHE_DIR}}
max-size: 1G key: buildcache-macos-10.15-universal
- name: Configure CMake - name: Configure CMake
run: | run: cmake --preset x-macos-ci
cmake -B build . -GNinja -DCMAKE_BUILD_TYPE:STRING=$BUILD_TYPE \
-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache \
-DCMAKE_INSTALL_PREFIX:PATH="$GITHUB_WORKSPACE/install" \
-DQt5Widgets_DIR:PATH=/opt/local/libexec/qt5/lib/cmake/Qt5Widgets \
-DCMAKE_OSX_ARCHITECTURES:STRING="arm64;x86_64" \
-DPNG_DIR:PATH=/opt/local/lib
- name: Build - name: Build
run: cmake --build build --config $BUILD_TYPE --target install run: cmake --build --preset x-macos-ci
- name: Print buildcache stats
run: buildcache -s
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
@ -144,11 +155,9 @@ jobs:
env: env:
Qt_VERSION: 5.15.2 Qt_VERSION: 5.15.2
IPP_VERSION: 2021.2.0.210 IPP_VERSION: 2021.2.0.210
BUILDCACHE_VERSION: v0.26.1
# C: has ~90GB available space at the moment # C: has ~90GB available space at the moment
BUILDCACHE_DIR: C:\buildcache BUILDCACHE_DIR: C:\buildcache
BUILD_DIR: C:\build BUILD_DIR: C:\build
INSTALL_DIR: C:\install
strategy: strategy:
fail-fast: false fail-fast: false
@ -168,7 +177,7 @@ jobs:
- name: Install vcpkg Qt - name: Install vcpkg Qt
run: | run: |
$TempDir = "$env:RUNNER_WORKSPACE\temp" $TempDir = "$env:RUNNER_WORKSPACE\temp"
$Filename = "vcpkg-qt-$env:Qt_VERSION.7z" $Filename = "vcpkg-qt-$env:Qt_VERSION-full.7z"
New-Item -Path "$TempDir" -ItemType Directory -ea 0 New-Item -Path "$TempDir" -ItemType Directory -ea 0
(New-Object Net.WebClient).DownloadFile("https://axiodl.com/files/$Filename", "$TempDir\$Filename") (New-Object Net.WebClient).DownloadFile("https://axiodl.com/files/$Filename", "$TempDir\$Filename")
7z x "-o$env:RUNNER_WORKSPACE" -aos "$TempDir\$Filename" 7z x "-o$env:RUNNER_WORKSPACE" -aos "$TempDir\$Filename"
@ -192,8 +201,6 @@ jobs:
(New-Object Net.WebClient).DownloadFile("https://github.com/mbitsnbites/buildcache/releases/download/$env:BUILDCACHE_VERSION/buildcache-windows.zip", "$TempDir\buildcache.zip") (New-Object Net.WebClient).DownloadFile("https://github.com/mbitsnbites/buildcache/releases/download/$env:BUILDCACHE_VERSION/buildcache-windows.zip", "$TempDir\buildcache.zip")
Expand-Archive -LiteralPath "$TempDir\buildcache.zip" -DestinationPath "$TempDir" Expand-Archive -LiteralPath "$TempDir\buildcache.zip" -DestinationPath "$TempDir"
echo "$TempDir\buildcache\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo "$TempDir\buildcache\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
echo "BUILDCACHE_ACCURACY=STRICT" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILDCACHE_MAX_CACHE_SIZE=1073741824" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
# check available disk space # check available disk space
Get-PSDrive Get-PSDrive
@ -202,32 +209,16 @@ jobs:
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
path: ${{env.BUILDCACHE_DIR}} path: ${{env.BUILDCACHE_DIR}}
key: buildcache-windows-2019-${{matrix.oname}} key: buildcache-windows-2019-${{matrix.preset}}
- name: Enable Visual Studio environment - name: Enable Visual Studio environment
uses: ilammy/msvc-dev-cmd@v1 uses: ilammy/msvc-dev-cmd@v1
# - name: Configure CMake
# run: |
# buildcache -z
# cmake -B "$env:BUILD_DIR" . -GNinja -DCMAKE_BUILD_TYPE:STRING=$env:BUILD_TYPE `
# -DCMAKE_INSTALL_PREFIX:PATH="$env:INSTALL_DIR" `
# -DCMAKE_TOOLCHAIN_FILE:PATH="$env:RUNNER_WORKSPACE\vcpkg-qt-$env:Qt_VERSION\scripts\buildsystems\vcpkg.cmake" `
# -DVCPKG_TARGET_TRIPLET:STRING=x64-windows-static `
# -DCMAKE_MSVC_RUNTIME_LIBRARY:STRING=MultiThreaded `
# -DCMAKE_C_COMPILER:STRING=${{matrix.cc}} `
# -DCMAKE_CXX_COMPILER:STRING=${{matrix.cc}} `
# -DCMAKE_LINKER:STRING=${{matrix.ld}} `
# -DCMAKE_C_COMPILER_LAUNCHER:STRING=buildcache `
# -DCMAKE_CXX_COMPILER_LAUNCHER:STRING=buildcache `
# -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="/MD /Z7 /O2 /Ob1 /DNDEBUG" `
# -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="/MD /Z7 /O2 /Ob1 /DNDEBUG"
- name: Configure CMake - name: Configure CMake
run: cmake --preset windows-ci-${{matrix.preset}} run: cmake --preset x-windows-ci-${{matrix.preset}}
- name: Build - name: Build
run: cmake --build --preset windows-ci-${{matrix.preset}} run: cmake --build --preset x-windows-ci-${{matrix.preset}}
- name: Print buildcache stats - name: Print buildcache stats
run: buildcache -s run: buildcache -s
@ -236,4 +227,4 @@ jobs:
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: metaforce-${{env.METAFORCE_VERSION}}-win32-${{matrix.oname}}-x86_64 name: metaforce-${{env.METAFORCE_VERSION}}-win32-${{matrix.oname}}-x86_64
path: ${{env.INSTALL_DIR}} path: ${{env.BUILD_DIR}}/install

View File

@ -232,7 +232,7 @@ jobs:
run: cmake --build . --target metaforce metaforce-gui hecl visigen crashpad_handler run: cmake --build . --target metaforce metaforce-gui hecl visigen crashpad_handler
- name: Upload debug information - name: Upload debug information
working-directory: ${{github.workspace}}/build/Binaries working-directory: ${{github.workspace}}/build/install
env: env:
SENTRY_AUTH_TOKEN: ${{secrets.SENTRY_AUTH_TOKEN}} SENTRY_AUTH_TOKEN: ${{secrets.SENTRY_AUTH_TOKEN}}
SENTRY_URL: ${{secrets.SENTRY_URL}} SENTRY_URL: ${{secrets.SENTRY_URL}}
@ -241,7 +241,7 @@ jobs:
metaforce.exe metaforce.pdb hecl.exe hecl.pdb metaforce-gui.exe metaforce-gui.pdb visigen.exe visigen.pdb metaforce.exe metaforce.pdb hecl.exe hecl.pdb metaforce-gui.exe metaforce-gui.pdb visigen.exe visigen.pdb
- name: Compress PDBs - name: Compress PDBs
working-directory: ${{github.workspace}}/build/Binaries working-directory: ${{github.workspace}}/build/install
run: 7z a -t7z debug.7z metaforce.pdb hecl.pdb metaforce-gui.pdb visigen.pdb run: 7z a -t7z debug.7z metaforce.pdb hecl.pdb metaforce-gui.pdb visigen.pdb
- name: Upload artifacts - name: Upload artifacts
@ -249,12 +249,12 @@ jobs:
with: with:
name: metaforce-${{env.METAFORCE_VERSION}}-win32-msvc-x86_64 name: metaforce-${{env.METAFORCE_VERSION}}-win32-msvc-x86_64
path: | path: |
build/Binaries/metaforce.exe build/install/metaforce.exe
build/Binaries/metaforce-gui.exe build/install/metaforce-gui.exe
build/Binaries/hecl.exe build/install/hecl.exe
build/Binaries/visigen.exe build/install/visigen.exe
build/Binaries/crashpad_handler.exe build/install/crashpad_handler.exe
build/Binaries/debug.7z build/install/debug.7z
build-windows-clang: build-windows-clang:
name: Build Windows (Clang x86_64) name: Build Windows (Clang x86_64)
@ -323,7 +323,7 @@ jobs:
run: cmake --build . --target metaforce metaforce-gui hecl visigen crashpad_handler run: cmake --build . --target metaforce metaforce-gui hecl visigen crashpad_handler
- name: Compress PDBs - name: Compress PDBs
working-directory: ${{github.workspace}}/build/Binaries working-directory: ${{github.workspace}}/build/install
run: 7z a -t7z debug.7z metaforce.pdb hecl.pdb metaforce-gui.pdb visigen.pdb run: 7z a -t7z debug.7z metaforce.pdb hecl.pdb metaforce-gui.pdb visigen.pdb
- name: Upload artifacts - name: Upload artifacts
@ -331,9 +331,9 @@ jobs:
with: with:
name: metaforce-${{env.METAFORCE_VERSION}}-win32-clang-x86_64 name: metaforce-${{env.METAFORCE_VERSION}}-win32-clang-x86_64
path: | path: |
build/Binaries/metaforce.exe build/install/metaforce.exe
build/Binaries/metaforce-gui.exe build/install/metaforce-gui.exe
build/Binaries/hecl.exe build/install/hecl.exe
build/Binaries/visigen.exe build/install/visigen.exe
build/Binaries/crashpad_handler.exe build/install/crashpad_handler.exe
build/Binaries/debug.7z build/install/debug.7z

17
.gitignore vendored
View File

@ -1,13 +1,14 @@
.directory
version.h
*.user
.DS_Store
*.autosave *.autosave
docs/* *.user
.buildcache/
.directory
.DS_Store
.idea/ .idea/
Runtime/platforms/win/metaforce.rc
.vs/ .vs/
out/
cmake-build-*/
build/ build/
cmake-build-*/
CMakeUserPresets.json CMakeUserPresets.json
docs/*
out/
Runtime/platforms/win/metaforce.rc
version.h

View File

@ -368,7 +368,12 @@ if (NOT WIN32)
endif() endif()
option(BUILD_ATHENA "Build Athena libraries from source" ON) option(BUILD_ATHENA "Build Athena libraries from source" ON)
if (WIN32 OR APPLE)
# Default to binary atdna on Windows & macOS
option(BUILD_ATDNA "Build atdna utility from source (requires LLVM)" OFF) option(BUILD_ATDNA "Build atdna utility from source (requires LLVM)" OFF)
else ()
option(BUILD_ATDNA "Build atdna utility from source (requires LLVM)" ON)
endif ()
if (NOT BUILD_ATDNA) if (NOT BUILD_ATDNA)
set(ATHENA_BASE_URL "https://github.com/libAthena/athena/releases/download/latest") set(ATHENA_BASE_URL "https://github.com/libAthena/athena/releases/download/latest")

View File

@ -10,14 +10,16 @@
"name": "debug", "name": "debug",
"hidden": true, "hidden": true,
"cacheVariables": { "cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug" "CMAKE_BUILD_TYPE": "Debug",
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreadedDebug"
} }
}, },
{ {
"name": "relwithdebinfo", "name": "relwithdebinfo",
"hidden": true, "hidden": true,
"cacheVariables": { "cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo" "CMAKE_BUILD_TYPE": "RelWithDebInfo",
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded"
} }
}, },
{ {
@ -25,6 +27,9 @@
"displayName": "Linux (default)", "displayName": "Linux (default)",
"generator": "Ninja", "generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}", "binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_INSTALL_PREFIX": "${sourceDir}/build/install"
},
"vendor": { "vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": { "microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [ "hostOS": [
@ -40,16 +45,16 @@
"name": "linux-default-debug", "name": "linux-default-debug",
"displayName": "Linux (default) Debug", "displayName": "Linux (default) Debug",
"inherits": [ "inherits": [
"linux-default", "debug",
"debug" "linux-default"
] ]
}, },
{ {
"name": "linux-default-relwithdebinfo", "name": "linux-default-relwithdebinfo",
"displayName": "Linux (default) RelWithDebInfo", "displayName": "Linux (default) RelWithDebInfo",
"inherits": [ "inherits": [
"linux-default", "relwithdebinfo",
"relwithdebinfo" "linux-default"
] ]
}, },
{ {
@ -67,16 +72,16 @@
"name": "linux-clang-debug", "name": "linux-clang-debug",
"displayName": "Linux (Clang) Debug", "displayName": "Linux (Clang) Debug",
"inherits": [ "inherits": [
"linux-clang", "debug",
"debug" "linux-clang"
] ]
}, },
{ {
"name": "linux-clang-relwithdebinfo", "name": "linux-clang-relwithdebinfo",
"displayName": "Linux (Clang) RelWithDebInfo", "displayName": "Linux (Clang) RelWithDebInfo",
"inherits": [ "inherits": [
"linux-clang", "relwithdebinfo",
"relwithdebinfo" "linux-clang"
] ]
}, },
{ {
@ -91,12 +96,11 @@
"cacheVariables": { "cacheVariables": {
"CMAKE_C_COMPILER": "cl", "CMAKE_C_COMPILER": "cl",
"CMAKE_CXX_COMPILER": "cl", "CMAKE_CXX_COMPILER": "cl",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}", "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install",
"CMAKE_TOOLCHAIN_FILE": { "CMAKE_TOOLCHAIN_FILE": {
"type": "FILEPATH", "type": "FILEPATH",
"value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" "value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
}, },
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded",
"VCPKG_TARGET_TRIPLET": "x64-windows-static" "VCPKG_TARGET_TRIPLET": "x64-windows-static"
}, },
"vendor": { "vendor": {
@ -111,16 +115,16 @@
"name": "windows-msvc-debug", "name": "windows-msvc-debug",
"displayName": "Windows (MSVC) Debug", "displayName": "Windows (MSVC) Debug",
"inherits": [ "inherits": [
"windows-msvc", "debug",
"debug" "windows-msvc"
] ]
}, },
{ {
"name": "windows-msvc-relwithdebinfo", "name": "windows-msvc-relwithdebinfo",
"displayName": "Windows (MSVC) RelWithDebInfo", "displayName": "Windows (MSVC) RelWithDebInfo",
"inherits": [ "inherits": [
"windows-msvc", "relwithdebinfo",
"relwithdebinfo" "windows-msvc"
] ]
}, },
{ {
@ -144,70 +148,132 @@
"name": "windows-clang-debug", "name": "windows-clang-debug",
"displayName": "Windows (Clang) Debug", "displayName": "Windows (Clang) Debug",
"inherits": [ "inherits": [
"windows-clang", "debug",
"debug" "windows-clang"
] ]
}, },
{ {
"name": "windows-clang-relwithdebinfo", "name": "windows-clang-relwithdebinfo",
"displayName": "Windows (Clang) RelWithDebInfo", "displayName": "Windows (Clang) RelWithDebInfo",
"inherits": [ "inherits": [
"windows-clang", "relwithdebinfo",
"relwithdebinfo" "windows-clang"
] ]
}, },
{ {
"name": "linux-ci", "name": "macos-default",
"displayName": "macOS (default)",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_INSTALL_PREFIX": "${sourceDir}/build/install"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [
"macOS"
]
}
}
},
{
"name": "macos-default-debug",
"displayName": "macOS (default) Debug",
"inherits": [
"debug",
"macos-default"
]
},
{
"name": "macos-default-relwithdebinfo",
"displayName": "macOS (default) RelWithDebInfo",
"inherits": [
"relwithdebinfo",
"macos-default"
]
},
{
"name": "x-linux-ci",
"hidden": true, "hidden": true,
"inherits": [ "inherits": [
"relwithdebinfo" "relwithdebinfo"
], ],
"cacheVariables": { "cacheVariables": {
"CMAKE_C_COMPILER_LAUNCHER": "buildcache",
"CMAKE_CXX_COMPILER_LAUNCHER": "buildcache",
"Clang_DIR": { "Clang_DIR": {
"type": "FILEPATH", "type": "FILEPATH",
"value": "/usr/lib/cmake/clang-11" "value": "/usr/lib/cmake/clang-11"
},
"BUILD_ATDNA": {
"type": "BOOL",
"value": false
} }
} }
}, },
{ {
"name": "linux-ci-gcc", "name": "x-linux-ci-gcc",
"inherits": [ "inherits": [
"linux-default", "x-linux-ci",
"linux-ci" "linux-default"
] ]
}, },
{ {
"name": "linux-ci-clang", "name": "x-linux-ci-clang",
"inherits": [ "inherits": [
"linux-clang", "x-linux-ci",
"linux-ci" "linux-clang"
] ]
}, },
{ {
"name": "windows-ci", "name": "x-macos-ci",
"inherits": [
"macos-default-relwithdebinfo"
],
"cacheVariables": {
"CMAKE_C_COMPILER_LAUNCHER": "buildcache",
"CMAKE_CXX_COMPILER_LAUNCHER": "buildcache",
"CMAKE_OSX_ARCHITECTURES": "arm64;x86_64",
"Qt5Widgets_DIR": {
"type": "FILEPATH",
"value": "/opt/local/libexec/qt5/lib/cmake/Qt5Widgets"
},
"PNG_DIR": {
"type": "FILEPATH",
"value": "/opt/local/lib"
}
}
},
{
"name": "x-windows-ci",
"hidden": true, "hidden": true,
"inherits": [ "inherits": [
"relwithdebinfo" "relwithdebinfo"
], ],
"binaryDir": "$env{BUILD_DIR}",
"cacheVariables": { "cacheVariables": {
"LLVM_ROOT_DIR": "$env{RUNNER_WORKSPACE}/LLVM" "CMAKE_C_COMPILER_LAUNCHER": "buildcache",
"CMAKE_CXX_COMPILER_LAUNCHER": "buildcache",
"CMAKE_C_FLAGS_RELWITHDEBINFO": "/MD /Z7 /O2 /Ob1 /DNDEBUG",
"CMAKE_CXX_FLAGS_RELWITHDEBINFO": "/MD /Z7 /O2 /Ob1 /DNDEBUG",
"CMAKE_INSTALL_PREFIX": "$env{BUILD_DIR}/install"
}, },
"environment": { "environment": {
"VCPKG_ROOT": "$env{RUNNER_WORKSPACE}/vcpkg-qt-$env{Qt_VERSION}" "VCPKG_ROOT": "$env{RUNNER_WORKSPACE}/vcpkg-qt-$env{Qt_VERSION}"
} }
}, },
{ {
"name": "windows-ci-msvc", "name": "x-windows-ci-msvc",
"inherits": [ "inherits": [
"windows-msvc", "x-windows-ci",
"windows-ci" "windows-msvc"
] ]
}, },
{ {
"name": "windows-ci-clang", "name": "x-windows-ci-clang",
"inherits": [ "inherits": [
"windows-clang", "x-windows-ci",
"windows-ci" "windows-clang"
] ]
} }
], ],
@ -236,6 +302,18 @@
"description": "Linux (Clang) release build with debug info", "description": "Linux (Clang) release build with debug info",
"displayName": "Linux (Clang) RelWithDebInfo" "displayName": "Linux (Clang) RelWithDebInfo"
}, },
{
"name": "macos-default-debug",
"configurePreset": "macos-default-debug",
"description": "macOS debug build",
"displayName": "macOS Debug"
},
{
"name": "macos-default-relwithdebinfo",
"configurePreset": "macos-default-relwithdebinfo",
"description": "macOS release build with debug info",
"displayName": "macOS RelWithDebInfo"
},
{ {
"name": "windows-msvc-debug", "name": "windows-msvc-debug",
"configurePreset": "windows-msvc-debug", "configurePreset": "windows-msvc-debug",
@ -261,24 +339,49 @@
"displayName": "Windows (Clang) RelWithDebInfo" "displayName": "Windows (Clang) RelWithDebInfo"
}, },
{ {
"name": "linux-ci-gcc", "name": "x-linux-ci-gcc",
"configurePreset": "linux-ci-gcc", "configurePreset": "x-linux-ci-gcc",
"targets": ["metaforce", "metaforce-gui", "hecl", "visigen"] "description": "(Internal) Linux CI GCC",
"displayName": "(Internal) Linux CI GCC",
"targets": [
"install"
]
}, },
{ {
"name": "linux-ci-clang", "name": "x-linux-ci-clang",
"configurePreset": "linux-ci-clang", "configurePreset": "x-linux-ci-clang",
"targets": ["metaforce", "metaforce-gui", "hecl", "visigen"] "description": "(Internal) Linux CI Clang",
"displayName": "(Internal) Linux CI Clang",
"targets": [
"install"
]
}, },
{ {
"name": "windows-ci-msvc", "name": "x-macos-ci",
"configurePreset": "windows-ci-msvc", "configurePreset": "x-macos-ci",
"targets": ["metaforce", "metaforce-gui", "hecl", "visigen"] "description": "(Internal) macOS CI",
"displayName": "(Internal) macOS CI",
"targets": [
"install"
]
}, },
{ {
"name": "windows-ci-clang", "name": "x-windows-ci-msvc",
"configurePreset": "windows-ci-clang", "configurePreset": "x-windows-ci-msvc",
"targets": ["metaforce", "metaforce-gui", "hecl", "visigen"] "description": "(Internal) Windows CI MSVC",
"displayName": "(Internal) Windows CI MSVC",
"targets": [
"install"
]
},
{
"name": "x-windows-ci-clang",
"configurePreset": "x-windows-ci-clang",
"description": "(Internal) Windows CI Clang",
"displayName": "(Internal) Windows CI Clang",
"targets": [
"install"
]
} }
] ]
} }

View File

@ -1,207 +0,0 @@
{
"configurations": [
{
"name": "x64-Clang-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "clang_cl_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"variables": [
{
"name": "CMAKE_MSVC_RUNTIME_LIBRARY",
"value": "MultiThreadedDebugDLL",
"type": "STRING"
},
{
"name": "CMAKE_C_COMPILER",
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_CXX_COMPILER",
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_LINKER",
"value": "C:\\Program Files\\LLVM\\bin\\lld-link.exe",
"type": "FILEPATH"
}
]
},
{
"name": "x64-Clang-Release",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [ "clang_cl_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"variables": [
{
"name": "CMAKE_MSVC_RUNTIME_LIBRARY",
"value": "MultiThreadedDLL",
"type": "STRING"
},
{
"name": "CMAKE_C_COMPILER",
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_CXX_COMPILER",
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_LINKER",
"value": "C:\\Program Files\\LLVM\\bin\\lld-link.exe",
"type": "FILEPATH"
}
]
},
{
"name": "x64-Clang-Release-vcpkg",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [ "clang_cl_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"variables": [
{
"name": "CMAKE_TOOLCHAIN_FILE",
"value": "C:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake",
"type": "FILEPATH"
},
{
"name": "VCPKG_TARGET_TRIPLET",
"value": "x64-windows-static",
"type": "STRING"
},
{
"name": "CMAKE_MSVC_RUNTIME_LIBRARY",
"value": "MultiThreaded",
"type": "STRING"
},
{
"name": "CMAKE_C_COMPILER",
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_CXX_COMPILER",
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_LINKER",
"value": "C:\\Program Files\\LLVM\\bin\\lld-link.exe",
"type": "FILEPATH"
}
]
},
{
"name": "x64-MSVC-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": [
{
"name": "CMAKE_MSVC_RUNTIME_LIBRARY",
"value": "MultiThreadedDebugDLL",
"type": "STRING"
},
{
"name": "CMAKE_CXX_FLAGS",
"value": "",
"type": "STRING"
},
{
"name": "CMAKE_C_FLAGS",
"value": "",
"type": "STRING"
}
]
},
{
"name": "x64-MSVC-Release",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": [
{
"name": "CMAKE_MSVC_RUNTIME_LIBRARY",
"value": "MultiThreadedDLL",
"type": "STRING"
},
{
"name": "CMAKE_CXX_FLAGS",
"value": "",
"type": "STRING"
},
{
"name": "CMAKE_C_FLAGS",
"value": "",
"type": "STRING"
}
]
},
{
"name": "x64-MSVC-Release-vcpkg",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": [
{
"name": "CMAKE_TOOLCHAIN_FILE",
"value": "C:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake",
"type": "FILEPATH"
},
{
"name": "VCPKG_TARGET_TRIPLET",
"value": "x64-windows-static",
"type": "STRING"
},
{
"name": "CMAKE_MSVC_RUNTIME_LIBRARY",
"value": "MultiThreaded",
"type": "STRING"
},
{
"name": "CMAKE_CXX_FLAGS",
"value": "",
"type": "STRING"
},
{
"name": "CMAKE_C_FLAGS",
"value": "",
"type": "STRING"
}
]
}
]
}

View File

@ -92,14 +92,16 @@ For Windows, it's recommended to use Visual Studio. See below.
#### ninja (Windows/macOS/Linux) #### ninja (Windows/macOS/Linux)
Builds using `RelWithDebInfo` by default.
```sh ```sh
cd metaforce-build cd metaforce-build
cmake -DCMAKE_BUILD_TYPE=Debug -G Ninja ../metaforce cmake -G Ninja ../metaforce
ninja ninja
``` ```
#### CMake options #### CMake options
- Build release optimized (better runtime performance): `-DCMAKE_BUILD_TYPE=Release` - Build in debug mode (slower runtime speed, better backtraces): `-DCMAKE_BUILD_TYPE=Debug`
- Use clang+lld (faster linking): `-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++` - Use clang+lld (faster linking): `-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++`
- Optimize for current CPU (resulting binaries are not portable): `-DMETAFORCE_VECTOR_ISA=native` - Optimize for current CPU (resulting binaries are not portable): `-DMETAFORCE_VECTOR_ISA=native`

View File

@ -7,7 +7,7 @@ chmod +x linuxdeploy-$(uname -m).AppImage linuxdeploy-plugin-qt-$(uname -m).AppI
# Build AppImage # Build AppImage
mkdir -p appdir/usr/{bin,share/{applications,icons/hicolor}} mkdir -p appdir/usr/{bin,share/{applications,icons/hicolor}}
cp build/Binaries/{hecl,metaforce-gui,metaforce,visigen} appdir/usr/bin cp build/install/{hecl,metaforce-gui,metaforce,visigen} appdir/usr/bin
cp -r metaforce-gui/platforms/freedesktop/{16x16,32x32,48x48,64x64,128x128,256x256,512x512,1024x1024} appdir/usr/share/icons/hicolor cp -r metaforce-gui/platforms/freedesktop/{16x16,32x32,48x48,64x64,128x128,256x256,512x512,1024x1024} appdir/usr/share/icons/hicolor
cp metaforce-gui/platforms/freedesktop/metaforce.desktop appdir/usr/share/applications cp metaforce-gui/platforms/freedesktop/metaforce.desktop appdir/usr/share/applications
VERSION="$METAFORCE_VERSION" NO_STRIP=1 ./linuxdeploy-$(uname -m).AppImage --appdir appdir --plugin qt --output appimage VERSION="$METAFORCE_VERSION" NO_STRIP=1 ./linuxdeploy-$(uname -m).AppImage --appdir appdir --plugin qt --output appimage

View File

@ -1,5 +1,5 @@
#!/bin/bash -ex #!/bin/bash -ex
cd build/Binaries cd build/install
mv metaforce-gui.app Metaforce.app mv metaforce-gui.app Metaforce.app
# order is important # order is important
for i in visigen hecl metaforce crashpad_handler; do for i in visigen hecl metaforce crashpad_handler; do

View File

@ -1,5 +1,5 @@
#!/bin/bash -ex #!/bin/bash -ex
cd build/Binaries cd build/install
for f in hecl metaforce-gui metaforce visigen; do for f in hecl metaforce-gui metaforce visigen; do
objcopy --only-keep-debug $f $f.dbg objcopy --only-keep-debug $f $f.dbg
objcopy --strip-debug --add-gnu-debuglink=$f.dbg $f objcopy --strip-debug --add-gnu-debuglink=$f.dbg $f

View File

@ -1,3 +1,3 @@
#!/bin/bash -ex #!/bin/bash -ex
cd build/Binaries cd build/install
sentry-cli upload-dif --org axiodl --project metaforce {hecl,metaforce-gui,metaforce,visigen}{,.dbg} --include-sources sentry-cli upload-dif --org axiodl --project metaforce {hecl,metaforce-gui,metaforce,visigen}{,.dbg} --include-sources

View File

@ -1,5 +1,5 @@
#!/bin/bash -ex #!/bin/bash -ex
cd build/Binaries/metaforce-gui.app/Contents/MacOS cd build/install/metaforce-gui.app/Contents/MacOS
for f in hecl metaforce-gui metaforce visigen; do for f in hecl metaforce-gui metaforce visigen; do
dsymutil $f dsymutil $f
strip -S $f strip -S $f

2
extern/athena vendored

@ -1 +1 @@
Subproject commit 37c56eec076d74cc7708ff14c66ee960d7f53e2a Subproject commit 37206e5301a28486aa836c77041f67263d5cb012

View File

@ -61,3 +61,10 @@ function(add_special_shader name)
add_library(${name} ${name}.hpp ${ARGN}) add_library(${name} ${name}.hpp ${ARGN})
add_shader_target(${name}) add_shader_target(${name})
endfunction() endfunction()
include(ExternalProject)
ExternalProject_Add(bintoc
SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/bintoc"
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target install)
include(${CMAKE_CURRENT_LIST_DIR}/bintoc/bintocHelpers.cmake)

View File

@ -52,13 +52,6 @@ endforeach()
configure_file(include/hecl/ApplicationReps.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/ApplicationReps.hpp @ONLY) configure_file(include/hecl/ApplicationReps.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/ApplicationReps.hpp @ONLY)
include(ExternalProject)
ExternalProject_Add(bintoc
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bintoc"
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target install)
include(bintoc/bintocHelpers.cmake)
if(NOT TARGET atdna) if(NOT TARGET atdna)
# Import native atdna if cross-compiling # Import native atdna if cross-compiling
find_package(atdna REQUIRED) find_package(atdna REQUIRED)