Index: .travis.yml ================================================================== --- .travis.yml +++ .travis.yml @@ -242,185 +242,9 @@ - config=wii services: docker before_install: - - if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then - case "$TRAVIS_CPU_ARCH" in - amd64 | s390x) - pkgs="gobjc-multilib"; - ;; - *) - pkgs="gobjc"; - ;; - esac; - - pkgs="$pkgs libsctp-dev"; - - if grep precise /etc/lsb-release >/dev/null; then - pkgs="$pkgs ipx"; - fi; - - if ! sudo apt-get -qq install -y $pkgs >/tmp/apt_log 2>&1; then - cat /tmp/apt_log; - exit 1; - fi; - - if grep precise /etc/lsb-release >/dev/null; then - sudo ipx_internal_net add 1234 123456; - fi; - fi - - - if [ "$config" = "nintendo_3ds" -o "$config" = "nintendo_ds" ]; then - docker pull devkitpro/devkitarm; - fi - - - if [ "$config" = "wii" ]; then - docker pull devkitpro/devkitppc; - fi - - - if [ "$config" = "amigaos" ]; then - wget -q https://franke.ms/download/amiga-gcc.tgz; - tar -C / -xzf amiga-gcc.tgz; - fi + - .travis/before_install.sh script: - - build() { - if ! git clean -fxd >/tmp/clean_log 2>&1; then - cat /tmp/clean_log; - exit 1; - fi; - ./autogen.sh || exit 1; - .travis/build.sh "$@" || exit 1; - } - - - if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then - build_32_64() { - build OBJC="$CC" $@; - - case "$TRAVIS_CPU_ARCH" in - amd64) - build OBJC="$CC -m32" - --host=i686-pc-linux-gnu $@; - ;; - s390x) - build OBJC="$CC -m31" - --host=s390-pc-linux-gnu $@; - ;; - esac - }; - - build_32_64; - build_32_64 --enable-seluid24; - build_32_64 --disable-compiler-tls; - - true The following are not CPU-dependent, so only run them on amd64; - if [ "$TRAVIS_CPU_ARCH" = "amd64" ]; then - build_32_64 --disable-threads; - build_32_64 --disable-threads --disable-sockets; - build_32_64 --disable-threads --disable-files; - build_32_64 --disable-threads --disable-sockets - --disable-files; - build_32_64 --disable-sockets; - build_32_64 --disable-sockets --disable-files; - build_32_64 --disable-files; - build_32_64 --disable-shared; - build_32_64 --disable-shared --enable-seluid24; - build_32_64 --disable-compiler-tls --disable-threads; - fi; - fi - - - if [ "$TRAVIS_OS_NAME" = "osx" -a -z "$config" ]; then - build_mac_32_64() { - build $@; - if [ -z "$no32bit" ]; then - build OBJC="clang -m32" --host=i386-apple-darwin $@; - fi; - }; - - if xcodebuild -version | grep 'Xcode 6' >/dev/null; then - export CPPFLAGS="-D_Nullable=__nullable - -D_Nonnull=__nonnull - -D_Null_unspecified=__null_unspecified"; - fi; - - build_mac_32_64; - build_mac_32_64 --disable-threads; - build_mac_32_64 --disable-threads --disable-sockets; - build_mac_32_64 --disable-threads --disable-files; - build_mac_32_64 --disable-threads --disable-sockets --disable-files; - build_mac_32_64 --disable-sockets; - build_mac_32_64 --disable-sockets --disable-files; - build_mac_32_64 --disable-files; - build_mac_32_64 --disable-shared; - if [ -z "$noruntime" ]; then - build_mac_32_64 --enable-runtime; - build_mac_32_64 --enable-runtime --enable-seluid24; - build_mac_32_64 --enable-runtime --disable-threads; - build_mac_32_64 --enable-runtime --disable-threads - --disable-sockets; - build_mac_32_64 --enable-runtime --disable-threads - --disable-files; - build_mac_32_64 --enable-runtime --disable-threads - --disable-sockets --disable-files; - build_mac_32_64 --enable-runtime --disable-sockets; - build_mac_32_64 --enable-runtime --disable-sockets - --disable-files; - build_mac_32_64 --enable-runtime --disable-files; - build_mac_32_64 --enable-runtime --disable-shared; - build_mac_32_64 --enable-runtime --disable-shared - --enable-seluid24; - fi; - fi - - - if [ "$config" = "ios" ]; then - if xcodebuild -version | grep 'Xcode 6' >/dev/null; then - export CPPFLAGS="-D_Nullable=__nullable - -D_Nonnull=__nonnull - -D_Null_unspecified=__null_unspecified"; - fi; - - export IPHONEOS_DEPLOYMENT_TARGET="9.0"; - clang="clang -isysroot $(xcrun --sdk iphoneos --show-sdk-path)"; - export OBJC="$clang -arch armv7 -arch arm64"; - export OBJCPP="$clang -arch armv7 -E"; - build --host=arm-apple-darwin --enable-static; - - sysroot="$(xcrun --sdk iphonesimulator --show-sdk-path)"; - clang="clang -isysroot $sysroot"; - export OBJC="$clang -arch i386 -arch x86_64"; - export OBJCPP="$clang -arch i386 -E"; - build WRAPPER=true --host=i386-apple-darwin --enable-static; - fi - - - if [ "$config" = "amigaos" ]; then - export PATH="/opt/amiga/bin:$PATH"; - - build --host=m68k-amigaos; - build --host=m68k-amigaos --disable-amiga-lib; - build --host=m68k-amigaos --enable-static; - fi - - - if [ "$config" = "nintendo_3ds" ]; then - ./autogen.sh; - docker run -e DEVKITPRO=/opt/devkitpro - -e PATH="/opt/devkitpro/devkitARM/bin:$PATH" - -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitarm - /objfw/.travis/build.sh --host=arm-none-eabi --with-3ds; - fi - - - if [ "$config" = "nintendo_ds" ]; then - ./autogen.sh; - docker run -e DEVKITPRO=/opt/devkitpro - -e PATH="/opt/devkitpro/devkitARM/bin:$PATH" - -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitarm - /objfw/.travis/build.sh --host=arm-none-eabi --with-nds; - fi - - - if [ "$config" = "wii" ]; then - ./autogen.sh; - docker run -e DEVKITPRO=/opt/devkitpro - -e PATH="/opt/devkitpro/devkitPPC/bin:$PATH" - -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitppc - /objfw/.travis/build.sh ac_cv_prog_wiiload= - --host=powerpc-eabi --with-wii; - fi + - .travis/script.sh ADDED .travis/before_install.sh Index: .travis/before_install.sh ================================================================== --- .travis/before_install.sh +++ .travis/before_install.sh @@ -0,0 +1,47 @@ +#!/bin/sh +if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then + case "$TRAVIS_CPU_ARCH" in + amd64 | s390x) + pkgs="gobjc-multilib" + ;; + *) + pkgs="gobjc" + ;; + esac + + pkgs="$pkgs libsctp-dev" + + if grep precise /etc/lsb-release >/dev/null; then + pkgs="$pkgs ipx" + fi + + # We don't need any of them and they're often broken. + sudo rm -f /etc/apt/sources.list.d/* + + if ! sudo apt-get -qq update >/tmp/apt_log 2>&1; then + cat /tmp/apt_log + exit 1 + fi + + if ! sudo apt-get -qq install -y $pkgs >>/tmp/apt_log 2>&1; then + cat /tmp/apt_log + exit 1 + fi + + if grep precise /etc/lsb-release >/dev/null; then + sudo ipx_internal_net add 1234 123456 + fi +fi + +if [ "$config" = "nintendo_3ds" -o "$config" = "nintendo_ds" ]; then + docker pull devkitpro/devkitarm +fi + +if [ "$config" = "wii" ]; then + docker pull devkitpro/devkitppc +fi + +if [ "$config" = "amigaos" ]; then + wget -q https://franke.ms/download/amiga-gcc.tgz + tar -C / -xzf amiga-gcc.tgz +fi ADDED .travis/script.sh Index: .travis/script.sh ================================================================== --- .travis/script.sh +++ .travis/script.sh @@ -0,0 +1,143 @@ +#!/bin/sh +build() { + if ! git clean -fxd >/tmp/clean_log 2>&1; then + cat /tmp/clean_log + exit 1 + fi + + ./autogen.sh || exit 1 + .travis/build.sh "$@" || exit 1 +} + +if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then + build_32_64() { + build OBJC="$CC" $@ + + case "$TRAVIS_CPU_ARCH" in + amd64) + build OBJC="$CC -m32" \ + --host=i686-pc-linux-gnu $@ + ;; + s390x) + build OBJC="$CC -m31" \ + --host=s390-pc-linux-gnu $@ + ;; + esac + } + + build_32_64 + build_32_64 --enable-seluid24 + build_32_64 --disable-compiler-tls + + # The following are not CPU-dependent, so only run them on amd64 + if [ "$TRAVIS_CPU_ARCH" = "amd64" ]; then + build_32_64 --disable-threads + build_32_64 --disable-threads --disable-sockets + build_32_64 --disable-threads --disable-files + build_32_64 --disable-threads --disable-sockets --disable-files + build_32_64 --disable-sockets + build_32_64 --disable-sockets --disable-files + build_32_64 --disable-files + build_32_64 --disable-shared + build_32_64 --disable-shared --enable-seluid24 + build_32_64 --disable-compiler-tls --disable-threads + fi +fi + +if [ "$TRAVIS_OS_NAME" = "osx" -a -z "$config" ]; then + build_mac_32_64() { + build $@ + + if [ -z "$no32bit" ]; then + build OBJC="clang -m32" --host=i386-apple-darwin $@ + fi + } + + if xcodebuild -version | grep 'Xcode 6' >/dev/null; then + export CPPFLAGS="-D_Null_unspecified=__null_unspecified" + export CPPFLAGS="$CPPFLAGS -D_Nullable=__nullable" + export CPPFLAGS="$CPPFLAGS -D_Nonnull=__nonnull" + fi + + build_mac_32_64 + build_mac_32_64 --disable-threads + build_mac_32_64 --disable-threads --disable-sockets + build_mac_32_64 --disable-threads --disable-files + build_mac_32_64 --disable-threads --disable-sockets --disable-files + build_mac_32_64 --disable-sockets + build_mac_32_64 --disable-sockets --disable-files + build_mac_32_64 --disable-files + build_mac_32_64 --disable-shared + + if [ -z "$noruntime" ]; then + build_mac_32_64 --enable-runtime + build_mac_32_64 --enable-runtime --enable-seluid24 + build_mac_32_64 --enable-runtime --disable-threads + build_mac_32_64 --enable-runtime --disable-threads \ + --disable-sockets + build_mac_32_64 --enable-runtime --disable-threads \ + --disable-files + build_mac_32_64 --enable-runtime --disable-threads \ + --disable-sockets --disable-files + build_mac_32_64 --enable-runtime --disable-sockets + build_mac_32_64 --enable-runtime --disable-sockets \ + --disable-files + build_mac_32_64 --enable-runtime --disable-files + build_mac_32_64 --enable-runtime --disable-shared + build_mac_32_64 --enable-runtime --disable-shared \ + --enable-seluid24 + fi +fi + +if [ "$config" = "ios" ]; then + if xcodebuild -version | grep 'Xcode 6' >/dev/null; then + export CPPFLAGS="-D_Null_unspecified=__null_unspecified" + export CPPFLAGS="$CPPFLAGS -D_Nullable=__nullable" + export CPPFLAGS="$CPPFLAGS -D_Nonnull=__nonnull" + fi + + export IPHONEOS_DEPLOYMENT_TARGET="9.0" + clang="clang -isysroot $(xcrun --sdk iphoneos --show-sdk-path)" + export OBJC="$clang -arch armv7 -arch arm64" + export OBJCPP="$clang -arch armv7 -E" + build --host=arm-apple-darwin --enable-static + + sysroot="$(xcrun --sdk iphonesimulator --show-sdk-path)" + clang="clang -isysroot $sysroot" + export OBJC="$clang -arch i386 -arch x86_64" + export OBJCPP="$clang -arch i386 -E" + build WRAPPER=true --host=i386-apple-darwin --enable-static +fi + +if [ "$config" = "amigaos" ]; then + export PATH="/opt/amiga/bin:$PATH" + + build --host=m68k-amigaos + build --host=m68k-amigaos --disable-amiga-lib + build --host=m68k-amigaos --enable-static +fi + +if [ "$config" = "nintendo_3ds" ]; then + ./autogen.sh + docker run -e DEVKITPRO=/opt/devkitpro \ + -e PATH="/opt/devkitpro/devkitARM/bin:$PATH" \ + -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitarm \ + /objfw/.travis/build.sh --host=arm-none-eabi --with-3ds +fi + +if [ "$config" = "nintendo_ds" ]; then + ./autogen.sh + docker run -e DEVKITPRO=/opt/devkitpro \ + -e PATH="/opt/devkitpro/devkitARM/bin:$PATH" \ + -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitarm \ + /objfw/.travis/build.sh --host=arm-none-eabi --with-nds +fi + +if [ "$config" = "wii" ]; then + ./autogen.sh + docker run -e DEVKITPRO=/opt/devkitpro \ + -e PATH="/opt/devkitpro/devkitPPC/bin:$PATH" \ + -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitppc \ + /objfw/.travis/build.sh ac_cv_prog_wiiload= \ + --host=powerpc-eabi --with-wii +fi