CI: Manually build & install SMPQ on Vita CI
This commit is contained in:
parent
f4404e1452
commit
f29215a167
2 changed files with 45 additions and 1 deletions
42
.circleci/build-and-install-smpq.sh
Executable file
42
.circleci/build-and-install-smpq.sh
Executable file
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
PARALLELISM="$(getconf _NPROCESSORS_ONLN)"
|
||||
STORMLIB_VERSION=9.23
|
||||
STORMLIB_SRC="/tmp/stormlib-src-$STORMLIB_VERSION"
|
||||
SMPQ_VERSION=1.6
|
||||
SMPQ_SRC="/tmp/smpq-src-$SMPQ_VERSION"
|
||||
|
||||
# Download, build, and install the static version of StormLib, an SMPQ dependency, to the staging prefix.
|
||||
if ! [ -d "$STORMLIB_SRC" ]; then
|
||||
mkdir "$STORMLIB_SRC"
|
||||
curl -L -s "https://github.com/ladislav-zezula/StormLib/tarball/v${STORMLIB_VERSION}" | tar -C "$STORMLIB_SRC" --strip-components=1 -xvzf -
|
||||
fi
|
||||
|
||||
cmake -S"$STORMLIB_SRC" -B"$STORMLIB_SRC"/build -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/smpq-staging -DBUILD_SHARED_LIBS=OFF \
|
||||
-DWITH_STATIC=ON -DSTORM_BUILD_TESTS=OFF -DWITH_LIBTOMCRYPT=OFF
|
||||
cmake --build "$STORMLIB_SRC"/build --config Release --target install -j"$PARALLELISM"
|
||||
|
||||
# Download, build, and install SMPQ.
|
||||
if ! [ -d "$SMPQ_SRC" ]; then
|
||||
mkdir "$SMPQ_SRC"
|
||||
curl -L -s "https://launchpad.net/smpq/trunk/${SMPQ_VERSION}/+download/smpq_${SMPQ_VERSION}.orig.tar.gz" | tar -C "$SMPQ_SRC" --strip-components=1 -xvzf -
|
||||
|
||||
# StormLib.a is C++ and must be linked with a C++ linker (e.g. via g++ instead of gcc).
|
||||
sed -i '/^project/a file(GLOB_RECURSE CFILES "${CMAKE_SOURCE_DIR}/*.c")\
|
||||
SET_SOURCE_FILES_PROPERTIES(${CFILES} PROPERTIES LANGUAGE CXX)' "$SMPQ_SRC"/CMakeLists.txt
|
||||
|
||||
# StormLib is linked statically, so we need to add links its dynamic link dependencies to smpq itself.
|
||||
sed -i 's|target_link_libraries(smpq ${STORMLIB_LIBRARY})|find_package(ZLIB REQUIRED)\
|
||||
find_package(BZip2 REQUIRED)\
|
||||
target_link_libraries(smpq ${STORMLIB_LIBRARY} ${ZLIB_LIBRARY} ${BZIP2_LIBRARIES})|' "$SMPQ_SRC"/CMakeLists.txt
|
||||
|
||||
# Do not generate the manual.
|
||||
sed -i 's|if(NOT CMAKE_CROSSCOMPILING)|if(FALSE)|' "$SMPQ_SRC"/CMakeLists.txt
|
||||
fi
|
||||
|
||||
# The StormLib version check in SMPQ CMake is broken. We bypass it by passing the paths to StormLib explicitly.
|
||||
cmake -S"$SMPQ_SRC" -B"$SMPQ_SRC"/build -GNinja -DCMAKE_BUILD_TYPE=Release -DWITH_KDE=OFF -DCMAKE_PREFIX_PATH=/tmp/smpq-staging \
|
||||
-DSTORMLIB_INCLUDE_DIR=/tmp/smpq-staging/include -DSTORMLIB_LIBRARY=/tmp/smpq-staging/lib/libstorm.a
|
||||
cmake --build "$SMPQ_SRC"/build --config Release --target install -j"$PARALLELISM"
|
||||
|
|
@ -85,7 +85,9 @@ jobs:
|
|||
- checkout
|
||||
# Work around https://github.com/vitasdk/vdpm/issues/69
|
||||
- run: mkdir -p /usr/local && ln -sf /home/user/vitasdk /usr/local/vitasdk
|
||||
- run: apk --no-cache add git cmake ninja bash pkgconfig
|
||||
# curl, zlib-dev, bzip2-dev, and build-base are only needed by build-and-install-smpq.sh
|
||||
- run: apk --no-cache add git cmake ninja bash pkgconfig curl zlib-dev bzip2-dev build-base
|
||||
- run: .circleci/build-and-install-smpq.sh
|
||||
- run: cmake -S. -Bbuild -GNinja -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DNIGHTLY_BUILD=ON
|
||||
- run: cmake --build build -j 2
|
||||
- store_artifacts: {path: ./build/devilutionx.vpk, destination: devilutionx.vpk}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue