Explorar el Código

Fix MinGW cross compiling build on Ubuntu host system.
Attempt to add CI build for Windows platform using MinGW cross compiling toolchain.

Yao Wei Tjong 姚伟忠 hace 12 años
padre
commit
5a469eea39
Se han modificado 3 ficheros con 36 adiciones y 21 borrados
  1. 11 9
      .travis.yml
  2. 24 11
      Rakefile
  3. 1 1
      Source/Engine/IO/FileSystem.cpp

+ 11 - 9
.travis.yml

@@ -7,18 +7,19 @@ env:
     - URHO3D_LIB_TYPE=SHARED ENABLE_64BIT=1 SITE_UPDATE=1
     - URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=0
     - URHO3D_LIB_TYPE=SHARED ENABLE_64BIT=0
-    - URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=0 ANDROID_NDK=1
-    - URHO3D_LIB_TYPE=SHARED ENABLE_64BIT=0 ANDROID_NDK=1
-#matrix:
-#  allow_failures:
-#    - env: URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=0
-#    - env: URHO3D_LIB_TYPE=SHARED ENABLE_64BIT=0
-#    - env: URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=0 ANDROID_NDK=1
-#    - env: URHO3D_LIB_TYPE=SHARED ENABLE_64BIT=0 ANDROID_NDK=1
+    - URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=0 ANDROID=1
+    - URHO3D_LIB_TYPE=SHARED ENABLE_64BIT=0 ANDROID=1
+    - URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=1 WINDOWS=1
+    - URHO3D_LIB_TYPE=SHARED ENABLE_64BIT=1 WINDOWS=1
+matrix:
+  fast_finish: true
+  allow_failures:
+    - env: URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=1 WINDOWS=1
+    - env: URHO3D_LIB_TYPE=SHARED ENABLE_64BIT=1 WINDOWS=1
 language: cpp
 compiler: gcc
 before_install:
-    - bash -c "[ $ANDROID_NDK ]" && wget -q http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2 && tar xjf *.bz2 && rm *.bz2 && ln -s android-ndk* android-ndk && export ANDROID_NDK=$(pwd)/android-ndk || true
+    - bash -c "[ $ANDROID ]" && wget -q http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2 && tar xjf *.bz2 && rm *.bz2 && ln -s android-ndk* android-ndk && export ANDROID_NDK=$(pwd)/android-ndk || true
     - bash -c "[ $SITE_UPDATE ] && [ $TRAVIS_PULL_REQUEST == 'false' ]" && sudo add-apt-repository ppa:george-edison55/precise-backports -y || true
     - sudo apt-get update -q -y
 install:
@@ -26,6 +27,7 @@ install:
     - rvm gemset use global && gem install rake
     - bash -c "[ x$ENABLE_64BIT == 'x0' ]" && sudo apt-get remove -q -y gvfs-daemons && sudo apt-get install -q -y libxrandr-dev:i386 libgl1-mesa-dev:i386 libxext-dev:i386 libxrender-dev:i386 g++-multilib && export CMAKE_PREFIX_PATH=/usr/lib/i386-linux-gnu || true
     - bash -c "[ $SITE_UPDATE ] && [ $TRAVIS_PULL_REQUEST == 'false' ]" && sudo apt-get install -q -y --no-install-recommends doxygen graphviz || true
+    - bash -c "[ $WINDOWS ]" && sudo apt-get install -q -y g++-mingw-w64 && export MINGW_PREFIX=/usr/bin/x86_64-w64 MINGW_ROOT=/usr/x86_64-w64-mingw32 || true
     - bash -e /etc/init.d/xvfb start
 script: rake travis_ci
 after_success: rake travis_ci_site_update

+ 24 - 11
Rakefile

@@ -16,28 +16,41 @@ end
 # Usage: NOT intended to be used manually (if you insist then try: rake travis_ci)
 desc 'Configure, build, and test Urho3D project'
 task :travis_ci do
