diff --git a/build b/build index 845dac0..a6db73d 160000 --- a/build +++ b/build @@ -1 +1 @@ -Subproject commit 845dac0ec25ec3bf2ac53100ea88fe9a217f5611 +Subproject commit a6db73d1d83144300214dae2c6e0b59374f911e2 diff --git a/cmake/Android/CMakeLists.txt b/cmake/Android/CMakeLists.txt deleted file mode 100644 index 7762de9..0000000 --- a/cmake/Android/CMakeLists.txt +++ /dev/null @@ -1,82 +0,0 @@ -cmake_minimum_required(VERSION 3.12) - -# -------------------------------------------------------- -# Set cross compiling settings -set(CMAKE_SYSTEM_NAME Android) -set(CMAKE_SYSTEM_VERSION 28) # API level -set(ANDROID_PLATFORM_LEVEL 28) -set(ANDROID_NATIVE_API_LEVEL ${ANDROID_PLATFORM_LEVEL}) -set(ANDROID_PLATFORM ${ANDROID_PLATFORM_LEVEL}) - -# -------------------------------------------------------- -# Check Android NDK version -if(NOT CMAKE_ANDROID_NDK) - message(FATAL_ERROR "Cannot find Android NDK, make sure you pass -DCMAKE_ANDROID_NDK=[path_to_NDK]") -endif() - -file(READ "${CMAKE_ANDROID_NDK}/source.properties" SOURCE_PROPERTIES_CONTENT) -string(REGEX MATCH "Pkg\\.Revision = ([0-9]+)\\.([0-9]+)\\." NDK_VERSION_MATCH "${SOURCE_PROPERTIES_CONTENT}") -set(CMAKE_ANDROID_NDK_VERSION ${CMAKE_MATCH_1}) -set(CMAKE_ANDROID_NDK_VERSION_MINOR ${CMAKE_MATCH_2}) - -message("--Android NDK version: ${CMAKE_ANDROID_NDK_VERSION}.${CMAKE_ANDROID_NDK_VERSION_MINOR}") - -if (NOT CMAKE_ANDROID_NDK_VERSION EQUAL 23) - message(FATAL_ERROR "Android NDK LTS Version (r23b) stable long term support version required") -endif() - -# -------------------------------------------------------- -# Check required input args -if(NOT ANDROID_ABI) - message(FATAL_ERROR "Cannot find ANDROID_ABI, make sure you pass -DANDROID_ABI=[armeabi-v7a | arm64-v8a | x86 | x86_64]") -endif() -set(CMAKE_ANDROID_ARCH_ABI ${ANDROID_ABI}) - -if(NOT ANDROID_TOOLCHAIN) - message(FATAL_ERROR "Cannot find ANDROID_TOOLCHAIN, make sure you pass -DANDROID_TOOLCHAIN=[e.g clang]") -endif() - -# -------------------------------------------------------- -# Config param for android -set(CMAKE_ANDROID_STL_TYPE c++_static) - -# -------------------------------------------------------- -# Set toolchain file -set(CMAKE_TOOLCHAIN_FILE "${CMAKE_ANDROID_NDK}/build/cmake/android.toolchain.cmake") -if(NOT EXISTS ${CMAKE_TOOLCHAIN_FILE}) - message(FATAL_ERROR "Android NDK toolchain file ${CMAKE_TOOLCHAIN_FILE} not found") -endif() - -if("${LINUX_TARGET_ARCHITECTURES}" STREQUAL "") - set(LINUX_TARGET_ARCHITECTURES "${CMAKE_HOST_SYSTEM_PROCESSOR}") -endif("${LINUX_TARGET_ARCHITECTURES}" STREQUAL "") - -# -------------------------------------------------------- -# Project -project(GeniusSDK C CXX) - -# -------------------------------------------------------- -# include common compiler options -include(../CommonCompilerOptions.CMake) - -# -------------------------------------------------------- -# Set custom subfolder for ABI -set(ABI_SUBFOLDER_NAME "/${ANDROID_ABI}") - -# -------------------------------------------------------- -# Set host system protoc executable path -set(PROTOC_EXECUTABLE "${THIRDPARTY_BUILD_DIR}/protobuf/bin/protoc") - -# -------------------------------------------------------- -# Allow multiple definitions -set(FORCE_MULTILE OFF) - -# -------------------------------------------------------- -# Set extra compiler flags -set(EXTRA_CXX_FLAGS -Wno-error) - -set(TESTING OFF) - -# -------------------------------------------------------- -# Include common build parameters -include(../CommonBuildParameters.cmake) diff --git a/cmake/CommonBuildParameters.cmake b/cmake/CommonBuildParameters.cmake index acce86d..7ea297a 100644 --- a/cmake/CommonBuildParameters.cmake +++ b/cmake/CommonBuildParameters.cmake @@ -9,20 +9,20 @@ set(BOOST_VERSION_2U "${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}") # -------------------------------------------------------- # define third party directory -if (NOT DEFINED THIRDPARTY_DIR) - print("Setting default third party directory") - set(THIRDPARTY_DIR "${CMAKE_CURRENT_LIST_DIR}/../../thirdparty") - ## get absolute path - cmake_path(SET THIRDPARTY_DIR NORMALIZE "${THIRDPARTY_DIR}") -endif() - -if (NOT DEFINED THIRDPARTY_BUILD_DIR) - print("Setting third party build directory default") - set(THIRDPARTY_BUILD_DIR "${THIRDPARTY_DIR}/build/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}") -endif() - -print("THIRDPARTY BUILD DIR: ${THIRDPARTY_BUILD_DIR}") -print("THIRDPARTY SRC DIR: ${THIRDPARTY_DIR}") +#if (NOT DEFINED THIRDPARTY_DIR) +# print("Setting default third party directory") +# set(THIRDPARTY_DIR "${CMAKE_CURRENT_LIST_DIR}/../../thirdparty") +# ## get absolute path +# cmake_path(SET THIRDPARTY_DIR NORMALIZE "${THIRDPARTY_DIR}") +#endif() +# +#if (NOT DEFINED THIRDPARTY_BUILD_DIR) +# print("Setting third party build directory default") +# set(THIRDPARTY_BUILD_DIR "${THIRDPARTY_DIR}/build/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}") +#endif() +# +#print("THIRDPARTY BUILD DIR: ${THIRDPARTY_BUILD_DIR}") +#print("THIRDPARTY SRC DIR: ${THIRDPARTY_DIR}") # -------------------------------------------------------- # Set config of GTest @@ -62,24 +62,16 @@ include_directories(${yaml-cpp_INCLUDE_DIR}) # -------------------------------------------------------- # Set config of protobuf project if (NOT DEFINED Protobuf_DIR) - set(Protobuf_DIR "${THIRDPARTY_BUILD_DIR}/grpc/lib/cmake/protobuf") + set(Protobuf_DIR "${_THIRDPARTY_BUILD_DIR}/grpc/lib/cmake/protobuf") endif() -if (NOT DEFINED Protobuf_INCLUDE_DIR) - set(Protobuf_INCLUDE_DIR "${THIRDPARTY_BUILD_DIR}/grpc/include/google/protobuf") +if (NOT DEFINED grpc_INCLUDE_DIR) + set(grpc_INCLUDE_DIR "${_THIRDPARTY_BUILD_DIR}/grpc/include") endif() -if (${CMAKE_SYSTEM_NAME} STREQUAL "iOS") - set(Protobuf_DIR "${iOS_Protobuf_DIR}") - set(Protobuf_INCLUDE_DIR "${iOS_Protobuf_INCLUDE_DIR}") - set(Protobuf_LIBRARIES "${iOS_Protobuf_LIBRARIES}") +if (NOT DEFINED Protobuf_INCLUDE_DIR) + set(Protobuf_INCLUDE_DIR "${grpc_INCLUDE_DIR}/google/protobuf") endif() -# if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - # # TODO: Check grpc install on Windows - # set(Protobuf_DIR "${THIRDPARTY_BUILD_DIR}/grpc/build/third_party/protobuf/cmake") - # set(Protobuf_INCLUDE_DIR "${THIRDPARTY_BUILD_DIR}/grpc/build/third_party/protobuf/include/google/protobuf") -# endif() find_package(Protobuf CONFIG REQUIRED ) -include_directories(${Protobuf_INCLUDE_DIR}) if (NOT DEFINED PROTOC_EXECUTABLE) set(PROTOC_EXECUTABLE "${THIRDPARTY_BUILD_DIR}/grpc/bin/protoc${CMAKE_EXECUTABLE_SUFFIX}") @@ -101,6 +93,7 @@ if ( Protobuf_FOUND ) message( STATUS "Protobuf version : ${Protobuf_VERSION}" ) message( STATUS "Protobuf compiler : ${Protobuf_PROTOC_EXECUTABLE}") endif() +include(${PROJECT_ROOT}/build/cmake/functions.cmake) include(${PROJECT_ROOT}/cmake/functions.cmake) @@ -141,7 +134,7 @@ include_directories(${RocksDB_INCLUDE_DIR}) # -------------------------------------------------------- # Set config of Microsoft.GSL -set(GSL_INCLUDE_DIR "${THIRDPARTY_BUILD_DIR}/GSL/include") +set(GSL_INCLUDE_DIR "${THIRDPARTY_BUILD_DIR}/Microsoft.GSL/include") include_directories(${GSL_INCLUDE_DIR}) # -------------------------------------------------------- @@ -315,12 +308,21 @@ include_directories(${xxhash_INCLUDE_DIR}) # -------------------------------------------------------- # Set config of SuperGenius project -#if (NOT DEFINED SuperGenius_DIR) - print("Setting SuperGenius build directory default") - set(SUPERGENIUS_SRC_DIR "${CMAKE_CURRENT_LIST_DIR}/../../SuperGenius") - set(SuperGenius_DIR "${SUPERGENIUS_SRC_DIR}/build/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}/SuperGenius/lib/cmake/SuperGenius/") - set(SuperGenius_DIR "${SUPERGENIUS_SRC_DIR}/build/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}/") -#endif() +if (NOT DEFINED SUPERGENIUS_SRC_DIR) + if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../SuperGenius/README.md") + print("Setting default SuperGenius directory") + set(SUPERGENIUS_SRC_DIR "${CMAKE_CURRENT_LIST_DIR}/../../SuperGenius" CACHE STRING "Default SuperGenius Library") + ## get absolute path + cmake_path(SET SUPERGENIUS_SRC_DIR NORMALIZE "${SUPERGENIUS_SRC_DIR}") + else() + message( FATAL_ERROR "Cannot find SuperGenius directory required to build" ) + endif() +endif() + +#set(SuperGenius_DIR "${SUPERGENIUS_SRC_DIR}/build/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}/SuperGenius/lib/cmake/SuperGenius/") +set(SuperGenius_DIR "${SUPERGENIUS_SRC_DIR}/.build/SuperGenius/lib/cmake/SuperGenius/") + + print("SuperGenius_DIR: ${SuperGenius_DIR}") find_package(SuperGenius CONFIG REQUIRED) diff --git a/cmake/CommonCompilerOptions.CMake b/cmake/CommonCompilerOptions.CMake deleted file mode 100644 index dbce8d9..0000000 --- a/cmake/CommonCompilerOptions.CMake +++ /dev/null @@ -1,76 +0,0 @@ - -# ------------------------------------------ -# Set PROJECT_ROOT folder -get_filename_component(CURRENT_SOURCE_PARENT "${CMAKE_CURRENT_SOURCE_DIR}" DIRECTORY ABSOLUTE) -get_filename_component(PROJECT_ROOT "${CURRENT_SOURCE_PARENT}" DIRECTORY ABSOLUTE) - -# Package config ###################################################################################### -set (CPACK_PACKAGE_VERSION_MAJOR "21") -set (CPACK_PACKAGE_VERSION_MINOR "0") -set (CPACK_PACKAGE_VERSION_PATCH "0") -set (CPACK_PACKAGE_VERSION_PRE_RELEASE "12") -set (CPACK_PACKAGE_VENDOR "Genius Ventures") - -set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/GeniusSDK) - -include(GNUInstallDirs) -include(GenerateExportHeader) -include(CMakePackageConfigHelpers) -include(CheckCXXCompilerFlag) -include(${PROJECT_ROOT}/cmake/functions.cmake) -include(${PROJECT_ROOT}/build/CompilationFlags.cmake) - -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXX_FLAGS}") -if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd") - - if (CMAKE_BUILD_TYPE EQUAL Debug) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MTd") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MTd") - set(MSVC_RUNTIME_LIBRARY_OPTIONĀ "MultiThreaded$<$:Debug>") - endif (CMAKE_BUILD_TYPE EQUAL Debug) - - if (CMAKE_BUILD_TYPE EQUAL Release) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT") - set(MSVC_RUNTIME_LIBRARY_OPTIONĀ "MultiThreaded$<$:Release>") - endif (CMAKE_BUILD_TYPE EQUAL Release) - - print("CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") - set(CompilerFlags - CMAKE_CXX_FLAGS - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_RELEASE - CMAKE_C_FLAGS - CMAKE_C_FLAGS_DEBUG - CMAKE_C_FLAGS_RELEASE - ) - foreach(CompilerFlag ${CompilerFlags}) - string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}") - endforeach() -endif() - -if (NOT EXISTS "${CMAKE_TOOLCHAIN_FILE}") - # https://cgold.readthedocs.io/en/latest/tutorials/toolchain/globals/cxx-standard.html#summary - set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) -endif () - - -message("CMAKE_HOST_SYSTEM_NAME: ${CMAKE_HOST_SYSTEM_NAME}") -message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}") -message("C flags: ${CMAKE_C_FLAGS}") -message("CXX flags: ${CMAKE_CXX_FLAGS}") -message("C Debug flags: ${CMAKE_C_FLAGS_DEBUG}") -message("CXX Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}") -message("C Release flags: ${CMAKE_C_FLAGS_RELEASE}") -message("CXX Release flags: ${CMAKE_CXX_FLAGS_RELEASE}") diff --git a/cmake/Linux/CMakeLists.txt b/cmake/Linux/CMakeLists.txt deleted file mode 100644 index afa14fe..0000000 --- a/cmake/Linux/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -cmake_minimum_required(VERSION 3.12) - -# -------------------------------------------------------- -# if on Linux system, build the Linux executables -if (NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux") - message(FATAL_ERROR "${CMAKE_HOST_SYSTEM_NAME} host system name does not match Linux - Please select the correct folder for configuring project") -endif() - -# -------------------------------------------------------- -# Project -project(GeniusSDK C CXX) - -# -------------------------------------------------------- -# include common compiler options -include(../CommonCompilerOptions.CMake) - -# -------------------------------------------------------- -# Set OS threading settings -set(CMAKE_THREAD_LIBS_INIT "-lpthread") -set(CMAKE_HAVE_THREADS_LIBRARY ON) -set(CMAKE_USE_WIN32_THREADS_INIT OFF) -set(CMAKE_USE_PTHREADS_INIT ON) -set(THREADS_PREFER_PTHREAD_FLAG ON) - -# -------------------------------------------------------- -# Allow multiple definitions -set(FORCE_MULTILE ON) -set(MULTIPLE_OPTION "-z muldefs") - -# -------------------------------------------------------- -# Set extra compiler flags -set(EXTRA_CXX_FLAGS) - -# -------------------------------------------------------- -# Include common build parameters -include(../CommonBuildParameters.cmake) diff --git a/cmake/OSX/CMakeLists.txt b/cmake/OSX/CMakeLists.txt deleted file mode 100644 index a8762ee..0000000 --- a/cmake/OSX/CMakeLists.txt +++ /dev/null @@ -1,63 +0,0 @@ -cmake_minimum_required(VERSION 3.12) - -# -------------------------------------------------------- -# if on OSX Darwin system, build the OSX executables -if (NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin") - message(FATAL_ERROR "${CMAKE_HOST_SYSTEM_NAME} host system name does not match OSX Darwin - Please select the correct folder for configuring project") -endif() - -set(CMAKE_OSX_DEPLOYMENT_TARGET "12.1" CACHE STRING "Minimum OS X deployment version" FORCE) - -# -------------------------------------------------------- -# Project -project(GeniusSDK C CXX) - -# -------------------------------------------------------- -# include common compiler options -include(../CommonCompilerOptions.CMake) - -# -------------------------------------------------------- -# Set toolchain file -set(CMAKE_TOOLCHAIN_FILE "${PROJECT_ROOT}/cmake/toolchain/cxx17.cmake") - -# ------------------------------------------ -# Set OSX specific runtime options -set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64") -set(CMAKE_MACOSX_RPATH 1) -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "BOTH") -set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH TRUE) -set(CMAKE_IOS_INSTALL_COMBINED TRUE) - -# Assuming that xcode 12.0 is installed you most probably have ios sdk 14.0 or later installed (tested on Big Sur) -# if you don't set a deployment target it will be set the way you only get 64-bit builds -if(NOT DEFINED DEPLOYMENT_TARGET AND XCODE_VERSION_INT VERSION_GREATER 12.0) - # Temporarily fix the arm64 issues in CMake install-combined by excluding arm64 for simulator builds (needed for Apple Silicon...) - set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64") -endif() - -# -------------------------------------------------------- -# Set OS threading settings -set(CMAKE_THREAD_LIBS_INIT "-lpthread") -set(CMAKE_HAVE_THREADS_LIBRARY ON) -set(CMAKE_USE_WIN32_THREADS_INIT OFF) -set(CMAKE_USE_PTHREADS_INIT ON) -set(THREADS_PREFER_PTHREAD_FLAG ON) - -# -------------------------------------------------------- -# Allow multiple definitions -set(FORCE_MULTILE ON) -set(MULTIPLE_OPTION "-Xlink=-force:multiple") - -# -------------------------------------------------------- -# Set extra compiler flags -set(EXTRA_CXX_FLAGS) - -set(TESTING OFF) - -# -------------------------------------------------------- -# Set custom subfolder for ABI -set(ABI_SUBFOLDER_NAME "") - -# -------------------------------------------------------- -# Include common build parameters -include(../CommonBuildParameters.cmake) diff --git a/cmake/Windows/CMakeLists.txt b/cmake/Windows/CMakeLists.txt deleted file mode 100644 index f0b7398..0000000 --- a/cmake/Windows/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -cmake_minimum_required(VERSION 3.12) - -# -------------------------------------------------------- -# if on Windows system, build the windows executables -if (NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows") - message(FATAL_ERROR "${CMAKE_HOST_SYSTEM_NAME} host system name does not match Windows - Please select the correct folder for configuring project") -endif() - -# -------------------------------------------------------- -# Project -project(GeniusSDK C CXX) - -set(Protobuf_DIR "${THIRDPARTY_DIR}/build/Windows/${CMAKE_BUILD_TYPE}/grpc/cmake") -set(Protobuf_INCLUDE_DIR "${THIRDPARTY_DIR}/build/Windows/${CMAKE_BUILD_TYPE}/grpc/include/google/protobuf") - -# -------------------------------------------------------- -# build common libraries by platforms -include(../CommonCompilerOptions.CMake) - -# -------------------------------------------------------- -# Set toolchain file -set(CMAKE_TOOLCHAIN_FILE "${PROJECT_ROOT}/cmake/toolchain/cxx17.cmake") - -# -------------------------------------------------------- -# Allow multiple definitions -set(FORCE_MULTILE ON) -set(MULTIPLE_OPTION /FORCE:MULTIPLE) - -# -------------------------------------------------------- -# Set extra compiler flags -set(EXTRA_CXX_FLAGS) - -# -------------------------------------------------------- -# Set custom subfolder for ABI -set(ABI_SUBFOLDER_NAME "") - - -# -------------------------------------------------------- -# Include common build paramaeters -include(../CommonBuildParameters.cmake) diff --git a/cmake/iOS/CMakeLists.txt b/cmake/iOS/CMakeLists.txt deleted file mode 100644 index 2d64d76..0000000 --- a/cmake/iOS/CMakeLists.txt +++ /dev/null @@ -1,101 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -# -------------------------------------------------------- -# if on OSX Darwin system, build the iOS executables -if (NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin") - message(FATAL_ERROR "${CMAKE_HOST_SYSTEM_NAME} host system name does not match OSX Darwin for iOS cross compiling - Please select the correct folder for configuring project") -endif() - -if(POLICY CMP0025) - #NEW: report OS X version of Clang as "AppleClang" - cmake_policy(SET CMP0025 NEW) -endif() -if(POLICY CMP0042) - #NEW: set TARGET PROPERTY MACOSX_RPATH to on by default - cmake_policy(SET CMP0042 NEW) -endif() - -set(IOS_DEPLOYMENT_TARGET 12.0) - -# -------------------------------------------------------- -# Project -project(GeniusSDK C CXX) - -# -------------------------------------------------------- -# include common compiler options -include(../CommonCompilerOptions.CMake) - -# -------------------------------------------------------- -# Set cross compiling settings -set(CMAKE_SYSTEM_NAME "iOS") -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "BOTH") -set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) - -# -------------------------------------------------------- -# Set toolchain file -set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/iOS.cmake") - -# -------------------------------------------------------- -# Check required input args -if(NOT CMAKE_TOOLCHAIN_FILE) - message(FATAL_ERROR "Cannot find CMAKE_TOOLCHAIN_FILE, make sure you pass -DCMAKE_TOOLCHAIN_FILE=[arm64]") -endif() - -if(NOT iOS_ABI) - message(FATAL_ERROR "Cannot find iOS_ABI, make sure you pass -DiOS_ABI=[arm64-v8a]") -endif() - -if(NOT IOS_ARCH) - message(FATAL_ERROR "Cannot find IOS_ARCH, make sure you pass -DIOS_ARCH=[arm64]") -endif() - -if(NOT CMAKE_OSX_ARCHITECTURES) - message(FATAL_ERROR "Cannot find CMAKE_OSX_ARCHITECTURES, make sure you pass -DCMAKE_OSX_ARCHITECTURES=[arm64]") -endif() - -if(NOT CMAKE_SYSTEM_PROCESSOR) - message(FATAL_ERROR "Cannot find CMAKE_SYSTEM_PROCESSOR, make sure you pass -DCMAKE_SYSTEM_PROCESSOR=[arm64]") -endif() - -# -------------------------------------------------------- -# Config param for iOS -set(ENABLE_ARC "0") -set(ENABLE_BITCODE NO) -set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH YES) - -# -------------------------------------------------------- -# Set host system protoc executable path -set(PROTOC_EXECUTABLE "${THIRDPARTY_BUILD_DIR}/protobuf-host/bin/protoc") - -# -------------------------------------------------------- -# Set custom protobuf path for iOS -set(iOS_Protobuf_DIR "${THIRDPARTY_BUILD_DIR}/protobuf/lib/cmake/protobuf") -set(iOS_Protobuf_INCLUDE_DIR "${THIRDPARTY_BUILD_DIR}/protobuf/include/google/protobuf") -set(iOS_Protobuf_LIBRARIES "${THIRDPARTY_BUILD_DIR}/protobuf/lib") - -# -------------------------------------------------------- -# Set OS threading settings -set(CMAKE_THREAD_LIBS_INIT "-lpthread") -set(CMAKE_HAVE_THREADS_LIBRARY ON) -set(CMAKE_USE_WIN32_THREADS_INIT OFF) -set(CMAKE_USE_PTHREADS_INIT ON) -set(THREADS_PREFER_PTHREAD_FLAG ON) - -# -------------------------------------------------------- -# Allow multiple definitions -set(FORCE_MULTILE ON) -set(MULTIPLE_OPTION "-Xlink=-force:multiple") - -# -------------------------------------------------------- -# Set extra compiler flags -set(EXTRA_CXX_FLAGS -std=c++17) - -# -------------------------------------------------------- -# Set custom subfolder for ABI -set(ABI_SUBFOLDER_NAME "/${iOS_ABI}") - -set(TESTING OFF) - -# -------------------------------------------------------- -# Include common build parameters -include(../CommonBuildParameters.cmake) diff --git a/cmake/iOS/iOS.cmake b/cmake/iOS/iOS.cmake deleted file mode 100644 index ac0473a..0000000 --- a/cmake/iOS/iOS.cmake +++ /dev/null @@ -1,462 +0,0 @@ -# From https://github.com/Tencent/mars/blob/master/mars/ios.toolchain.cmake - -# This file is part of the ios-cmake project. It was retrieved from -# https://github.com/cristeab/ios-cmake.git, which is a fork of -# https://code.google.com/p/ios-cmake/. Which in turn is based off of -# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which -# are included with CMake 2.8.4 -# -# The ios-cmake project is licensed under the new BSD license. -# -# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software, -# Kitware, Inc., Insight Software Consortium. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# This file is based off of the Platform/Darwin.cmake and -# Platform/UnixPaths.cmake files which are included with CMake 2.8.4 -# It has been altered for iOS development. -# -# Updated by Alex Stewart (alexs.mac@gmail.com) -# -# ***************************************************************************** -# Now maintained by Alexander Widerberg (widerbergaren [at] gmail.com) -# under the BSD-3-Clause license -# https://github.com/leetal/ios-cmake -# ***************************************************************************** -# -# INFORMATION / HELP -# -# The following variables control the behaviour of this toolchain: -# -# IOS_PLATFORM: OS (default) or SIMULATOR or SIMULATOR64 or TVOS or SIMULATOR_TVOS or WATCHOS -# OS = Build for iPhoneOS. -# SIMULATOR = Build for x86 i386 iPhone Simulator. -# SIMULATOR64 = Build for x86_64 iPhone Simulator. -# TVOS = Build for AppleTVOS. -# SIMULATOR_TVOS = Build for x86_64 AppleTV Simulator. -# WATCHOS = Build for armv7k for WatchOS. -# SIMULATOR_WATCHOS = Build for i386 for Watch Simulator. -# CMAKE_OSX_SYSROOT: Path to the iOS SDK to use. By default this is -# automatically determined from IOS_PLATFORM and xcodebuild, but -# can also be manually specified (although this should not be required). -# CMAKE_IOS_DEVELOPER_ROOT: Path to the Developer directory for the iOS platform -# being compiled for. By default this is automatically determined from -# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should -# not be required). -# ENABLE_BITCODE: (1|0) Enables or disables bitcode support. Default 1 (true) -# ENABLE_ARC: (1|0) Enables or disables ARC support. Default 1 (true, ARC enabled by default) -# ENABLE_VISIBILITY: (1|0) Enables or disables symbol visibility support. Default 0 (false, visibility hidden by default) -# IOS_ARCH: (armv7 armv7s arm64 i386 x86_64) If specified, will override the default architectures for the given IOS_PLATFORM -# OS = armv7 armv7s arm64 -# SIMULATOR = i386 -# SIMULATOR64 = x86_64 -# TVOS = arm64 -# SIMULATOR_TVOS = x86_64 -# WATCHOS = armv7k -# SIMULATOR_WATCHOS = i386 -# -# This toolchain defines the following variables for use externally: -# -# XCODE_VERSION: Version number (not including Build version) of Xcode detected. -# IOS_SDK_VERSION: Version of iOS SDK being used. -# CMAKE_OSX_ARCHITECTURES: Architectures being compiled for (generated from -# IOS_PLATFORM). -# -# This toolchain defines the following macros for use externally: -# -# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT) -# A convenience macro for setting xcode specific properties on targets. -# Available variants are: All, Release, RelWithDebInfo, Debug, MinSizeRel -# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all"). -# -# find_host_package (PROGRAM ARGS) -# A macro used to find executable programs on the host system, not within the -# iOS environment. Thanks to the android-cmake project for providing the -# command. - -# Fix for PThread library not in path -set(CMAKE_THREAD_LIBS_INIT "-lpthread") -set(CMAKE_HAVE_THREADS_LIBRARY 1) -set(CMAKE_USE_WIN32_THREADS_INIT 0) -set(CMAKE_USE_PTHREADS_INIT 1) - -# Get the Xcode version being used. -execute_process(COMMAND xcodebuild -version - OUTPUT_VARIABLE XCODE_VERSION - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_VERSION}") -string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}") -message(STATUS "Building with Xcode version: ${XCODE_VERSION}") -# Default to building for iPhoneOS if not specified otherwise, and we cannot -# determine the platform from the CMAKE_OSX_ARCHITECTURES variable. The use -# of CMAKE_OSX_ARCHITECTURES is such that try_compile() projects can correctly -# determine the value of IOS_PLATFORM from the root project, as -# CMAKE_OSX_ARCHITECTURES is propagated to them by CMake. -if (NOT DEFINED IOS_PLATFORM) - if (CMAKE_OSX_ARCHITECTURES) - if (CMAKE_OSX_ARCHITECTURES MATCHES ".*arm.*") - set(IOS_PLATFORM "OS") - elseif (CMAKE_OSX_ARCHITECTURES MATCHES "i386") - set(IOS_PLATFORM "SIMULATOR") - elseif (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64") - set(IOS_PLATFORM "SIMULATOR64") - elseif (CMAKE_OSX_ARCHITECTURES MATCHES "armv7k") - set(IOS_PLATFORM "WATCHOS") - endif() - endif() - if (NOT IOS_PLATFORM) - set(IOS_PLATFORM "OS") - endif() -endif() -set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING - "Type of iOS platform for which to build.") -# Determine the platform name and architectures for use in xcodebuild commands -# from the specified IOS_PLATFORM name. -if (IOS_PLATFORM STREQUAL "OS") - set(XCODE_IOS_PLATFORM iphoneos) - if(NOT IOS_ARCH) - set(IOS_ARCH armv7 armv7s arm64) - endif() - elseif (IOS_PLATFORM STREQUAL "OS64") - set(XCODE_IOS_PLATFORM iphoneos) - if(NOT IOS_ARCH) - set(IOS_ARCH arm64) - endif() -elseif (IOS_PLATFORM STREQUAL "SIMULATOR") - set(XCODE_IOS_PLATFORM iphonesimulator) - if(NOT IOS_ARCH) - set(IOS_ARCH i386) - endif() -elseif(IOS_PLATFORM STREQUAL "SIMULATOR64") - set(XCODE_IOS_PLATFORM iphonesimulator) - if(NOT IOS_ARCH) - set(IOS_ARCH x86_64) - endif() -elseif (IOS_PLATFORM STREQUAL "TVOS") - set(XCODE_IOS_PLATFORM appletvos) - if(NOT IOS_ARCH) - set(IOS_ARCH arm64) - endif() -elseif (IOS_PLATFORM STREQUAL "SIMULATOR_TVOS") - set(XCODE_IOS_PLATFORM appletvsimulator) - if(NOT IOS_ARCH) - set(IOS_ARCH x86_64) - endif() -elseif (IOS_PLATFORM STREQUAL "WATCHOS") - set(XCODE_IOS_PLATFORM watchos) - if(NOT IOS_ARCH) - set(IOS_ARCH armv7k) - endif() -elseif (IOS_PLATFORM STREQUAL "SIMULATOR_WATCHOS") - set(XCODE_IOS_PLATFORM watchsimulator) - if(NOT IOS_ARCH) - set(IOS_ARCH i386) - endif() -else() - message(FATAL_ERROR "Invalid IOS_PLATFORM: ${IOS_PLATFORM}") -endif() -message(STATUS "Configuring iOS build for platform: ${IOS_PLATFORM}, " - "architecture(s): ${IOS_ARCH}, XCODE_IOS_PLATFORM: ${XCODE_IOS_PLATFORM}") -# If user did not specify the SDK root to use, then query xcodebuild for it. -if (NOT CMAKE_OSX_SYSROOT) - execute_process(COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path - OUTPUT_VARIABLE CMAKE_OSX_SYSROOT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}") -endif() -if (NOT EXISTS ${CMAKE_OSX_SYSROOT}) - message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain" - "is pointing to the correct path. Please run:" - "sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" - "and see if that fixes the problem for you.") - message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} " - "does not exist.") -endif() -# Specify minimum version of deployment target. -if (NOT DEFINED IOS_DEPLOYMENT_TARGET) - # Unless specified, SDK version 8.0 is used by default as minimum target version. - set(IOS_DEPLOYMENT_TARGET "10.12" - CACHE STRING "Minimum iOS version to build for." ) - message(STATUS "Using the default min-version since IOS_DEPLOYMENT_TARGET not provided!") -endif() -# Use bitcode or not -if (NOT DEFINED ENABLE_BITCODE AND NOT IOS_ARCH MATCHES "((^|, )(i386|x86_64))+") - # Unless specified, enable bitcode support by default - set(ENABLE_BITCODE TRUE CACHE BOOL "Whether or not to enable bitcode") - message(STATUS "Enabling bitcode support by default. ENABLE_BITCODE not provided!") -endif() -if (NOT DEFINED ENABLE_BITCODE) - message(STATUS "Disabling bitcode support by default on simulators. ENABLE_BITCODE not provided for override!") -endif() -# Use ARC or not -if (NOT DEFINED ENABLE_ARC) - # Unless specified, enable ARC support by default - set(ENABLE_ARC TRUE CACHE BOOL "Whether or not to enable ARC") - message(STATUS "Enabling ARC support by default. ENABLE_ARC not provided!") -endif() -# Use hidden visibility or not -if (NOT DEFINED ENABLE_VISIBILITY) - # Unless specified, disable symbols visibility by default - set(ENABLE_VISIBILITY FALSE CACHE BOOL "Whether or not to hide symbols (-fvisibility=hidden)") - message(STATUS "Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!") -endif() -# Get the SDK version information. -execute_process(COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version SDKVersion - OUTPUT_VARIABLE IOS_SDK_VERSION - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -# Find the Developer root for the specific iOS platform being compiled for -# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in -# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain -# this information from xcrun or xcodebuild. -if (NOT CMAKE_IOS_DEVELOPER_ROOT) - get_filename_component(IOS_PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT} PATH) - get_filename_component(CMAKE_IOS_DEVELOPER_ROOT ${IOS_PLATFORM_SDK_DIR} PATH) -endif() -if (NOT EXISTS ${CMAKE_IOS_DEVELOPER_ROOT}) - message(FATAL_ERROR "Invalid CMAKE_IOS_DEVELOPER_ROOT: " - "${CMAKE_IOS_DEVELOPER_ROOT} does not exist.") -endif() -message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}") -# Find the C & C++ compilers for the specified SDK. -if (NOT CMAKE_C_COMPILER) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang - OUTPUT_VARIABLE CMAKE_C_COMPILER - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}") -endif() -if (NOT CMAKE_CXX_COMPILER) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang++ - OUTPUT_VARIABLE CMAKE_CXX_COMPILER - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}") -endif() -# Find (Apple's) libtool. -execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find libtool - OUTPUT_VARIABLE IOS_LIBTOOL - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -message(STATUS "Using libtool: ${IOS_LIBTOOL}") -# Configure libtool to be used instead of ar + ranlib to build static libraries. -# This is required on Xcode 7+, but should also work on previous versions of -# Xcode. -set(CMAKE_C_CREATE_STATIC_LIBRARY - "${IOS_LIBTOOL} -static -o ") -set(CMAKE_CXX_CREATE_STATIC_LIBRARY - "${IOS_LIBTOOL} -static -o ") -# Get the version of Darwin (OS X) of the host. -execute_process(COMMAND uname -r - OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -# Standard settings. -#set(CMAKE_SYSTEM_NAME Darwin CACHE INTERNAL "") -set(CMAKE_SYSTEM_VERSION ${IOS_SDK_VERSION} CACHE INTERNAL "") -set(UNIX TRUE CACHE BOOL "") -set(APPLE TRUE CACHE BOOL "") -set(IOS TRUE CACHE BOOL "") -set(CMAKE_AR ar CACHE FILEPATH "" FORCE) -set(CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE) -# Force unset of OS X-specific deployment target (otherwise autopopulated), -# required as of cmake 2.8.10. -set(CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING - "Must be empty for iOS builds." FORCE) -# Set the architectures for which to build. -set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS") -# Change the type of target generated for try_compile() so it'll work when cross-compiling -set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) - -# All iOS/Darwin specific settings - some may be redundant. -set(CMAKE_SHARED_LIBRARY_PREFIX "lib") -set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") -set(CMAKE_SHARED_MODULE_PREFIX "lib") -set(CMAKE_SHARED_MODULE_SUFFIX ".so") -set(CMAKE_C_COMPILER_ABI ELF) -set(CMAKE_CXX_COMPILER_ABI ELF) -set(CMAKE_C_HAS_ISYSROOT 1) -set(CMAKE_CXX_HAS_ISYSROOT 1) -set(CMAKE_MODULE_EXISTS 1) -set(CMAKE_DL_LIBS "") -set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ") -set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ") -set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") -set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") - -if(IOS_ARCH MATCHES "((^|, )(arm64|x86_64))+") - set(CMAKE_C_SIZEOF_DATA_PTR 8) - set(CMAKE_CXX_SIZEOF_DATA_PTR 8) - message(STATUS "Using a data_ptr size of 8") -else() - set(CMAKE_C_SIZEOF_DATA_PTR 4) - set(CMAKE_CXX_SIZEOF_DATA_PTR 4) - message(STATUS "Using a data_ptr size of 4") -endif() - -message(STATUS "Building for minimum iOS version: ${IOS_DEPLOYMENT_TARGET}" - " (SDK version: ${IOS_SDK_VERSION})") -# Note that only Xcode 7+ supports the newer more specific: -# -m${XCODE_IOS_PLATFORM}-version-min flags, older versions of Xcode use: -# -m(ios/ios-simulator)-version-min instead. -if (IOS_PLATFORM STREQUAL "OS") - if (XCODE_VERSION VERSION_LESS 7.0) - set(XCODE_IOS_PLATFORM_VERSION_FLAGS - "-mios-version-min=${IOS_DEPLOYMENT_TARGET}") - else() - # Xcode 7.0+ uses flags we can build directly from XCODE_IOS_PLATFORM. - set(XCODE_IOS_PLATFORM_VERSION_FLAGS - "-m${XCODE_IOS_PLATFORM}-version-min=${IOS_DEPLOYMENT_TARGET}") - endif() -elseif (IOS_PLATFORM STREQUAL "TVOS") - set(XCODE_IOS_PLATFORM_VERSION_FLAGS - "-mtvos-version-min=${IOS_DEPLOYMENT_TARGET}") -elseif (IOS_PLATFORM STREQUAL "SIMULATOR_TVOS") - set(XCODE_IOS_PLATFORM_VERSION_FLAGS - "-mtvos-simulator-version-min=${IOS_DEPLOYMENT_TARGET}") -elseif (IOS_PLATFORM STREQUAL "WATCHOS") - set(XCODE_IOS_PLATFORM_VERSION_FLAGS - "-mwatchos-version-min=${IOS_DEPLOYMENT_TARGET}") -elseif (IOS_PLATFORM STREQUAL "SIMULATOR_WATCHOS") - set(XCODE_IOS_PLATFORM_VERSION_FLAGS - "-mwatchos-simulator-version-min=${IOS_DEPLOYMENT_TARGET}") -else() - # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min. - set(XCODE_IOS_PLATFORM_VERSION_FLAGS - "-mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}") -endif() -message(STATUS "Version flags set to: ${XCODE_IOS_PLATFORM_VERSION_FLAGS}") - -if (ENABLE_BITCODE) - set(BITCODE "-fembed-bitcode") - set(HEADER_PAD "") - message(STATUS "Enabling bitcode support.") -else() - set(BITCODE "") - set(HEADER_PAD "-headerpad_max_install_names") - message(STATUS "Disabling bitcode support.") -endif() - -if (ENABLE_ARC) - set(FOBJC_ARC "-fobjc-arc") - message(STATUS "Enabling ARC support.") -else() - set(FOBJC_ARC "-fno-objc-arc") - message(STATUS "Disabling ARC support.") -endif() - -if (NOT ENABLE_VISIBILITY) - set(VISIBILITY "-fvisibility=hidden") - message(STATUS "Hiding symbols (-fvisibility=hidden).") -else() - set(VISIBILITY "") -endif() - -set(CMAKE_C_FLAGS -"${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_C_FLAGS}") -# Hidden visibilty is required for C++ on iOS. -set(CMAKE_CXX_FLAGS -"${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} -fvisibility-inlines-hidden -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_CXX_FLAGS}") -set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} -DNDEBUG -Os -ffast-math ${BITCODE} ${CMAKE_CXX_FLAGS_MINSIZEREL}") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -DNDEBUG -O2 -g -ffast-math ${BITCODE} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DNDEBUG -O3 -ffast-math ${BITCODE} ${CMAKE_CXX_FLAGS_RELEASE}") -set(CMAKE_C_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}") -set(CMAKE_CXX_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}") - -# In order to ensure that the updated compiler flags are used in try_compile() -# tests, we have to forcibly set them in the CMake cache, not merely set them -# in the local scope. -list(APPEND VARS_TO_FORCE_IN_CACHE - CMAKE_C_FLAGS - CMAKE_CXX_FLAGS - CMAKE_CXX_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELEASE - CMAKE_C_LINK_FLAGS - CMAKE_CXX_LINK_FLAGS) -foreach(VAR_TO_FORCE ${VARS_TO_FORCE_IN_CACHE}) - set(${VAR_TO_FORCE} "${${VAR_TO_FORCE}}" CACHE STRING "" FORCE) -endforeach() - -set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) -set (CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") -set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib ${HEADER_PAD}") -set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle ${HEADER_PAD}") -set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,") -set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,") -set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a") - -# Hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old -# build tree (where install_name_tool was hardcoded) and where -# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still cmake didn't fail in -# CMakeFindBinUtils.cmake (because it isn't rerun) hardcode -# CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did -# before, Alex. -if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool) -endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - -# Set the find root to the iOS developer roots and to user defined paths. -set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_OSX_SYSROOT} - ${CMAKE_PREFIX_PATH} CACHE STRING "iOS find search path root" FORCE) -# Default to searching for frameworks first. -set(CMAKE_FIND_FRAMEWORK FIRST) -# Set up the default search directories for frameworks. -set(CMAKE_SYSTEM_FRAMEWORK_PATH - ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks - ${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks - ${CMAKE_OSX_SYSROOT}/Developer/Library/Frameworks) -# Only search the specified iOS SDK, not the remainder of the host filesystem. -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -# This little macro lets you set any XCode specific property. -macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION) - set(XCODE_RELVERSION_I "${XCODE_RELVERSION}") - if (XCODE_RELVERSION_I STREQUAL "All") - set_property(TARGET ${TARGET} PROPERTY - XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}") - else() - set_property(TARGET ${TARGET} PROPERTY - XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}") - endif() -endmacro(set_xcode_property) -# This macro lets you find executable programs on the host system. -macro(find_host_package) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) - set(IOS FALSE) - find_package(${ARGN}) - set(IOS TRUE) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endmacro(find_host_package)