mirror of
https://github.com/libretro/pcsx2.git
synced 2024-12-21 01:08:14 +00:00
c6d42c09d8
I created a dedicated target (before script). Might not be the best idea
162 lines
4.1 KiB
Bash
Executable File
162 lines
4.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -ex
|
|
|
|
clang_syntax_check() {
|
|
if [ "${CXX}" = "clang++" ]; then
|
|
./linux_various/check_format.sh
|
|
fi
|
|
}
|
|
|
|
linux_32_before_install() {
|
|
# Build worker is 64-bit only by default it seems.
|
|
sudo dpkg --add-architecture i386
|
|
|
|
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
|
|
|
# Compilers
|
|
if [ "${CXX}" = "clang++" ]; then
|
|
sudo apt-key adv --fetch-keys http://apt.llvm.org/llvm-snapshot.gpg.key
|
|
sudo add-apt-repository -y "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-${VERSION} main"
|
|
# g++-4.9-multilib is necessary for compiler dependencies. 4.8 currently
|
|
# has dependency issues, but 4.9 from the toolchain repo seems to work
|
|
# fine, so let's just use that.
|
|
COMPILER_PACKAGE="clang-${VERSION} g++-4.9-multilib clang-format-${VERSION}"
|
|
fi
|
|
if [ "${CXX}" = "g++" ]; then
|
|
COMPILER_PACKAGE="g++-${VERSION}-multilib"
|
|
fi
|
|
|
|
# apt-get update fails because Chrome is 64-bit only.
|
|
sudo rm -f /etc/apt/sources.list.d/google-chrome.list
|
|
|
|
sudo apt-get -qq update
|
|
|
|
# The 64-bit versions of the first 7 dependencies are part of the initial
|
|
# build image. libgtk2.0-dev:i386 and libsdl2-dev:i386 require the 32-bit
|
|
# versions of the dependencies, and the 2 versions conflict. So those
|
|
# dependencies must be explicitly installed.
|
|
sudo apt-get -y install \
|
|
gir1.2-freedesktop:i386 \
|
|
gir1.2-gdkpixbuf-2.0:i386 \
|
|
gir1.2-glib-2.0:i386 \
|
|
libcairo2-dev:i386 \
|
|
libgdk-pixbuf2.0-dev:i386 \
|
|
libgirepository-1.0-1:i386 \
|
|
libglib2.0-dev:i386 \
|
|
libaio-dev:i386 \
|
|
libasound2-dev:i386 \
|
|
libgl1-mesa-dev:i386 \
|
|
libgtk2.0-dev:i386 \
|
|
liblzma-dev:i386 \
|
|
libpng12-dev:i386 \
|
|
libsdl2-dev:i386 \
|
|
libsoundtouch-dev:i386 \
|
|
libwxgtk3.0-dev:i386 \
|
|
libxext-dev:i386 \
|
|
portaudio19-dev:i386 \
|
|
zlib1g-dev:i386 \
|
|
${COMPILER_PACKAGE}
|
|
|
|
# Manually add ccache symlinks for clang
|
|
if [ "${CXX}" = "clang++" ]; then
|
|
sudo ln -sf ../../bin/ccache /usr/lib/ccache/${CXX}-${VERSION}
|
|
sudo ln -sf ../../bin/ccache /usr/lib/ccache/${CC}-${VERSION}
|
|
fi
|
|
}
|
|
|
|
linux_32_script() {
|
|
mkdir build
|
|
cd build
|
|
|
|
# Prevents warning spam
|
|
if [ "${CXX}" = "clang++" ]; then
|
|
export CCACHE_CPP2=yes
|
|
fi
|
|
export CC=${CC}-${VERSION} CXX=${CXX}-${VERSION}
|
|
cmake \
|
|
-DCMAKE_TOOLCHAIN_FILE=cmake/linux-compiler-i386-multilib.cmake \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DBUILD_REPLAY_LOADERS=TRUE \
|
|
-DCMAKE_BUILD_PO=FALSE \
|
|
..
|
|
|
|
# Documentation says 1.5 cores, so 2 or 3 threads should work ok.
|
|
make -j3 install
|
|
}
|
|
|
|
|
|
linux_64_before_install() {
|
|
# Compilers
|
|
if [ "${CXX}" = "clang++" ]; then
|
|
sudo apt-key adv --fetch-keys http://apt.llvm.org/llvm-snapshot.gpg.key
|
|
sudo add-apt-repository -y "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-${VERSION} main"
|
|
COMPILER_PACKAGE="clang-${VERSION} clang-format-${VERSION}"
|
|
fi
|
|
if [ "${CXX}" = "g++" ]; then
|
|
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
|
COMPILER_PACKAGE="g++-${VERSION}"
|
|
fi
|
|
|
|
sudo apt-get -qq update
|
|
|
|
# libgl1-mesa-dev, liblzma-dev, libxext-dev, zlib1g-dev already installed on
|
|
# build worker, I put these here in case the build image changes.
|
|
sudo apt-get -y install \
|
|
libaio-dev \
|
|
libasound2-dev \
|
|
libgtk2.0-dev \
|
|
libpng12-dev \
|
|
libsdl2-dev \
|
|
libsoundtouch-dev \
|
|
libwxgtk3.0-dev \
|
|
portaudio19-dev \
|
|
${COMPILER_PACKAGE}
|
|
|
|
# Manually add ccache symlinks for clang
|
|
if [ "${CXX}" = "clang++" ]; then
|
|
sudo ln -sf ../../bin/ccache /usr/lib/ccache/${CXX}-${VERSION}
|
|
sudo ln -sf ../../bin/ccache /usr/lib/ccache/${CC}-${VERSION}
|
|
fi
|
|
}
|
|
|
|
|
|
linux_64_script() {
|
|
mkdir build
|
|
cd build
|
|
|
|
# Prevents warning spam
|
|
if [ "${CXX}" = "clang++" ]; then
|
|
export CCACHE_CPP2=yes
|
|
fi
|
|
export CC=${CC}-${VERSION} CXX=${CXX}-${VERSION}
|
|
cmake \
|
|
-DCMAKE_BUILD_TYPE=Devel \
|
|
-DBUILD_REPLAY_LOADERS=TRUE \
|
|
-DCMAKE_BUILD_PO=FALSE \
|
|
..
|
|
|
|
# Documentation says 1.5 cores, so 2 or 3 threads should work ok.
|
|
make -j3 install
|
|
}
|
|
|
|
linux_after_success() {
|
|
ccache -s
|
|
}
|
|
|
|
# Just in case I do manual testing and accidentally insert "rm -rf /"
|
|
case "${1}" in
|
|
before_install|script)
|
|
${TRAVIS_OS_NAME}_${BITS}_${1}
|
|
;;
|
|
before_script)
|
|
clang_syntax_check
|
|
;;
|
|
after_success)
|
|
${TRAVIS_OS_NAME}_${1}
|
|
;;
|
|
*)
|
|
echo "Unknown command" && false
|
|
;;
|
|
esac
|