-  system './cmake_gcc.sh -DURHO3D_LIB_TYPE=$URHO3D_LIB_TYPE -DENABLE_64BIT=$ENABLE_64BIT -DENABLE_LUAJIT=1 -DENABLE_LUAJIT_AMALG=1 -DENABLE_SAMPLES=1 -DENABLE_TOOLS=1 -DENABLE_EXTRAS=1 -DENABLE_TESTING=1 -DCMAKE_BUILD_TYPE=Debug' or abort 'Failed to configure Urho3D library build'
-  if ENV['ANDROID_NDK']
+  if ENV['WINDOWS']
+    # LuaJIT on MinGW build is not possible on Ubuntu 12.04 LTS as its cross-compiler version is too old. Fallback to use Lua library instead.
+    jit = ''
+    amalg = ''
+    # Lua on MinGW build requires tolua++ tool to be built natively first
+    system 'MINGW_PREFIX= ./cmake_gcc.sh -DURHO3D_LIB_TYPE=$URHO3D_LIB_TYPE -DENABLE_64BIT=$ENABLE_64BIT -DENABLE_LUA=1 -DENABLE_TOOLS=0" or abort 'Failed to configure native build for tolua++ target'
+    system 'cd Build/ThirdParty/toluapp/src/bin && make' or abort 'Failed to build tolua++ tool'
+  else
+    jit = 'JIT'
+    amalg = '-DENABLE_LUAJIT_AMALG=1'
+  end
+  system './cmake_gcc.sh -DURHO3D_LIB_TYPE=$URHO3D_LIB_TYPE -DENABLE_64BIT=$ENABLE_64BIT -DENABLE_LUA#{jit}=1 #{amalg} -DENABLE_SAMPLES=1 -DENABLE_TOOLS=1 -DENABLE_EXTRAS=1 -DENABLE_TESTING=1 -DCMAKE_BUILD_TYPE=Debug' or abort 'Failed to configure Urho3D library build'
+  if ENV['ANDROID']
     # LuaJIT on Android build requires tolua++ and buildvm-android tools to be built natively first
     system 'cd Build/ThirdParty/toluapp/src/bin && make' or abort 'Failed to build tolua++ tool'
     system 'cd Build/ThirdParty/LuaJIT/generated/buildvm-android && make' or abort 'Failed to build buildvm-android tool'
     # Reconfigure Android build one more time now that we have the tools built
     ENV['SKIP_NATIVE'] = '1'
     system './cmake_gcc.sh' or abort 'Failed to reconfigure Urho3D library for Android build'
-    PLATFORM_PREFIX = 'android-'
+    platform_prefix = 'android-'
+  elsif ENV['WINDOWS']
+    platform_prefix = 'mingw-'
   else
-    PLATFORM_PREFIX = ''
+    platform_prefix = ''
   end
-  # Only 64-bit environment has virtual framebuffer X server support
-  if ENV['ENABLE_64BIT'].to_i == 0
-    TEST = ''
+  # Only 64-bit Linux environment with virtual framebuffer X server support and not MinGW build are capable to run tests
+  if ENV['ENABLE_64BIT'].to_i == 1 or ENV['WINDOWS'].to_i != 1
+    test = '&& make test'
   else
-    TEST = '&& make test'
+    test = ''
   end
-  system "cd #{PLATFORM_PREFIX}Build && make #{TEST}" or abort 'Failed to build or test Urho3D library'
+  system "cd #{platform_prefix}Build && make #{test}" or abort 'Failed to build or test Urho3D library'
   # Create a new project on the fly that uses newly built Urho3D library
-  scaffolding "#{PLATFORM_PREFIX}Build/generated/externallib"
-  system "URHO3D_HOME=`pwd`; export URHO3D_HOME && cd #{PLATFORM_PREFIX}Build/generated/externallib && echo '\nUsing Urho3D as external library in external project' && ./cmake_gcc.sh -DENABLE_64BIT=$ENABLE_64BIT -DENABLE_LUAJIT=1 -DENABLE_TESTING=1 -DCMAKE_BUILD_TYPE=Debug && cd #{PLATFORM_PREFIX}Build && make #{TEST}" or abort 'Failed to configure/build/test temporary project using Urho3D as external library' 
+  scaffolding "#{platform_prefix}Build/generated/externallib"
+  system "URHO3D_HOME=`pwd`; export URHO3D_HOME && cd #{platform_prefix}Build/generated/externallib && echo '\nUsing Urho3D as external library in external project' && ./cmake_gcc.sh -DENABLE_64BIT=$ENABLE_64BIT -DENABLE_LUA#{jit}=1 -DENABLE_TESTING=1 -DCMAKE_BUILD_TYPE=Debug && cd #{platform_prefix}Build && make #{test}" or abort 'Failed to configure/build/test temporary project using Urho3D as external library' 
 end
 
 # Usage: NOT intended to be used manually (if you insist then try: GIT_NAME=... GIT_EMAIL=... GH_TOKEN=... TRAVIS_BRANCH=master SITE_UPDATE=1 rake travis_ci_site_update)

+ 1 - 1
Source/Engine/IO/FileSystem.cpp

@@ -32,7 +32,7 @@
 
 #ifdef WIN32
 #ifndef _MSC_VER
-#define _WIN32_IE 0x400
+#define _WIN32_IE 0x501
 #endif
 #include <windows.h>
 #include <shellapi.h>