Browse Source

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 姚伟忠 12 years ago
parent
commit
5a469eea39
3 changed files with 36 additions and 21 deletions
  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=SHARED ENABLE_64BIT=1 SITE_UPDATE=1
     - URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=0
     - URHO3D_LIB_TYPE=STATIC ENABLE_64BIT=0
     - URHO3D_LIB_TYPE=SHARED 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
 language: cpp
 compiler: gcc
 compiler: gcc
 before_install:
 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
     - 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
     - sudo apt-get update -q -y
 install:
 install:
@@ -26,6 +27,7 @@ install:
     - rvm gemset use global && gem install rake
     - 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 "[ 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 "[ $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
     - bash -e /etc/init.d/xvfb start
 script: rake travis_ci
 script: rake travis_ci
 after_success: rake travis_ci_site_update
 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)
 # Usage: NOT intended to be used manually (if you insist then try: rake travis_ci)
 desc 'Configure, build, and test Urho3D project'
 desc 'Configure, build, and test Urho3D project'
 task :travis_ci do
 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
     # 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/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'
     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
     # Reconfigure Android build one more time now that we have the tools built
     ENV['SKIP_NATIVE'] = '1'
     ENV['SKIP_NATIVE'] = '1'
     system './cmake_gcc.sh' or abort 'Failed to reconfigure Urho3D library for Android build'
     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
   else
-    PLATFORM_PREFIX = ''
+    platform_prefix = ''
   end
   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
   else
-    TEST = '&& make test'
+    test = ''
   end
   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
   # 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
 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)
 # 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
 #ifdef WIN32
 #ifndef _MSC_VER
 #ifndef _MSC_VER
-#define _WIN32_IE 0x400
+#define _WIN32_IE 0x501
 #endif
 #endif
 #include <windows.h>
 #include <windows.h>
 #include <shellapi.h>
 #include <shellapi.h>