diff --git a/.travis.yml b/.travis.yml index 3248314..7054820 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ language: cpp sudo: false -dist: trusty +dist: xenial branches: only: @@ -133,6 +133,7 @@ matrix: env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11 - os: linux + dist: trusty compiler: /usr/bin/clang++ env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11 addons: @@ -141,6 +142,7 @@ matrix: - clang-3.3 - os: linux + dist: trusty compiler: /usr/bin/clang++ env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11 addons: @@ -155,10 +157,8 @@ matrix: apt: packages: - clang-3.5 - - libstdc++-4.9-dev sources: - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.5 - os: linux compiler: clang++-3.6 @@ -169,7 +169,6 @@ matrix: - clang-3.6 sources: - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.6 - os: linux compiler: clang++-3.7 @@ -180,7 +179,6 @@ matrix: - clang-3.7 sources: - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.7 - os: linux compiler: clang++-3.8 @@ -189,10 +187,8 @@ matrix: apt: packages: - clang-3.8 - - libstdc++-4.9-dev sources: - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - os: linux compiler: clang++-3.9 @@ -201,10 +197,8 @@ matrix: apt: packages: - clang-3.9 - - libstdc++-4.9-dev sources: - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.9 - os: linux compiler: clang++-4.0 @@ -215,7 +209,6 @@ matrix: - clang-4.0 sources: - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-4.0 - os: linux compiler: clang++-5.0 @@ -226,7 +219,6 @@ matrix: - clang-5.0 sources: - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-5.0 - os: linux compiler: clang++-6.0 @@ -237,7 +229,6 @@ matrix: - clang-6.0 sources: - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-6.0 - os: linux compiler: clang++-7 @@ -248,7 +239,7 @@ matrix: - clang-7 sources: - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-7 + - llvm-toolchain-xenial-7 - os: linux compiler: clang++-8 @@ -259,11 +250,24 @@ matrix: - clang-8 sources: - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-8 + - llvm-toolchain-xenial-8 - os: linux + compiler: clang++-9 + env: TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a + addons: + apt: + packages: + - clang-9 + sources: + - ubuntu-toolchain-r-test + - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main' + key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' + + - os: linux + dist: trusty compiler: clang++-libc++ - env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z VARIANT=release + env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z addons: apt: packages: @@ -274,14 +278,37 @@ matrix: env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z - os: linux - compiler: g++ - env: CMAKE_SUBDIR_TEST=1 + env: CMAKE_TEST=1 script: - - cd libs/bind/test/cmake_subdir_test && mkdir __build__ && cd __build__ + - mkdir __build__ && cd __build__ + - cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=bind .. + - ctest --output-on-failure -R boost_bind + + - os: linux + env: CMAKE_SUBDIR_TEST=1 + install: + - BOOST_BRANCH=develop + - if [ "$TRAVIS_BRANCH" = "master" ]; then BOOST_BRANCH=master; fi + - git clone -b $BOOST_BRANCH https://github.com/boostorg/assert.git ../assert + - git clone -b $BOOST_BRANCH https://github.com/boostorg/config.git ../config + - git clone -b $BOOST_BRANCH https://github.com/boostorg/core.git ../core + script: + - cd test/cmake_subdir_test && mkdir __build__ && cd __build__ - cmake .. - cmake --build . - cmake --build . --target check + - os: linux + env: CMAKE_INSTALL_TEST=1 + script: + - mkdir __build__ && cd __build__ + - cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES="assert;bind;config;core" -DCMAKE_INSTALL_PREFIX=~/.local .. + - cmake --build . --target install + - cd ../libs/bind/test/cmake_install_test && mkdir __build__ && cd __build__ + - cmake -DCMAKE_INSTALL_PREFIX=~/.local .. + - cmake --build . + - cmake --build . --target check + install: - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true - cd .. diff --git a/CMakeLists.txt b/CMakeLists.txt index a8517d2..4c3fc7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,10 @@ -# Copyright 2018 Mike Dev +# Copyright 2018, 2019 Peter Dimov # Distributed under the Boost Software License, Version 1.0. # See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt -# Partial (add_subdirectory only) and experimental CMake support -# Subject to change; please do not rely on the contents of this file yet +cmake_minimum_required(VERSION 3.5...3.16) -cmake_minimum_required(VERSION 3.5) -project(BoostBind LANGUAGES CXX) +project(boost_bind VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX) add_library(boost_bind INTERFACE) add_library(Boost::bind ALIAS boost_bind) @@ -14,7 +12,20 @@ add_library(Boost::bind ALIAS boost_bind) target_include_directories(boost_bind INTERFACE include) target_link_libraries(boost_bind - INTERFACE - Boost::config - Boost::core + INTERFACE + Boost::config + Boost::core ) + +if(BOOST_SUPERPROJECT_VERSION) + + include(BoostInstall) + boost_install(TARGETS boost_bind HEADER_DIRECTORY include/) + +endif() + +if(BUILD_TESTING) + + add_subdirectory(test) + +endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..1f8c370 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,11 @@ +# Copyright 2018, 2019 Peter Dimov +# Distributed under the Boost Software License, Version 1.0. +# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt + +include(BoostTestJamfile OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST) + +if(HAVE_BOOST_TEST) + +boost_test_jamfile(FILE Jamfile.v2 LINK_LIBRARIES Boost::bind Boost::core Boost::function Boost::smart_ptr) + +endif() diff --git a/test/cmake_install_test/CMakeLists.txt b/test/cmake_install_test/CMakeLists.txt new file mode 100644 index 0000000..f245966 --- /dev/null +++ b/test/cmake_install_test/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright 2018, 2019 Peter Dimov +# Distributed under the Boost Software License, Version 1.0. +# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt + +cmake_minimum_required(VERSION 3.5...3.16) + +project(cmake_install_test LANGUAGES CXX) + +find_package(boost_bind REQUIRED) +find_package(boost_core REQUIRED) + +add_executable(quick ../quick.cpp) +target_link_libraries(quick Boost::bind Boost::core) + +enable_testing() +add_test(quick quick) + +add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $) diff --git a/test/cmake_subdir_test/CMakeLists.txt b/test/cmake_subdir_test/CMakeLists.txt index 8cac315..7b22a37 100644 --- a/test/cmake_subdir_test/CMakeLists.txt +++ b/test/cmake_subdir_test/CMakeLists.txt @@ -2,7 +2,7 @@ # Distributed under the Boost Software License, Version 1.0. # See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.5...3.16) project(cmake_subdir_test LANGUAGES CXX)