From c7fb0a487523b3686a03e3b7f9b459fcb9323a36 Mon Sep 17 00:00:00 2001 From: Gil Date: Mon, 16 Jul 2018 11:46:55 -0700 Subject: Generate CMake frameworks from podspecs (#1531) * Rename utils.cmake to cc_rules.cmake This makes it less of a dumping ground * Fix sign mismatch in FIRApp * Implement a podspec_framework CMake function ... that generates a CMake framework library target from a podspec. * Remove manual CMake scripts for xcodebuild --- cmake/podspec_rules.cmake | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 cmake/podspec_rules.cmake (limited to 'cmake/podspec_rules.cmake') diff --git a/cmake/podspec_rules.cmake b/cmake/podspec_rules.cmake new file mode 100644 index 0000000..043c1a2 --- /dev/null +++ b/cmake/podspec_rules.cmake @@ -0,0 +1,51 @@ +# 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(CMakeParseArguments) + +# Reads properties from the given podspec and generates a cmake file that +# defines the equivalent framework. +# +# Only does anything useful on Apple platforms. On non-Apple platforms, this +# function has no effect--no target is created. +macro(podspec_framework PODSPEC_FILE) + if(APPLE) + set(multi SPECS) + cmake_parse_arguments(psf "" "" "${multi}" ${ARGN}) + + get_filename_component(_properties_file ${PODSPEC_FILE} NAME_WE) + set(_properties_file ${_properties_file}.cmake) + + execute_process( + COMMAND + ${FIREBASE_SOURCE_DIR}/cmake/podspec_cmake.rb + ${PODSPEC_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/${_properties_file} + ${psf_SPECS} + ) + + # Get CMake to automatically re-run if the generation script or the podspec + # source changes. + set_property( + DIRECTORY APPEND PROPERTY + CMAKE_CONFIGURE_DEPENDS ${FIREBASE_SOURCE_DIR}/cmake/podspec_cmake.rb + ) + set_property( + DIRECTORY APPEND PROPERTY + CMAKE_CONFIGURE_DEPENDS ${PODSPEC_FILE} + ) + + include(${CMAKE_CURRENT_BINARY_DIR}/${_properties_file}) + endif() +endmacro() -- cgit v1.2.3