Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle-Lite
提交
09df644f
P
Paddle-Lite
项目概览
PaddlePaddle
/
Paddle-Lite
通知
331
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
271
列表
看板
标记
里程碑
合并请求
78
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle-Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
271
Issue
271
列表
看板
标记
里程碑
合并请求
78
合并请求
78
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
09df644f
编写于
6月 12, 2018
作者:
R
Ruilong Liu
提交者:
GitHub
6月 12, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #398 from codeWorm2015/develop
#397
modify ios cmake tool chain, add macro option for multi-platform
上级
25d48c94
76b18170
变更
30
隐藏空白更改
内联
并排
Showing
30 changed file
with
486 addition
and
453 deletion
+486
-453
CMakeLists.txt
CMakeLists.txt
+21
-4
src/framework/op_registry.h
src/framework/op_registry.h
+65
-15
src/framework/operator.cpp
src/framework/operator.cpp
+5
-0
src/framework/operator.h
src/framework/operator.h
+1
-0
src/operators/batchnorm_op.cpp
src/operators/batchnorm_op.cpp
+8
-2
src/operators/box_coder_op.cpp
src/operators/box_coder_op.cpp
+8
-2
src/operators/concat_op.cpp
src/operators/concat_op.cpp
+8
-2
src/operators/conv_op.cpp
src/operators/conv_op.cpp
+12
-2
src/operators/depthwise_conv_op.cpp
src/operators/depthwise_conv_op.cpp
+8
-2
src/operators/elementwise_add_op.cpp
src/operators/elementwise_add_op.cpp
+8
-2
src/operators/feed_op.h
src/operators/feed_op.h
+8
-2
src/operators/fetch_op.h
src/operators/fetch_op.h
+8
-2
src/operators/fusion_conv_add.cpp
src/operators/fusion_conv_add.cpp
+8
-2
src/operators/fusion_conv_add.h
src/operators/fusion_conv_add.h
+7
-1
src/operators/fusion_conv_add_relu_op.h
src/operators/fusion_conv_add_relu_op.h
+8
-2
src/operators/fusion_fc_op.cpp
src/operators/fusion_fc_op.cpp
+8
-2
src/operators/fusion_fc_op.h
src/operators/fusion_fc_op.h
+8
-3
src/operators/kernel/fpga/conv_kernel.cpp
src/operators/kernel/fpga/conv_kernel.cpp
+7
-6
src/operators/lrn_op.cpp
src/operators/lrn_op.cpp
+8
-2
src/operators/mul_op.cpp
src/operators/mul_op.cpp
+8
-2
src/operators/multiclass_nms_op.cpp
src/operators/multiclass_nms_op.cpp
+8
-2
src/operators/pool_op.cpp
src/operators/pool_op.cpp
+8
-2
src/operators/prior_box_op.cpp
src/operators/prior_box_op.cpp
+8
-2
src/operators/relu_op.cpp
src/operators/relu_op.cpp
+8
-2
src/operators/reshape_op.cpp
src/operators/reshape_op.cpp
+8
-2
src/operators/sigmoid_op.cpp
src/operators/sigmoid_op.cpp
+8
-2
src/operators/softmax_op.cpp
src/operators/softmax_op.cpp
+8
-2
src/operators/transpose_op.cpp
src/operators/transpose_op.cpp
+8
-2
tools/build.sh
tools/build.sh
+1
-1
tools/ios-cmake/ios.toolchain.cmake
tools/ios-cmake/ios.toolchain.cmake
+199
-381
未找到文件。
CMakeLists.txt
浏览文件 @
09df644f
cmake_minimum_required
(
VERSION 3.0
)
cmake_minimum_required
(
VERSION 3.0
)
project
(
paddle-mobile
)
project
(
paddle-mobile
)
option
(
DEBUGING
"enable debug mode"
O
FF
)
option
(
DEBUGING
"enable debug mode"
O
N
)
option
(
USE_OPENMP
"openmp support"
OFF
)
option
(
USE_OPENMP
"openmp support"
OFF
)
option
(
USE_EXCEPTION
"use std exception"
OFF
)
option
(
USE_EXCEPTION
"use std exception"
ON
)
option
(
CPU
"cpu"
ON
)
option
(
MALI_GPU
"mali gpu"
OFF
)
option
(
FPGA
"fpga"
OFF
)
if
(
CPU
)
add_definitions
(
-DPADDLE_MOBILE_CPU
)
elseif
(
MALI_GPU
)
add_definitions
(
-DPADDLE_MOBILE_MALI_GPU
)
elseif
(
FPGA
)
add_definitions
(
-DPADDLE_MOBILE_FPGA
)
endif
()
if
(
DEBUGING
)
if
(
DEBUGING
)
set
(
CMAKE_BUILD_TYPE Debug
)
set
(
CMAKE_BUILD_TYPE Debug
)
...
@@ -127,8 +139,13 @@ else ()
...
@@ -127,8 +139,13 @@ else ()
add_definitions
(
-DTRANSPOSE_OP
)
add_definitions
(
-DTRANSPOSE_OP
)
endif
()
endif
()
if
(
IS_IOS
)
add_library
(
paddle-mobile SHARED
${
PADDLE_MOBILE_CC
}
${
PADDLE_MOBILE_H
}
)
add_library
(
paddle-mobile STATIC
${
PADDLE_MOBILE_CC
}
${
PADDLE_MOBILE_H
}
)
elseif
(
ANDROID
)
add_library
(
paddle-mobile SHARED
${
PADDLE_MOBILE_CC
}
${
PADDLE_MOBILE_H
}
)
else
()
add_library
(
paddle-mobile SHARED
${
PADDLE_MOBILE_CC
}
${
PADDLE_MOBILE_H
}
)
endif
()
if
(
DEBUGING
)
if
(
DEBUGING
)
add_subdirectory
(
test
)
add_subdirectory
(
test
)
...
...
src/framework/op_registry.h
浏览文件 @
09df644f
...
@@ -96,24 +96,74 @@ class OpRegistry {
...
@@ -96,24 +96,74 @@ class OpRegistry {
}
}
};
};
#define REGISTER_OPERATOR(op_type, op_class) \
#ifdef PADDLE_MOBILE_CPU
template <typename Dtype, typename T> \
class _OpClass_##op_type##_ : public op_class<Dtype, T> { \
#define REGISTER_OPERATOR_CPU(op_type, op_class) \
public: \
template <typename Dtype, typename T> \
DEFINE_OP_CONSTRUCTOR(_OpClass_##op_type##_, op_class); \
class _OpClass_##op_type##_cpu : public op_class<Dtype, T> { \
}; \
public: \
static paddle_mobile::framework::OperatorRegistrar< \
DEFINE_OP_CONSTRUCTOR(_OpClass_##op_type##_cpu, op_class); \
paddle_mobile::CPU, _OpClass_##op_type##_<paddle_mobile::CPU, float>> \
}; \
__op_registrar_##op_type##__(#op_type); \
static paddle_mobile::framework::OperatorRegistrar< \
int TouchOpRegistrar_##op_type() { \
paddle_mobile::CPU, _OpClass_##op_type##_cpu<paddle_mobile::CPU, float>> \
__op_registrar_##op_type##__.Touch(); \
__op_registrar_##op_type##__cpu(#op_type); \
return 0; \
int TouchOpRegistrar_##op_type##_cpu() { \
__op_registrar_##op_type##__cpu.Touch(); \
return 0; \
}
}
#define USE_OP
(op_type)
\
#define USE_OP
_CPU(op_type)
\
extern int TouchOpRegistrar_##op_type
();
\
extern int TouchOpRegistrar_##op_type
##_cpu();
\
static int use_op_itself_##op_type##_ __attribute__((unused)) = \
static int use_op_itself_##op_type##_ __attribute__((unused)) = \
TouchOpRegistrar_##op_type()
TouchOpRegistrar_##op_type##_cpu()
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#define REGISTER_OPERATOR_MALI_GPU(op_type, op_class) \
template <typename Dtype, typename T> \
class _OpClass_##op_type##_mali_gpu : public op_class<Dtype, T> { \
public: \
DEFINE_OP_CONSTRUCTOR(_OpClass_##op_type##_mali_gpu, op_class); \
}; \
static paddle_mobile::framework::OperatorRegistrar< \
paddle_mobile::CPU, \
_OpClass_##op_type##_mali_gpu<paddle_mobile::CPU, float>> \
__op_registrar_##op_type##__mali_gpu(#op_type); \
int TouchOpRegistrar_##op_type##_mali_gpu() { \
__op_registrar_##op_type##__mali_gpu.Touch(); \
return 0; \
}
#define USE_OP_MALI_GPU(op_type) \
extern int TouchOpRegistrar_##op_type##_mali_gpu(); \
static int use_op_itself_##op_type##_ __attribute__((unused)) = \
TouchOpRegistrar_##op_type##_mali_gpu()
#endif
#ifdef PADDLE_MOBILE_FPGA
#define REGISTER_OPERATOR_FPGA(op_type, op_class) \
template <typename Dtype, typename T> \
class _OpClass_##op_type##_fpga : public op_class<Dtype, T> { \
public: \
DEFINE_OP_CONSTRUCTOR(_OpClass_##op_type##_fpga, op_class); \
}; \
static paddle_mobile::framework::OperatorRegistrar< \
paddle_mobile::CPU, \
_OpClass_##op_type##_fpga<paddle_mobile::CPU, float>> \
__op_registrar_##op_type##__fpga(#op_type); \
int TouchOpRegistrar_##op_type##_fpga() { \
__op_registrar_##op_type##__fpga.Touch(); \
return 0; \
}
#define USE_OP_FPGA(op_type) \
extern int TouchOpRegistrar_##op_type##_fpga(); \
static int use_op_itself_##op_type##_ __attribute__((unused)) = \
TouchOpRegistrar_##op_type##_fpga()
#endif
}
// namespace framework
}
// namespace framework
}
// namespace paddle_mobile
}
// namespace paddle_mobile
src/framework/operator.cpp
浏览文件 @
09df644f
...
@@ -58,7 +58,12 @@ void OperatorBase<Dtype>::Run() const {
...
@@ -58,7 +58,12 @@ void OperatorBase<Dtype>::Run() const {
}
}
template
class
OperatorBase
<
CPU
>;
template
class
OperatorBase
<
CPU
>;
template
class
OperatorBase
<
FPGA
>;
template
class
OperatorBase
<
GPU_MALI
>;
template
class
OperatorWithKernel
<
CPU
>;
template
class
OperatorWithKernel
<
CPU
>;
template
class
OperatorWithKernel
<
FPGA
>;
template
class
OperatorWithKernel
<
GPU_MALI
>;
}
// namespace framework
}
// namespace framework
}
// namespace paddle_mobile
}
// namespace paddle_mobile
src/framework/operator.h
浏览文件 @
09df644f
...
@@ -153,6 +153,7 @@ class FusionOpMatcher {
...
@@ -153,6 +153,7 @@ class FusionOpMatcher {
std
::
string
BeginType
()
{
return
node_
.
Type
();
}
std
::
string
BeginType
()
{
return
node_
.
Type
();
}
// virtual bool Fusion();
protected:
protected:
Node
node_
;
Node
node_
;
std
::
string
type_
;
std
::
string
type_
;
...
...
src/operators/batchnorm_op.cpp
浏览文件 @
09df644f
...
@@ -31,7 +31,13 @@ template class BatchNormOp<CPU, float>;
...
@@ -31,7 +31,13 @@ template class BatchNormOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
batch_norm
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
batch_norm
,
ops
::
BatchNormOp
);
USE_OP_CPU
(
batch_norm
);
REGISTER_OPERATOR_CPU
(
batch_norm
,
ops
::
BatchNormOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/box_coder_op.cpp
浏览文件 @
09df644f
...
@@ -52,7 +52,13 @@ template class BoxCoderOp<CPU, float>;
...
@@ -52,7 +52,13 @@ template class BoxCoderOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
box_coder
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
box_coder
,
ops
::
BoxCoderOp
);
USE_OP_CPU
(
box_coder
);
REGISTER_OPERATOR_CPU
(
box_coder
,
ops
::
BoxCoderOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/concat_op.cpp
浏览文件 @
09df644f
...
@@ -62,7 +62,13 @@ template class ConcatOp<CPU, float>;
...
@@ -62,7 +62,13 @@ template class ConcatOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
concat
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
concat
,
ops
::
ConcatOp
);
USE_OP_CPU
(
concat
);
REGISTER_OPERATOR_CPU
(
concat
,
ops
::
ConcatOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/conv_op.cpp
浏览文件 @
09df644f
...
@@ -53,7 +53,17 @@ template class ConvOp<CPU, float>;
...
@@ -53,7 +53,17 @@ template class ConvOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
conv2d
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
conv2d
,
ops
::
ConvOp
);
USE_OP_CPU
(
conv2d
);
REGISTER_OPERATOR_CPU
(
conv2d
,
ops
::
ConvOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
USE_OP_MALI_GPU
(
conv2d
);
REGISTER_OPERATOR_MALI_GPU
(
conv2d
,
ops
::
ConvOp
);
#endif
#ifdef PADDLE_MOBILE_FPGA
USE_OP_FPGA
(
conv2d
);
REGISTER_OPERATOR_FPGA
(
conv2d
,
ops
::
ConvOp
);
#endif
#endif
#endif
src/operators/depthwise_conv_op.cpp
浏览文件 @
09df644f
...
@@ -54,7 +54,13 @@ template class DepthwiseConvOp<CPU, float>;
...
@@ -54,7 +54,13 @@ template class DepthwiseConvOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
depthwise_conv2d
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
depthwise_conv2d
,
ops
::
DepthwiseConvOp
);
USE_OP_CPU
(
depthwise_conv2d
);
REGISTER_OPERATOR_CPU
(
depthwise_conv2d
,
ops
::
DepthwiseConvOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/elementwise_add_op.cpp
浏览文件 @
09df644f
...
@@ -29,7 +29,13 @@ template class ElementwiseAddOp<CPU, float>;
...
@@ -29,7 +29,13 @@ template class ElementwiseAddOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
elementwise_add
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
elementwise_add
,
ops
::
ElementwiseAddOp
);
USE_OP_CPU
(
elementwise_add
);
REGISTER_OPERATOR_CPU
(
elementwise_add
,
ops
::
ElementwiseAddOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/feed_op.h
浏览文件 @
09df644f
...
@@ -43,8 +43,14 @@ class FeedOp : public framework::OperatorBase<DeviceType> {
...
@@ -43,8 +43,14 @@ class FeedOp : public framework::OperatorBase<DeviceType> {
};
};
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
feed
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
feed
,
ops
::
FeedOp
);
USE_OP_CPU
(
feed
);
REGISTER_OPERATOR_CPU
(
feed
,
ops
::
FeedOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
}
// namespace operators
}
// namespace operators
}
// namespace paddle_mobile
}
// namespace paddle_mobile
src/operators/fetch_op.h
浏览文件 @
09df644f
...
@@ -43,8 +43,14 @@ class FetchOp : public framework::OperatorBase<DeviceType> {
...
@@ -43,8 +43,14 @@ class FetchOp : public framework::OperatorBase<DeviceType> {
};
};
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
fetch
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
fetch
,
ops
::
FetchOp
);
USE_OP_CPU
(
fetch
);
REGISTER_OPERATOR_CPU
(
fetch
,
ops
::
FetchOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
}
// namespace operators
}
// namespace operators
}
// namespace paddle_mobile
}
// namespace paddle_mobile
src/operators/fusion_conv_add.cpp
浏览文件 @
09df644f
...
@@ -25,7 +25,13 @@ template class FushionConvAddOp<CPU, float>;
...
@@ -25,7 +25,13 @@ template class FushionConvAddOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
conv_add
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
conv_add
,
ops
::
FushionConvAddOp
);
USE_OP_CPU
(
conv_add
);
REGISTER_OPERATOR_CPU
(
conv_add
,
ops
::
FushionConvAddOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/fusion_conv_add.h
浏览文件 @
09df644f
...
@@ -64,7 +64,13 @@ class FushionConvAddOp : public framework::OperatorWithKernel<DeviceType> {
...
@@ -64,7 +64,13 @@ class FushionConvAddOp : public framework::OperatorWithKernel<DeviceType> {
// FushionFcParam param_;
// FushionFcParam param_;
};
};
// static framework::FusionOpRegistrar fc_registrar(new FusionConvAddMatcher());
#ifdef PADDLE_MOBILE_CPU
static
framework
::
FusionOpRegistrar
fc_registrar
(
new
FusionConvAddMatcher
());
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
}
// namespace operators
}
// namespace operators
}
// namespace paddle_mobile
}
// namespace paddle_mobile
...
...
src/operators/fusion_conv_add_relu_op.h
浏览文件 @
09df644f
...
@@ -46,8 +46,14 @@ class ConvAddReluOp {
...
@@ -46,8 +46,14 @@ class ConvAddReluOp {
private:
private:
};
};
// static framework::FusionOpRegistrar fc_registrar(
#ifdef PADDLE_MOBILE_CPU
// new FushionConvAddReluOpMatcher());
// static framework::FusionOpRegistrar fusion_conv_add_relu_registrar(
// new FushionConvAddReluOpMatcher());
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
}
// namespace operators
}
// namespace operators
}
// namespace paddle_mobile
}
// namespace paddle_mobile
...
...
src/operators/fusion_fc_op.cpp
浏览文件 @
09df644f
...
@@ -54,7 +54,13 @@ template class FushionFcOp<CPU, float>;
...
@@ -54,7 +54,13 @@ template class FushionFcOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
fc
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
fc
,
ops
::
FushionFcOp
);
USE_OP_CPU
(
fc
);
REGISTER_OPERATOR_CPU
(
fc
,
ops
::
FushionFcOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/fusion_fc_op.h
浏览文件 @
09df644f
...
@@ -37,8 +37,6 @@ class FusionFcMatcher : public framework::FusionOpMatcher {
...
@@ -37,8 +37,6 @@ class FusionFcMatcher : public framework::FusionOpMatcher {
void
FolderNodes
(
void
FolderNodes
(
framework
::
Node
*
node
,
framework
::
Node
*
node
,
std
::
vector
<
std
::
shared_ptr
<
framework
::
Node
>>
*
removed_nodes
)
{
std
::
vector
<
std
::
shared_ptr
<
framework
::
Node
>>
*
removed_nodes
)
{
vector
<
std
::
shared_ptr
<
framework
::
OpDesc
>>
origin_descs
=
node
->
OpDescs
(
node_
.
Depth
());
node
->
Folder
(
node_
.
Depth
(),
Type
(),
node
->
Folder
(
node_
.
Depth
(),
Type
(),
{{
G_OP_TYPE_ELEMENTWISE_ADD
,
{
"Y"
,
"Z"
}}},
removed_nodes
);
{{
G_OP_TYPE_ELEMENTWISE_ADD
,
{
"Y"
,
"Z"
}}},
removed_nodes
);
}
}
...
@@ -69,7 +67,14 @@ class FushionFcOp : public framework::OperatorWithKernel<DeviceType> {
...
@@ -69,7 +67,14 @@ class FushionFcOp : public framework::OperatorWithKernel<DeviceType> {
FushionFcParam
param_
;
FushionFcParam
param_
;
};
};
// static framework::FusionOpRegistrar fc_registrar(new FusionFcMatcher());
#ifdef PADDLE_MOBILE_CPU
static
framework
::
FusionOpRegistrar
fc_registrar
(
new
FusionFcMatcher
());
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
static
framework
::
FusionOpRegistrar
fc_registrar
(
new
FusionFcMatcher
());
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
}
// namespace operators
}
// namespace operators
}
// namespace paddle_mobile
}
// namespace paddle_mobile
...
...
src/operators/kernel/fpga/conv_kernel.cpp
浏览文件 @
09df644f
...
@@ -14,15 +14,16 @@ limitations under the License. */
...
@@ -14,15 +14,16 @@ limitations under the License. */
#ifdef CONV_OP
#ifdef CONV_OP
#include "operators/kernel/conv_kernel.h"
namespace
paddle_mobile
{
namespace
paddle_mobile
{
namespace
operators
{
namespace
operators
{
// template<>
template
<
>
// void ConvKernel<FPGA, float>::Compute(const ConvParam ¶m) const
void
ConvKernel
<
FPGA
,
float
>::
Compute
(
const
ConvParam
&
param
)
const
{}
// {}
template
class
ConvKernel
<
FPGA
,
float
>;
//
// template class ConvKernel<FPGA, float>;
}
// namespace operators
}
}
// namespace paddle_mobile
}
// namespace paddle_mobile
#endif
#endif
src/operators/lrn_op.cpp
浏览文件 @
09df644f
...
@@ -29,7 +29,13 @@ template class LrnOp<CPU, float>;
...
@@ -29,7 +29,13 @@ template class LrnOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
lrn
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
lrn
,
ops
::
LrnOp
);
USE_OP_CPU
(
lrn
);
REGISTER_OPERATOR_CPU
(
lrn
,
ops
::
LrnOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/mul_op.cpp
浏览文件 @
09df644f
...
@@ -55,7 +55,13 @@ template class MulOp<CPU, float>;
...
@@ -55,7 +55,13 @@ template class MulOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
mul
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
mul
,
ops
::
MulOp
);
USE_OP_CPU
(
mul
);
REGISTER_OPERATOR_CPU
(
mul
,
ops
::
MulOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/multiclass_nms_op.cpp
浏览文件 @
09df644f
...
@@ -39,7 +39,13 @@ template class MultiClassNMSOp<CPU, float>;
...
@@ -39,7 +39,13 @@ template class MultiClassNMSOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
multiclass_nms
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
multiclass_nms
,
ops
::
MultiClassNMSOp
);
USE_OP_CPU
(
multiclass_nms
);
REGISTER_OPERATOR_CPU
(
multiclass_nms
,
ops
::
MultiClassNMSOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/pool_op.cpp
浏览文件 @
09df644f
...
@@ -59,7 +59,13 @@ template class PoolOp<CPU, float>;
...
@@ -59,7 +59,13 @@ template class PoolOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
pool2d
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
pool2d
,
ops
::
PoolOp
);
USE_OP_CPU
(
pool2d
);
REGISTER_OPERATOR_CPU
(
pool2d
,
ops
::
PoolOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/prior_box_op.cpp
浏览文件 @
09df644f
...
@@ -49,7 +49,13 @@ template class PriorBoxOp<CPU, float>;
...
@@ -49,7 +49,13 @@ template class PriorBoxOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
prior_box
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
prior_box
,
ops
::
PriorBoxOp
);
USE_OP_CPU
(
prior_box
);
REGISTER_OPERATOR_CPU
(
prior_box
,
ops
::
PriorBoxOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/relu_op.cpp
浏览文件 @
09df644f
...
@@ -33,7 +33,13 @@ template class ReluOp<CPU, float>;
...
@@ -33,7 +33,13 @@ template class ReluOp<CPU, float>;
* 都是需要和model中类型对应起来的
* 都是需要和model中类型对应起来的
* */
* */
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
relu
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
relu
,
ops
::
ReluOp
);
USE_OP_CPU
(
relu
);
REGISTER_OPERATOR_CPU
(
relu
,
ops
::
ReluOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/reshape_op.cpp
浏览文件 @
09df644f
...
@@ -32,7 +32,13 @@ template class ReshapeOp<CPU, float>;
...
@@ -32,7 +32,13 @@ template class ReshapeOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
reshape
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
reshape
,
ops
::
ReshapeOp
);
USE_OP_CPU
(
reshape
);
REGISTER_OPERATOR_CPU
(
reshape
,
ops
::
ReshapeOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/sigmoid_op.cpp
浏览文件 @
09df644f
...
@@ -27,7 +27,13 @@ template class SigmoidOp<CPU, float>;
...
@@ -27,7 +27,13 @@ template class SigmoidOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
sigmoid
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
sigmoid
,
ops
::
SigmoidOp
);
USE_OP_CPU
(
sigmoid
);
REGISTER_OPERATOR_CPU
(
sigmoid
,
ops
::
SigmoidOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/softmax_op.cpp
浏览文件 @
09df644f
...
@@ -27,7 +27,13 @@ template class SoftmaxOp<CPU, float>;
...
@@ -27,7 +27,13 @@ template class SoftmaxOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
softmax
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
softmax
,
ops
::
SoftmaxOp
);
USE_OP_CPU
(
softmax
);
REGISTER_OPERATOR_CPU
(
softmax
,
ops
::
SoftmaxOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
src/operators/transpose_op.cpp
浏览文件 @
09df644f
...
@@ -52,7 +52,13 @@ template class TransposeOp<CPU, float>;
...
@@ -52,7 +52,13 @@ template class TransposeOp<CPU, float>;
}
// namespace paddle_mobile
}
// namespace paddle_mobile
namespace
ops
=
paddle_mobile
::
operators
;
namespace
ops
=
paddle_mobile
::
operators
;
USE_OP
(
transpose
);
#ifdef PADDLE_MOBILE_CPU
REGISTER_OPERATOR
(
transpose
,
ops
::
TransposeOp
);
USE_OP_CPU
(
transpose
);
REGISTER_OPERATOR_CPU
(
transpose
,
ops
::
TransposeOp
);
#endif
#ifdef PADDLE_MOBILE_MALI_GPU
#endif
#ifdef PADDLE_MOBILE_FPGA
#endif
#endif
#endif
tools/build.sh
浏览文件 @
09df644f
...
@@ -98,7 +98,7 @@ build_for_ios() {
...
@@ -98,7 +98,7 @@ build_for_ios() {
BUILD_DIR
=
../build/release/
"
${
PLATFORM
}
"
BUILD_DIR
=
../build/release/
"
${
PLATFORM
}
"
TOOLCHAIN_FILE
=
"./tools/ios-cmake/ios.toolchain.cmake"
TOOLCHAIN_FILE
=
"./tools/ios-cmake/ios.toolchain.cmake"
C_FLAGS
=
"-fobjc-abi-version=2 -fobjc-arc -isysroot
${
CMAKE_OSX_SYSROOT
}
"
C_FLAGS
=
"-fobjc-abi-version=2 -fobjc-arc -isysroot
${
CMAKE_OSX_SYSROOT
}
"
CXX_FLAGS
=
"-fobjc-abi-version=2 -fobjc-arc -std=gnu++1
1
-stdlib=libc++ -isysroot
${
CMAKE_OSX_SYSROOT
}
"
CXX_FLAGS
=
"-fobjc-abi-version=2 -fobjc-arc -std=gnu++1
4
-stdlib=libc++ -isysroot
${
CMAKE_OSX_SYSROOT
}
"
mkdir
-p
"
${
BUILD_DIR
}
"
mkdir
-p
"
${
BUILD_DIR
}
"
if
[
$#
-eq
1
]
;
then
if
[
$#
-eq
1
]
;
then
NET
=
$1
NET
=
$1
...
...
tools/ios-cmake/ios.toolchain.cmake
浏览文件 @
09df644f
# This file is part of the ios-cmake project. It was retrieved from
# This file is based off of the Platform/Darwin.cmake and Platform/UnixPaths.cmake
# https://github.com/cristeab/ios-cmake.git, which is a fork of
# files which are included with CMake 2.8.4
# https://code.google.com/p/ios-cmake/. Which in turn is based off of
# It has been altered for iOS development
# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which
# are included with CMake 2.8.4
# Options:
#
# 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-Clause-3 licence
# *****************************************************************************
#
# INFORMATION / HELP
#
# The following variables control the behaviour of this toolchain:
#
# IOS_PLATFORM: OS (default) or SIMULATOR or SIMULATOR64 or TVOS or SIMULATOR_TVOS
# 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.
# 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)
# 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
#
#
# This toolchain defines the following variables for use externally:
# IOS_PLATFORM = OS (default) or SIMULATOR or SIMULATOR64
# This decides if SDKS will be selected from the iPhoneOS.platform or iPhoneSimulator.platform folders
# OS - the default, used to build for iPhone and iPad physical devices, which have an arm arch.
# SIMULATOR - used to build for the Simulator platforms, which have an x86 arch.
#
#
# XCODE_VERSION: Version number (not including Build version) of Xcode detected.
# CMAKE_IOS_DEVELOPER_ROOT = automatic(default) or /path/to/platform/Developer folder
# IOS_SDK_VERSION: Version of iOS SDK being used.
# By default this location is automatcially chosen based on the IOS_PLATFORM value above.
# CMAKE_OSX_ARCHITECTURES: Architectures being compiled for (generated from
# If set manually, it will override the default location and force the user of a particular Developer Platform
# IOS_PLATFORM).
#
#
# This toolchain defines the following macros for use externally:
# CMAKE_IOS_SDK_ROOT = automatic(default) or /path/to/platform/Developer/SDKs/SDK folder
# By default this location is automatcially chosen based on the CMAKE_IOS_DEVELOPER_ROOT value.
# In this case it will always be the most up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path.
# If set manually, this will force the use of a specific SDK version
# Macros:
#
#
# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT)
# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE)
# A convenience macro for setting xcode specific properties on targets.
# 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")
# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all").
#
#
# find_host_package (PROGRAM ARGS)
# find_host_package (PROGRAM ARGS)
# A macro used to find executable programs on the host system, not within the
# A macro used to find executable programs on the host system, not within the iOS environment.
# iOS environment. Thanks to the android-cmake project for providing the
# Thanks to the android-cmake project for providing the command
# command.
# Standard settings
# Fix for PThread library not in path
set
(
CMAKE_SYSTEM_NAME Darwin
)
set
(
CMAKE_THREAD_LIBS_INIT
"-lpthread"
)
set
(
CMAKE_SYSTEM_VERSION 1
)
set
(
CMAKE_HAVE_THREADS_LIBRARY 1
)
set
(
UNIX True
)
set
(
CMAKE_USE_WIN32_THREADS_INIT 0
)
set
(
APPLE True
)
set
(
CMAKE_USE_PTHREADS_INIT 1
)
set
(
IOS True
)
# Get the Xcode version being used.
# Required as of cmake 2.8.10
execute_process
(
COMMAND xcodebuild -version
set
(
CMAKE_OSX_DEPLOYMENT_TARGET
""
CACHE STRING
"Force unset of the deployment target for iOS"
FORCE
)
OUTPUT_VARIABLE XCODE_VERSION
ERROR_QUIET
# Determine the cmake host system version so we know where to find the iOS SDKs
OUTPUT_STRIP_TRAILING_WHITESPACE
)
find_program
(
CMAKE_UNAME uname /bin /usr/bin /usr/local/bin
)
string
(
REGEX MATCH
"Xcode [0-9
\\
.]+"
XCODE_VERSION
"
${
XCODE_VERSION
}
"
)
if
(
CMAKE_UNAME
)
string
(
REGEX REPLACE
"Xcode ([0-9
\\
.]+)"
"
\\
1"
XCODE_VERSION
"
${
XCODE_VERSION
}
"
)
exec_program
(
uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION
)
message
(
STATUS
"Building with Xcode version:
${
XCODE_VERSION
}
"
)
string
(
REGEX REPLACE
"^([0-9]+)
\\
.([0-9]+).*$"
"
\\
1"
DARWIN_MAJOR_VERSION
"
${
CMAKE_HOST_SYSTEM_VERSION
}
"
)
# Default to building for iPhoneOS if not specified otherwise, and we cannot
endif
(
CMAKE_UNAME
)
# determine the platform from the CMAKE_OSX_ARCHITECTURES variable. The use
# of CMAKE_OSX_ARCHITECTURES is such that try_compile() projects can correctly
# Force the compilers to gcc for iOS
# determine the value of IOS_PLATFORM from the root project, as
#include (CMakeForceCompiler)
# CMAKE_OSX_ARCHITECTURES is propagated to them by CMake.
#CMAKE_C_COMPILER (/usr/bin/gcc)
if
(
NOT DEFINED IOS_PLATFORM
)
#CMAKE_CXX_COMPILER (/usr/bin/g++)
if
(
CMAKE_OSX_ARCHITECTURES
)
set
(
CMAKE_C_COMPILER /usr/bin/gcc
)
if
(
CMAKE_OSX_ARCHITECTURES MATCHES
".*arm.*"
)
set
(
CMAKE_CXX_COMPILER /usr/bin/g++
)
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"
)
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
"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
()
else
()
message
(
FATAL_ERROR
"Invalid IOS_PLATFORM:
${
IOS_PLATFORM
}
"
)
endif
()
message
(
STATUS
"Configuring iOS build for platform:
${
IOS_PLATFORM
}
, "
"architecture(s):
${
IOS_ARCH
}
"
)
# 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
(
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
"8.0"
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
)
# Unless specified, enable bitcode support by default
set
(
ENABLE_BITCODE TRUE CACHE BOOL
"Wheter or not to enable bitcode"
)
message
(
STATUS
"Enabling bitcode support by default. ENABLE_BITCODE not provided!"
)
endif
()
# Use ARC or not
if
(
NOT DEFINED ENABLE_ARC
)
# Unless specified, enable ARC support by default
set
(
ENABLE_ARC TRUE CACHE BOOL
"Wheter or not to enable ARC"
)
message
(
STATUS
"Enabling ARC support by default. ENABLE_ARC 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
()
# 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 <TARGET> <LINK_FLAGS> <OBJECTS> "
)
set
(
CMAKE_CXX_CREATE_STATIC_LIBRARY
"
${
IOS_LIBTOOL
}
-static -o <TARGET> <LINK_FLAGS> <OBJECTS> "
)
# 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_AR ar CACHE FILEPATH
""
FORCE
)
set
(
CMAKE_RANLIB ranlib CACHE FILEPATH
""
FORCE
)
# Force unset of OS X-specific deployment target (otherwise autopopulated),
# Skip the platform compiler checks for cross compiling
# required as of cmake 2.8.10.
set
(
CMAKE_CXX_COMPILER_WORKS TRUE
)
set
(
CMAKE_OSX_DEPLOYMENT_TARGET
""
CACHE STRING
set
(
CMAKE_C_COMPILER_WORKS TRUE
)
"Must be empty for iOS builds."
FORCE
)
# Set the architectures for which to build.
# All iOS/Darwin specific settings - some may be redundant
set
(
CMAKE_OSX_ARCHITECTURES
${
IOS_ARCH
}
CACHE STRING
"Build architecture for iOS"
)
set
(
CMAKE_SHARED_LIBRARY_PREFIX
"lib"
)
# Skip the platform compiler checks for cross compiling.
set
(
CMAKE_SHARED_LIBRARY_SUFFIX
".dylib"
)
set
(
CMAKE_CXX_COMPILER_FORCED TRUE
)
set
(
CMAKE_SHARED_MODULE_PREFIX
"lib"
)
set
(
CMAKE_CXX_COMPILER_WORKS TRUE
)
set
(
CMAKE_SHARED_MODULE_SUFFIX
".so"
)
set
(
CMAKE_C_COMPILER_FORCED TRUE
)
set
(
CMAKE_MODULE_EXISTS 1
)
set
(
CMAKE_C_COMPILER_WORKS TRUE
)
set
(
CMAKE_DL_LIBS
""
)
# All iOS/Darwin specific settings - some may be redundant.
set
(
CMAKE_SHARED_LIBRARY_PREFIX
"lib"
)
set
(
CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG
"-compatibility_version "
)
set
(
CMAKE_SHARED_LIBRARY_SUFFIX
".dylib"
)
set
(
CMAKE_C_OSX_CURRENT_VERSION_FLAG
"-current_version "
)
set
(
CMAKE_SHARED_MODULE_PREFIX
"lib"
)
set
(
CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG
"
${
CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG
}
"
)
set
(
CMAKE_SHARED_MODULE_SUFFIX
".so"
)
set
(
CMAKE_CXX_OSX_CURRENT_VERSION_FLAG
"
${
CMAKE_C_OSX_CURRENT_VERSION_FLAG
}
"
)
set
(
CMAKE_MODULE_EXISTS 1
)
set
(
CMAKE_DL_LIBS
""
)
# Hidden visibilty is required for cxx on iOS
set
(
CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG
"-compatibility_version "
)
set
(
CMAKE_C_FLAGS_INIT
""
)
set
(
CMAKE_C_OSX_CURRENT_VERSION_FLAG
"-current_version "
)
set
(
CMAKE_CXX_FLAGS_INIT
"-fvisibility=hidden -fvisibility-inlines-hidden"
)
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
}
"
)
set
(
CMAKE_C_LINK_FLAGS
"-Wl,-search_paths_first
${
CMAKE_C_LINK_FLAGS
}
"
)
message
(
STATUS
"Building for minimum iOS version:
${
IOS_DEPLOYMENT_TARGET
}
"
set
(
CMAKE_CXX_LINK_FLAGS
"-Wl,-search_paths_first
${
CMAKE_CXX_LINK_FLAGS
}
"
)
" (SDK version:
${
IOS_SDK_VERSION
}
)"
)
# Note that only Xcode 7+ supports the newer more specific:
set
(
CMAKE_PLATFORM_HAS_INSTALLNAME 1
)
# -m${XCODE_IOS_PLATFORM}-version-min flags, older versions of Xcode use:
set
(
CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS
"-dynamiclib -headerpad_max_install_names"
)
# -m(ios/ios-simulator)-version-min instead.
set
(
CMAKE_SHARED_MODULE_CREATE_C_FLAGS
"-bundle -headerpad_max_install_names"
)
if
(
IOS_PLATFORM STREQUAL
"OS"
)
set
(
CMAKE_SHARED_MODULE_LOADER_C_FLAG
"-Wl,-bundle_loader,"
)
if
(
XCODE_VERSION VERSION_LESS 7.0
)
set
(
CMAKE_SHARED_MODULE_LOADER_CXX_FLAG
"-Wl,-bundle_loader,"
)
set
(
XCODE_IOS_PLATFORM_VERSION_FLAGS
set
(
CMAKE_FIND_LIBRARY_SUFFIXES
".dylib"
".so"
".a"
)
"-mios-version-min=
${
IOS_DEPLOYMENT_TARGET
}
"
)
else
()
# hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old build tree
# Xcode 7.0+ uses flags we can build directly from XCODE_IOS_PLATFORM.
# (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache
set
(
XCODE_IOS_PLATFORM_VERSION_FLAGS
# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
"-m
${
XCODE_IOS_PLATFORM
}
-version-min=
${
IOS_DEPLOYMENT_TARGET
}
"
)
# hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex
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
}
"
)
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"
)
message
(
STATUS
"Enabling bitcode support."
)
else
()
set
(
BITCODE
""
)
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
()
set
(
CMAKE_C_FLAGS
"
${
XCODE_IOS_PLATFORM_VERSION_FLAGS
}
${
BITCODE
}
-fobjc-abi-version=2
${
FOBJC_ARC
}
${
C_FLAGS
}
"
)
# Hidden visibilty is required for C++ on iOS.
set
(
CMAKE_CXX_FLAGS
"
${
XCODE_IOS_PLATFORM_VERSION_FLAGS
}
${
BITCODE
}
-fvisibility=hidden -fvisibility-inlines-hidden -fobjc-abi-version=2
${
FOBJC_ARC
}
${
CXX_FLAGS
}
"
)
set
(
CMAKE_CXX_FLAGS_MINSIZEREL
"
${
CMAKE_CXX_FLAGS
}
-DNDEBUG -Os -fomit-frame-pointer -ffast-math
${
BITCODE
}
${
CXX_FLAGS_MINSIZEREL
}
"
)
set
(
CMAKE_CXX_FLAGS_RELWITHDEBINFO
"
${
CMAKE_CXX_FLAGS
}
-DNDEBUG -O2 -g -fomit-frame-pointer -ffast-math
${
BITCODE
}
${
CXX_FLAGS_RELWITHDEBINFO
}
"
)
set
(
CMAKE_CXX_FLAGS_RELEASE
"
${
CMAKE_CXX_FLAGS
}
-DNDEBUG -O3 -fomit-frame-pointer -ffast-math
${
BITCODE
}
${
CXX_FLAGS_RELEASE
}
"
)
set
(
CMAKE_C_LINK_FLAGS
"
${
XCODE_IOS_PLATFORM_VERSION_FLAGS
}
-Wl,-search_paths_first
${
C_LINK_FLAGS
}
"
)
set
(
CMAKE_CXX_LINK_FLAGS
"
${
XCODE_IOS_PLATFORM_VERSION_FLAGS
}
-Wl,-search_paths_first
${
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_LIBRARY_CREATE_C_FLAGS
"-dynamiclib -headerpad_max_install_names"
)
set
(
CMAKE_SHARED_MODULE_CREATE_C_FLAGS
"-bundle -headerpad_max_install_names"
)
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
)
if
(
NOT DEFINED CMAKE_INSTALL_NAME_TOOL
)
find_program
(
CMAKE_INSTALL_NAME_TOOL install_name_tool
)
find_program
(
CMAKE_INSTALL_NAME_TOOL install_name_tool
)
endif
(
NOT DEFINED CMAKE_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
}
# Setup iOS platform unless specified manually with IOS_PLATFORM
${
CMAKE_PREFIX_PATH
}
CACHE string
"iOS find search path root"
FORCE
)
if
(
NOT DEFINED IOS_PLATFORM
)
# Default to searching for frameworks first.
set
(
IOS_PLATFORM
"OS"
)
set
(
CMAKE_FIND_FRAMEWORK FIRST
)
endif
(
NOT DEFINED IOS_PLATFORM
)
# Set up the default search directories for frameworks.
set
(
IOS_PLATFORM
${
IOS_PLATFORM
}
CACHE STRING
"Type of iOS Platform"
)
set
(
CMAKE_SYSTEM_FRAMEWORK_PATH
${
CMAKE_OSX_SYSROOT
}
/System/Library/Frameworks
# Setup building for arm64 or not
${
CMAKE_OSX_SYSROOT
}
/System/Library/PrivateFrameworks
if
(
NOT DEFINED BUILD_ARM64
)
${
CMAKE_OSX_SYSROOT
}
/Developer/Library/Frameworks
)
set
(
BUILD_ARM64 true
)
# Only search the specified iOS SDK, not the remainder of the host filesystem.
endif
(
NOT DEFINED BUILD_ARM64
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY
)
set
(
BUILD_ARM64
${
BUILD_ARM64
}
CACHE STRING
"Build arm64 arch or not"
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY
)
# Check the platform selection and setup for developer root
# This little macro lets you set any XCode specific property.
if
(
${
IOS_PLATFORM
}
STREQUAL
"OS"
)
macro
(
set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION
)
set
(
IOS_PLATFORM_LOCATION
"iPhoneOS.platform"
)
set
(
XCODE_RELVERSION_I
"
${
XCODE_RELVERSION
}
"
)
if
(
XCODE_RELVERSION_I STREQUAL
"All"
)
# This causes the installers to properly locate the output libraries
set_property
(
TARGET
${
TARGET
}
PROPERTY
set
(
CMAKE_XCODE_EFFECTIVE_PLATFORMS
"-iphoneos"
)
XCODE_ATTRIBUTE_
${
XCODE_PROPERTY
}
"
${
XCODE_VALUE
}
"
)
elseif
(
${
IOS_PLATFORM
}
STREQUAL
"SIMULATOR"
)
else
()
set
(
SIMULATOR true
)
set_property
(
TARGET
${
TARGET
}
PROPERTY
set
(
IOS_PLATFORM_LOCATION
"iPhoneSimulator.platform"
)
XCODE_ATTRIBUTE_
${
XCODE_PROPERTY
}
[variant=
${
XCODE_RELVERSION_I
}
]
"
${
XCODE_VALUE
}
"
)
endif
()
# This causes the installers to properly locate the output libraries
endmacro
(
set_xcode_property
)
set
(
CMAKE_XCODE_EFFECTIVE_PLATFORMS
"-iphonesimulator"
)
# This macro lets you find executable programs on the host system.
elseif
(
${
IOS_PLATFORM
}
STREQUAL
"SIMULATOR64"
)
macro
(
find_host_package
)
set
(
SIMULATOR true
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER
)
set
(
IOS_PLATFORM_LOCATION
"iPhoneSimulator.platform"
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER
)
# This causes the installers to properly locate the output libraries
set
(
IOS FALSE
)
set
(
CMAKE_XCODE_EFFECTIVE_PLATFORMS
"-iphonesimulator"
)
else
(
${
IOS_PLATFORM
}
STREQUAL
"OS"
)
message
(
FATAL_ERROR
"Unsupported IOS_PLATFORM value selected. Please choose OS or SIMULATOR"
)
endif
(
${
IOS_PLATFORM
}
STREQUAL
"OS"
)
# Setup iOS developer location unless specified manually with CMAKE_IOS_DEVELOPER_ROOT
# Note Xcode 4.3 changed the installation location, choose the most recent one available
exec_program
(
/usr/bin/xcode-select ARGS -print-path OUTPUT_VARIABLE CMAKE_XCODE_DEVELOPER_DIR
)
set
(
XCODE_POST_43_ROOT
"
${
CMAKE_XCODE_DEVELOPER_DIR
}
/Platforms/
${
IOS_PLATFORM_LOCATION
}
/Developer"
)
set
(
XCODE_PRE_43_ROOT
"/Developer/Platforms/
${
IOS_PLATFORM_LOCATION
}
/Developer"
)
if
(
NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT
)
if
(
EXISTS
${
XCODE_POST_43_ROOT
}
)
set
(
CMAKE_IOS_DEVELOPER_ROOT
${
XCODE_POST_43_ROOT
}
)
elseif
(
EXISTS
${
XCODE_PRE_43_ROOT
}
)
set
(
CMAKE_IOS_DEVELOPER_ROOT
${
XCODE_PRE_43_ROOT
}
)
endif
(
EXISTS
${
XCODE_POST_43_ROOT
}
)
endif
(
NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT
)
set
(
CMAKE_IOS_DEVELOPER_ROOT
${
CMAKE_IOS_DEVELOPER_ROOT
}
CACHE PATH
"Location of iOS Platform"
)
# Find and use the most recent iOS sdk unless specified manually with CMAKE_IOS_SDK_ROOT
if
(
NOT DEFINED CMAKE_IOS_SDK_ROOT
)
file
(
GLOB _CMAKE_IOS_SDKS
"
${
CMAKE_IOS_DEVELOPER_ROOT
}
/SDKs/*"
)
if
(
_CMAKE_IOS_SDKS
)
list
(
SORT _CMAKE_IOS_SDKS
)
list
(
REVERSE _CMAKE_IOS_SDKS
)
list
(
GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT
)
else
(
_CMAKE_IOS_SDKS
)
message
(
FATAL_ERROR
"No iOS SDK's found in default search path
${
CMAKE_IOS_DEVELOPER_ROOT
}
. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK."
)
endif
(
_CMAKE_IOS_SDKS
)
message
(
STATUS
"Toolchain using default iOS SDK:
${
CMAKE_IOS_SDK_ROOT
}
"
)
endif
(
NOT DEFINED CMAKE_IOS_SDK_ROOT
)
set
(
CMAKE_IOS_SDK_ROOT
${
CMAKE_IOS_SDK_ROOT
}
CACHE PATH
"Location of the selected iOS SDK"
)
# Set the sysroot default to the most recent SDK
set
(
CMAKE_OSX_SYSROOT
${
CMAKE_IOS_SDK_ROOT
}
CACHE PATH
"Sysroot used for iOS support"
)
# set the architecture for iOS
if
(
${
IOS_PLATFORM
}
STREQUAL
"OS"
)
set
(
IOS_ARCH armv7 armv7s arm64
)
elseif
(
${
IOS_PLATFORM
}
STREQUAL
"SIMULATOR"
)
set
(
IOS_ARCH i386
)
elseif
(
${
IOS_PLATFORM
}
STREQUAL
"SIMULATOR64"
)
set
(
IOS_ARCH x86_64
)
endif
(
${
IOS_PLATFORM
}
STREQUAL
"OS"
)
set
(
CMAKE_OSX_ARCHITECTURES
${
IOS_ARCH
}
CACHE string
"Build architecture for iOS"
)
# Set the find root to the iOS developer roots and to user defined paths
set
(
CMAKE_FIND_ROOT_PATH
${
CMAKE_IOS_DEVELOPER_ROOT
}
${
CMAKE_IOS_SDK_ROOT
}
${
CMAKE_PREFIX_PATH
}
CACHE string
"iOS find search path root"
)
# 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_IOS_SDK_ROOT
}
/System/Library/Frameworks
${
CMAKE_IOS_SDK_ROOT
}
/System/Library/PrivateFrameworks
${
CMAKE_IOS_SDK_ROOT
}
/Developer/Library/Frameworks
)
# only search the iOS sdks, 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
)
set_property
(
TARGET
${
TARGET
}
PROPERTY XCODE_ATTRIBUTE_
${
XCODE_PROPERTY
}
${
XCODE_VALUE
}
)
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
}
)
find_package
(
${
ARGN
}
)
set
(
IOS TRUE
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY
)
set
(
IOS TRUE
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY
)
endmacro
(
find_host_package
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY
)
endmacro
(
find_host_package
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录