Add support for building against mason-provided deps
This commit is contained in:
		
							parent
							
								
									4598599f52
								
							
						
					
					
						commit
						83b7d75121
					
				| @ -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} | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user