c++11 support: update the develop branch (#1819)

* Use appveyor.yaml from c++11 branch so that CI run ok.

* Use .travis.yml from the c++ branch so that Travis CI jobs run ok.

* Add c++11 scripts and Linux config so that Travis CI jobs are ok.

* Use mkdocumentation & mkrelease from c++11 branch.

* Use PocoDoc config files from c++11 branch.

* define POCO_ENABLE_C11 as the default

* CMake: ignore Crypto for now. To be fixed since it fails.

* Backport c++11 changes from the c++11 branch

* Add Cygwin config with c++11 setup.

* Update appveyor.yml from c++11 branch.
This commit is contained in:
zosrothko 2017-07-23 21:09:22 +02:00 committed by Aleksandar Fabijanic
parent 63447f0297
commit 7bf53d4f3f
16 changed files with 481 additions and 179 deletions

View File

@ -8,19 +8,15 @@ branches:
- /.*pp.eyor.*/
before_install:
# we need a recent version of CMake
# - sudo add-apt-repository -y ppa:andykimpe/cmake3
# linux prereqisite packages
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then wget --no-check-certificate https://www.cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.tar.gz; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then tar -xzvf cmake-3.2.3-Linux-x86_64.tar.gz; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PATH=$PWD/cmake-3.2.3-Linux-x86_64/bin:$PATH; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq -y libpcre3-dev libssl-dev libexpat1-dev; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq -y libpq-dev unixodbc-dev libmysqlclient-dev libsqlite3-dev; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq -y g++-arm-linux-gnueabi g++-arm-linux-gnueabihf clang-3.5; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq -y g++-arm-linux-gnueabi g++-arm-linux-gnueabihf; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq -y sloccount cppcheck; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq -y g++-4.8; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq -y gcc-5 g++-5; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5; fi
services:
- mongodb
@ -29,7 +25,7 @@ services:
- mysql
dist: trusty
sudo: required
sudo: enabled
addons:
postgresql: "9.3"
@ -64,104 +60,99 @@ matrix:
- export CC="clang"
- export CXX="clang++"
- $CXX --version
- clang++ -x c++ /dev/null -dM -E
- $CXX -x c++ /dev/null -dM -E
- ./configure --everything --omit=Data/ODBC,Data/MySQL,Data/PostgreSQL && make -s -j2 && sudo make install && ./travis/OSX/runtests.sh
- env: TEST_NAME="clang (make) bundled"
compiler: clang
script:
- sudo apt-get install -qq -y clang
- export CC="clang"
- export CXX="clang++"
- $CXX --version
- sudo apt-get install -qq -y libpcre3-dev libssl-dev libexpat1-dev
- ./configure --everything && make -s -j2 && ./travis/Linux/runtests.sh
#- env: TEST_NAME="clang 3.5.0 (make) bundled"
# ======================================= compiler error on generating debug info for auto return
#compiler: clang
# script:
# - export CC="clang"
# - export CXX="clang++"
# - $CXX --version
# - ./configure --config=Linux-clang --everything && make -s -j2 && ./travis/Linux/runtests.sh
- env: TEST_NAME="clang (make) unbundled"
compiler: clang
script:
- sudo apt-get install -qq -y clang
- export CC="clang"
- export CXX="clang++"
- $CXX --version
- ./configure --everything --unbundled && make -s -j2 && ./travis/Linux/runtests.sh
#- env: TEST_NAME="clang 3.5.0 (make) unbundled"
# ======================================= compiler error on generating debug info for auto return
# error: debug information for auto is not yet supported
# error: debug information for auto is not yet supported
# ** Creating dependency info for src/Timespan.cpp
# make[1]: *** [/home/travis/build/Kampbell/poco/CppUnit/obj/Linux/x86_64/debug_shared/TestRunner.o] Error 1 # compiler: clang
# =======================================
# script:
# - export CC="clang"
# - export CXX="clang++"
# - $CXX --version
# - ./configure --config=Linux-clang --everything --unbundled && make -s -j2 && ./travis/Linux/runtests.sh
- env: TEST_NAME="gcc 4.6 (make) bundled"
- env: TEST_NAME="gcc 5.4.1 (make) bundled"
compiler: gcc
script:
- export CC="gcc"
- export CXX="g++"
- $CXX --version
- ./configure --everything && make -s -j2 && ./travis/Linux/runtests.sh
- env: TEST_NAME="gcc 4.6 (make) unbundled"
compiler: gcc
script:
- export CC="gcc"
- export CXX="g++"
- $CXX --version
- sudo apt-get install -qq -y libpcre3-dev libssl-dev libexpat1-dev
- ./configure --everything --unbundled && make -s -j2 && ./travis/Linux/runtests.sh
- env: TEST_NAME="gcc 4.8 (make) bundled"
compiler: gcc
script:
- export CC="gcc-4.8"
- export CXX="g++-4.8"
- $CXX --version
- ./configure --everything && make -s -j2 && ./travis/Linux/runtests.sh
#- env: TEST_NAME="gcc 5.4.1 (make) unbundled"
# ======================================= unit tests failures due to unbundled pcre
# There was 1 error:
# 1: N7CppUnit10TestCallerI21RegularExpressionTestEE.testSubst2
# "St9bad_alloc: std::bad_alloc"
# in "<unknown>", line -1
#
# There were 4 failures:
# 1: N7CppUnit10TestCallerI21RegularExpressionTestEE.testMatch4
# "re.match("123 456", 0, matches) == 3"
# in "src/RegularExpressionTest.cpp", line 103
# 2: N7CppUnit10TestCallerI21RegularExpressionTestEE.testMatch6
# "expr.match("abcde", 0, 0)"
# in "src/RegularExpressionTest.cpp", line 136
# 3: N7CppUnit10TestCallerI21RegularExpressionTestEE.testSplit2
# "re.split("123 456", 0, strings) == 3"
# in "src/RegularExpressionTest.cpp", line 184
# 4: N7CppUnit10TestCallerI21RegularExpressionTestEE.testGroup
# "re.match("abcd 1234", 0, matches) == 3"
# in "src/RegularExpressionTest.cpp", line 271
#
# failed=Foundation
# =======================================
# compiler: gcc
# script:
# - $CXX --version
# - ./configure --everything --unbundled && make -s -j2 && ./travis/Linux/runtests.sh
- env: TEST_NAME="gcc 4.8 (make) unbundled"
compiler: gcc
script:
- sudo apt-get install -qq -y libpcre3-dev libssl-dev libexpat1-dev
- export CC="gcc-4.8"
- export CXX="g++-4.8"
- $CXX --version
- ./configure --everything --unbundled && make -s -j2 && ./travis/Linux/runtests.sh
- env: TEST_NAME="arm-linux-gnueabi- (make)"
compiler: gcc
script:
- ./configure --omit=Data/ODBC,Data/MySQL,Data/PostgreSQL,Crypto,NetSSL,PageCompiler && make -s -j2 CROSS_COMPILE=arm-linux-gnueabi- POCO_TARGET_OSARCH=armv7l
#- env: TEST_NAME="arm-linux-gnueabi-g++ (make)"
# compiler: gcc
# script:
# - arm-linux-gnueabi-g++ --version
# - arm-linux-gnueabi-g++ -x c++ /dev/null -dM -E
# - ./configure --omit=Data/ODBC,Data/MySQL,Data/PostgreSQL,Crypto,NetSSL,PageCompiler && make -s -j2 CROSS_COMPILE=arm-linux-gnueabi- POCO_TARGET_OSARCH=armv7l
- env: TEST_NAME="gcc 4.6 (CMake)"
- env: TEST_NAME="gcc 5.4.1 (CMake)"
compiler: gcc
script:
- export CC="gcc"
- export CXX="g++"
- $CXX --version
- source ./travis/ignored.sh
- export POCO_BASE=`pwd`
- mkdir cmake-build && cd cmake-build && cmake -DENABLE_TESTS=ON .. && make -s -j2 && ctest -VV -E Data && cd ..
- env: TEST_NAME="gcc 4.8 (CMake)"
compiler: gcc
script:
- export CC="gcc-4.8"
- export CXX="g++-4.8"
- $CXX --version
- source ./travis/ignored.sh
- export POCO_BASE=`pwd`
- mkdir cmake-build && cd cmake-build && cmake -DENABLE_TESTS=ON .. && make -s -j2 && ctest -VV -E Data && cd ..
- env: TEST_NAME="clang 3.4 (CMake)"
compiler: clang
script:
- source ./travis/ignored.sh
- export POCO_BASE=`pwd`
- mkdir cmake-build && cd cmake-build && cmake -DENABLE_TESTS=ON .. && make -s -j2 && ctest -VV -E Data && cd ..
#- env: TEST_NAME="clang (CMake)"
# compiler: clang
# script:
# - source ./travis/ignored.sh
# - export POCO_BASE=`pwd`
# - mkdir cmake-build && cd cmake-build && cmake -DENABLE_TESTS=ON .. && make -s -j2 && ctest -VV -E Data && cd ..
- env: TEST_NAME="arm-linux-gnueabi-g++ (CMake)"
compiler: gcc
script:
- export CC="arm-linux-gnueabi-gcc"
- export CXX="arm-linux-gnueabi-g++"
- $CXX --version
- source ./travis/ignored.sh
- export POCO_BASE=`pwd`
- mkdir cmake-build
- cd cmake-build && cmake -DENABLE_NETSSL=OFF -DENABLE_CRYPTO=OFF -DENABLE_TESTS=ON .. && make -s -j2 && cd ..
#- env: TEST_NAME="arm-linux-gnueabi-g++ (CMake)"
# ======================================= "arm-linux-gnueabi-g++: version 4.7.0: non compliant to c++11
# compiler: gcc
# script:
# - export CC="arm-linux-gnueabi-gcc"
# - export CXX="arm-linux-gnueabi-g++"
# - $CXX --version
# - source ./travis/ignored.sh
# - export POCO_BASE=`pwd`
# - mkdir cmake-build
# - cd cmake-build && cmake -DENABLE_NETSSL=OFF -DENABLE_CRYPTO=OFF -DENABLE_TESTS=ON .. && make -s -j2 && cd ..
- env: TEST_NAME="arm-linux-gnueabihf-g++ (CMake)"
compiler: gcc
@ -180,8 +171,6 @@ matrix:
- env: TEST_NAME="documentation & release"
compiler: gcc
script:
- export CC="gcc-4.8"
- export CXX="g++-4.8"
- $CXX --version
- . env.sh && mkdoc all && mkrel all

View File

@ -7,7 +7,7 @@
# ENABLE_TESTS
# ENABLE_SAMPLES
cmake_minimum_required(VERSION 3.0.0)
cmake_minimum_required(VERSION 3.1.0)
project(Poco)
@ -44,6 +44,32 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# Setup C/C++ compiler options
#################################################################################
option(DISABLE_CPP11 "Disable C++11 if available" OFF)
option(DISABLE_CPP14 "Disable C++14 if available" OFF)
if (DISABLE_CPP11 OR DISABLE_CPP14)
add_definitions(-DPOCO_DISABLE_CPP11)
if (DISABLE_CPP14)
add_definitions(-DPOCO_DISABLE_CPP14)
endif()
else()
# C++11/14 compiler flags
include(CXX11)
check_for_cxx11_compiler(CXX11_COMPILER)
# If a C++11 compiler is available, then set the appropriate flags
if(CXX11_COMPILER)
enable_cxx11()
check_for_cxx14_compiler(CXX14_COMPILER)
# If a C++14 compiler is available, then set the appropriate flags
if(CXX14_COMPILER)
enable_cxx14()
endif()
endif()
endif()
if(NOT MSVC_IDE)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING

View File

@ -29,7 +29,7 @@
// Define to enable C++11 support
// #define POCO_ENABLE_CPP11
#define POCO_ENABLE_CPP11
// Define to disable implicit linking

View File

@ -44,7 +44,7 @@
${PocoBuild}/*/doc/images
</resources>
<compiler>
<exec>${CXX}</exec>
<exec>${CXX} ${CXXFLAGS}</exec>
<options>
${Includes},
-I/usr/local/mysql/include,

View File

@ -41,7 +41,7 @@
${PocoBuild}/*/doc/images
</resources>
<compiler>
<exec>${CXX}</exec>
<exec>${CXX} ${CXXFLAGS}</exec>
<options>
${Includes},
-I/usr/local/mysql/include,

View File

@ -1,7 +1,7 @@
version: build {branch}-{build}
cache:
- C:\mysql-5.7.17-win32
- C:\mysql-5.7.18-win32
- C:\ProgramData\chocolatey
- C:\OpenSSL-Win32
- C:\OpenSSL-Win64
@ -36,6 +36,10 @@ services:
- postgresql94
image:
- Visual Studio 2017
platform:
- Win32
- x64
@ -50,58 +54,77 @@ configuration:
# -------------------------------------------------------------------------------------------
environment:
bundling: bundled
MYSQL32: C:\mysql-5.7.17-win32
MYSQL64: C:\Program Files\MySql\MySQL Server 5.7
POSTGRES32: C:\Program Files (x86)\PostgreSQL\9.4
POSTGRES64: C:\Program Files\PostgreSQL\9.4
bundling: bundled
MYSQL32URL: http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.18-win32.zip
MYSQL32ZIP: mysql-5.7.18-win32.zip
MYSQL32: C:\mysql-5.7.18-win32
MYSQL64: C:\Program Files\MySql\MySQL Server 5.7
POSTGRES32: C:\Program Files (x86)\PostgreSQL\9.4
POSTGRES64: C:\Program Files\PostgreSQL\9.4
OPENSSLURL: https://slproweb.com/download
OPENSSL32EXE: Win32OpenSSL-1_1_0f.exe
OPENSSL64EXE: Win64OpenSSL-1_1_0f.exe
OPENSSL32: C:\OpenSSL-Win32
OPENSSL64: C:\OpenSSL-Win64
matrix:
- builder: msbuild
vsver: 140
linkmode: shared
# - builder: msbuild
# vsver: 140
# linkmode: static_md
# - builder: msbuild
# vsver: 140
# linkmode: static_mt
- builder: msbuild
vsver: 150
linkmode: shared
# - builder: msbuild
# vsver: 150
# linkmode: static_md
# - builder: msbuild
# vsver: 150
# linkmode: static_mt
# - builder: cmake
# vsver: 120
- builder: cmake
vsver: 140
- builder: cygwin
- builder: msbuild
vsver: 120
linkmode: shared
# - builder: msbuild
# vsver: 120
# linkmode: static_md
# - builder: msbuild
# vsver: 120
# linkmode: static_mt
- builder: msbuild
vsver: 140
linkmode: shared
# - builder: msbuild
# vsver: 140
# linkmode: static_md
# - builder: msbuild
# vsver: 140
# linkmode: static_mt
- builder: cmake
vsver: 120
- builder: cmake
vsver: 140
matrix:
fast_finish: true
install:
# -------------------------------------------------------------------------------------------
# VS2017 setup. VS2017 does not provide VS150COMNTOOLS.
# See https://blogs.msdn.microsoft.com/vcblog/2017/03/06/finding-the-visual-c-compiler-tools-in-visual-studio-2017/
# -------------------------------------------------------------------------------------------
- ps: |
Install-Module VSSetup -Scope CurrentUser -Force
$installationPath = Get-VSSetupInstance | Select-VSSetupInstance -Latest -Require Microsoft.VisualStudio.Component.VC.Tools.x86.x64 | select InstallationPath
$vs150comntools = $installationPath.psobject.properties.Value;
set-item -force -path "ENV:VS150COMNTOOLS" -value "$vs150comntools\Common7\Tools\"
Write-Host "`nVS150COMNTOOLS=$env:VS150COMNTOOLS" -ForegroundColor Yellow
# -------------------------------------------------------------------------------------------
- if "%builder%"=="cygwin" (
if "%platform%"=="Win32" (
C:\cygwin\setup-x86.exe -qnNdO -R C:/cygwin -s http://cygwin.mirror.constant.com -l C:/cygwin/var/cache/setup -P libpcre-devel -P openssl-devel -P libiodbc-devel -P libiodbc2 -P odbc-mysql -P odbc-pgsql -P odbc-sqlite3 -P libmysqlclient-devel -P libsqlite3-devel -P libcrypt-devel))
C:\cygwin\setup-x86.exe -qnNdO -R C:/cygwin -s http://cygwin.mirror.constant.com -l C:/cygwin/var/cache/setup -P libpq-devel -P libpcre-devel -P openssl-devel -P libiodbc-devel -P libiodbc2 -P odbc-mysql -P odbc-pgsql -P odbc-sqlite3 -P libmysqlclient-devel -P libsqlite3-devel -P libcrypt-devel))
- if "%builder%"=="cygwin" (
if "%platform%"=="x64" (
C:\cygwin64\setup-x86_64.exe -qnNdO -R C:/cygwin64 -s http://cygwin.mirror.constant.com -l C:/cygwin64/var/cache/setup -P libpcre-devel -P openssl-devel -P libiodbc-devel -P libiodbc2 -P odbc-mysql -P odbc-pgsql -P odbc-sqlite3 -P libmysqlclient-devel -P libsqlite3-devel -P libcrypt-devel))
C:\cygwin64\setup-x86_64.exe -qnNdO -R C:/cygwin64 -s http://cygwin.mirror.constant.com -l C:/cygwin64/var/cache/setup -P libpq-devel -P libpcre-devel -P openssl-devel -P libiodbc-devel -P libiodbc2 -P odbc-mysql -P odbc-pgsql -P odbc-sqlite3 -P libmysqlclient-devel -P libsqlite3-devel -P libcrypt-devel))
- set POCO_BASE=%CD%
- set PATH=C:\ProgramData\chocolatey\bin;%PATH%
@ -134,7 +157,6 @@ install:
# } else {
# choco install cmake
# }
- set
# -------------------------------------------------------------------------------------------
# chocolatey brokes jom, here's workaround
@ -145,6 +167,9 @@ install:
{
$env:PATH = $env:ChocolateyInstall + "\bin;" + $env:PATH
$env:PATH = $env:ChocolateyInstall + "\lib\jom\content;" + $env:PATH
$env:PATH = "C:\Program Files (x86)\cmake\bin;" + $env:PATH
$env:PATH = "C:\Program Files (x86)\ctest\bin;" + $env:PATH
}
# -------------------------------------------------------------------------------------------
@ -159,42 +184,40 @@ install:
{
if ($env:platform -eq "Win32")
{
if (Test-Path "C:\OpenSSL-Win32") {
echo "using C:\OpenSSL-Win32 from cache"
} else {
echo "downloading OpenSSL-Win32"
Start-FileDownload 'http://slproweb.com/download/Win32OpenSSL-1_0_2e.exe'
echo "installing C:\OpenSSL-Win32"
Start-Process "Win32OpenSSL-1_0_2e.exe" -Args "/silent /verysilent /sp- /suppressmsgboxes" -Wait
}
$openssl = $env:OPENSSL32
$opensslexe = $env:OPENSSL32EXE
}
if ($env:platform -eq "x64")
{
if (Test-Path "C:\OpenSSL-Win64") {
echo "using C:\OpenSSL-Win64 from cache"
} else {
echo "downloading OpenSSL-Win64"
Start-FileDownload 'http://slproweb.com/download/Win64OpenSSL-1_0_2e.exe'
echo "installing C:\OpenSSL-Win64"
Start-Process "Win64OpenSSL-1_0_2e.exe" -Args "/silent /verysilent /sp- /suppressmsgboxes" -Wait
}
$openssl = $env:OPENSSL64
$opensslexe = $env:OPENSSL64EXE
}
$opensslurl = $env:OPENSSLURL + "/" + $opensslexe
if (Test-Path $openssl) {
Write-Host "using $openssl from cache" -ForegroundColor Yellow
} else {
Write-Host "downloading $openssl" -ForegroundColor Cyan
Start-FileDownload $opensslurl
Write-Host "installing $openssl" -ForegroundColor Green
Start-Process $opensslexe -Args "/silent /verysilent /sp- /suppressmsgboxes" -Wait
}
}
# -------------------------------------------------------------------------------------------
# MySQL 32 bit is not available by default on AppVeyor
# -------------------------------------------------------------------------------------------
- ps: |
if (($env:platform -eq "Win32") -and !($env:builder -eq "cygwin"))
if ($env:platform -eq "Win32")
{
if (Test-Path $env:MYSQL32) {
echo "using $env:MYSQL32 from cache"
Write-Host "using $env:MYSQL32 from cache" -ForegroundColor Yellow
}
else
{
echo "downloading $env:MYSQL32"
Invoke-WebRequest "http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.17-win32.zip" -OutFile mysql-5.7.17-win32.zip
echo "installing $env:MYSQL32"
7z x -y mysql-5.7.17-win32.zip -oc:\
Write-Host "downloading $env:MYSQL32" -ForegroundColor Cyan
Invoke-WebRequest $env:MYSQL32URL -OutFile $env:MYSQL32ZIP
Write-Host "installing $env:MYSQL32" -ForegroundColor Green
7z x -y $env:MYSQL32ZIP -oc:\
}
}
# -------------------------------------------------------------------------------------------
@ -204,10 +227,10 @@ install:
# http://www.enterprisedb.com/products-services-training/pgdownload#windows
# -------------------------------------------------------------------------------------------
- ps: |
if (($env:platform -eq "Win32") -and !($env:builder -eq "cygwin"))
if ($env:platform -eq "Win32")
{
if (Test-Path $env:POSTGRES32) {
echo "using $env:POSTGRES32 from cache"
Write-Host "using $env:POSTGRES32 from cache" -ForegroundColor Yellow
}
else
{
@ -221,14 +244,14 @@ install:
Write-Host "Setting up services..."
Stop-Service postgresql-9.4
Set-Service -Name postgresql-9.4 -StartupType Manual
Write-Host "$env:POSTGRES32 installed" -ForegroundColor Green
}
}
# -------------------------------------------------------------------------------------------
before_build:
- set
- ps: |
if ($env:builder -eq "cmake")
{
@ -250,6 +273,12 @@ before_build:
if($env:platform -eq 'Win32') { $vctool='';}
if($env:platform -eq 'x64') { $vctool='x86_amd64';$vspath+='\'+$vctool }
}
if ($env:vsver -eq "150")
{
$vspath= convert-path $env:VS150COMNTOOLS\..\..\VC\bin; $yyyy='2017'
if($env:platform -eq 'Win32') { $vctool='';}
if($env:platform -eq 'x64') { $vctool='x86_amd64';$vspath+='\'+$vctool }
}
pushd $vspath;
$tool= if($vctool -eq '') {'32'} else {$vctool}
cmd /c "vcvars$tool.bat&set" |
@ -268,8 +297,6 @@ before_build:
# & C:\cygwin\bin\ls -lR $env:MYSQL64
# -------------------------------------------------------------------------------------------
- ps: |
if (!($env:builder -eq "cygwin"))
{
if ($env:platform -eq "Win32")
{
$env:INCLUDE = $env:MYSQL32 + "\include;" + $env:INCLUDE
@ -295,15 +322,12 @@ before_build:
$env:MYSQL_PWD="Password12!"
$cmd = 'mysql -e "create database pocotestdb;" --user=root';
iex "& $cmd"
}
# -------------------------------------------------------------------------------------------
# -------------------------------------------------------------------------------------------
# PostgreSQL
# -------------------------------------------------------------------------------------------
- ps: |
if (!($env:builder -eq "cygwin"))
{
if ($env:platform -eq "Win32")
{
$env:INCLUDE = $env:POSTGRES32 + "\include;" + $env:INCLUDE
@ -316,7 +340,6 @@ before_build:
$env:LIB = $env:POSTGRES64 + "\lib;" + $env:LIB
$env:PATH = $env:POSTGRES64 + "\bin;" + $env:PATH
}
}
# -------------------------------------------------------------------------------------------
after_build:
@ -367,6 +390,8 @@ build_script:
# + FullyQualifiedErrorId : NativeCommandError
#
# Command executed with exception: MC: Compiling C:/projects/poco/Foundation/src/pocomsg.mc
# -------------------------------------------------------------------------------------------
# Don't build Cygwin64 with std=c++14 until this issue be fixed https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77441
# -------------------------------------------------------------------------------------------
- ps: |
if ($env:builder -eq "cygwin")
@ -398,15 +423,15 @@ build_script:
mkdir cmake-build | out-null;pushd cmake-build;
if ($env:platform -eq "Win32")
{
$opensslrootdir = 'C:\OpenSSL-Win32'
$openssl = $env:OPENSSL32
}
if ($env:platform -eq "x64")
{
$opensslrootdir = 'C:\OpenSSL-Win64'
$openssl = $env:OPENSSL64
}
$defs =' -G"NMake Makefiles"';
$defs+=" -DCMAKE_BUILD_TYPE=$env:configuration";
$defs+=" -DOPENSSL_ROOT_DIR=$opensslrootdir";
$defs+=" -DOPENSSL_ROOT_DIR=$openssl";
$defs+=" -DENABLE_NETSSL=OFF";
$defs+=" -DENABLE_NETSSL_WIN=ON";
$defs+=" -DENABLE_DATA_MYSQL=OFF";
@ -459,7 +484,7 @@ test_script:
{
if ($env:builder -eq "cygwin")
{
$LastExitCode=0;
$LastExitCode=0;
if ($env:platform -eq "Win32")
{
$cmd = 'C:\cygwin\usr\sbin\cygserver.exe "&"';iex "& $cmd"
@ -469,8 +494,8 @@ test_script:
$cmd = 'C:\cygwin64\usr\sbin\cygserver.exe "&"';iex "& $cmd"
}
$cmd = 'bash.exe -c "appveyor/Cygwin/runtests.sh"';iex "& $cmd";
Write-Host -ForegroundColor Yellow $cmd ': LastExitCode=' $lastExitCode;
}
Write-Host -ForegroundColor Yellow $cmd ': LastExitCode=' $lastExitCode;
}
if ($env:builder -eq "msbuild" -and $env:linkmode -eq "shared")
{
$suffix = '';
@ -540,7 +565,7 @@ test_script:
Write-Host -ForegroundColor Yellow $line;
Write-Host -ForegroundColor Yellow 'ctest -VV -E Data*'
ctest -VV -E Data*
ctest -VV -E Data* -E Crypto*
popd
}
Write-Host $runs' runs, ' $fails' fails'

View File

@ -48,7 +48,7 @@ IMPLIBLINKEXT = .dll.a
CFLAGS =
CFLAGS32 =
CFLAGS64 =
CXXFLAGS = -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING
CXXFLAGS = -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING
CXXFLAGS32 = -Wa,-mbig-obj
CXXFLAGS64 = -Wa,-mbig-obj
SHLIBFLAGS = -Wl,--out-implib=$(dir $@)$(subst cyg,lib,$(notdir $@)).a -Wl,--export-all-symbols -Wl,--enable-auto-import
@ -79,3 +79,21 @@ SYSFLAGS = -D_XOPEN_SOURCE=500
# System Specific Libraries
#
SYSLIBS =
#
# Auto-detect architecture if not specified
#
ifndef OSARCH_64BITS
LBITS := $(shell getconf LONG_BIT)
ifeq ($(LBITS),64)
OSARCH_64BITS = 1
else
OSARCH_64BITS = 0
endif
endif
#
# C++11/14 detection
#
include $(POCO_BASE)/build/script/cpp11-gcc

84
build/config/Cygwin-clang Normal file
View File

@ -0,0 +1,84 @@
#
# $Id$
#
# Cygwin
#
# Make settings for Cygwin on WinXP/gcc 3.4
#
#
#
# General Settings, note that strip doesn't do anything on Cygwin, thus empty
#
LINKMODE ?= SHARED
#
# Define Tools
#
CC = clang$(CLANG_VERSION)
CXX = clang++$(CLANG_VERSION)
LINK = $(CXX)
LIB = ar -cr
RANLIB = ranlib
SHLIB = $(CXX) -shared -o $@
SHLIBLN = $(POCO_BASE)/build/script/shlibln
STRIP =
DEP = $(POCO_BASE)/build/script/makedepend.gcc
SHELL = sh
RM = rm -rf
CP = cp
MKDIR = mkdir -p
#
# Extension for Shared Libraries
#
LIBPREFIX = cyg
SHAREDLIBEXT = -$(target_version).dll
SHAREDLIBLINKEXT = .dll
IMPPREFIX = lib
IMPLIBEXT = -$(target_version).dll.a
IMPLIBLINKEXT = .dll.a
#
# Compiler and Linker Flags
#
CFLAGS =
CFLAGS32 =
CFLAGS64 =
CXXFLAGS = -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING
CXXFLAGS32 =
CXXFLAGS64 =
SHLIBFLAGS = -Wl,--out-implib=$(dir $@)$(subst cyg,lib,$(notdir $@)).a -Wl,--export-all-symbols -Wl,--enable-auto-import
SHLIBFLAGS32 =
SHLIBFLAGS64 =
LINKFLAGS =
LINKFLAGS32 =
LINKFLAGS64 =
STATICOPT_CC =
STATICOPT_CXX =
STATICOPT_LINK = -static
SHAREDOPT_CC =
SHAREDOPT_CXX =
SHAREDOPT_LINK =
DEBUGOPT_CC = -g -D_DEBUG
DEBUGOPT_CXX = -g -D_DEBUG
DEBUGOPT_LINK = -g
RELEASEOPT_CC = -DNDEBUG
RELEASEOPT_CXX = -DNDEBUG
RELEASEOPT_LINK =
#
# System Specific Flags
#
SYSFLAGS = -D_XOPEN_SOURCE=500 -D__BSD_VISIBLE
#
# System Specific Libraries
#
SYSLIBS =
#
# C++11/14 detection
#
include $(POCO_BASE)/build/script/cpp11-clang

View File

@ -16,8 +16,8 @@ LINKMODE ?= SHARED
# Define Tools
#
ifeq ($(origin CROSS_COMPILE), undefined)
CC ?=gcc
CXX ?=g++
CC ?=gcc
CXX ?=g++
LIB = ar -cr
RANLIB = ranlib
STRIP = strip
@ -63,7 +63,7 @@ LINKFLAGS32 =
LINKFLAGS64 =
STATICOPT_CC =
STATICOPT_CXX =
STATICOPT_LINK = -static
STATICOPT_LINK =
SHAREDOPT_CC = -fPIC
SHAREDOPT_CXX = -fPIC
SHAREDOPT_LINK = -Wl,-rpath,$(LIBPATH)
@ -82,7 +82,7 @@ SYSFLAGS = -D_XOPEN_SOURCE=600 -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS=6
#
# System Specific Libraries
#
SYSLIBS = -lpthread -ldl -lrt
SYSLIBS = -lrt -lpthread -ldl
#
# Auto-detect architecture if not specified
@ -95,3 +95,8 @@ ifndef OSARCH_64BITS
OSARCH_64BITS = 0
endif
endif
#
# C++11/14 detection
#
include $(POCO_BASE)/build/script/cpp11-gcc

View File

@ -69,3 +69,8 @@ SYSFLAGS = -D_XOPEN_SOURCE=500 -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS=6
# System Specific Libraries
#
SYSLIBS = -lpthread -ldl -lrt
#
# C++11/14 detection
#
include $(POCO_BASE)/build/script/cpp11-clang

View File

@ -0,0 +1,18 @@
#! /bin/sh
#
# $Id: //poco/1.4/build/script/cpp11-appleclang#1 $
#
# cpp11-appleclang
#
# Detect compatible AppleClang version and add c++11/14 flags
#
CLANGVERSION := $(shell $(CXX) -E -dM - < /dev/null | grep __apple_build_version__ | sed -e 's/^.* //g')
# C++14 needs AppleClang 500.x
ifeq ($(shell test $(CLANGVERSION) -ge 5000275 && echo 1), 1)
CXXFLAGS += -std=c++1y
# C++11 needs AppleClang 503.x
else ifeq ($(shell test $(CLANGVERSION) -ge 5030038 && echo 1), 1)
CXXFLAGS += -std=c++0x
endif

26
build/script/cpp11-clang Normal file
View File

@ -0,0 +1,26 @@
#! /bin/sh
#
# $Id: //poco/1.4/build/script/cpp11-clang#1 $
#
# cpp11-clang
#
# Detect compatible Clang version and add c++11/14 flags
#
CLANGMAJOR := $(shell $(CXX) -x c++ /dev/null -dM -E | grep __clang_major__ | sed -e 's/^.* //g')
CLANGMINOR := $(shell $(CXX) -x c++ /dev/null -dM -E | grep __clang_minor__ | sed -e 's/^.* //g')
CLANGPATCH := $(shell $(CXX) -x c++ /dev/null -dM -E | grep __clang_patchlevel__ | sed -e 's/^.* //g')
CLANGVERSION := $(CLANGMAJOR)$(CLANGMINOR)$(CLANGPATCH)
#
# Clang 3.4 doesn't accept -std=c++14, only -std=c++1y.
#
# C++14 needs Clang 3.4
ifeq ($(shell test $(CLANGVERSION) -ge 340 && echo 1), 1)
CXXFLAGS += -std=c++1y
# C++11 needs Clang 3.3
else ifeq ($(shell test $(CLANGVERSION) -ge 330 && echo 1), 1)
CXXFLAGS += -std=c++0x
endif

42
build/script/cpp11-gcc Normal file
View File

@ -0,0 +1,42 @@
#! /bin/sh
#
# $Id: //poco/1.4/build/script/cpp11-gcc#1 $
#
# cpp11-gcc
#
# Detect compatible GCC version and add c++11/14 flags
#
# From the online doc
# __GNUC__
# __GNUC_MINOR__
# __GNUC_PATCHLEVEL__
# These macros are defined by all GNU compilers that use the C preprocessor: C, C++, Objective-C and Fortran.
# Their values are the major version, minor version, and patch level of the compiler, as integer constants.
# For example, GCC 3.2.1 will define __GNUC__ to 3, __GNUC_MINOR__ to 2, and __GNUC_PATCHLEVEL__ to 1. i
# These macros are also defined if you invoke the preprocessor directly.
#
# __VERSION__
# This macro expands to a string constant which describes the version of the compiler in use.
# You should not rely on its contents having any particular form, but it can be counted on to contain
# at least the release number.
#
GNUMAJOR := $(shell $(CXX) -E -dM - < /dev/null | grep __GNUC__ | sed -e 's/^.* //g')
GNUMINOR := $(shell $(CXX) -E -dM - < /dev/null | grep __GNUC_MINOR__ | sed -e 's/^.* //g')
GNUPATCH := $(shell $(CXX) -E -dM - < /dev/null | grep __GNUC_PATCHLEVEL__ | sed -e 's/^.* //g')
GCCVERSION := $(GNUMAJOR)$(GNUMINOR)$(GNUPATCH)
#
# GCC 4.8 (or 4.6?) doesn't accept -std=c++11, only -std=c++0x.
#
# C++14 needs GCC 4.9.2
ifeq ($(shell test $(GCCVERSION) -ge 492 && echo 1), 1)
CXXFLAGS += -std=c++14
# C++11 needs GCC 4.8.1
else ifeq ($(shell test $(GCCVERSION) -ge 481 && echo 1), 1)
CXXFLAGS += -std=c++11
else
CXXFLAGS += -std=c++03
endif

61
cmake/CXX11.cmake Normal file
View File

@ -0,0 +1,61 @@
# Copyright (c) 2013 Nathan Osman
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
# Determines whether or not the compiler supports C++11
macro(check_for_cxx11_compiler _VAR)
message(STATUS "Checking for C++11 compiler")
set(${_VAR})
if((MSVC AND (MSVC10 OR MSVC11 OR MSVC12 OR MSVC14)) OR
(CMAKE_COMPILER_IS_GNUCXX AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.6) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.1) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
set(${_VAR} 1)
message(STATUS "Checking for C++11 compiler - available")
else()
message(STATUS "Checking for C++11 compiler - unavailable")
endif()
endmacro()
# Sets the appropriate flag to enable C++11 support
macro(enable_cxx11)
set (CMAKE_CXX_STANDARD 11)
set (CMAKE_CXX_STANDARD_REQUIRED ON)
endmacro()
# Determines whether or not the compiler supports C++11
macro(check_for_cxx14_compiler _VAR)
message(STATUS "Checking for C++14 compiler")
set(${_VAR})
if((MSVC AND (MSVC14)) OR
(CMAKE_COMPILER_IS_GNUCXX AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.7) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.4) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
set(${_VAR} 1)
message(STATUS "Checking for C++14 compiler - available")
else()
message(STATUS "Checking for C++14 compiler - unavailable")
endif()
endmacro()
# Sets the appropriate flag to enable C++14 support
macro(enable_cxx14)
set (CMAKE_CXX_STANDARD 14)
set (CMAKE_CXX_STANDARD_REQUIRED ON)
endmacro()

View File

@ -119,9 +119,11 @@ done
: ${CC:=gcc}
: ${CXX:=g++}
: ${CXXFLAGS:=-std=c++11}
echo "CC=$CC" >>$build/PocoDoc.ini
echo "CXX=$CXX" >>$build/PocoDoc.ini
echo "CXXFLAGS=$CXXFLAGS" >>$build/PocoDoc.ini
echo "PocoBuild=$build" >>$build/PocoDoc.ini
echo "PocoBase=$POCO_BASE" >>$build/PocoDoc.ini
echo "PocoDoc.output=$docPath" >>$build/PocoDoc.ini

View File

@ -115,6 +115,7 @@ mkdir -p ${target}/build/vxconfig
cp ${POCO_BASE}/build/config/* ${target}/build/config
cp ${POCO_BASE}/build/rules/* ${target}/build/rules
cp ${POCO_BASE}/build/vxconfig/* ${target}/build/vxconfig
cp ${POCO_BASE}/build/script/cpp11-* ${target}/build/script
cp ${POCO_BASE}/build/script/makedepend.* ${target}/build/script
cp ${POCO_BASE}/build/script/makeldpath ${target}/build/script
cp ${POCO_BASE}/build/script/shlibln ${target}/build/script