diff --git a/.travis.yml b/.travis.yml index dc5073cac..1daba07a2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,7 +48,7 @@ matrix: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['libstdc++-5-dev', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache'] - env: CLANG_VERSION='3.8.1' CLANG_PACKAGE="clang" BUILD_TYPE='Debug' RUN_CLANG_FORMAT=ON BUILD_COMPONENTS=ON + env: CLANG_VERSION='3.8.1' CLANG_PACKAGE="clang++" BUILD_TYPE='Debug' RUN_CLANG_FORMAT=ON BUILD_COMPONENTS=ON - os: osx osx_image: xcode7.3 @@ -157,8 +157,8 @@ install: if [[ ${ENABLE_MASON:-OFF} == 'ON' ]]; then # for mason builds we need to point the example # at the clang++ installed by the CMakeLists.txt automatically - CXX=$(.mason/mason prefix clang++ 3.9.0)/bin/clang++ - CC=$(.mason/mason prefix clang++ 3.9.0)/bin/clang + CXX=$(.mason/mason prefix clang++ 3.8.1)/bin/clang++ + CC=$(.mason/mason prefix clang++ 3.8.1)/bin/clang fi - mkdir example/build && pushd example/build - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} diff --git a/CMakeLists.txt b/CMakeLists.txt index b3f3c7617..36b6fc1c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,20 +8,34 @@ This process created the file `CMakeCache.txt' and the directory `CMakeFiles'. P endif() if(ENABLE_MASON) + + # versions in use + set(MASON_CLANG_VERSION "3.8.1") + set(MASON_BOOST_VERSION "1.61.0") + set(MASON_STXXL_VERSION "1.4.1") + set(MASON_EXPAT_VERSION "2.1.1") + set(MASON_LUA_VERSION "5.2.4") + set(MASON_LUABIND_VERSION "e414c57bcb687bb3091b7c55bbff6947f052e46b") + set(MASON_BZIP2_VERSION "1.0.6") + set(MASON_TBB_VERSION "43_20150316") + set(MASON_CCACHE_VERSION "3.3.1") + message(STATUS "Enabling mason") if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.mason/mason.cmake") - #COMMAND git submodule update --init .mason WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} execute_process( - COMMAND git clone -b master --depth 1 https://github.com/mapbox/mason.git ${CMAKE_CURRENT_SOURCE_DIR}/.mason + COMMAND git clone -b v0.1.0 --depth 1 https://github.com/mapbox/mason.git ${CMAKE_CURRENT_SOURCE_DIR}/.mason ERROR_QUIET ) endif() - include(${CMAKE_CURRENT_SOURCE_DIR}/.mason/mason.cmake) + execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/.mason/mason --version ERROR_QUIET OUTPUT_VARIABLE MASON_RELEASE_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) + message(STATUS "Using mason ${MASON_RELEASE_VERSION}") - set(CLANG_VERSION "3.8.1") - mason_use(clang++ VERSION ${CLANG_VERSION}) - message(STATUS "Setting compiler to clang++ ${CLANG_VERSION} (via mason) ${MASON_PACKAGE_clang++_PREFIX}/bin/clang++") - set(CMAKE_CXX_COMPILER "${MASON_PACKAGE_clang++_PREFIX}/bin/clang++") - set(CMAKE_C_COMPILER "${MASON_PACKAGE_clang++_PREFIX}/bin/clang") + include(${CMAKE_CURRENT_SOURCE_DIR}/.mason/mason.cmake) + if(NOT CMAKE_CXX_COMPILER) + mason_use(clang++ VERSION ${MASON_CLANG_VERSION}) + message(STATUS "Setting compiler to clang++ ${MASON_CLANG_VERSION} (via mason) ${MASON_PACKAGE_clang++_PREFIX}/bin/clang++") + set(CMAKE_CXX_COMPILER "${MASON_PACKAGE_clang++_PREFIX}/bin/clang++") + set(CMAKE_C_COMPILER "${MASON_PACKAGE_clang++_PREFIX}/bin/clang") + endif() endif() project(OSRM C CXX) @@ -313,42 +327,42 @@ if(ENABLE_MASON) message(STATUS "Installing dependencies via mason") set(Boost_USE_STATIC_LIBS ON) - mason_use(boost VERSION 1.61.0 HEADER_ONLY) + mason_use(boost VERSION ${MASON_BOOST_VERSION} HEADER_ONLY) add_dependency_includes(${MASON_PACKAGE_boost_INCLUDE_DIRS}) - mason_use(boost_libfilesystem VERSION 1.61.0) + mason_use(boost_libfilesystem VERSION ${MASON_BOOST_VERSION}) set(Boost_FILESYSTEM_LIBRARY ${MASON_PACKAGE_boost_libfilesystem_STATIC_LIBS}) - mason_use(boost_libiostreams VERSION 1.61.0) + mason_use(boost_libiostreams VERSION ${MASON_BOOST_VERSION}) set(Boost_IOSTREAMS_LIBRARY ${MASON_PACKAGE_boost_libiostreams_STATIC_LIBS}) - mason_use(boost_libprogram_options VERSION 1.61.0) + mason_use(boost_libprogram_options VERSION ${MASON_BOOST_VERSION}) set(Boost_PROGRAM_OPTIONS_LIBRARY ${MASON_PACKAGE_boost_libprogram_options_STATIC_LIBS}) - mason_use(boost_libregex VERSION 1.61.0) + mason_use(boost_libregex VERSION ${MASON_BOOST_VERSION}) set(Boost_REGEX_LIBRARY ${MASON_PACKAGE_boost_libregex_STATIC_LIBS}) - mason_use(boost_libtest VERSION 1.61.0) + mason_use(boost_libtest VERSION ${MASON_BOOST_VERSION}) set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY ${MASON_PACKAGE_boost_libtest_STATIC_LIBS}) - mason_use(boost_libdate_time VERSION 1.61.0) + mason_use(boost_libdate_time VERSION ${MASON_BOOST_VERSION}) set(Boost_DATE_TIME_LIBRARY ${MASON_PACKAGE_boost_libdate_time_STATIC_LIBS}) - mason_use(boost_libthread VERSION 1.61.0) + mason_use(boost_libthread VERSION ${MASON_BOOST_VERSION}) set(Boost_THREAD_LIBRARY ${MASON_PACKAGE_boost_libthread_STATIC_LIBS}) - mason_use(boost_libsystem VERSION 1.61.0) + mason_use(boost_libsystem VERSION ${MASON_BOOST_VERSION}) set(Boost_SYSTEM_LIBRARY ${MASON_PACKAGE_boost_libsystem_STATIC_LIBS}) - mason_use(stxxl VERSION 1.4.1) + mason_use(stxxl VERSION ${MASON_STXXL_VERSION}) add_dependency_includes(${MASON_PACKAGE_stxxl_INCLUDE_DIRS}) set(STXXL_LIBRARY ${MASON_PACKAGE_stxxl_STATIC_LIBS}) - mason_use(expat VERSION 2.1.1) + mason_use(expat VERSION ${MASON_EXPAT_VERSION}) add_dependency_includes(${MASON_PACKAGE_expat_INCLUDE_DIRS}) set(EXPAT_LIBRARIES ${MASON_PACKAGE_expat_STATIC_LIBS}) - mason_use(lua VERSION 5.2.4) + mason_use(lua VERSION ${MASON_LUA_VERSION}) add_dependency_includes(${MASON_PACKAGE_lua_INCLUDE_DIRS}) set(USED_LUA_LIBRARIES ${MASON_PACKAGE_lua_STATIC_LIBS}) - mason_use(luabind_lua524 VERSION e414c57bcb687bb3091b7c55bbff6947f052e46b) + mason_use(luabind_lua524 VERSION ${MASON_LUABIND_VERSION}) add_dependency_includes(${MASON_PACKAGE_luabind_lua524_INCLUDE_DIRS}) set(LUABIND_LIBRARY ${MASON_PACKAGE_luabind_lua524_STATIC_LIBS}) - mason_use(bzip2 VERSION 1.0.6) + mason_use(bzip2 VERSION ${MASON_BZIP2_VERSION}) add_dependency_includes(${MASON_PACKAGE_bzip2_INCLUDE_DIRS}) set(BZIP2_LIBRARIES ${MASON_PACKAGE_bzip2_STATIC_LIBS}) @@ -359,23 +373,25 @@ if(ENABLE_MASON) #set(ZLIB_LIBRARY ${MASON_PACKAGE_zlib_LDFLAGS}) set(ZLIB_LIBRARY "-lz") - mason_use(tbb VERSION 43_20150316) + mason_use(tbb VERSION ${MASON_TBB_VERSION}) add_dependency_includes(${MASON_PACKAGE_tbb_INCLUDE_DIRS}) set(TBB_LIBRARIES ${MASON_PACKAGE_tbb_LDFLAGS}) if(NOT MASON_PACKAGE_tbb_LIBRARY_DIRS) - message(WARNING "MASON_PACKAGE_tbb_LIBRARY_DIRS is empty, rpath will not work") + message(FATAL_ERROR "MASON_PACKAGE_tbb_LIBRARY_DIRS is empty, rpath will not work") endif() - foreach(libpath ${MASON_PACKAGE_tbb_LIBRARY_DIRS}) - if(UNIX AND NOT APPLE) - set(LINKER_FLAGS "-Wl,-rpath,${libpath}") - elseif(APPLE) - set(LINKER_FLAGS "-Wl,-rpath, -Wl,${libpath}") - endif() - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}") - endforeach() + foreach(libpath ${MASON_PACKAGE_tbb_LIBRARY_DIRS}) + if(UNIX AND NOT APPLE) + set(LINKER_FLAGS "-Wl,-rpath,${libpath}") + elseif(APPLE) + set(LINKER_FLAGS "-Wl,-rpath, -Wl,${libpath}") + endif() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}") + file(GLOB TBBGlob ${libpath}/*.*) + install(FILES ${TBBGlob} DESTINATION lib) + endforeach() include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/include) @@ -387,9 +403,8 @@ if(ENABLE_MASON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0") if(ENABLE_CCACHE) - set(CCACHE_VERSION "3.3.1") - mason_use(ccache VERSION ${CCACHE_VERSION}) - message(STATUS "Setting ccache to clang++ ${CCACHE_VERSION} (via mason) ${MASON_PACKAGE_ccache_PREFIX}/bin/ccache") + mason_use(ccache VERSION ${MASON_CCACHE_VERSION}) + message(STATUS "Setting ccache to ccache ${MASON_CCACHE_VERSION} (via mason) ${MASON_PACKAGE_ccache_PREFIX}/bin/ccache") message(STATUS "Using ccache to speed up incremental builds") set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${MASON_PACKAGE_ccache_PREFIX}/bin/ccache) set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${MASON_PACKAGE_ccache_PREFIX}/bin/ccache)