From 84f4504e0c604a59484824811249986e421c99cb Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 05:57:10 -0500 Subject: [PATCH 01/19] Add intial cmake files --- CMakeLists.txt | 16 ++++++++ test/CMakeLists.txt | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ test/fail.cpp | 18 +++++++++ test/pass.cpp | 18 +++++++++ 4 files changed, 161 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 test/CMakeLists.txt create mode 100644 test/fail.cpp create mode 100644 test/pass.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..9790ecbe0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required (VERSION 2.8) +project(Boost.Config) + +enable_language(C) +enable_language(CXX) + +find_package(BCM) +include(BCMPackage) +include(BCMTest) +include(BCMProperties) + +bcm_boost_package(config + VERSION 1.61.0 +) + +add_subdirectory(test) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 000000000..882bfa15a --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,109 @@ + +find_package(Threads) +set(THREADED_LIBS "${CMAKE_THREAD_LIBS_INIT}") +set(LIBS_TO_CHECK atomic rt) +foreach(lib ${LIBS_TO_CHECK}) + find_library(FIND_LIB${lib} ${lib}) + if(FIND_LIB${lib}) + set(THREADED_LIBS "${THREADED_LIBS} ${FIND_LIB${lib}}") + endif() +endforeach() +string(STRIP "${THREADED_LIBS}" THREADED_LIBS) +message(STATUS "Threaded libs: ${THREADED_LIBS}") +include_directories(.) + +macro(threaded_test) + bcm_test(${ARGN}) + cmake_parse_arguments(PARSE "" "NAME" "" ${ARGN}) + target_link_libraries(${PARSE_NAME} ${THREADED_LIBS}) +endmacro(threaded_test) + +function(create_test BOOST_CONFIG_MACRO BOOST_CONFIG_FILE POSITIVE_TEST EXPECT_SUCCESS) + string(TOLOWER ${BOOST_CONFIG_MACRO} BOOST_CONFIG_NS) + if(${POSITIVE_TEST} EQUAL ${EXPECT_SUCCESS}) + set(BOOST_CONFIG_IFDEF "#ifdef") + else() + set(BOOST_CONFIG_IFDEF "#ifndef") + endif() + + if(BOOST_CONFIG_MACRO MATCHES "BOOST_HAS_TR1.*") + set(BOOST_CONFIG_TR1_INCLUDE "#include ") + else() + set(BOOST_CONFIG_TR1_INCLUDE "") + endif() + + if(${EXPECT_SUCCESS}) + configure_file(pass.cpp ${BOOST_CONFIG_FILE}_pass.cpp) + threaded_test(NAME ${BOOST_CONFIG_FILE}_pass SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${BOOST_CONFIG_FILE}_pass.cpp) + else() + configure_file(fail.cpp ${BOOST_CONFIG_FILE}_fail.cpp) + bcm_test(NAME ${BOOST_CONFIG_FILE}_fail SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${BOOST_CONFIG_FILE}_fail.cpp COMPILE_ONLY WILL_FAIL) + endif() +endfunction() + +function(parse_test SRC) + if(SRC MATCHES "boost_has_tr1.*") + # Skip tr1 tests for now + return() + endif() + set(MACRO_REGEX "//[ ]*MACRO[ ]*:[ ]*([A-Za-z0-9_]+)") + file(STRINGS ${SRC} SRC_MACRO_LINE REGEX ${MACRO_REGEX}) + string(REGEX REPLACE ${MACRO_REGEX} "\\1" BOOST_CONFIG_MACRO ${SRC_MACRO_LINE}) + get_filename_component(BOOST_CONFIG_FILE ${SRC} NAME_WE) + + if(SRC MATCHES "boost_no_") + set(POSITIVE_TEST 0) + else() + set(POSITIVE_TEST 1) + endif() + + create_test(${BOOST_CONFIG_MACRO} ${BOOST_CONFIG_FILE} ${POSITIVE_TEST} 1) + create_test(${BOOST_CONFIG_MACRO} ${BOOST_CONFIG_FILE} ${POSITIVE_TEST} 0) + +endfunction() + +set(SKIP_TESTS + boost_no_ded_typename.ipp + boost_has_macro_use_facet.ipp +) +file(GLOB TESTS *.ipp) +foreach(TEST ${TESTS}) + set(${TEST}_ENABLED On) + foreach(SKIP_TEST ${SKIP_TESTS}) + if(TEST MATCHES ${SKIP_TEST}) + set(${TEST}_ENABLED Off) + break() + endif() + endforeach() + if(${TEST}_ENABLED) + parse_test(${TEST}) + endif() +endforeach() + +bcm_test(NAME config_test_c SOURCES config_test_c.c) +bcm_test(NAME config_info SOURCES config_info.cpp) +threaded_test(NAME config_test SOURCES config_test.cpp) + +bcm_test(NAME config_test_no_rtti SOURCES config_test.cpp) +set_target_properties(config_test_no_rtti PROPERTIES CXX_RTTI Off) +bcm_test(NAME config_test_no_exceptions SOURCES config_test.cpp) +set_target_properties(config_test_no_exceptions PROPERTIES CXX_EXCEPTIONS Off) + +bcm_test(NAME test_thread_fail1 SOURCES threads/test_thread_fail1.cpp COMPILE_ONLY WILL_FAIL) +bcm_test(NAME test_thread_fail2 SOURCES threads/test_thread_fail2.cpp COMPILE_ONLY WILL_FAIL) + +bcm_test(NAME abi_test SOURCES abi/abi_test.cpp abi/main.cpp) +bcm_test(NAME limits_test SOURCES limits_test.cpp) +bcm_test(NAME math_info SOURCES math_info.cpp) + +include(CheckCXXCompilerFlag) +set(IMPLICIT_FALLTHROUGH_FLAG "-std=c++11 -Wimplicit-fallthrough -Wall -Werror") +check_cxx_compiler_flag(${IMPLICIT_FALLTHROUGH_FLAG} HAS_IMPLICIT_FALLTHROUGH) +bcm_test(NAME boost_fallthrough_test SOURCES boost_fallthrough_test.cpp COMPILE_ONLY) +if(HAS_IMPLICIT_FALLTHROUGH) + set_target_properties(boost_fallthrough_test PROPERTIES COMPILE_FLAGS ${IMPLICIT_FALLTHROUGH_FLAG}) +endif(HAS_IMPLICIT_FALLTHROUGH) +bcm_test(NAME helper_macro_test SOURCES helper_macro_test.cpp COMPILE_ONLY) + +bcm_test(NAME cstdint_include_test SOURCES cstdint_include_test.cpp COMPILE_ONLY) + diff --git a/test/fail.cpp b/test/fail.cpp new file mode 100644 index 000000000..ee4a02eda --- /dev/null +++ b/test/fail.cpp @@ -0,0 +1,18 @@ +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" +@BOOST_CONFIG_TR1_INCLUDE@ + +@BOOST_CONFIG_IFDEF@ @BOOST_CONFIG_MACRO@ +#include "@BOOST_CONFIG_FILE@.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return @BOOST_CONFIG_NS@::test(); +} diff --git a/test/pass.cpp b/test/pass.cpp new file mode 100644 index 000000000..ad3813028 --- /dev/null +++ b/test/pass.cpp @@ -0,0 +1,18 @@ +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" +@BOOST_CONFIG_TR1_INCLUDE@ + +@BOOST_CONFIG_IFDEF@ @BOOST_CONFIG_MACRO@ +#include "@BOOST_CONFIG_FILE@.ipp" +#else +namespace @BOOST_CONFIG_NS@ = empty_boost; +#endif + +int main( int, char *[] ) +{ + return @BOOST_CONFIG_NS@::test(); +} From bbc3ff2a4557b601e43ab0a590850bc057c07302 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 06:17:51 -0500 Subject: [PATCH 02/19] Add travis --- .travis.yml | 225 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..b56d3343d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,225 @@ +sudo: required +dist: trusty +language: cpp +script: cmake + +matrix: + include: + # OSX + - env: LIBCXX=off STDCXX=c++1y + os: osx + compiler: clang + + # - env: LIBCXX=off STDCXX=c++11 + # os: osx + # compiler: clang + + # - env: LIBCXX=off STDCXX=c++03 + # os: osx + # compiler: clang + # Clang + - env: CLANG_VERSION=3.5 LIBCXX=on STDCXX=c++14 + os: linux + compiler: clang-3.5 + addons: &clang35 + apt: + packages: + - util-linux + - g++-4.9 + - clang-3.5 + - valgrind + - python-pip + sources: + - ubuntu-toolchain-r-test + + # - env: CLANG_VERSION=3.5 LIBCXX=on STDCXX=c++11 + # os: linux + # compiler: clang-3.5 + # addons: *clang35 + + - env: CLANG_VERSION=3.8 LIBCXX=on STDCXX=c++1z + os: linux + compiler: clang-3.8 + addons: &clang38 + apt: + packages: + - util-linux + - g++-4.9 + - clang-3.8 + - valgrind + - python-pip + sources: + - ubuntu-toolchain-r-test + + - env: CLANG_VERSION=3.8 LIBCXX=off STDCXX=c++1z + os: linux + compiler: clang-3.8 + addons: *clang38 + + # - env: CLANG_VERSION=3.9 LIBCXX=on STDCXX=c++14 + # os: linux + # compiler: clang-3.9 + # addons: *clang37 + + # - env: CLANG_VERSION=3.9 LIBCXX=on STDCXX=c++11 + # os: linux + # compiler: clang-3.9 + # addons: *clang37 + + # - env: CLANG_VERSION=3.9 LIBCXX=on STDCXX=c++03 + # os: linux + # compiler: clang-3.9 + # addons: *clang37 + + # Gcc + - env: GCC_VERSION=6 LIBCXX=off STDCXX=gnu++1y + os: linux + compiler: gcc-6 + addons: &gcc6 + apt: + packages: + - g++-6 + - valgrind + - python-pip + sources: + - ubuntu-toolchain-r-test + + - env: GCC_VERSION=5 LIBCXX=off STDCXX=gnu++1y + os: linux + compiler: gcc-5 + addons: &gcc5 + apt: + packages: + - g++-5 + - valgrind + - python-pip + sources: + - ubuntu-toolchain-r-test + + - env: GCC_VERSION=4.9 LIBCXX=off STDCXX=gnu++1y + os: linux + compiler: gcc-4.9 + addons: &gcc49 + apt: + packages: + - g++-4.9 + - valgrind + - python-pip + sources: + - ubuntu-toolchain-r-test + + # - env: GCC_VERSION=4.9 LIBCXX=off STDCXX=gnu++11 + # os: linux + # compiler: gcc-4.9 + # addons: *gcc49 + + # - env: GCC_VERSION=4.9 LIBCXX=off STDCXX=c++11 + # os: linux + # compiler: gcc-4.9 + # addons: *gcc49 + + - env: GCC_VERSION=4.8 LIBCXX=off STDCXX=gnu++11 + os: linux + compiler: gcc-4.8 + addons: &gcc48 + apt: + packages: + - g++-4.8 + - valgrind + - python-pip + sources: + - ubuntu-toolchain-r-test + + + - env: GCC_VERSION=4.7 LIBCXX=off STDCXX=gnu++0x + os: linux + compiler: gcc-4.7 + addons: &gcc47 + apt: + packages: + - g++-4.7 + - valgrind + - python-pip + sources: + - ubuntu-toolchain-r-test + + # - env: GCC_VERSION=4.7 LIBCXX=off STDCXX=gnu++03 + # os: linux + # compiler: gcc-4.7 + # addons: *gcc47 + + - env: GCC_VERSION=4.6 LIBCXX=off STDCXX=gnu++0x + os: linux + compiler: gcc-4.6 + addons: &gcc46 + apt: + packages: + - g++-4.6 + - valgrind + - python-pip + sources: + - ubuntu-toolchain-r-test + + # - env: GCC_VERSION=4.6 LIBCXX=off STDCXX=gnu++03 + # os: linux + # compiler: gcc-4.6 + # addons: *gcc46 + +install: + - export CHECKOUT_PATH=`pwd`; + - if [ -n "$GCC_VERSION" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi + - if [ -n "$CLANG_VERSION" ]; then export CXX="clang++-${CLANG_VERSION}" CC="clang-${CLANG_VERSION}"; fi + - if [[ "$CLANG_VERSION" == "3.4" ]]; then export CXX="/usr/local/clang-3.4/bin/clang++" CC="/usr/local/clang-3.4/bin/clang"; fi + # Setup deps directory + - export DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" + - export CGET_PREFIX="${DEPS_DIR}/usr" + - mkdir ${DEPS_DIR} && cd ${DEPS_DIR} + - mkdir usr + - export PATH=${DEPS_DIR}/usr/bin:${PATH} + # Install cget + - pip install cget + # Install cmake + - cget install http://www.cmake.org/files/v3.3/cmake-3.3.1-Linux-x86_64.tar.gz + # Show compiler info + - $CXX --version + - which $CXX + - $CC --version + - which $CC + - which cmake + - cmake --version + # Install libc++ + - | + if [[ "$LIBCXX" == "on" ]]; then + if [[ "${CLANG_VERSION}" == "3.5" ]]; then LLVM_VERSION="3.5.2"; fi + if [[ "${CLANG_VERSION}" == "3.6" ]]; then LLVM_VERSION="3.6.2"; fi + if [[ "${CLANG_VERSION}" == "3.7" ]]; then LLVM_VERSION="3.7.0"; fi + if [[ "${CLANG_VERSION}" == "3.8" ]]; then LLVM_VERSION="3.8.1"; fi + LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz" + LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz" + LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz" + + mkdir -p llvm llvm/build llvm/projects/libcxx llvm/projects/libcxxabi + travis_retry wget --quiet -O - ${LLVM_URL} | tar --strip-components=1 -x --xz -C llvm + travis_retry wget --quiet -O - ${LIBCXX_URL} | tar --strip-components=1 -x --xz -C llvm/projects/libcxx + travis_retry wget --quiet -O - ${LIBCXXABI_URL} | tar --strip-components=1 -x --xz -C llvm/projects/libcxxabi + (cd llvm/build && cmake .. -DCMAKE_INSTALL_PREFIX=${DEPS_DIR}/usr) + (cd llvm/build/projects/libcxx && make install -j2) + (cd llvm/build/projects/libcxxabi && make install -j2) + export LDFLAGS="-L${DEPS_DIR}/usr/lib -lc++ -lc++abi" + export CFLAGS="${CFLAGS} -stdlib=libc++ -I${DEPS_DIR}/usr/include/c++/v1" + export CXXFLAGS="${CXXFLAGS} -stdlib=libc++ -I${DEPS_DIR}/usr/include/c++/v1" + export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DEPS_DIR}/usr/lib" + fi + # Install bcm + - cget install boost-cmake/bcm + # Add stdflags + export CXXFLAGS="${CXXFLAGS} -std=${STDCXX}" + + +script: + - cd $CHECKOUT_PATH + - | + for build_type in debug release; do + cget install boostorg/config,. --test + cget rm boostorg/config + done From c40a65aa87f36d416b1d9fd65c4730abc1e7abff Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 06:18:34 -0500 Subject: [PATCH 03/19] Set to binary --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b56d3343d..8bac2fdd4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -179,7 +179,7 @@ install: # Install cget - pip install cget # Install cmake - - cget install http://www.cmake.org/files/v3.3/cmake-3.3.1-Linux-x86_64.tar.gz + - cget install -X binary http://www.cmake.org/files/v3.3/cmake-3.3.1-Linux-x86_64.tar.gz # Show compiler info - $CXX --version - which $CXX From f2adca629a04038664a5dcd2d1e7187a3312c2ba Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 06:40:29 -0500 Subject: [PATCH 04/19] Add appveyor --- .travis.yml | 19 ++----------------- appveyor.yml | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 17 deletions(-) create mode 100644 appveyor.yml diff --git a/.travis.yml b/.travis.yml index 8bac2fdd4..9364399a9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -56,21 +56,6 @@ matrix: compiler: clang-3.8 addons: *clang38 - # - env: CLANG_VERSION=3.9 LIBCXX=on STDCXX=c++14 - # os: linux - # compiler: clang-3.9 - # addons: *clang37 - - # - env: CLANG_VERSION=3.9 LIBCXX=on STDCXX=c++11 - # os: linux - # compiler: clang-3.9 - # addons: *clang37 - - # - env: CLANG_VERSION=3.9 LIBCXX=on STDCXX=c++03 - # os: linux - # compiler: clang-3.9 - # addons: *clang37 - # Gcc - env: GCC_VERSION=6 LIBCXX=off STDCXX=gnu++1y os: linux @@ -220,6 +205,6 @@ script: - cd $CHECKOUT_PATH - | for build_type in debug release; do - cget install boostorg/config,. --test - cget rm boostorg/config + cget install boostorg/config,. -DCMAKE_BUILD_TYPE=$build_type --test + cget rm boostorg/config -y done diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 000000000..acb126e5c --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,49 @@ +environment: + matrix: + # - GENERATOR: "Visual Studio 14 2015 Win64" + # CONFIG: Debug + + # - GENERATOR: "Visual Studio 14 2015 Win64" + # CONFIG: Release + + # - GENERATOR: "Visual Studio 14 2015" + # CONFIG: Debug + + # - GENERATOR: "Visual Studio 14 2015" + # CONFIG: Release + + - GENERATOR: "Visual Studio 12 2013" + CONFIG: Debug + + - GENERATOR: "Visual Studio 12 2013" + CONFIG: Release + + # - GENERATOR: "Visual Studio 11 2012" + # CONFIG: Debug + + # - GENERATOR: "Visual Studio 11 2012" + # CONFIG: Release + + - GENERATOR: "Visual Studio 10 2010" + CONFIG: Debug + + - GENERATOR: "Visual Studio 10 2010" + CONFIG: Release + +matrix: + fast_finish: true + +install: + - ps: Invoke-WebRequest "https://bootstrap.pypa.io/ez_setup.py" -OutFile "c:\\ez_setup.py" + - ps: Invoke-WebRequest "https://bootstrap.pypa.io/get-pip.py" -OutFile "c:\\get-pip.py" + - "c:\\Python34\\python c:\\ez_setup.py" + - "c:\\Python34\\python c:\\get-pip.py" + - "c:\\Python34\\Scripts\\pip install cget" + - "c:\\Python34\\Scripts\\cget install --verbose -p c:\\cget boost-cmake/bcm" + +build_script: + - cmd: set PATH=C:\Program Files (x86)\CMake\bin;%PATH% + - cmd: set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH% + - cmd: call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat" + - cmd: cmake --version + - cmd: cget -p c:\cget build -G"%GENERATOR%" --test From 03ef4faee98af3486fe6dc771bdeb3fe33c7b5da Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 06:50:18 -0500 Subject: [PATCH 05/19] Update appveyor --- appveyor.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index acb126e5c..c3789a6c0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,16 +1,16 @@ environment: matrix: - # - GENERATOR: "Visual Studio 14 2015 Win64" - # CONFIG: Debug + - GENERATOR: "Visual Studio 14 2015 Win64" + CONFIG: Debug - # - GENERATOR: "Visual Studio 14 2015 Win64" - # CONFIG: Release + - GENERATOR: "Visual Studio 14 2015 Win64" + CONFIG: Release - # - GENERATOR: "Visual Studio 14 2015" - # CONFIG: Debug + - GENERATOR: "Visual Studio 14 2015" + CONFIG: Debug - # - GENERATOR: "Visual Studio 14 2015" - # CONFIG: Release + - GENERATOR: "Visual Studio 14 2015" + CONFIG: Release - GENERATOR: "Visual Studio 12 2013" CONFIG: Debug @@ -44,6 +44,7 @@ install: build_script: - cmd: set PATH=C:\Program Files (x86)\CMake\bin;%PATH% - cmd: set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH% + - cmd: set PATH=c:\cget\bin;c:\Python34\Scripts\;%PATH% - cmd: call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat" - cmd: cmake --version - cmd: cget -p c:\cget build -G"%GENERATOR%" --test From fa53ace1051f983409a1d9e72f9073ad480329b9 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 06:58:54 -0500 Subject: [PATCH 06/19] Try to cache downloads --- .travis.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9364399a9..ed512d971 100644 --- a/.travis.yml +++ b/.travis.yml @@ -150,6 +150,10 @@ matrix: # compiler: gcc-4.6 # addons: *gcc46 +cache: + directories: + - $HOME/.config/cget + install: - export CHECKOUT_PATH=`pwd`; - if [ -n "$GCC_VERSION" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi @@ -164,7 +168,7 @@ install: # Install cget - pip install cget # Install cmake - - cget install -X binary http://www.cmake.org/files/v3.3/cmake-3.3.1-Linux-x86_64.tar.gz + - cget install -X binary -H sha256:9dce2e6d6ae5bdee45db46ef5148541fe986fba3ae55f689bdc99d26d3696689 cmake,http://www.cmake.org/files/v3.3/cmake-3.3.1-Linux-x86_64.tar.gz # Show compiler info - $CXX --version - which $CXX From 827c30ac70c641b46a54808e71ca9f48c42b2472 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 07:29:34 -0500 Subject: [PATCH 07/19] Generator flag --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index c3789a6c0..478805b09 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -47,4 +47,4 @@ build_script: - cmd: set PATH=c:\cget\bin;c:\Python34\Scripts\;%PATH% - cmd: call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat" - cmd: cmake --version - - cmd: cget -p c:\cget build -G"%GENERATOR%" --test + - cmd: cget -p c:\cget build "-G%GENERATOR%" --test From 20f062ae0c540a70051e9447eb359750e4beec48 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 16:23:21 -0500 Subject: [PATCH 08/19] Use travis recipes --- .travis.yml | 105 +++++++++++++++++++++-------------------------------------- appveyor.yml | 16 ++++----- 2 files changed, 46 insertions(+), 75 deletions(-) diff --git a/.travis.yml b/.travis.yml index ed512d971..068e27022 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,45 +17,51 @@ matrix: # - env: LIBCXX=off STDCXX=c++03 # os: osx # compiler: clang + # Clang - - env: CLANG_VERSION=3.5 LIBCXX=on STDCXX=c++14 + - env: CLANG_VERSION=3.5 LIBCXX=off STDCXX=c++14 os: linux - compiler: clang-3.5 - addons: &clang35 + compiler: clang + addons: &clang apt: packages: - util-linux - - g++-4.9 - - clang-3.5 + - g++-5 - valgrind - python-pip sources: - ubuntu-toolchain-r-test - # - env: CLANG_VERSION=3.5 LIBCXX=on STDCXX=c++11 - # os: linux - # compiler: clang-3.5 - # addons: *clang35 - - env: CLANG_VERSION=3.8 LIBCXX=on STDCXX=c++1z os: linux - compiler: clang-3.8 - addons: &clang38 - apt: - packages: - - util-linux - - g++-4.9 - - clang-3.8 - - valgrind - - python-pip - sources: - - ubuntu-toolchain-r-test + compiler: clang + addons: *clang - env: CLANG_VERSION=3.8 LIBCXX=off STDCXX=c++1z os: linux - compiler: clang-3.8 - addons: *clang38 + compiler: clang + addons: *clang + + - env: CLANG_VERSION=3.9 LIBCXX=on STDCXX=c++1z + os: linux + compiler: clang + addons: *clang + - env: CLANG_VERSION=3.9 LIBCXX=off STDCXX=c++1z + os: linux + compiler: clang + addons: *clang + + - env: CLANG_VERSION=4.0 LIBCXX=on STDCXX=c++1z + os: linux + compiler: clang + addons: *clang + + - env: CLANG_VERSION=4.0 LIBCXX=off STDCXX=c++1z + os: linux + compiler: clang + addons: *clang + # Gcc - env: GCC_VERSION=6 LIBCXX=off STDCXX=gnu++1y os: linux @@ -93,16 +99,6 @@ matrix: sources: - ubuntu-toolchain-r-test - # - env: GCC_VERSION=4.9 LIBCXX=off STDCXX=gnu++11 - # os: linux - # compiler: gcc-4.9 - # addons: *gcc49 - - # - env: GCC_VERSION=4.9 LIBCXX=off STDCXX=c++11 - # os: linux - # compiler: gcc-4.9 - # addons: *gcc49 - - env: GCC_VERSION=4.8 LIBCXX=off STDCXX=gnu++11 os: linux compiler: gcc-4.8 @@ -128,11 +124,6 @@ matrix: sources: - ubuntu-toolchain-r-test - # - env: GCC_VERSION=4.7 LIBCXX=off STDCXX=gnu++03 - # os: linux - # compiler: gcc-4.7 - # addons: *gcc47 - - env: GCC_VERSION=4.6 LIBCXX=off STDCXX=gnu++0x os: linux compiler: gcc-4.6 @@ -145,20 +136,12 @@ matrix: sources: - ubuntu-toolchain-r-test - # - env: GCC_VERSION=4.6 LIBCXX=off STDCXX=gnu++03 - # os: linux - # compiler: gcc-4.6 - # addons: *gcc46 - cache: directories: - $HOME/.config/cget install: - export CHECKOUT_PATH=`pwd`; - - if [ -n "$GCC_VERSION" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi - - if [ -n "$CLANG_VERSION" ]; then export CXX="clang++-${CLANG_VERSION}" CC="clang-${CLANG_VERSION}"; fi - - if [[ "$CLANG_VERSION" == "3.4" ]]; then export CXX="/usr/local/clang-3.4/bin/clang++" CC="/usr/local/clang-3.4/bin/clang"; fi # Setup deps directory - export DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" - export CGET_PREFIX="${DEPS_DIR}/usr" @@ -166,9 +149,14 @@ install: - mkdir usr - export PATH=${DEPS_DIR}/usr/bin:${PATH} # Install cget - - pip install cget - # Install cmake - - cget install -X binary -H sha256:9dce2e6d6ae5bdee45db46ef5148541fe986fba3ae55f689bdc99d26d3696689 cmake,http://www.cmake.org/files/v3.3/cmake-3.3.1-Linux-x86_64.tar.gz + - pip install cget backports.lzma + # Install recipes + - cget install pfultz2/cget-travis-recipes + - if [ -n "$CLANG_VERSION" ]; then cget install clang-${CLANG_VERSION}; fi + - cget install cmake-3.3 boost-cmake/bcm + # Setup compilers + - if [ -n "$GCC_VERSION" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi + - if [ -n "$CLANG_VERSION" ]; then export CXX="clang++-${CLANG_VERSION}" CC="clang-${CLANG_VERSION}"; fi # Show compiler info - $CXX --version - which $CXX @@ -176,31 +164,14 @@ install: - which $CC - which cmake - cmake --version - # Install libc++ + # Use libc++ - | if [[ "$LIBCXX" == "on" ]]; then - if [[ "${CLANG_VERSION}" == "3.5" ]]; then LLVM_VERSION="3.5.2"; fi - if [[ "${CLANG_VERSION}" == "3.6" ]]; then LLVM_VERSION="3.6.2"; fi - if [[ "${CLANG_VERSION}" == "3.7" ]]; then LLVM_VERSION="3.7.0"; fi - if [[ "${CLANG_VERSION}" == "3.8" ]]; then LLVM_VERSION="3.8.1"; fi - LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz" - LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz" - LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz" - - mkdir -p llvm llvm/build llvm/projects/libcxx llvm/projects/libcxxabi - travis_retry wget --quiet -O - ${LLVM_URL} | tar --strip-components=1 -x --xz -C llvm - travis_retry wget --quiet -O - ${LIBCXX_URL} | tar --strip-components=1 -x --xz -C llvm/projects/libcxx - travis_retry wget --quiet -O - ${LIBCXXABI_URL} | tar --strip-components=1 -x --xz -C llvm/projects/libcxxabi - (cd llvm/build && cmake .. -DCMAKE_INSTALL_PREFIX=${DEPS_DIR}/usr) - (cd llvm/build/projects/libcxx && make install -j2) - (cd llvm/build/projects/libcxxabi && make install -j2) export LDFLAGS="-L${DEPS_DIR}/usr/lib -lc++ -lc++abi" export CFLAGS="${CFLAGS} -stdlib=libc++ -I${DEPS_DIR}/usr/include/c++/v1" export CXXFLAGS="${CXXFLAGS} -stdlib=libc++ -I${DEPS_DIR}/usr/include/c++/v1" export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DEPS_DIR}/usr/lib" fi - # Install bcm - - cget install boost-cmake/bcm # Add stdflags export CXXFLAGS="${CXXFLAGS} -std=${STDCXX}" diff --git a/appveyor.yml b/appveyor.yml index 478805b09..b1b95f925 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,10 +1,10 @@ environment: matrix: - - GENERATOR: "Visual Studio 14 2015 Win64" - CONFIG: Debug + # - GENERATOR: "Visual Studio 14 2015 Win64" + # CONFIG: Debug - - GENERATOR: "Visual Studio 14 2015 Win64" - CONFIG: Release + # - GENERATOR: "Visual Studio 14 2015 Win64" + # CONFIG: Release - GENERATOR: "Visual Studio 14 2015" CONFIG: Debug @@ -18,11 +18,11 @@ environment: - GENERATOR: "Visual Studio 12 2013" CONFIG: Release - # - GENERATOR: "Visual Studio 11 2012" - # CONFIG: Debug + - GENERATOR: "Visual Studio 11 2012" + CONFIG: Debug - # - GENERATOR: "Visual Studio 11 2012" - # CONFIG: Release + - GENERATOR: "Visual Studio 11 2012" + CONFIG: Release - GENERATOR: "Visual Studio 10 2010" CONFIG: Debug From e8b40ba9a83114aa738f5a378eac692a97ef3edf Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 16:27:47 -0500 Subject: [PATCH 09/19] Fast finish to false for now --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index b1b95f925..332def5b8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -31,7 +31,7 @@ environment: CONFIG: Release matrix: - fast_finish: true + fast_finish: false install: - ps: Invoke-WebRequest "https://bootstrap.pypa.io/ez_setup.py" -OutFile "c:\\ez_setup.py" From ba052daa7bb2a8031f710f34691ef499c491ac38 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 16:37:08 -0500 Subject: [PATCH 10/19] Add appveyor os --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 332def5b8..daef2d800 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,3 +1,6 @@ + +os: Visual Studio 2015 + environment: matrix: # - GENERATOR: "Visual Studio 14 2015 Win64" From cc3b0b724a8c3102f090b451125d78cd4af66eab Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 16:48:50 -0500 Subject: [PATCH 11/19] Add verbosity --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index daef2d800..ddbf7a938 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -50,4 +50,4 @@ build_script: - cmd: set PATH=c:\cget\bin;c:\Python34\Scripts\;%PATH% - cmd: call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat" - cmd: cmake --version - - cmd: cget -p c:\cget build "-G%GENERATOR%" --test + - cmd: cget -p c:\cget build -G "%GENERATOR%" --test --verbose From fdfa537fbcbd9dcb9110249e9ce396e3da2227eb Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 18:21:29 -0500 Subject: [PATCH 12/19] Improve support onos x --- .travis.yml | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 068e27022..b10ec2c16 100644 --- a/.travis.yml +++ b/.travis.yml @@ -149,14 +149,24 @@ install: - mkdir usr - export PATH=${DEPS_DIR}/usr/bin:${PATH} # Install cget - - pip install cget backports.lzma - # Install recipes - - cget install pfultz2/cget-travis-recipes - - if [ -n "$CLANG_VERSION" ]; then cget install clang-${CLANG_VERSION}; fi - - cget install cmake-3.3 boost-cmake/bcm - # Setup compilers - - if [ -n "$GCC_VERSION" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi - - if [ -n "$CLANG_VERSION" ]; then export CXX="clang++-${CLANG_VERSION}" CC="clang-${CLANG_VERSION}"; fi + - pip install cget + - | + if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then + pip install backports.lzma + cget install pfultz2/cget-travis-recipes + cget install cmake-3.3 + if [ -n "$CLANG_VERSION" ]; then + cget install clang-${CLANG_VERSION} + export CXX="clang++" + export CC="clang" + fi + if [ -n "$GCC_VERSION" ]; then + export CXX="g++-${GCC_VERSION}" + export CC="gcc-${GCC_VERSION}" + fi + fi + # Install bcm + - cget install boost-cmake/bcm # Show compiler info - $CXX --version - which $CXX From 9e8f80fae258b4ea9c81ae1aed492bb35130e485 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 18:59:41 -0500 Subject: [PATCH 13/19] Add requirements.txt file --- .travis.yml | 2 -- appveyor.yml | 3 +-- requirements.txt | 1 + 3 files changed, 2 insertions(+), 4 deletions(-) create mode 100644 requirements.txt diff --git a/.travis.yml b/.travis.yml index b10ec2c16..fb708ef08 100644 --- a/.travis.yml +++ b/.travis.yml @@ -165,8 +165,6 @@ install: export CC="gcc-${GCC_VERSION}" fi fi - # Install bcm - - cget install boost-cmake/bcm # Show compiler info - $CXX --version - which $CXX diff --git a/appveyor.yml b/appveyor.yml index ddbf7a938..9f5f0e7c2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -41,8 +41,7 @@ install: - ps: Invoke-WebRequest "https://bootstrap.pypa.io/get-pip.py" -OutFile "c:\\get-pip.py" - "c:\\Python34\\python c:\\ez_setup.py" - "c:\\Python34\\python c:\\get-pip.py" - - "c:\\Python34\\Scripts\\pip install cget" - - "c:\\Python34\\Scripts\\cget install --verbose -p c:\\cget boost-cmake/bcm" + - "c:\\Python34\\Scripts\\pip install https://github.com/pfultz2/cget/archive/generator.zip" build_script: - cmd: set PATH=C:\Program Files (x86)\CMake\bin;%PATH% diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..d24939da7 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +boost-cmake/bcm@master --build From 469c44a6c339e17a08a43a27a3d8a302c19020cd Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 21:39:07 -0500 Subject: [PATCH 14/19] Remove circular dependency --- test/limits_test.cpp | 15 ++++++++++++--- test/math_info.cpp | 9 +++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/test/limits_test.cpp b/test/limits_test.cpp index 62444965d..3586966ee 100644 --- a/test/limits_test.cpp +++ b/test/limits_test.cpp @@ -9,10 +9,19 @@ */ #include -#include -#include #include +namespace boost { namespace config_test { + +inline void fail(bool b) +{ + if (!b) std::abort(); +} + +}} + +#define BOOST_TEST(x) boost::config_test::fail(x) + /* * General portability note: * MSVC mis-compiles explicit function template instantiations. @@ -172,7 +181,7 @@ void test_float_limits(const T &, const char * msg) } -int cpp_main(int, char*[]) +int main(int, char*[]) { test_integral_limits(bool(), "bool"); test_integral_limits(char(), "char"); diff --git a/test/math_info.cpp b/test/math_info.cpp index 47fe9ffe4..49f3074d7 100644 --- a/test/math_info.cpp +++ b/test/math_info.cpp @@ -14,6 +14,7 @@ // #include +#include #include #include #include @@ -21,7 +22,9 @@ #include #include #include -#include +#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS +#include +#endif #ifdef BOOST_NO_STDC_NAMESPACE namespace std{ using ::strcmp; using ::pow; using ::fabs; using ::sqrt; using ::sin; using ::atan2; } @@ -155,8 +158,10 @@ void print_limits(T, const char* name) } std::cout << " sizeof(" << name << ") = " << sizeof(T) << std::endl; +#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS std::cout << - " alignment_of<" << name << "> = " << boost::alignment_of::value << std::endl << std::endl; + " alignment_of<" << name << "> = " << std::alignment_of::value << std::endl; +#endif } /* template From 7cd8669f888f82ce6b66b795b0778f4b4b7a3ab1 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 23 Mar 2017 22:59:27 -0500 Subject: [PATCH 15/19] Skip broken tests --- test/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 882bfa15a..7f277f4ae 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -65,6 +65,9 @@ endfunction() set(SKIP_TESTS boost_no_ded_typename.ipp boost_has_macro_use_facet.ipp + boost_no_com_value_init.ipp + boost_no_cxx11_hdr_codecvt.ipp + boost_no_two_phase_lookup.ipp ) file(GLOB TESTS *.ipp) foreach(TEST ${TESTS}) From c4839c9c60a6d8331c03707bc45341cf0ff8913b Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 24 Mar 2017 01:05:15 -0500 Subject: [PATCH 16/19] Skip more tests --- test/CMakeLists.txt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7f277f4ae..17d1783a6 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -38,6 +38,11 @@ function(create_test BOOST_CONFIG_MACRO BOOST_CONFIG_FILE POSITIVE_TEST EXPECT_S else() configure_file(fail.cpp ${BOOST_CONFIG_FILE}_fail.cpp) bcm_test(NAME ${BOOST_CONFIG_FILE}_fail SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${BOOST_CONFIG_FILE}_fail.cpp COMPILE_ONLY WILL_FAIL) + if(MSVC) + target_compile_options(${BOOST_CONFIG_FILE}_fail PUBLIC /WX) + else() + target_compile_options(${BOOST_CONFIG_FILE}_fail PUBLIC -Werror -Wall) + endif() endif() endfunction() @@ -63,10 +68,17 @@ function(parse_test SRC) endfunction() set(SKIP_TESTS - boost_no_ded_typename.ipp boost_has_macro_use_facet.ipp boost_no_com_value_init.ipp + boost_no_cxx11_addressof.ipp + boost_no_cxx11_hdr_atomic.ipp boost_no_cxx11_hdr_codecvt.ipp + boost_no_cxx11_hdr_tuple.ipp + boost_no_cxx11_std_align.ipp + boost_no_cxx11_trailing_result_types.ipp + boost_no_decltype_n3276.ipp + boost_no_ded_typename.ipp + boost_no_sfinae_expr.ipp boost_no_two_phase_lookup.ipp ) file(GLOB TESTS *.ipp) From 2ad805970c7347e89c4975a84cff3f7bc293646d Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 24 Mar 2017 01:06:54 -0500 Subject: [PATCH 17/19] Use master branch for cget --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 9f5f0e7c2..bcd4621c4 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -41,7 +41,7 @@ install: - ps: Invoke-WebRequest "https://bootstrap.pypa.io/get-pip.py" -OutFile "c:\\get-pip.py" - "c:\\Python34\\python c:\\ez_setup.py" - "c:\\Python34\\python c:\\get-pip.py" - - "c:\\Python34\\Scripts\\pip install https://github.com/pfultz2/cget/archive/generator.zip" + - "c:\\Python34\\Scripts\\pip install https://github.com/pfultz2/cget/archive/master.zip" build_script: - cmd: set PATH=C:\Program Files (x86)\CMake\bin;%PATH% From 4f00c382c6ab4846f9e9fcf9edd000651694ef33 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 27 Jul 2017 09:28:18 -0500 Subject: [PATCH 18/19] Refactor testing with the latest bcm module --- CMakeLists.txt | 17 +++++------ test/CMakeLists.txt | 83 +++++++++++------------------------------------------ test/TestGen.cmake | 52 +++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 74 deletions(-) create mode 100644 test/TestGen.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 9790ecbe0..0d8265c28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,16 +1,17 @@ -cmake_minimum_required (VERSION 2.8) -project(Boost.Config) +cmake_minimum_required (VERSION 3.5) +project(boost_config) enable_language(C) enable_language(CXX) find_package(BCM) -include(BCMPackage) -include(BCMTest) -include(BCMProperties) +include(BCMDeploy) +include(BCMSetupVersion) -bcm_boost_package(config - VERSION 1.61.0 -) +bcm_setup_version(VERSION 1.61.0) + +add_library(boost_config INTERFACE) + +bcm_deploy(TARGETS boost_config INCLUDE include) add_subdirectory(test) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 17d1783a6..125db78b3 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,71 +1,24 @@ +include(BCMTest) +include(BCMProperties) + +bcm_test_link_libraries(boost_config) + find_package(Threads) -set(THREADED_LIBS "${CMAKE_THREAD_LIBS_INIT}") +add_library(config_threads INTERFACE) +target_link_libraries(config_threads INTERFACE "${CMAKE_THREAD_LIBS_INIT}") set(LIBS_TO_CHECK atomic rt) foreach(lib ${LIBS_TO_CHECK}) find_library(FIND_LIB${lib} ${lib}) if(FIND_LIB${lib}) - set(THREADED_LIBS "${THREADED_LIBS} ${FIND_LIB${lib}}") + target_link_libraries(config_threads INTERFACE "${FIND_LIB${lib}}") endif() endforeach() string(STRIP "${THREADED_LIBS}" THREADED_LIBS) message(STATUS "Threaded libs: ${THREADED_LIBS}") include_directories(.) -macro(threaded_test) - bcm_test(${ARGN}) - cmake_parse_arguments(PARSE "" "NAME" "" ${ARGN}) - target_link_libraries(${PARSE_NAME} ${THREADED_LIBS}) -endmacro(threaded_test) - -function(create_test BOOST_CONFIG_MACRO BOOST_CONFIG_FILE POSITIVE_TEST EXPECT_SUCCESS) - string(TOLOWER ${BOOST_CONFIG_MACRO} BOOST_CONFIG_NS) - if(${POSITIVE_TEST} EQUAL ${EXPECT_SUCCESS}) - set(BOOST_CONFIG_IFDEF "#ifdef") - else() - set(BOOST_CONFIG_IFDEF "#ifndef") - endif() - - if(BOOST_CONFIG_MACRO MATCHES "BOOST_HAS_TR1.*") - set(BOOST_CONFIG_TR1_INCLUDE "#include ") - else() - set(BOOST_CONFIG_TR1_INCLUDE "") - endif() - - if(${EXPECT_SUCCESS}) - configure_file(pass.cpp ${BOOST_CONFIG_FILE}_pass.cpp) - threaded_test(NAME ${BOOST_CONFIG_FILE}_pass SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${BOOST_CONFIG_FILE}_pass.cpp) - else() - configure_file(fail.cpp ${BOOST_CONFIG_FILE}_fail.cpp) - bcm_test(NAME ${BOOST_CONFIG_FILE}_fail SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${BOOST_CONFIG_FILE}_fail.cpp COMPILE_ONLY WILL_FAIL) - if(MSVC) - target_compile_options(${BOOST_CONFIG_FILE}_fail PUBLIC /WX) - else() - target_compile_options(${BOOST_CONFIG_FILE}_fail PUBLIC -Werror -Wall) - endif() - endif() -endfunction() - -function(parse_test SRC) - if(SRC MATCHES "boost_has_tr1.*") - # Skip tr1 tests for now - return() - endif() - set(MACRO_REGEX "//[ ]*MACRO[ ]*:[ ]*([A-Za-z0-9_]+)") - file(STRINGS ${SRC} SRC_MACRO_LINE REGEX ${MACRO_REGEX}) - string(REGEX REPLACE ${MACRO_REGEX} "\\1" BOOST_CONFIG_MACRO ${SRC_MACRO_LINE}) - get_filename_component(BOOST_CONFIG_FILE ${SRC} NAME_WE) - - if(SRC MATCHES "boost_no_") - set(POSITIVE_TEST 0) - else() - set(POSITIVE_TEST 1) - endif() - - create_test(${BOOST_CONFIG_MACRO} ${BOOST_CONFIG_FILE} ${POSITIVE_TEST} 1) - create_test(${BOOST_CONFIG_MACRO} ${BOOST_CONFIG_FILE} ${POSITIVE_TEST} 0) - -endfunction() +include(TestGen.cmake) set(SKIP_TESTS boost_has_macro_use_facet.ipp @@ -83,27 +36,24 @@ set(SKIP_TESTS ) file(GLOB TESTS *.ipp) foreach(TEST ${TESTS}) - set(${TEST}_ENABLED On) - foreach(SKIP_TEST ${SKIP_TESTS}) - if(TEST MATCHES ${SKIP_TEST}) - set(${TEST}_ENABLED Off) - break() - endif() - endforeach() - if(${TEST}_ENABLED) + if(NOT "${TEST}" IN_LIST SKIP_TESTS) parse_test(${TEST}) endif() endforeach() bcm_test(NAME config_test_c SOURCES config_test_c.c) bcm_test(NAME config_info SOURCES config_info.cpp) -threaded_test(NAME config_test SOURCES config_test.cpp) +bcm_test(NAME config_test SOURCES config_test.cpp) bcm_test(NAME config_test_no_rtti SOURCES config_test.cpp) set_target_properties(config_test_no_rtti PROPERTIES CXX_RTTI Off) bcm_test(NAME config_test_no_exceptions SOURCES config_test.cpp) set_target_properties(config_test_no_exceptions PROPERTIES CXX_EXCEPTIONS Off) +foreach(CONFIG_TEST config_test config_test_no_rtti config_test_no_exceptions) + target_link_libraries(${CONFIG_TEST} config_threads) +endforeach() + bcm_test(NAME test_thread_fail1 SOURCES threads/test_thread_fail1.cpp COMPILE_ONLY WILL_FAIL) bcm_test(NAME test_thread_fail2 SOURCES threads/test_thread_fail2.cpp COMPILE_ONLY WILL_FAIL) @@ -116,9 +66,10 @@ set(IMPLICIT_FALLTHROUGH_FLAG "-std=c++11 -Wimplicit-fallthrough -Wall -Werror") check_cxx_compiler_flag(${IMPLICIT_FALLTHROUGH_FLAG} HAS_IMPLICIT_FALLTHROUGH) bcm_test(NAME boost_fallthrough_test SOURCES boost_fallthrough_test.cpp COMPILE_ONLY) if(HAS_IMPLICIT_FALLTHROUGH) - set_target_properties(boost_fallthrough_test PROPERTIES COMPILE_FLAGS ${IMPLICIT_FALLTHROUGH_FLAG}) + target_compile_options(boost_fallthrough_test ${IMPLICIT_FALLTHROUGH_FLAG}) endif(HAS_IMPLICIT_FALLTHROUGH) bcm_test(NAME helper_macro_test SOURCES helper_macro_test.cpp COMPILE_ONLY) bcm_test(NAME cstdint_include_test SOURCES cstdint_include_test.cpp COMPILE_ONLY) + diff --git a/test/TestGen.cmake b/test/TestGen.cmake new file mode 100644 index 000000000..c64f7a281 --- /dev/null +++ b/test/TestGen.cmake @@ -0,0 +1,52 @@ +# +# Functions to create tests from the .ipp files +# +function(create_test BOOST_CONFIG_MACRO BOOST_CONFIG_FILE POSITIVE_TEST EXPECT_SUCCESS) + string(TOLOWER ${BOOST_CONFIG_MACRO} BOOST_CONFIG_NS) + if(${POSITIVE_TEST} EQUAL ${EXPECT_SUCCESS}) + set(BOOST_CONFIG_IFDEF "#ifdef") + else() + set(BOOST_CONFIG_IFDEF "#ifndef") + endif() + + if(BOOST_CONFIG_MACRO MATCHES "BOOST_HAS_TR1.*") + set(BOOST_CONFIG_TR1_INCLUDE "#include ") + else() + set(BOOST_CONFIG_TR1_INCLUDE "") + endif() + + if(${EXPECT_SUCCESS}) + configure_file(pass.cpp ${BOOST_CONFIG_FILE}_pass.cpp) + bcm_test(NAME ${BOOST_CONFIG_FILE}_pass SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${BOOST_CONFIG_FILE}_pass.cpp) + target_link_libraries(${BOOST_CONFIG_FILE}_pass config_threads) + else() + configure_file(fail.cpp ${BOOST_CONFIG_FILE}_fail.cpp) + bcm_test(NAME ${BOOST_CONFIG_FILE}_fail SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${BOOST_CONFIG_FILE}_fail.cpp COMPILE_ONLY WILL_FAIL) + if(MSVC) + target_compile_options(${BOOST_CONFIG_FILE}_fail PUBLIC /WX) + else() + target_compile_options(${BOOST_CONFIG_FILE}_fail PUBLIC -Werror -Wall) + endif() + endif() +endfunction() + +function(parse_test SRC) + if(SRC MATCHES "boost_has_tr1.*") + # Skip tr1 tests for now + return() + endif() + set(MACRO_REGEX "//[ ]*MACRO[ ]*:[ ]*([A-Za-z0-9_]+)") + file(STRINGS ${SRC} SRC_MACRO_LINE REGEX ${MACRO_REGEX}) + string(REGEX REPLACE ${MACRO_REGEX} "\\1" BOOST_CONFIG_MACRO ${SRC_MACRO_LINE}) + get_filename_component(BOOST_CONFIG_FILE ${SRC} NAME_WE) + + if(SRC MATCHES "boost_no_") + set(POSITIVE_TEST 0) + else() + set(POSITIVE_TEST 1) + endif() + + create_test(${BOOST_CONFIG_MACRO} ${BOOST_CONFIG_FILE} ${POSITIVE_TEST} 1) + create_test(${BOOST_CONFIG_MACRO} ${BOOST_CONFIG_FILE} ${POSITIVE_TEST} 0) + +endfunction() From ad477d4fae44e5f6b430fa7314d90b45f738c2bd Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 27 Jul 2017 10:13:17 -0500 Subject: [PATCH 19/19] Set namespace for target --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d8265c28..afd7095da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,8 @@ include(BCMSetupVersion) bcm_setup_version(VERSION 1.61.0) add_library(boost_config INTERFACE) +set_property(TARGET boost_config PROPERTY EXPORT_NAME config) -bcm_deploy(TARGETS boost_config INCLUDE include) +bcm_deploy(TARGETS boost_config INCLUDE include NAMESPACE boost::) add_subdirectory(test)