Add cmake option ENABLE_BITCODE for iOS builds Change-Id: Ib56c711c626044754c1c3a397d7c4648c4ec089d
diff --git a/CMakeLists.txt b/CMakeLists.txt index f24f173..b247c71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -153,6 +153,8 @@ if (APPLE) option(ACCELERATESPARSE "Enable use of sparse solvers in Apple's Accelerate framework." ON) + option(ENABLE_BITCODE + "Enable bitcode for iOS builds (disables inline optimizations for Eigen)." OFF) endif() option(CUDA "Enable use of CUDA linear algebra solvers." ON) option(LAPACK "Enable use of LAPACK directly within Ceres." ON) @@ -631,14 +633,20 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CERES_STRICT_CXX_FLAGS}") endif (UNIX) -# Use a larger inlining threshold for Clang, since it hobbles Eigen, -# resulting in an unreasonably slow version of the blas routines. The -# -Qunused-arguments is needed because CMake passes the inline -# threshold to the linker and clang complains about it and dies. if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Matches Clang & AppleClang. - set(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -Qunused-arguments -mllvm -inline-threshold=600") - + # Optimize for Eigen OR enable bitcode; you cannot do both since bitcode is an + # intermediate representation. + if (ENABLE_BITCODE) + set(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -fembed-bitcode") + else () + # Use a larger inlining threshold for Clang, since it hobbles Eigen, + # resulting in an unreasonably slow version of the blas routines. The + # -Qunused-arguments is needed because CMake passes the inline + # threshold to the linker and clang complains about it and dies. + set(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -Qunused-arguments -mllvm -inline-threshold=600") + endif () # Older versions of Clang (<= 2.9) do not support the 'return-type-c-linkage' # option, so check for its presence before adding it to the default flags set. include(CheckCXXCompilerFlag)