| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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(ExternalProject) |
| |
| # Check if xcodebuild tool is available and configured. |
| # Otherwise will skip all iOS specific targets. |
| execute_process(COMMAND xcodebuild -version |
| RESULT_VARIABLE XCBUILD_AVAILABLE |
| OUTPUT_QUIET |
| ERROR_QUIET |
| ) |
| |
| if (NOT XCBUILD_AVAILABLE EQUAL 0) |
| message(WARNING |
| "The build tool xcodebuild is not properly configured. Please install Xcode app and specify " |
| "path to it via DEVELOPER_DIR env var or \"sudo xcode-select -switch <path-to-xcode-dev-dir>\".\n" |
| "iOS RPC application target is switched off." |
| ) |
| return() |
| endif() |
| |
| |
| # External project with custom mach-o dynamic loader |
| # It is required to load unsigned shared modules on real iOS devices |
| ExternalProject_Add(custom_dso_loader |
| GIT_REPOSITORY https://github.com/octoml/macho-dyld.git |
| GIT_TAG 0742b8129de7df1130be355b74faa8c036265bfc |
| PREFIX custom_dso_loader |
| LOG_DOWNLOAD TRUE |
| LOG_CONFIGURE TRUE |
| CMAKE_ARGS |
| -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> # to install into local build dir |
| -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} |
| -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} |
| -DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION} |
| -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} |
| -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} |
| -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} |
| -DCMAKE_BUILD_WITH_INSTALL_NAME_DIR=${CMAKE_BUILD_WITH_INSTALL_NAME_DIR} |
| ) |
| |
| if(NOT CMAKE_IOS_RPC_BUNDLE) |
| set(CMAKE_IOS_RPC_BUNDLE org.apache.tvmrpc) |
| endif() |
| |
| # iOS RPC Xcode project wrapper to integrate into Cmake |
| ExternalProject_Add(ios_rpc |
| PREFIX ios_rpc |
| DEPENDS custom_dso_loader tvm_runtime |
| SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} |
| CONFIGURE_COMMAND "" |
| INSTALL_COMMAND "" |
| BUILD_COMMAND xcodebuild |
| -target tvmrpc |
| -configuration ${CMAKE_BUILD_TYPE} |
| -project <SOURCE_DIR>/tvmrpc.xcodeproj |
| -sdk ${CMAKE_OSX_SYSROOT} |
| -arch ${CMAKE_OSX_ARCHITECTURES} |
| -hideShellScriptEnvironment |
| -allowProvisioningUpdates |
| build |
| SYMROOT=<BINARY_DIR> |
| IPHONEOS_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} |
| DEVELOPMENT_TEAM=${CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM} |
| TVM_BUILD_DIR=${CMAKE_BINARY_DIR} |
| USE_CUSTOM_DSO_LOADER=1 |
| PRODUCT_BUNDLE_IDENTIFIER=${CMAKE_IOS_RPC_BUNDLE} |
| ) |