Make Android.mk play better with the external consraints
Change-Id: Ia0a1037d97c032a4ba1a9acbf4e04c192d12ee61
diff --git a/jni/Android.mk b/jni/Android.mk
index 345b3d6..a2caf7c 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -69,15 +69,28 @@
# Similarly if you do not need the line search minimizer, consider adding
#
# -DCERES_NO_LINE_SEARCH_MINIMIZER
+#
+# Changing the logging library:
+#
+# Ceres Solver ships with a replacement for glog that provides a
+# simple and small implementation that builds on Android. However, if
+# you wish to supply a header only version yourself, then you may
+# define CERES_GLOG_DIR to point to it.
LOCAL_PATH := $(call my-dir)
EIGEN_PATH := $(EIGEN_PATH)
-
-CERES_INCLUDE_PATHS := $(LOCAL_PATH)/../internal
+CERES_INCLUDE_PATHS := $(CERES_EXTRA_INCLUDES)
+CERES_INCLUDE_PATHS += $(LOCAL_PATH)/../internal
CERES_INCLUDE_PATHS += $(LOCAL_PATH)/../internal/ceres
CERES_INCLUDE_PATHS += $(LOCAL_PATH)/../include
-CERES_INCLUDE_PATHS += $(LOCAL_PATH)/../internal/ceres/miniglog
+
+# Use the alternate glog implementation if provided by the user.
+ifdef CERES_GLOG_DIR
+ CERES_INCLUDE_PATHS += $(CERES_GLOG_DIR)
+else
+ CERES_INCLUDE_PATHS += $(LOCAL_PATH)/../internal/ceres/miniglog
+endif
CERES_SRC_PATH := ../internal/ceres
include $(CLEAR_VARS)
@@ -135,7 +148,6 @@
$(CERES_SRC_PATH)/local_parameterization.cc \
$(CERES_SRC_PATH)/loss_function.cc \
$(CERES_SRC_PATH)/low_rank_inverse_hessian.cc \
- $(CERES_SRC_PATH)/miniglog/glog/logging.cc \
$(CERES_SRC_PATH)/minimizer.cc \
$(CERES_SRC_PATH)/normal_prior.cc \
$(CERES_SRC_PATH)/parameter_block_ordering.cc \
@@ -183,6 +195,10 @@
$(CERES_SRC_PATH)/generated/schur_eliminator_4_4_4.cc \
$(CERES_SRC_PATH)/generated/schur_eliminator_4_4_d.cc
+ifndef CERES_GLOG_DIR
+LOCAL_SRC_FILES += $(CERES_SRC_PATH)/miniglog/glog/logging.cc
+endif
+
LOCAL_MODULE := ceres
include $(BUILD_STATIC_LIBRARY)