Move workaround into single TU.

This commit is contained in:
Daniel Patterson 2017-10-02 14:06:49 -07:00
parent 6b8ae24df6
commit e9b7b68427
No known key found for this signature in database
GPG Key ID: 19C12BE1725A028B
3 changed files with 20 additions and 14 deletions

View File

@ -195,7 +195,8 @@ matrix:
-DENABLE_MASON=${ENABLE_MASON:-OFF} \ -DENABLE_MASON=${ENABLE_MASON:-OFF} \
-DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \ -DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \
-DENABLE_CCACHE=ON \ -DENABLE_CCACHE=ON \
-DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \
-DENABLE_GLIBC_WORKAROUND=ON
- make --jobs=${JOBS} - make --jobs=${JOBS}
- popd - popd
script: script:
@ -218,7 +219,8 @@ matrix:
-DENABLE_MASON=${ENABLE_MASON:-OFF} \ -DENABLE_MASON=${ENABLE_MASON:-OFF} \
-DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \ -DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \
-DENABLE_CCACHE=ON \ -DENABLE_CCACHE=ON \
-DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \
-DENABLE_GLIBC_WORKAROUND=ON
- make --jobs=${JOBS} - make --jobs=${JOBS}
- popd - popd
script: script:
@ -241,7 +243,8 @@ matrix:
-DENABLE_MASON=${ENABLE_MASON:-OFF} \ -DENABLE_MASON=${ENABLE_MASON:-OFF} \
-DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \ -DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \
-DENABLE_CCACHE=ON \ -DENABLE_CCACHE=ON \
-DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \
-DENABLE_GLIBC_WORKAROUND=ON
- make --jobs=${JOBS} - make --jobs=${JOBS}
- popd - popd
script: script:
@ -264,7 +267,8 @@ matrix:
-DENABLE_MASON=${ENABLE_MASON:-OFF} \ -DENABLE_MASON=${ENABLE_MASON:-OFF} \
-DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \ -DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \
-DENABLE_CCACHE=ON \ -DENABLE_CCACHE=ON \
-DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \
-DENABLE_GLIBC_WORKAROUND=ON
- make --jobs=${JOBS} - make --jobs=${JOBS}
- popd - popd
script: script:
@ -338,7 +342,8 @@ install:
-DENABLE_STXXL=${ENABLE_STXXL:-OFF} \ -DENABLE_STXXL=${ENABLE_STXXL:-OFF} \
-DBUILD_TOOLS=ON \ -DBUILD_TOOLS=ON \
-DENABLE_CCACHE=ON \ -DENABLE_CCACHE=ON \
-DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \
-DENABLE_GLIBC_WORKAROUND=${ENABLE_GLIBC_WORKAROUND:-OFF}
- echo "travis_fold:start:MAKE" - echo "travis_fold:start:MAKE"
- make --jobs=${JOBS} - make --jobs=${JOBS}
- make tests --jobs=${JOBS} - make tests --jobs=${JOBS}

View File

@ -31,6 +31,7 @@ option(ENABLE_LTO "Use LTO if available" OFF)
option(ENABLE_FUZZING "Fuzz testing using LLVM's libFuzzer" OFF) option(ENABLE_FUZZING "Fuzz testing using LLVM's libFuzzer" OFF)
option(ENABLE_GOLD_LINKER "Use GNU gold linker if available" ON) option(ENABLE_GOLD_LINKER "Use GNU gold linker if available" ON)
option(ENABLE_NODE_BINDINGS "Build NodeJs bindings" OFF) option(ENABLE_NODE_BINDINGS "Build NodeJs bindings" OFF)
option(ENABLE_GLIBC_WORKAROUND "Workaround GLIBC symbol exports" OFF)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
@ -402,8 +403,6 @@ endif()
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
set(MAYBE_RT_LIBRARY -lrt) set(MAYBE_RT_LIBRARY -lrt)
# TODO: print some warnings, or make this test a bit more detailed
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include ${CMAKE_CURRENT_SOURCE_DIR}/include/util/glibc_workaround.hpp")
endif() endif()
# Disallow deprecated protozero APIs # Disallow deprecated protozero APIs
@ -812,6 +811,10 @@ add_custom_target(uninstall
add_subdirectory(unit_tests) add_subdirectory(unit_tests)
add_subdirectory(src/benchmarks) add_subdirectory(src/benchmarks)
if (ENABLE_GLIBC_WORKAROUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGLIBC_WORKAROUND")
endif()
if (ENABLE_NODE_BINDINGS) if (ENABLE_NODE_BINDINGS)
add_subdirectory(src/nodejs) add_subdirectory(src/nodejs)
endif() endif()

View File

@ -1,6 +1,4 @@
#ifndef GLIBC_WORKAROUND_H #ifdef GLIBC_WORKAROUND
#define GLIBC_WORKAROUND_H
#include <stdexcept> #include <stdexcept>
// https://github.com/bitcoin/bitcoin/pull/4042 // https://github.com/bitcoin/bitcoin/pull/4042
@ -11,13 +9,13 @@
// Note: only necessary on Linux // Note: only necessary on Linux
#ifdef __linux__ #ifdef __linux__
#define WORKAROUND #define _ENABLE_GLIBC_WORKAROUND
#warning building with workaround #warning building with workaround
#else #else
#warning not building with workaround #warning not building with workaround
#endif #endif
#ifdef WORKAROUND #ifdef _ENABLE_GLIBC_WORKAROUND
namespace std namespace std
{ {
@ -28,6 +26,6 @@ void __throw_out_of_range_fmt(const char *err, ...)
__throw_out_of_range(err); __throw_out_of_range(err);
} }
} }
#endif // WORKAROUND #endif // _ENABLE_GLIBC_WORKAROUND
#endif // GLIBC_WORKAROUND_H #endif // GLIBC_WORKAROUND