1LOCAL_PATH := $(call my-dir)
2include $(CLEAR_VARS)
3
4LOCAL_MODULE := libceres
5
6LOCAL_SDK_VERSION := 17
7LOCAL_NDK_STL_VARIANT := stlport_static
8
9LOCAL_C_INCLUDES := $(LOCAL_PATH)/internal \
10                    $(LOCAL_PATH)/internal/ceres \
11                    $(LOCAL_PATH)/include \
12                    $(LOCAL_PATH)/internal/ceres/miniglog \
13                    external/eigen
14
15LOCAL_CPP_EXTENSION := .cc
16LOCAL_CPPFLAGS := -DCERES_NO_PROTOCOL_BUFFERS \
17                  -DCERES_NO_SUITESPARSE \
18                  -DCERES_NO_GFLAGS \
19                  -DCERES_NO_THREADS \
20                  -DCERES_NO_CXSPARSE \
21                  -DCERES_NO_TR1 \
22                  -DCERES_WORK_AROUND_ANDROID_NDK_COMPILER_BUG \
23                  -O3 -w
24
25# On Android NDK 8b, GCC gives spurrious warnings about ABI incompatibility for
26# which there is no solution. Hide the warning instead.
27LOCAL_CPPFLAGS += -Wno-psabi
28
29LOCAL_SRC_FILES := internal/ceres/array_utils.cc \
30                   internal/ceres/block_evaluate_preparer.cc \
31                   internal/ceres/block_jacobian_writer.cc \
32                   internal/ceres/block_jacobi_preconditioner.cc \
33                   internal/ceres/block_random_access_dense_matrix.cc \
34                   internal/ceres/block_random_access_matrix.cc \
35                   internal/ceres/block_random_access_sparse_matrix.cc \
36                   internal/ceres/block_sparse_matrix.cc \
37                   internal/ceres/block_structure.cc \
38                   internal/ceres/canonical_views_clustering.cc \
39                   internal/ceres/cgnr_solver.cc \
40                   internal/ceres/compressed_row_jacobian_writer.cc \
41                   internal/ceres/compressed_row_sparse_matrix.cc \
42                   internal/ceres/conditioned_cost_function.cc \
43                   internal/ceres/conjugate_gradients_solver.cc \
44                   internal/ceres/coordinate_descent_minimizer.cc \
45                   internal/ceres/corrector.cc \
46                   internal/ceres/dense_normal_cholesky_solver.cc \
47                   internal/ceres/dense_qr_solver.cc \
48                   internal/ceres/dense_sparse_matrix.cc \
49                   internal/ceres/detect_structure.cc \
50                   internal/ceres/dogleg_strategy.cc \
51                   internal/ceres/evaluator.cc \
52                   internal/ceres/file.cc \
53                   internal/ceres/gradient_checking_cost_function.cc \
54                   internal/ceres/implicit_schur_complement.cc \
55                   internal/ceres/iterative_schur_complement_solver.cc \
56                   internal/ceres/levenberg_marquardt_strategy.cc \
57                   internal/ceres/linear_least_squares_problems.cc \
58                   internal/ceres/linear_operator.cc \
59                   internal/ceres/linear_solver.cc \
60                   internal/ceres/local_parameterization.cc \
61                   internal/ceres/loss_function.cc \
62                   internal/ceres/miniglog/glog/logging.cc \
63                   internal/ceres/normal_prior.cc \
64                   internal/ceres/parameter_block_ordering.cc \
65                   internal/ceres/partitioned_matrix_view.cc \
66                   internal/ceres/polynomial_solver.cc \
67                   internal/ceres/problem.cc \
68                   internal/ceres/problem_impl.cc \
69                   internal/ceres/program.cc \
70                   internal/ceres/residual_block.cc \
71                   internal/ceres/residual_block_utils.cc \
72                   internal/ceres/runtime_numeric_diff_cost_function.cc \
73                   internal/ceres/schur_complement_solver.cc \
74                   internal/ceres/schur_eliminator.cc \
75                   internal/ceres/scratch_evaluate_preparer.cc \
76                   internal/ceres/solver.cc \
77                   internal/ceres/solver_impl.cc \
78                   internal/ceres/sparse_matrix.cc \
79                   internal/ceres/sparse_normal_cholesky_solver.cc \
80                   internal/ceres/split.cc \
81                   internal/ceres/stringprintf.cc \
82                   internal/ceres/suitesparse.cc \
83                   internal/ceres/triplet_sparse_matrix.cc \
84                   internal/ceres/trust_region_minimizer.cc \
85                   internal/ceres/trust_region_strategy.cc \
86                   internal/ceres/types.cc \
87                   internal/ceres/visibility_based_preconditioner.cc \
88                   internal/ceres/visibility.cc \
89                   internal/ceres/wall_time.cc \
90                   internal/ceres/generated/schur_eliminator_d_d_d.cc \
91                   internal/ceres/generated/schur_eliminator_2_2_2.cc \
92                   internal/ceres/generated/schur_eliminator_2_2_3.cc \
93                   internal/ceres/generated/schur_eliminator_2_2_4.cc \
94                   internal/ceres/generated/schur_eliminator_2_2_d.cc \
95                   internal/ceres/generated/schur_eliminator_2_3_3.cc \
96                   internal/ceres/generated/schur_eliminator_2_3_4.cc \
97                   internal/ceres/generated/schur_eliminator_2_3_9.cc \
98                   internal/ceres/generated/schur_eliminator_2_3_d.cc \
99                   internal/ceres/generated/schur_eliminator_2_4_3.cc \
100                   internal/ceres/generated/schur_eliminator_2_4_4.cc \
101                   internal/ceres/generated/schur_eliminator_2_4_d.cc \
102                   internal/ceres/generated/schur_eliminator_4_4_2.cc \
103                   internal/ceres/generated/schur_eliminator_4_4_3.cc \
104                   internal/ceres/generated/schur_eliminator_4_4_4.cc \
105                   internal/ceres/generated/schur_eliminator_4_4_d.cc
106
107include $(BUILD_STATIC_LIBRARY)
108