From 6f5db32d147166ab1617c66844e3297eededc704 Mon Sep 17 00:00:00 2001
From: Gabriele Contini <gcontini@users.noreply.github.com>
Date: 摹曛, 19 9月 2019 20:20:18 +0800
Subject: [PATCH] Feature/mingw cross compile (#51)

---
 .travis.yml |  120 +++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 90 insertions(+), 30 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 7fd8a73..8c0456d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -21,6 +21,10 @@
              - libboost-system-dev
              - libboost-thread-dev
              - libboost-date-time-dev
+     script: 
+         - cmake --build . --target install
+         - ctest
+         - ctest -T memcheck        
    - os: linux
      dist: xenial
      name: "Ubuntu 16.04 - Travis CI VM"
@@ -39,64 +43,120 @@
              - libboost-system-dev
              - libboost-thread-dev
              - libboost-date-time-dev
-
+   - os: linux
+     dist: bionic
+     name: "Ubuntu 18.04 - Travis CI VM - Debug build"
+     addons:
+        apt:
+          packages:
+             - cmake
+             - valgrind
+             - libssl-dev
+             - zlib1g-dev
+             - libboost-dev
+             - libboost-test-dev
+             - libboost-filesystem-dev
+             - libboost-iostreams-dev
+             - libboost-program-options-dev
+             - libboost-system-dev
+             - libboost-thread-dev
+             - libboost-date-time-dev
+     before_script:
+         - mkdir build
+         - cd build && cmake -DCMAKE_INSTALL_PREFIX=../../install -DCMAKE_BUILD_TYPE=Debug ..
+     script: 
+         - cmake --build . --target install
+         - ctest
+         - ctest -T memcheck
+         
    - os: linux
      dist: bionic
      name: "CentOS-7 Docker"
      before_script: 
         - docker run --name centos7_toconfigure -v `pwd`:/root/open-license-manager centos:centos7 /bin/bash -c 
-            "yum -y update && yum -y install cmake boost boost-devel boost-static openssl openssl-devel gcc-c++ valgrind valgrind-devel glibc-static centos-release-scl-rh && 
-              yum -y install devtoolset-3-gcc devtoolset-3-gcc-c++ && cd /root/open-license-manager && mkdir build && cd build && 
-              CC=/opt/rh/devtoolset-3/root/usr/bin/gcc XX=/opt/rh/devtoolset-3/root/usr/bin/g++ cmake .."
+            "yum -y update && yum -y install install centos-release-scl &&
+              yum -y install cmake boost boost-devel boost-static openssl openssl-devel glibc-static devtoolset-7-toolchain devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-valgrind-devel && 
+              cd /root/open-license-manager && mkdir build && cd build && 
+              CC=/opt/rh/devtoolset-7/root/usr/bin/gcc CXX=/opt/rh/devtoolset-7/root/usr/bin/g++ cmake .."
         - docker commit centos7_toconfigure centos7_configured
      script: 
         - docker run --name centos7_make -v `pwd`:/root/open-license-manager centos7_configured /bin/bash -c 
             "cd /root/open-license-manager/build && make && make install && VIRT_ENV=CONTAINER make test"
-            
+   - os: linux
+     dist: bionic
+     name: "Ubuntu 18.04 - MinGW cross-compile for Windows x64"
+     addons:
+        apt:
+          packages:
+             - cmake 
+             - binutils-mingw-w64 
+             - mingw-w64 
+             - mingw-w64-tools 
+             - mingw-w64-x86-64-dev 
+             - wine-development
+     before_script:
+        - mkdir build
+        - cd build
+        - wget -c https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.bz2
+        - tar xjf boost_1_71_0.tar.bz2
+        - sudo ln -s /usr/bin/x86_64-w64-mingw32-g++ /usr/local/bin/g++-mingw
+        - cd boost_1_71_0
+        - ./bootstrap.sh
+        - travis_wait 30 ./b2 toolset=gcc-mingw target-os=windows address-model=64 --with-date_time --with-test --with-filesystem --with-program_options --with-regex --with-serialization --with-system runtime-link=static --prefix=./dist release install
+        - cd ..
+        - cmake -DCMAKE_TOOLCHAIN_FILE=../modules/toolchain-ubuntu-mingw64.cmake -DCMAKE_INSTALL_PREFIX=../../install -DBOOST_ROOT=$PWD/boost_1_71_0/dist  ..
    - os: windows
      name: "Widnows server 1803 - Visual Studio 15 2017 Win64 - (/MD)"
-     env:
-        - CACHE_NAME=boost
-     cache:
-         directories:
-             - "/C/local/boost"
      before_script:
-         #- Regsvr32.exe "C:\Widnows\System32\rsaenh.dll"
-         #Not sure this is necessary let's leave it here for some time, see if there are 
-         #differences with the build (/MT)
-         - sc stop CryptSvc
-         - travis_wait 30 ./windows_download_boost.bat
-         - cd "/C/Users/travis/build/open-license-manager/open-license-manager"
+         - travis_wait 40 ./windows_download_boost.bat
+         - cd "${TRAVIS_BUILD_DIR}"
          - mkdir build
          - cd build && cmake -G "Visual Studio 15 2017 Win64" -DBOOST_ROOT="C:/local/boost" ..
-     script:
-         - cmake --build . --target install --config Release
-         - ctest -C Release
 
    - os: windows
      name: "Widnows server 1803 - Visual Studio 15 2017 Win64 - (/MT)"
+     before_script:
+         - travis_wait 40 ./windows_download_boost.bat
+         - cd "${TRAVIS_BUILD_DIR}"
+         - mkdir build
+         - cd build && cmake -G "Visual Studio 15 2017 Win64" -DBOOST_ROOT="C:/local/boost" -DSTATIC_RUNTIME=1 ..
+          
+   - os: windows
+     name: "Widnows server 1803 - MinGW Win64"
      env:
-        - CACHE_NAME=boost
+        - CACHE_NAME=boost-mingw
      cache:
+         name: boost-mingw
          directories:
              - "/C/local/boost"
      before_script:
-         - travis_wait 30 ./windows_download_boost.bat
-         - cd "/C/Users/travis/build/open-license-manager/open-license-manager"
+         - | 
+           if [ -d "/C/local/boost/lib" ]; then
+               echo "Boost already installed"
+           else
+               echo "Boost not cached, compiling it"
+               wget -q https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.7z
+               echo "Boost downloaded"
+               travis_wait 20 7z x boost_1_68_0.7z -oC:/local
+               cd "C:/local/boost_1_68_0"
+               ./bootstrap.bat gcc 
+               travis_wait 40 ./b2.exe -d0 --with-date_time --with-test --with-filesystem --with-program_options --with-regex --with-serialization --with-system runtime-link=static toolset=gcc --prefix=C:/local/boost install
+               echo "Boost installed"
+               cd /C/local/boost/lib
+               dir 
+           fi
+         - cd "${TRAVIS_BUILD_DIR}"
          - mkdir build
-         - cd build && cmake -G "Visual Studio 15 2017 Win64" -DBOOST_ROOT="C:/local/boost" -DSTATIC_RUNTIME=1 ..
-     script:
-         - cmake --build . --target install --config Release
-         - ctest -C Release
-           
+         - cd build && cmake -G "MinGW Makefiles" --trace-expand -DBOOST_ROOT="C:/local/boost" -DBoost_ARCHITECTURE="-x64" -DCMAKE_CXX_COMPILER_ARCHITECTURE_ID="x64" -DCMAKE_SH="CMAKE_SH-NOTFOUND" ..
+         
 env:
     - CTEST_OUTPUT_ON_FAILURE=1      
+    
 before_script:
     - mkdir build
     - cd build && cmake -DCMAKE_INSTALL_PREFIX=../../install ..
 
 script: 
-    - make 
-    - make install
-    - make test
+    - cmake --build . --target install --config Release
+    - ctest -C Release
     

--
Gitblit v1.9.1