diff options
author | David Neto <dneto@google.com> | 2017-05-08 12:50:30 -0400 |
---|---|---|
committer | David Neto <dneto@google.com> | 2017-05-08 12:50:30 -0400 |
commit | 05fd6c8a595d6e05c001bdd3efefb092ac4134cc (patch) | |
tree | c1d576d8017af02c10a4a3e8bcf317fc60b59676 /third_party | |
parent | bfc1aae2ab7dac7066652b5f47637211238da334 (diff) | |
download | effcee-05fd6c8a595d6e05c001bdd3efefb092ac4134cc.tar.gz |
Generalize third party support
A larger project can add RE2 and googletest before Effcee.
Then Effcee will just reuse those targets.
Diffstat (limited to 'third_party')
-rw-r--r-- | third_party/CMakeLists.txt | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index 9046573..4137510 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -1,25 +1,43 @@ # Suppress all warnings from third-party projects. set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w) +# Set alternate root directory for third party sources. set(EFFCEE_THIRD_PARTY_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE STRING "Root location of all third_party projects") -set(EFFCEE_GOOGLETEST_DIR "${EFFCEE_THIRD_PARTY_ROOT_DIR}/googletest" CACHE STRING - "Location of googletest source") -set(EFFCEE_RE2_DIR "${EFFCEE_THIRD_PARTY_ROOT_DIR}/re2" CACHE STRING - "Location of re2 source") + +# Find googletest and gmock +if(${googletest-distribution_SOURCE_DIR}) + set(EFFCEE_GOOGLETEST_DIR "${googletest-distribution_SOURCE_DIR}" CACHE STRING + "Location of googletest source") +else() + set(EFFCEE_GOOGLETEST_DIR "${EFFCEE_THIRD_PARTY_ROOT_DIR}/googletest" CACHE STRING + "Location of googletest source") +endif() + +# Find re2 +if(RE2_SOURCE_DIR) + set(EFFCEE_RE2_DIR "${RE2_SOURCE_DIR}" CACHE STRING "Location of re2 source" FORCE) +else() + set(EFFCEE_RE2_DIR "${EFFCEE_THIRD_PARTY_ROOT_DIR}/re2" CACHE STRING + "Location of re2 source") +endif() # Configure third party projects. if(EFFCEE_BUILD_TESTING) - if (IS_DIRECTORY ${EFFCEE_GOOGLETEST_DIR}) - add_subdirectory(${EFFCEE_GOOGLETEST_DIR} googletest) + if (NOT TARGET gmock) + if (IS_DIRECTORY ${EFFCEE_GOOGLETEST_DIR}) + add_subdirectory(${EFFCEE_GOOGLETEST_DIR} googletest) + endif() endif() if (NOT TARGET gmock) message(FATAL_ERROR "gmock was not found - required for tests") endif() endif() -if (IS_DIRECTORY ${EFFCEE_RE2_DIR}) - add_subdirectory(${EFFCEE_RE2_DIR} re2) +if (NOT TARGET re2) + if (IS_DIRECTORY ${EFFCEE_RE2_DIR}) + add_subdirectory(${EFFCEE_RE2_DIR} re2) + endif() endif() if (NOT TARGET re2) message(FATAL_ERROR "re2 was not found - required for compilation") |