You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

36 lines
1.5 KiB

#!/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"