瀏覽代碼

For Travis CI - add CI build using Clang, optimize for MinGW install.

Yao Wei Tjong 姚伟忠 11 年之前
父節點
當前提交
fca678c3b9
共有 2 個文件被更改,包括 31 次插入17 次删除
  1. 21 14
      .travis.yml
  2. 10 3
      Source/CMake/Modules/Urho3D-CMake-common.cmake

+ 21 - 14
.travis.yml

@@ -20,6 +20,8 @@
 # THE SOFTWARE.
 #
 
+language: cpp
+compiler: gcc
 env:
   global:
     - secure: DE9IUM+pIV757GU0ccfDJhA752442pKu3DyBthrzHW9+GbsqbfuJOx045CYNN5vOWutFPC0A51B9WxhLNpXXqD3mfU8MhP1gkF7SskrHvcAPrCyfdqZf1Q8XDP5phm2KbHhhwxQMYmmicd6yj8DPNy2wRoSgPSDp/ZUDk51XZDU=
@@ -27,18 +29,25 @@ env:
     - DISPLAY=:99.0
     - NUMJOBS=3
   matrix:
-    - LINUX=1                              URHO3D_LIB_TYPE=STATIC SITE_UPDATE=1
-    - LINUX=1                              URHO3D_LIB_TYPE=SHARED
-    - WINDOWS=1 ARCH=x86_64                URHO3D_LIB_TYPE=STATIC
-    - WINDOWS=1 ARCH=x86_64                URHO3D_LIB_TYPE=SHARED
-    - LINUX=1               URHO3D_64BIT=0 URHO3D_LIB_TYPE=STATIC
-    - LINUX=1               URHO3D_64BIT=0 URHO3D_LIB_TYPE=SHARED
-    - WINDOWS=1 ARCH=i686   URHO3D_64BIT=0 URHO3D_LIB_TYPE=STATIC
-    - WINDOWS=1 ARCH=i686   URHO3D_64BIT=0 URHO3D_LIB_TYPE=SHARED
+    - LINUX=1   URHO3D_LIB_TYPE=STATIC SITE_UPDATE=1
+    - LINUX=1   URHO3D_LIB_TYPE=SHARED
+    - WINDOWS=1 URHO3D_LIB_TYPE=STATIC
+    - WINDOWS=1 URHO3D_LIB_TYPE=SHARED
+    - LINUX=1   URHO3D_LIB_TYPE=STATIC URHO3D_64BIT=0
+    - LINUX=1   URHO3D_LIB_TYPE=SHARED URHO3D_64BIT=0
+    - WINDOWS=1 URHO3D_LIB_TYPE=STATIC URHO3D_64BIT=0
+    - WINDOWS=1 URHO3D_LIB_TYPE=SHARED URHO3D_64BIT=0
 matrix:
   fast_finish: true
-language: cpp
-compiler: gcc
+  include:
+    - compiler: clang
+      env: LINUX=1 URHO3D_LIB_TYPE=STATIC
+    - compiler: clang
+      env: LINUX=1 URHO3D_LIB_TYPE=SHARED
+    - compiler: clang
+      env: LINUX=1 URHO3D_LIB_TYPE=STATIC URHO3D_64BIT=0
+    - compiler: clang
+      env: LINUX=1 URHO3D_LIB_TYPE=SHARED URHO3D_64BIT=0
 before_install:
   - free -tm
   - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then export SITE_UPDATE_ON_MASTER_COMMIT=$SITE_UPDATE; export RELEASE_TAG=$(git describe --exact-match $TRAVIS_COMMIT 2>/dev/null); export COMMIT_MESSAGE=$(git log --format=%B -n 1 $TRAVIS_COMMIT); if [ $RELEASE_TAG ] || echo $COMMIT_MESSAGE |grep -cq '\[ci package\]'; then export PACKAGE_UPLOAD=1; fi; fi
@@ -46,11 +55,9 @@ before_install:
   - travis_retry sudo apt-get update -q -y
 install:
   - travis_retry sudo apt-get install -q -y --no-install-recommends libasound2-dev
-  - if [ $LINUX ] && [ "$URHO3D_64BIT" == "0" ]; then travis_retry sudo apt-get remove -q -y gvfs-daemons && travis_retry sudo apt-get install -q -y libxrandr-dev:i386 libglapi-mesa:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev:i386 libxext-dev:i386 libxrender-dev:i386 g++-multilib && export CMAKE_PREFIX_PATH=/usr/lib/i386-linux-gnu; fi
+  - if [ $LINUX ]; then if [ "$URHO3D_64BIT" == "0" ]; then travis_retry sudo apt-get remove -q -y gvfs-daemons && travis_retry sudo apt-get install -q -y libxrandr-dev:i386 libglapi-mesa:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev:i386 libxext-dev:i386 libxrender-dev:i386 g++-multilib && export CMAKE_PREFIX_PATH=/usr/lib/i386-linux-gnu; else bash -e /etc/init.d/xvfb start; fi && if [ $PACKAGE_UPLOAD ]; then travis_retry sudo apt-get install -q -y rpm; fi; fi
+  - if [ $WINDOWS ]; then if [ "$URHO3D_64BIT" == "0" ]; then travis_retry sudo apt-get install -q -y gcc-mingw-w64-i686 g++-mingw-w64-i686 binutils-mingw-w64-i686 && export ARCH=i686; else travis_retry sudo apt-get install -q -y gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 && export ARCH=x86_64; fi && travis_retry sudo apt-get install -q -y g++-multilib && export MINGW_PREFIX=/usr/bin/${ARCH}-w64-mingw32; fi
   - if [ "$SITE_UPDATE_ON_MASTER_COMMIT" -o "$PACKAGE_UPLOAD" ]; then travis_retry sudo apt-get install -q -y --no-install-recommends doxygen graphviz; fi
-  - if [ $WINDOWS ]; then travis_retry sudo apt-get install -q -y gcc-mingw-w64 gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 g++-mingw-w64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 binutils-mingw-w64 binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-multilib && export MINGW_PREFIX=/usr/bin/${ARCH}-w64-mingw32; fi
-  - if [ $PACKAGE_UPLOAD ] && [ "$LINUX" -o "$RPI" ]; then travis_retry sudo apt-get install -q -y rpm; fi
-  - if [ "$LINUX" ] && [ ! $URHO3D_64BIT ]; then bash -e /etc/init.d/xvfb start; fi
   - free -tm
 script: rake ci
 after_success:

+ 10 - 3
Source/CMake/Modules/Urho3D-CMake-common.cmake

@@ -321,9 +321,16 @@ else ()
         set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG -D_DEBUG")
         set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -D_DEBUG")
     endif ()
-    if (CMAKE_CXX_COMPILER_ID STREQUAL Clang AND CMAKE_GENERATOR STREQUAL Ninja)
-        set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics")
-        set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics")
+    if (CMAKE_CXX_COMPILER_ID STREQUAL Clang)
+        if (CMAKE_GENERATOR STREQUAL Ninja)
+            set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics")
+            set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics")
+        endif ()
+        # Temporary workaround for Travis CI VM as Ubuntu 12.04 LTS still uses old glibc header files that do not have the necessary patch for Clang to work correctly
+        # TODO: Remove this workaround when Travis CI VM has been migrated to Ubuntu 14.04 LTS (or hopefully it will be CentOS :)
+        if (DEFINED ENV{CI} AND "$ENV{LINUX}" STREQUAL 1)
+            add_definitions (-D__extern_always_inline=inline)
+        endif ()
     endif ()
 endif ()