Browse Source

Enhance MinGW toolchain file to support ccache.
This is in preparation for using ccache in the container-based CI builds later.
Reinstate MinGW 32-bit D3D9 build jobs which were accidentally got deleted.

Yao Wei Tjong 姚伟忠 10 years ago
parent
commit
f94d4d26d1
3 changed files with 19 additions and 2 deletions
  1. 2 0
      .travis.yml
  2. 7 0
      CMake/Modules/Urho3D-CMake-common.cmake
  3. 10 2
      CMake/Toolchains/mingw.toolchain.cmake

+ 2 - 0
.travis.yml

@@ -42,6 +42,8 @@ env:
     - 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
+    - WINDOWS=1 URHO3D_LIB_TYPE=STATIC URHO3D_64BIT=0 URHO3D_OPENGL=0
+    - WINDOWS=1 URHO3D_LIB_TYPE=SHARED URHO3D_64BIT=0 URHO3D_OPENGL=0
     # WINDOWS=1 URHO3D_LIB_TYPE=STATIC URHO3D_64BIT=0 URHO3D_D3D11=1
     # WINDOWS=1 URHO3D_LIB_TYPE=SHARED URHO3D_64BIT=0 URHO3D_D3D11=1
 matrix:

+ 7 - 0
CMake/Modules/Urho3D-CMake-common.cmake

@@ -168,6 +168,13 @@ endif ()
 if (MINGW AND CMAKE_CROSSCOMPILING)
     set (MINGW_PREFIX "" CACHE STRING "Prefix path to MinGW cross-compiler tools (MinGW cross-compiling build only)")
     set (MINGW_SYSROOT "" CACHE PATH "Path to MinGW system root (MinGW cross-compiling build only)")
+    # When cross-compiling then we are most probably in Unix-alike host environment which should not have problem to handle long include dirs
+    # This change is required to keep ccache happy because it does not like the CMake generated include response file
+    foreach (lang C CXX)
+        foreach (cat OBJECTS INCLUDES)
+            unset (CMAKE_${lang}_USE_RESPONSE_FILE_FOR_${cat})
+        endforeach ()
+    endforeach ()
 endif ()
 if (RPI)
     if (NOT RPI_SUPPORTED_ABIS)

+ 10 - 2
CMake/Toolchains/mingw.toolchain.cmake

@@ -40,8 +40,16 @@ if (NOT EXISTS ${MINGW_PREFIX}-gcc)
     message (FATAL_ERROR "Could not find MinGW cross compilation tool. "
         "Use MINGW_PREFIX environment variable or build option to specify the location of the toolchain.")
 endif ()
-set (CMAKE_C_COMPILER   ${MINGW_PREFIX}-gcc     CACHE PATH "C compiler")
-set (CMAKE_CXX_COMPILER ${MINGW_PREFIX}-g++     CACHE PATH "C++ compiler")
+set (COMPILER_PREFIX ${MINGW_PREFIX})
+if ($ENV{USE_CCACHE})
+    execute_process (COMMAND whereis -b ccache COMMAND grep -o \\S*lib\\S* RESULT_VARIABLE EXIT_CODE OUTPUT_VARIABLE CCACHE_SYMLINK ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (EXIT_CODE EQUAL 0)
+        get_filename_component (NAME ${MINGW_PREFIX} NAME)
+        set (COMPILER_PREFIX ${CCACHE_SYMLINK}/${NAME})
+    endif ()
+endif ()
+set (CMAKE_C_COMPILER   ${COMPILER_PREFIX}-gcc  CACHE PATH "C compiler")
+set (CMAKE_CXX_COMPILER ${COMPILER_PREFIX}-g++  CACHE PATH "C++ compiler")
 set (CMAKE_STRIP        ${MINGW_PREFIX}-strip   CACHE PATH "strip")
 set (CMAKE_AR           ${MINGW_PREFIX}-ar      CACHE PATH "archive")
 set (CMAKE_LINKER       ${MINGW_PREFIX}-ld      CACHE PATH "linker")