external_rules.cmake 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # Copyright 2018 Google LLC
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. function(download_external_sources)
  15. file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/external)
  16. set(DOWNLOAD_BENCHMARK ${FIREBASE_IOS_BUILD_BENCHMARKS})
  17. set(DOWNLOAD_GOOGLETEST ${FIREBASE_IOS_BUILD_TESTS})
  18. execute_process(
  19. COMMAND
  20. ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}"
  21. -DFIREBASE_DOWNLOAD_DIR=${FIREBASE_DOWNLOAD_DIR}
  22. -DCMAKE_INSTALL_PREFIX=${FIREBASE_INSTALL_DIR}
  23. -DFUZZING=${FUZZING}
  24. -DDOWNLOAD_BENCHMARK=${DOWNLOAD_BENCHMARK}
  25. -DDOWNLOAD_GOOGLETEST=${DOWNLOAD_GOOGLETEST}
  26. ${PROJECT_SOURCE_DIR}/cmake/external
  27. WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/external
  28. )
  29. # Run downloads in parallel if we know how
  30. if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
  31. set(cmake_build_args -j)
  32. endif()
  33. execute_process(
  34. COMMAND ${CMAKE_COMMAND} --build . -- ${cmake_build_args}
  35. WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/external
  36. )
  37. endfunction()
  38. function(add_external_subdirectory NAME)
  39. string(TOUPPER ${NAME} UPPER_NAME)
  40. if (NOT EXISTS ${${UPPER_NAME}_SOURCE_DIR})
  41. set(${UPPER_NAME}_SOURCE_DIR "${FIREBASE_BINARY_DIR}/external/src/${NAME}")
  42. set(${UPPER_NAME}_SOURCE_DIR "${${UPPER_NAME}_SOURCE_DIR}" PARENT_SCOPE)
  43. endif()
  44. if (NOT EXISTS ${${UPPER_NAME}_BINARY_DIR})
  45. set(${UPPER_NAME}_BINARY_DIR "${${UPPER_NAME}_SOURCE_DIR}-build")
  46. set(${UPPER_NAME}_BINARY_DIR "${${UPPER_NAME}_BINARY_DIR}" PARENT_SCOPE)
  47. endif()
  48. if (EXISTS "${${UPPER_NAME}_SOURCE_DIR}/CMakeLists.txt")
  49. add_subdirectory(
  50. ${${UPPER_NAME}_SOURCE_DIR}
  51. ${${UPPER_NAME}_BINARY_DIR}
  52. EXCLUDE_FROM_ALL
  53. )
  54. endif()
  55. endfunction()