diff options
author | Gil <mcg@google.com> | 2018-07-11 15:55:36 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-11 15:55:36 -0700 |
commit | 7fc953fc6ffa69d159c0523d3902d867fe8c0ca5 (patch) | |
tree | d8551a0c0d592f5937435819ca3d6e8c1bec72a9 /Firestore | |
parent | e1ace703fbf4458d9e887ebf30050b1a0482a2d2 (diff) |
Firestore CMake cleanup (#1510)
* Pull out sanitizer options into a separate file
* Reorder packages
* Remove the extra "external/$target" directory from PREFIX
Instead of BINARY_DIR/external/foo/src/foo the contents will be in
BINARY_DIR/src/foo.
* Make libprotobuf-nanopb targets line up with nanopb's CMakeLists.txt
* Fix CMake style
Diffstat (limited to 'Firestore')
-rw-r--r-- | Firestore/CMakeLists.txt | 58 | ||||
-rw-r--r-- | Firestore/Protos/CMakeLists.txt | 16 | ||||
-rw-r--r-- | Firestore/core/src/firebase/firestore/local/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Firestore/core/src/firebase/firestore/remote/CMakeLists.txt | 2 |
5 files changed, 20 insertions, 60 deletions
diff --git a/Firestore/CMakeLists.txt b/Firestore/CMakeLists.txt index c74313c..eb9744b 100644 --- a/Firestore/CMakeLists.txt +++ b/Firestore/CMakeLists.txt @@ -15,48 +15,6 @@ cmake_minimum_required(VERSION 2.8.11) project(firestore C CXX) -option(WITH_ASAN "Build with Address Sanitizer" OFF) -# TODO(varconst): msan -# Memory sanitizer is more complicated: -# - it requires all dependencies to be compiled with msan enabled (see -# https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo); -# - AppleClang doesn't support it. -option(WITH_TSAN "Build with Thread Sanitizer (mutually exculsive with other sanitizers)" OFF) -option(WITH_UBSAN "Build with Undefined Behavior sanitizer" OFF) - -macro(add_to_compile_and_link_flags flag) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flag}") -endmacro() - -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(WITH_ASAN) - add_to_compile_and_link_flags("-fsanitize=address") - endif() - - if(WITH_TSAN) - if(WITH_ASAN OR WITH_UBSAN) - message(FATAL_ERROR "Cannot combine TSan with other santizers") - endif() - add_to_compile_and_link_flags("-fsanitize=thread") - endif() - - if(WITH_UBSAN) - add_to_compile_and_link_flags("-fsanitize=undefined") - endif() - - if (WITH_ASAN OR WITH_TSAN OR WITH_UBSAN) - # Recommended to "get nicer stack traces in error messages" - # TODO(varconst): double-check that TSan actually needs this flag (it's - # explicitly recommended in the docs for ASan and UBSan) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer") - endif() -else() - if(WITH_ASAN OR WITH_TSAN OR WITH_UBSAN) - message(FATAL_ERROR "Only Clang and GCC support sanitizers") - endif() -endif() - set(FIREBASE_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/..) # CMAKE_INSTALL_PREFIX should be passed in to this build so that it can find @@ -75,19 +33,21 @@ set(FIREBASE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}) set(FIREBASE_BINARY_DIR ${PROJECT_BINARY_DIR}/..) list(INSERT CMAKE_MODULE_PATH 0 ${FIREBASE_SOURCE_DIR}/cmake) +include(SanitizerOptions) include(utils) -find_package(GTest REQUIRED) -find_package(GMock REQUIRED) -find_package(LevelDB REQUIRED) -find_package(Nanopb REQUIRED) -find_package(Protobuf REQUIRED) -find_package(GRPC REQUIRED) +# External packages if(APPLE) - find_package(GoogleUtilities REQUIRED) find_package(FirebaseCore REQUIRED) + find_package(GoogleUtilities REQUIRED) endif() +find_package(GMock REQUIRED) +find_package(GRPC REQUIRED) +find_package(GTest REQUIRED) +find_package(LevelDB REQUIRED) +find_package(Nanopb REQUIRED) +find_package(Protobuf REQUIRED) enable_testing() add_subdirectory(third_party/abseil-cpp) diff --git a/Firestore/Protos/CMakeLists.txt b/Firestore/Protos/CMakeLists.txt index b347a61..fdf45e7 100644 --- a/Firestore/Protos/CMakeLists.txt +++ b/Firestore/Protos/CMakeLists.txt @@ -50,19 +50,19 @@ cc_library( nanopb/google/type/latlng.pb.c nanopb/google/type/latlng.nanopb.h DEPENDS - nanopb + protobuf-nanopb ) target_compile_definitions( - firebase_firestore_protos_nanopb PUBLIC - -DPB_FIELD_16BIT + firebase_firestore_protos_nanopb + PUBLIC -DPB_FIELD_16BIT ) # TODO(rsgowman): this may be worth moving into cc_library, possibly via an # INCLUDE_DIRS or similar. target_include_directories( - firebase_firestore_protos_nanopb PUBLIC - ${FIREBASE_SOURCE_DIR}/Firestore/Protos/nanopb + firebase_firestore_protos_nanopb + PUBLIC ${FIREBASE_SOURCE_DIR}/Firestore/Protos/nanopb ) # libprotobuf based generated protos. Expected only to be used in test (as @@ -102,10 +102,10 @@ cc_library( target_include_directories( firebase_firestore_protos_libprotobuf PUBLIC - ${FIREBASE_SOURCE_DIR}/Firestore/Protos/cpp + ${FIREBASE_SOURCE_DIR}/Firestore/Protos/cpp ) set_target_properties( - firebase_firestore_protos_libprotobuf PROPERTIES - COMPILE_FLAGS "-Wno-unused-parameter" + firebase_firestore_protos_libprotobuf + PROPERTIES COMPILE_FLAGS "-Wno-unused-parameter" ) diff --git a/Firestore/core/src/firebase/firestore/local/CMakeLists.txt b/Firestore/core/src/firebase/firestore/local/CMakeLists.txt index 3e009bb..5a47187 100644 --- a/Firestore/core/src/firebase/firestore/local/CMakeLists.txt +++ b/Firestore/core/src/firebase/firestore/local/CMakeLists.txt @@ -29,5 +29,5 @@ cc_library( firebase_firestore_protos_nanopb firebase_firestore_remote firebase_firestore_util - nanopb + protobuf-nanopb ) diff --git a/Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt b/Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt index 82ffb65..fd34c2e 100644 --- a/Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt +++ b/Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt @@ -23,5 +23,5 @@ cc_library( DEPENDS firebase_firestore_util firebase_firestore_protos_nanopb - nanopb + protobuf-nanopb ) diff --git a/Firestore/core/src/firebase/firestore/remote/CMakeLists.txt b/Firestore/core/src/firebase/firestore/remote/CMakeLists.txt index 0ef0b7c..a2bdbe2 100644 --- a/Firestore/core/src/firebase/firestore/remote/CMakeLists.txt +++ b/Firestore/core/src/firebase/firestore/remote/CMakeLists.txt @@ -27,5 +27,5 @@ cc_library( firebase_firestore_protos_nanopb firebase_firestore_util grpc::grpc - nanopb + protobuf-nanopb ) |