summaryrefslogtreecommitdiffstats
path: root/core/cxx_stl_setup.mk
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2014-10-07 13:03:29 -0700
committerYing Wang <wangying@google.com>2014-10-07 13:07:00 -0700
commit75e8fcbb6cc68a7c55a33d7545aa60cccda76ccd (patch)
treee64ddee4686b766b09b851e5ef4efef3fe9960bd /core/cxx_stl_setup.mk
parent9bf56c5e911856bc55693f5723a53271147e583e (diff)
downloadbuild-75e8fcbb6cc68a7c55a33d7545aa60cccda76ccd.zip
build-75e8fcbb6cc68a7c55a33d7545aa60cccda76ccd.tar.gz
build-75e8fcbb6cc68a7c55a33d7545aa60cccda76ccd.tar.bz2
Apply LOCAL_CXX_STL to also prebuilts.
Because LOCAL_CXX_STL modifies a module's required shared libaries, we need this for also prebuilt shared libraries and executables. Change-Id: I418c26143999a613c40aadf990f131b123e0ac3d
Diffstat (limited to 'core/cxx_stl_setup.mk')
-rw-r--r--core/cxx_stl_setup.mk67
1 files changed, 67 insertions, 0 deletions
diff --git a/core/cxx_stl_setup.mk b/core/cxx_stl_setup.mk
new file mode 100644
index 0000000..5abdf70
--- /dev/null
+++ b/core/cxx_stl_setup.mk
@@ -0,0 +1,67 @@
+#############################################################
+## Set up flags based on LOCAL_CXX_STL.
+## Input variables: LOCAL_CXX_STL
+## Output variables: My_cflags, my_c_includes, my_shared_libraries, etc.
+#############################################################
+
+# Only around for development purposes. Will be removed soon.
+my_libcxx_is_default := false
+
+# Select the appropriate C++ STL
+ifeq ($(strip $(LOCAL_CXX_STL)),default)
+ ifndef LOCAL_SDK_VERSION
+ ifeq ($(strip $(my_libcxx_is_default)),true)
+ # Platform code. Select the appropriate STL.
+ my_cxx_stl := libc++
+ else
+ my_cxx_stl := bionic
+ endif
+ else
+ my_cxx_stl := ndk
+ endif
+else
+ my_cxx_stl := $(strip $(LOCAL_CXX_STL))
+endif
+
+ifneq ($(filter $(my_cxx_stl),libc++ libc++_static),)
+ my_cflags += -D_USING_LIBCXX
+ my_c_includes += external/libcxx/include
+ ifeq ($(my_cxx_stl),libc++)
+ my_shared_libraries += libc++
+ else
+ my_static_libraries += libc++_static
+ endif
+
+ ifdef LOCAL_IS_HOST_MODULE
+ my_cppflags += -nostdinc++
+ my_ldflags += -nodefaultlibs
+ my_ldlibs += -lc -lm
+ endif
+else ifneq ($(filter $(my_cxx_stl),stlport stlport_static),)
+ my_c_includes += external/stlport/stlport bionic/libstdc++/include bionic
+ ifeq ($(my_cxx_stl),stlport)
+ my_shared_libraries += libstdc++ libstlport
+ else
+ my_static_libraries += libstdc++ libstlport_static
+ endif
+else ifeq ($(my_cxx_stl),ndk)
+ # Using an NDK STL. Handled farther up in this file.
+ ifndef LOCAL_IS_HOST_MODULE
+ my_system_shared_libraries += libstdc++
+ endif
+else ifeq ($(my_cxx_stl),bionic)
+ # Using bionic's basic libstdc++. Not actually an STL. Only around until the
+ # tree is in good enough shape to not need it.
+ ifndef LOCAL_IS_HOST_MODULE
+ my_c_includes += bionic/libstdc++/include
+ my_system_shared_libraries += libstdc++
+ endif
+ # Host builds will use GNU libstdc++.
+else ifeq ($(my_cxx_stl),none)
+ ifdef LOCAL_IS_HOST_MODULE
+ my_cppflags += -nostdinc++
+ my_ldflags += -nodefaultlibs -lc -lm
+ endif
+else
+ $(error $(my_cxx_stl) is not a supported STL.)
+endif