diff --git a/.travis.yml b/.travis.yml index d48772fd07..eab3ad5aab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,11 @@ language: cpp +os: + - linux + - osx + +osx_image: xcode6.4 + compiler: - clang - gcc @@ -12,47 +18,58 @@ branches: except: - ppu_recompiler +matrix: + exclude: + - os: osx + compiler: gcc + git: submodules: false before_install: # shutdown services on Travis, which may have a memory impact # show memory usage before and after shutdown of services - - sudo service --status-all - - sudo free -m -t - - sudo /etc/init.d/mysql stop - - sudo /etc/init.d/postgresql stop - - sudo /etc/init.d/couchdb stop - - sudo /etc/init.d/redis-server stop - - sudo free -m -t + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then + sudo service --status-all; + sudo free -m -t; + sudo /etc/init.d/mysql stop; + sudo /etc/init.d/postgresql stop; + sudo /etc/init.d/couchdb stop; + sudo /etc/init.d/redis-server stop; + sudo free -m -t; + fi; - - echo "yes" | sudo apt-key adv --fetch-keys http://repos.codelite.org/CodeLite.asc - - echo "yes" | sudo apt-add-repository 'deb http://repos.codelite.org/wx3.0/ubuntu/ precise universe' -# Add later version of Clang, apt from llvm.org. the repository link is for development version. - - echo "yes" | sudo add-apt-repository 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu precise main' - - echo "yes" | sudo add-apt-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.6 main' - - wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -; -# And the libstdc++4.9 of GCC from ppa - - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - - sudo apt-get update - - sudo apt-get install libwxgtk3.0-dev libopenal-dev freeglut3-dev libglew-dev libc6-dev llvm-3.6 llvm-3.6-dev libedit-dev - - sudo apt-get install aria2 -qq - - download_extract() { aria2c -x 16 $1 -o $2 && tar -xf $2; } - - if [ "$CXX" = "g++" ]; then + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then + echo "yes" | sudo apt-key adv --fetch-keys 'http://repos.codelite.org/CodeLite.asc'; + echo "yes" | sudo apt-add-repository 'deb http://repos.codelite.org/wx3.0/ubuntu/ precise universe'; + echo "yes" | sudo add-apt-repository 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu precise main'; + echo "yes" | sudo add-apt-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.6 main'; + wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -; + sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y; + sudo apt-get update; + sudo apt-get install libwxgtk3.0-dev libopenal-dev freeglut3-dev libglew-dev libc6-dev llvm-3.6 llvm-3.6-dev libedit-dev; + sudo apt-get install aria2 -qq; + download_extract() { aria2c -x 16 $1 -o $2 && tar -xf $2; }; + fi; + - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$CXX" = "g++" ]; then sudo apt-get install -qq g++-4.9; export CXX="g++-4.9" CC="gcc-4.9" CXXFLAGS="-Wno-format-security"; export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'; - else + elif [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get install -qq --allow-unauthenticated clang-3.6 libstdc++-4.8-dev; export CXX="clang++-3.6" CC="clang-3.6"; fi; # Travis uses CMake 2.8.7. We require 2.8.8. Grab latest - - sudo apt-get install lib32stdc++6 -qq && - aria2c -x 16 http://www.cmake.org/files/v3.0/cmake-3.0.0-Linux-i386.sh && - chmod a+x cmake-3.0.0-Linux-i386.sh && - sudo ./cmake-3.0.0-Linux-i386.sh --skip-license --prefix=/usr; # Add coverall for C++ so coverall.io could be triggered. Even it should be --coverage and gcov. - - sudo pip install cpp-coveralls + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then + sudo apt-get install lib32stdc++6 -qq && + aria2c -x 16 http://www.cmake.org/files/v3.0/cmake-3.0.0-Linux-i386.sh && + chmod a+x cmake-3.0.0-Linux-i386.sh && + sudo ./cmake-3.0.0-Linux-i386.sh --skip-license --prefix=/usr; + sudo pip install cpp-coveralls; + else + brew install glew wxwidgets; + fi; before_script: - git submodule update --init asmjit ffmpeg llvm @@ -82,7 +99,8 @@ script: after_success: - if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then coveralls --extension .c --extension .cpp --extension .h; fi after_failure: -# show memory usage again - - sudo free -m -t -# show actions of the OOM killer - - sudo dmesg +# show memory usage again and show actions of the OOM killer + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then + sudo free -m -t; + sudo dmesg; + fi; diff --git a/Utilities/BEType.h b/Utilities/BEType.h index 14fc479a04..19a725702c 100644 --- a/Utilities/BEType.h +++ b/Utilities/BEType.h @@ -1,5 +1,11 @@ #pragma once +#ifdef _MSC_VER +#include +#else +#include +#endif + #define IS_LE_MACHINE // only draft union u128 diff --git a/Utilities/Thread.cpp b/Utilities/Thread.cpp index 4913436ace..67ad785449 100644 --- a/Utilities/Thread.cpp +++ b/Utilities/Thread.cpp @@ -1234,7 +1234,7 @@ thread_t::thread_t(std::function name, std::function func start(std::move(name), func); } -thread_t::~thread_t() noexcept(false) +thread_t::~thread_t() //noexcept(false) { if (m_thread) { diff --git a/Utilities/Thread.h b/Utilities/Thread.h index 3c1a63aa2d..a7b087ce2c 100644 --- a/Utilities/Thread.h +++ b/Utilities/Thread.h @@ -49,7 +49,7 @@ public: thread_t(std::function name, std::function func); // destructor, joins automatically (questionable, don't rely on this functionality in derived destructors) - virtual ~thread_t() noexcept(false); + virtual ~thread_t() /*noexcept(false) compile error on osx*/; thread_t(const thread_t&) = delete; diff --git a/appveyor.yml b/appveyor.yml index c00686952d..6c83526dd6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,7 +5,7 @@ configuration: - ReleaseLLVM platform: x64 clone_folder: c:\rpcs3 -clone_depth: 1 +clone_depth: 3 test: off branches: diff --git a/rpcs3/CMakeLists.txt b/rpcs3/CMakeLists.txt index 85acb83b54..4b2ffbfcf3 100644 --- a/rpcs3/CMakeLists.txt +++ b/rpcs3/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 2.8.12) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake_modules") +set(CMAKE_VERBOSE_MAKEFILE ON) include(cotire) project(rpcs3) @@ -18,8 +19,10 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() # Warnings add_compile_options(-Wno-attributes -Wno-enum-compare -Wno-invalid-offsetof) -elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - # TODO: stdlib? +elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + if(APPLE) + add_compile_options(-stdlib=libc++) # TODO: stdlib? + endif() endif() if(NOT MSVC) @@ -59,13 +62,26 @@ EndIf() set(CMAKE_MODULE_PATH "${RPCS3_SRC_DIR}/cmake_modules") if(NOT WIN32) - add_definitions(-DGL_GLEXT_PROTOTYPES) - add_definitions(-DGLX_GLXEXT_PROTOTYPES) + add_definitions(-DGL_GLEXT_PROTOTYPES) + add_definitions(-DGLX_GLXEXT_PROTOTYPES) endif() find_package(wxWidgets COMPONENTS core base net aui gl xml REQUIRED) if(NOT WIN32) - find_package(GLEW REQUIRED) + if(APPLE) + find_path(GLEW_INCLUDE_DIR GL/glew.h + /usr/include/GL + /usr/openwin/share/include + /usr/openwin/include + /usr/X11R6/include + /usr/include/X11 + /opt/graphics/OpenGL/include + /opt/graphics/OpenGL/contrib/libglew + /usr/local/include + ) + endif() + find_package(GLEW REQUIRED) + message("${GLEW_LIBRARY} AND ${GLEW_INCLUDE_DIR}") endif() find_package(OpenGL REQUIRED) find_package(OpenAL REQUIRED) @@ -82,6 +98,7 @@ else() endif() include_directories( +${GLEW_INCLUDE_DIR} ${wxWidgets_INCLUDE_DIRS} ${OPENAL_INCLUDE_DIR} ${LLVM_INCLUDE_DIRS}