From 2810a09c582b09104c04f16e5a3086cbe3e79d23 Mon Sep 17 00:00:00 2001 From: Gil Date: Tue, 26 Jun 2018 11:58:10 -0700 Subject: Prepare for installed sub-projects (#1459) * Ignore vim backup files * Prepare for installed subprojects This adds FIREBASE_BINARY_DIR to point to the out-of-source build directory (which previously was passed around as FIREBASE_INSTALL_DIR). This repurposes FIREBASE_INSTALL_DIR to point to ${FIREBASE_BINARY_DIR}/opt, and installation root for subprojects that have an install step. * Allow download directory to be specified --- .gitignore | 1 + CMakeLists.txt | 9 ++++++++- Firestore/CMakeLists.txt | 14 ++++++++++++-- cmake/FindFirebaseCore.cmake | 2 +- cmake/FindGRPC.cmake | 2 +- cmake/FindLevelDB.cmake | 2 +- cmake/FindNanopb.cmake | 2 +- cmake/FindProtobuf.cmake | 2 +- cmake/external/googletest.cmake | 2 +- cmake/external/leveldb.cmake | 4 ++-- cmake/external/nanopb.cmake | 4 ++-- cmake/external/protobuf.cmake | 2 +- 12 files changed, 32 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 7645c89..24523e8 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ DerivedData # Vim *.swo *.swp +*~ # Bundler .bundle diff --git a/CMakeLists.txt b/CMakeLists.txt index 04d4c99..ca5c322 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,14 @@ endif(APPLE) list(INSERT CMAKE_MODULE_PATH 0 ${PROJECT_SOURCE_DIR}/cmake) -set(FIREBASE_INSTALL_DIR ${PROJECT_BINARY_DIR}) +set(FIREBASE_BINARY_DIR ${PROJECT_BINARY_DIR}) +set(FIREBASE_INSTALL_DIR ${PROJECT_BINARY_DIR}/opt) + +set( + FIREBASE_DOWNLOAD_DIR + ${PROJECT_BINARY_DIR}/downloads + CACHE PATH "Where to store downloaded files" +) enable_testing() diff --git a/Firestore/CMakeLists.txt b/Firestore/CMakeLists.txt index 652b895..8b6f9d5 100644 --- a/Firestore/CMakeLists.txt +++ b/Firestore/CMakeLists.txt @@ -65,13 +65,20 @@ set(FIREBASE_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/..) # # If you want to use this project directly in e.g. CLion, make sure you # configure this. +# +# The superbuild passes CMAKE_INSTALL_PREFIX with a value of +# ${FIREBASE_INSTALL_DIR} which is ${PROJECT_BINARY_DIR}/opt. set(FIREBASE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}) +# Expect that the source and binary directory structures will parallel each +# other. +set(FIREBASE_BINARY_DIR ${PROJECT_BINARY_DIR}/..) + list(INSERT CMAKE_MODULE_PATH 0 ${FIREBASE_SOURCE_DIR}/cmake) include(utils) # Include GoogleTest directly in the build. -set(gtest_dir ${FIREBASE_INSTALL_DIR}/external/googletest) +set(gtest_dir ${FIREBASE_BINARY_DIR}/external/googletest) add_subdirectory( ${gtest_dir}/src/googletest ${gtest_dir}/src/googletest-build @@ -101,8 +108,11 @@ add_subdirectory(third_party/abseil-cpp) include(CompilerSetup) +# Superbuild installed results +include_directories(${FIREBASE_INSTALL_DIR}/include) + # Generated sources will be relative to the binary directory. -include_directories(${FIREBASE_INSTALL_DIR}) +include_directories(${FIREBASE_BINARY_DIR}) # Fully qualified imports, project wide include_directories(${FIREBASE_SOURCE_DIR}) diff --git a/cmake/FindFirebaseCore.cmake b/cmake/FindFirebaseCore.cmake index eec29dd..6e68dfb 100644 --- a/cmake/FindFirebaseCore.cmake +++ b/cmake/FindFirebaseCore.cmake @@ -15,7 +15,7 @@ find_library( FIREBASECORE_LIBRARY FirebaseCore - PATHS ${FIREBASE_INSTALL_DIR}/Frameworks + PATHS ${FIREBASE_BINARY_DIR}/Frameworks ) include(FindPackageHandleStandardArgs) diff --git a/cmake/FindGRPC.cmake b/cmake/FindGRPC.cmake index f594b9e..22c9655 100644 --- a/cmake/FindGRPC.cmake +++ b/cmake/FindGRPC.cmake @@ -15,7 +15,7 @@ include(FindPackageHandleStandardArgs) include(FindZLIB) -set(BINARY_DIR ${FIREBASE_INSTALL_DIR}/external/grpc) +set(BINARY_DIR ${FIREBASE_BINARY_DIR}/external/grpc) ## ZLIB diff --git a/cmake/FindLevelDB.cmake b/cmake/FindLevelDB.cmake index b664fa8..56f10e1 100644 --- a/cmake/FindLevelDB.cmake +++ b/cmake/FindLevelDB.cmake @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -set(binary_dir ${FIREBASE_INSTALL_DIR}/external/leveldb/src/leveldb) +set(binary_dir ${FIREBASE_BINARY_DIR}/external/leveldb/src/leveldb) find_path( LEVELDB_INCLUDE_DIR leveldb/db.h diff --git a/cmake/FindNanopb.cmake b/cmake/FindNanopb.cmake index b5d844d..eb7dfad 100644 --- a/cmake/FindNanopb.cmake +++ b/cmake/FindNanopb.cmake @@ -14,7 +14,7 @@ include(FindPackageHandleStandardArgs) -set(BINARY_DIR ${FIREBASE_INSTALL_DIR}/external/nanopb) +set(BINARY_DIR ${FIREBASE_BINARY_DIR}/external/nanopb) find_path( NANOPB_INCLUDE_DIR pb.h diff --git a/cmake/FindProtobuf.cmake b/cmake/FindProtobuf.cmake index 60a2e34..ae438bb 100644 --- a/cmake/FindProtobuf.cmake +++ b/cmake/FindProtobuf.cmake @@ -14,7 +14,7 @@ include(FindPackageHandleStandardArgs) -set(BINARY_DIR ${FIREBASE_INSTALL_DIR}/external/protobuf) +set(BINARY_DIR ${FIREBASE_BINARY_DIR}/external/protobuf) find_path( PROTOBUF_INCLUDE_DIR google/protobuf/stubs/common.h diff --git a/cmake/external/googletest.cmake b/cmake/external/googletest.cmake index 24da386..f48c357 100644 --- a/cmake/external/googletest.cmake +++ b/cmake/external/googletest.cmake @@ -17,7 +17,7 @@ include(ExternalProject) ExternalProject_Add( googletest - DOWNLOAD_DIR ${PROJECT_BINARY_DIR}/downloads + DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR} DOWNLOAD_NAME googletest-1.8.0.tar.gz URL https://github.com/google/googletest/archive/release-1.8.0.tar.gz URL_HASH SHA256=58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8 diff --git a/cmake/external/leveldb.cmake b/cmake/external/leveldb.cmake index dcbef6c..db8aa4c 100644 --- a/cmake/external/leveldb.cmake +++ b/cmake/external/leveldb.cmake @@ -44,12 +44,12 @@ else() ExternalProject_Add( leveldb - DOWNLOAD_DIR ${PROJECT_BINARY_DIR}/downloads + DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR} DOWNLOAD_NAME leveldb-v1.20.tar.gz URL https://github.com/google/leveldb/archive/v1.20.tar.gz URL_HASH SHA256=f5abe8b5b209c2f36560b75f32ce61412f39a2922f7045ae764a2c23335b6664 - PREFIX ${PROJECT_BINARY_DIR}/external/leveldb + PREFIX ${FIREBASE_BINARY_DIR}/external/leveldb # LevelDB's configuration is done in the Makefile CONFIGURE_COMMAND "" diff --git a/cmake/external/nanopb.cmake b/cmake/external/nanopb.cmake index 6ca47c0..368ecf0 100644 --- a/cmake/external/nanopb.cmake +++ b/cmake/external/nanopb.cmake @@ -16,7 +16,7 @@ include(ExternalProject) set( NANOPB_PROTOC_BIN - ${FIREBASE_INSTALL_DIR}/external/protobuf/src/protobuf-build/${CMAKE_CFG_INTDIR}/protoc + ${FIREBASE_BINARY_DIR}/external/protobuf/src/protobuf-build/${CMAKE_CFG_INTDIR}/protoc ) ExternalProject_Add( @@ -24,7 +24,7 @@ ExternalProject_Add( DEPENDS protobuf - DOWNLOAD_DIR ${PROJECT_BINARY_DIR}/downloads + DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR} URL https://github.com/nanopb/nanopb/archive/nanopb-0.3.9.1.tar.gz URL_HASH SHA256=67460d0c0ad331ef4d5369ad337056d0cd2f900c94887628d287eb56c69324bc diff --git a/cmake/external/protobuf.cmake b/cmake/external/protobuf.cmake index acc5a96..21cfac3 100644 --- a/cmake/external/protobuf.cmake +++ b/cmake/external/protobuf.cmake @@ -17,7 +17,7 @@ include(ExternalProject) ExternalProject_Add( protobuf - DOWNLOAD_DIR ${PROJECT_BINARY_DIR}/downloads + DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR} DOWNLOAD_NAME protobuf-v3.5.11.tar.gz URL https://github.com/google/protobuf/archive/v3.5.1.1.tar.gz URL_HASH SHA256=56b5d9e1ab2bf4f5736c4cfba9f4981fbc6976246721e7ded5602fbaee6d6869 -- cgit v1.2.3