diff --git a/.travis.yml b/.travis.yml index f5077ff7ec..0988d82c0d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,32 +5,51 @@ language: cpp env: - PPSSPP_BUILD_TYPE=Linux - PPSSPP_BUILD_TYPE=Android + - PPSSPP_BUILD_TYPE=Blackberry compiler: - clang - gcc before_install: - - sudo add-apt-repository -y ppa:ubuntu-sdk-team/ppa - - sudo apt-get update - - sudo apt-get install cmake libsdl1.2-dev openjdk-7-jdk ant lib32z1-dev lib32stdc++6 - git submodule update --init --recursive - - if [ "$PPSSPP_BUILD_TYPE" == "Android" ]; then wget --timeout=30 http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -O ndk.tar.bz2 && tar -xf ndk.tar.bz2; fi + - sudo apt-get install lib32z1-dev lib32stdc++6 -qq +# Travis uses CMake 2.8.7. We require 2.8.8. Grab latest + - wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1-Linux-i386.sh + - chmod a+x cmake-2.8.12.1-Linux-i386.sh + - sudo ./cmake-2.8.12.1-Linux-i386.sh --skip-license --prefix=/usr +# Linux Setup + - if [ "$PPSSPP_BUILD_TYPE" == "Linux" ]; then sudo apt-get install libsdl1.2-dev -qq; fi +# Android NDK + - if [ "$PPSSPP_BUILD_TYPE" == "Android" ]; then + sudo apt-get install openjdk-7-jdk ant -qq && + wget --timeout=30 http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -O ndk.tar.bz2 && + tar -xf ndk.tar.bz2 && + export ANDROID_HOME=$(pwd)/android-ndk-r9 NDK=$(pwd)/android-ndk-r9; + fi - if [[ "$CXX" == *clang* ]]; then export NDK_TOOLCHAIN_VERSION=clang; fi - - export ANDROID_HOME=$(pwd)/android-ndk-r9 NDK=$(pwd)/android-ndk-r9 - -before_script: - - mkdir build-travis - - cd build-travis - - cmake -DHEADLESS=ON .. - - cd .. +# Blackberry NDK + - if [ "$PPSSPP_BUILD_TYPE" == "Blackberry" ]; then + BB_NDK=http://downloads.blackberry.com/upr/developers/update/bbndk/ndktarget_10.2.0.1155/ndktargetrepo_10.2.0.1155/packages/bbndk.linux. && + wget --timeout=30 ${BB_NDK}libraries.10.2.0.1155.tar.gz -O libs.tar.gz && + tar -xf libs.tar.gz && + wget --timeout=30 ${BB_NDK}tools.10.2.0.15.tar.gz -O tools.tar.gz && + tar -xf tools.tar.gz && + export QNX_TARGET="$(pwd)/target_10_2_0_1155/qnx6" QNX_HOST="$(pwd)/host_10_2_0_15/linux/x86" MAKEFLAGS="-I$QNX_TARGET/usr/include" LD_LIBRARY_PATH="$QNX_TARGET/armle-v7/lib/:$QNX_HOST/usr/lib/:$LD_LIBRARY_PATH" PATH="$QNX_HOST/usr/bin:$PATH"; + fi script: - - if [ "$PPSSPP_BUILD_TYPE" == "Linux" ]; then cd build-travis && make && cd ..; else cd android && ./ab.sh && cd ..; fi +# Compile PPSSPP + - if [ "$PPSSPP_BUILD_TYPE" == "Linux" ]; then ./b.sh --headless; fi + - if [ "$PPSSPP_BUILD_TYPE" == "Android" ]; then pushd android && ./ab.sh && popd; fi + - if [ "$PPSSPP_BUILD_TYPE" == "Blackberry" ]; then pushd Blackberry && ./build.sh --no-package && popd; fi + +after_success: - if [ "$PPSSPP_BUILD_TYPE" == "Linux" ]; then ./test.py; fi -# For now, Android clang seems to be failing to build. matrix: exclude: - compiler: clang env: PPSSPP_BUILD_TYPE=Android + - compiler: clang + env: PPSSPP_BUILD_TYPE=Blackberry diff --git a/Blackberry/bb.toolchain.cmake b/Blackberry/bb.toolchain.cmake new file mode 100644 index 0000000000..ef54e24def --- /dev/null +++ b/Blackberry/bb.toolchain.cmake @@ -0,0 +1,25 @@ +# Standard settings +set (CMAKE_SYSTEM_NAME QNX) +set (CMAKE_SYSTEM_VERSION 1) +if (SIMULATOR) + set (CMAKE_SYSTEM_PROCESSOR x86) +else() + set (CMAKE_SYSTEM_PROCESSOR armv7) +endif() +set (UNIX True) + +include (CMakeForceCompiler) +CMAKE_FORCE_C_COMPILER (nto${CMAKE_SYSTEM_PROCESSOR}-gcc nto${CMAKE_SYSTEM_PROCESSOR}-gcc) +CMAKE_FORCE_CXX_COMPILER (nto${CMAKE_SYSTEM_PROCESSOR}-g++ nto${CMAKE_SYSTEM_PROCESSOR}-g++) +set (CMAKE_COMPILER_IS_GNUCXX True) +execute_process( COMMAND nto${CMAKE_SYSTEM_PROCESSOR}-gcc --version +OUTPUT_VARIABLE GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ) +string( REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" GCC_VERSION "${GCC_VERSION}" ) +set (CMAKE_C_COMPILER_VERSION ${GCC_VERSION}) +set (CMAKE_CXX_COMPILER_VERSION ${GCC_VERSION}) + +# Skip the platform compiler checks for cross compiling +set (CMAKE_CROSSCOMPILING TRUE) +set (CMAKE_C_COMPILER_WORKS TRUE) +set (CMAKE_CXX_COMPILER_WORKS TRUE) + diff --git a/Blackberry/build.sh b/Blackberry/build.sh index 89d2c98423..17ab8f6ff3 100755 --- a/Blackberry/build.sh +++ b/Blackberry/build.sh @@ -7,9 +7,15 @@ if [ -z "$BB_OS" ]; then fi echo "Building for Blackberry ${BB_OS}" -# Set up cmake with GCC 4.6.3 cross-compiler from PATH -CC=ntoarmv7-gcc CXX=ntoarmv7-g++ cmake -DBLACKBERRY=${BB_OS} .. +if [[ "$1" == "--simulator" ]]; then + SIM="-DSIMULATOR=ON" +fi + +cmake ${SIM} -DCMAKE_TOOLCHAIN_FILE=bb.toolchain.cmake -DBLACKBERRY=${BB_OS} .. | grep -v '^-- ' # Compile and create unsigned PPSSPP.bar with debugtoken -DEBUG="-devMode -debugToken ${HOME}/debugtoken.bar" -make -j4 && blackberry-nativepackager -package PPSSPP.bar bar-descriptor.xml $DEBUG +make -j4 +if [[ "$1" != "--no-package" ]]; then + DEBUG="-devMode -debugToken ${HOME}/debugtoken.bar" + blackberry-nativepackager -package PPSSPP.bar bar-descriptor.xml $DEBUG +fi diff --git a/Blackberry/simulator_build.sh b/Blackberry/simulator_build.sh deleted file mode 100755 index 314bed521a..0000000000 --- a/Blackberry/simulator_build.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -BB_OS=`cat ${QNX_TARGET}/etc/qversion 2>/dev/null` -if [ -z "$BB_OS" ]; then - echo "Could not find your Blackberry NDK. Please source bbndk-env.sh" - exit 1 -fi -echo "Building for Blackberry ${BB_OS} Simulator" - -# Set up cmake with GCC 4.6.3 cross-compiler from PATH -CC=ntox86-gcc CXX=ntox86-g++ cmake -DSIMULATOR=ON -DBLACKBERRY=${BB_OS} .. - -# Compile and create unsigned PPSSPP.bar with debugtoken -DEBUG="-devMode -debugToken ${HOME}/debugtoken.bar" -make -j4 && blackberry-nativepackager -package PPSSPP.bar bar-descriptor.xml $DEBUG diff --git a/CMakeLists.txt b/CMakeLists.txt index a235e29e5c..acba8f1701 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,6 @@ if(ANDROID) endif() if(BLACKBERRY) - set(CMAKE_SYSTEM_NAME "QNX") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS") endif() diff --git a/Core/MIPS/ARM/ArmRegCacheFPU.cpp b/Core/MIPS/ARM/ArmRegCacheFPU.cpp index 75fcd562a4..7476795a70 100644 --- a/Core/MIPS/ARM/ArmRegCacheFPU.cpp +++ b/Core/MIPS/ARM/ArmRegCacheFPU.cpp @@ -16,7 +16,6 @@ // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/. #include "base/logging.h" -#include "Common/ArmEmitter.h" #include "Common/CPUDetect.h" #include "Core/MIPS/ARM/ArmRegCacheFPU.h" diff --git a/Core/MIPS/ARM/ArmRegCacheFPU.h b/Core/MIPS/ARM/ArmRegCacheFPU.h index ebe16d9542..bcb7da73e3 100644 --- a/Core/MIPS/ARM/ArmRegCacheFPU.h +++ b/Core/MIPS/ARM/ArmRegCacheFPU.h @@ -21,9 +21,9 @@ #include "../MIPS.h" #include "../MIPSAnalyst.h" -#include "Common/ArmEmitter.h" #include "Core/MIPS/ARM/ArmRegCache.h" #include "Core/MIPS/MIPSVFPUUtils.h" +#include "Common/ArmEmitter.h" using namespace ArmGen; diff --git a/b.sh b/b.sh index cbc12bf46c..cf3f3750d8 100755 --- a/b.sh +++ b/b.sh @@ -1,3 +1,11 @@ cp -r android/assets . mkdir -p build -(cd build; cmake .. && make -j3 $1; cd ..) +if [[ "$1" == "--headless" ]]; then + HEADLESS="-DHEADLESS=ON" +else + MAKE_OPT="$1" +fi +pushd build +cmake $HEADLESS .. | grep -v '^-- ' +make -j4 $MAKE_OPT +popd