From fb9f24eaee4c57d09ec0dca32abff840b39f7c7e Mon Sep 17 00:00:00 2001 From: Gil Date: Fri, 13 Jul 2018 11:09:44 -0700 Subject: Convert googletest and nanopb CMake builds to add_subdirectory (#1522) * Add a download-only boringssl ExternalProject Match boringssl version to grpc submodule version Note: not yet in use * Split grpc into separate download and build tasks This allows other external targets to download into the gRPC source tree before grpc is actually built. * Convert grpc to an http download * Build googletest with add_subdirectory Also: * Revert library-name modifications in the abseil-cpp build * Move abseil-cpp add_subdirectory build into place * Build nanopb with add_subdirectory * Force nanopb first to work around ODR violations This is a temporary work-around for b/111328563. --- cmake/FindGMock.cmake | 47 ----------------------------------------- cmake/external/googletest.cmake | 6 +++--- cmake/external/nanopb.cmake | 12 +++-------- cmake/utils.cmake | 12 +++++++++++ 4 files changed, 18 insertions(+), 59 deletions(-) delete mode 100644 cmake/FindGMock.cmake (limited to 'cmake') diff --git a/cmake/FindGMock.cmake b/cmake/FindGMock.cmake deleted file mode 100644 index 76ce227..0000000 --- a/cmake/FindGMock.cmake +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2018 Google -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -include(FindPackageHandleStandardArgs) - -find_path( - GMOCK_INCLUDE_DIR gmock/gmock.h - HINTS ${FIREBASE_INSTALL_DIR}/include -) - -find_library( - GMOCK_LIBRARY - NAMES gmock - HINTS ${FIREBASE_INSTALL_DIR}/lib -) - -find_package_handle_standard_args( - gmock - DEFAULT_MSG - GMOCK_INCLUDE_DIR - GMOCK_LIBRARY -) - -if(GMOCK_FOUND) - set(GMOCK_INCLUDE_DIRS ${GMOCK_INCLUDE_DIR}) - set(GMOCK_LIBRARIES ${GMOCK_LIBRARY}) - - if (NOT TARGET GMock::GMock) - add_library(GMock::GMock UNKNOWN IMPORTED) - set_target_properties( - GMock::GMock PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIRS} - IMPORTED_LOCATION ${GMOCK_LIBRARY} - ) - endif() -endif(GMOCK_FOUND) diff --git a/cmake/external/googletest.cmake b/cmake/external/googletest.cmake index e2ebafc..32e9a39 100644 --- a/cmake/external/googletest.cmake +++ b/cmake/external/googletest.cmake @@ -28,8 +28,8 @@ ExternalProject_Add( PREFIX ${PROJECT_BINARY_DIR} - CMAKE_CACHE_ARGS - -DCMAKE_INSTALL_PREFIX:STRING=${FIREBASE_INSTALL_DIR} - + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" TEST_COMMAND "" ) diff --git a/cmake/external/nanopb.cmake b/cmake/external/nanopb.cmake index b341c36..50faa06 100644 --- a/cmake/external/nanopb.cmake +++ b/cmake/external/nanopb.cmake @@ -23,8 +23,6 @@ set(NANOPB_PROTOC_BIN ${FIREBASE_INSTALL_DIR}/bin/protoc) ExternalProject_Add( nanopb - DEPENDS - protobuf DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR} URL https://github.com/nanopb/nanopb/archive/nanopb-0.3.9.1.tar.gz @@ -32,12 +30,8 @@ ExternalProject_Add( PREFIX ${PROJECT_BINARY_DIR} - CMAKE_ARGS - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX:STRING=${FIREBASE_INSTALL_DIR} - -DBUILD_SHARED_LIBS:BOOL=OFF - -Dnanopb_BUILD_GENERATOR:BOOL=ON - -Dnanopb_PROTOC_PATH:STRING=${NANOPB_PROTOC_BIN} - + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" TEST_COMMAND "" ) diff --git a/cmake/utils.cmake b/cmake/utils.cmake index 1c3cbd6..7d32624 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -89,3 +89,15 @@ function(add_objc_flags target) ) endif() endfunction() + +# add_alias(alias_target actual_target) +# +# Adds a library alias target `alias_target` if it does not already exist, +# aliasing to the given `actual_target` target. This allows library dependencies +# to be specified uniformly in terms of the targets found in various +# find_package modules even if the library is being built internally. +function(add_alias ALIAS_TARGET ACTUAL_TARGET) + if(NOT TARGET ${ALIAS_TARGET}) + add_library(${ALIAS_TARGET} ALIAS ${ACTUAL_TARGET}) + endif() +endfunction() -- cgit v1.2.3