3 changed files with 38 additions and 3 deletions
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash |
||||
|
||||
# Builds a PGO-optimized binary with the profile data gathered by running the test demo. |
||||
set -euo pipefail |
||||
|
||||
PARALLELISM="$(getconf _NPROCESSORS_ONLN)" |
||||
|
||||
set -x |
||||
|
||||
rm -rf build-profile-data/config build-profile-data/profile |
||||
mkdir -p build-profile-data/config |
||||
cd build-profile-data/config |
||||
ln -s ../../test/fixtures/timedemo/WarriorLevel1to2/demo_* . |
||||
cp ../../test/fixtures/timedemo/WarriorLevel1to2/spawn_* . |
||||
cd - |
||||
|
||||
# We build both versions with the same FetchContent base directory because otherwise |
||||
# gcc will complain about the source locations for FetchContent dependencies, |
||||
# which are stored in the build directory by default. |
||||
# Ideally, we would only specify the location for the FetchContent src directories |
||||
# but CMake does not support that. |
||||
cmake -S. -Bbuild-profile-generate -G Ninja -DCMAKE_BUILD_TYPE=Release \ |
||||
-DDEVILUTIONX_PROFILE_GENERATE=ON \ |
||||
-DDEVILUTIONX_PROFILE_DIR="${PWD}/build-profile-data/profile" \ |
||||
-DFETCHCONTENT_BASE_DIR="${PWD}/build-profile-data/fetchcontent-base" \ |
||||
-DBUILD_TESTING=OFF "$@" |
||||
cmake --build build-profile-generate -j "$PARALLELISM" |
||||
build-profile-generate/devilutionx --diablo --spawn --lang en --demo 0 --timedemo \ |
||||
--save-dir build-profile-data/config |
||||
|
||||
cmake -S. -Bbuild-profile-use -G Ninja -DCMAKE_BUILD_TYPE=Release \ |
||||
-DDEVILUTIONX_PROFILE_USE=ON \ |
||||
-DDEVILUTIONX_PROFILE_DIR="${PWD}/build-profile-data/profile" \ |
||||
-DFETCHCONTENT_BASE_DIR="${PWD}/build-profile-data/fetchcontent-base" \ |
||||
-DBUILD_TESTING=OFF "$@" |
||||
cmake --build build-profile-use -j "$PARALLELISM" |
||||
Loading…
Reference in new issue