summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2015-10-09 14:33:21 -0400
committerMike Frysinger <vapier@google.com>2015-10-09 14:33:21 -0400
commit9f2b516f9e08a5d68ee61863dd9b795b443e1f81 (patch)
tree10880f023c9dcccff568a87d861c325b6817c4aa
parentba029f6bf802b0988cd58819be36a9e44e2bedb5 (diff)
downloadintegration-9f2b516f9e08a5d68ee61863dd9b795b443e1f81.tar.gz
toolchain: add a C++ wrapper
We need some extra flags when building C++, so create a new wrapper for it. BUG=24803386 TEST=emerge glog/gflags works Change-Id: I795e1bfd28c78150a2950b0c6b6e4d2b225406fd
-rw-r--r--3rd-party-binary.mk2
-rw-r--r--Android.mk1
-rw-r--r--portage/Android.mk2
-rw-r--r--tests/Android.mk8
-rw-r--r--tests/test-cxx.cc9
-rw-r--r--toolchain/3rd-party-g++.in10
-rw-r--r--toolchain/Android.mk25
7 files changed, 55 insertions, 2 deletions
diff --git a/3rd-party-binary.mk b/3rd-party-binary.mk
index 880e4b8..ea34c65 100644
--- a/3rd-party-binary.mk
+++ b/3rd-party-binary.mk
@@ -1,5 +1,5 @@
LOCAL_CC := $(HOST_OUT_EXECUTABLES)/3rd-party-gcc
-LOCAL_CXX := $(LOCAL_CC)
+LOCAL_CXX := $(HOST_OUT_EXECUTABLES)/3rd-party-g++
LOCAL_ADDITIONAL_DEPENDENCIES := 3rd-party-packages
include $(BUILD_EXECUTABLE)
diff --git a/Android.mk b/Android.mk
index 7583546..2121d64 100644
--- a/Android.mk
+++ b/Android.mk
@@ -4,6 +4,7 @@ LOCAL_PATH := $(call my-dir)
ifneq ($(PRODUCT_3RD_PARTY_PACKAGES),)
3RD_PARTY_CC := $(HOST_OUT_EXECUTABLES)/3rd-party-gcc
+3RD_PARTY_CXX := $(HOST_OUT_EXECUTABLES)/3rd-party-g++
3RD_PARTY_PKG_CONFIG := $(HOST_OUT_EXECUTABLES)/3rd-party-pkg-config
TARGET_OUT_GENTOO := $(TARGET_OUT_INTERMEDIATES)/gentoo
diff --git a/portage/Android.mk b/portage/Android.mk
index a24768a..3918ea1 100644
--- a/portage/Android.mk
+++ b/portage/Android.mk
@@ -54,7 +54,7 @@ $(make.conf): $(LOCAL_PATH)/make.conf.in $(make.profile)
$(hide)mkdir -p $(dir $@)
$(hide)sed \
-e 's:@CC@:$(notdir $(3RD_PARTY_CC)):g' \
- -e 's:@CXX@:$(notdir $(TARGET_CXX)):g' \
+ -e 's:@CXX@:$(notdir $(3RD_PARTY_CXX)):g' \
-e 's:@AR@:$(notdir $(TARGET_AR)):g' \
-e 's:@RANLIB@:$(notdir $(TARGET_RANLIB)):g' \
-e 's:@LD@:$(notdir $(TARGET_LD)):g' \
diff --git a/tests/Android.mk b/tests/Android.mk
index 648619c..4de6200 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -7,3 +7,11 @@ LOCAL_SRC_FILES := hello.c
LOCAL_LDLIBS := -liniparser
include external/gentoo/integration/3rd-party-binary.mk
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := 3rd-party-test-cxx
+LOCAL_SRC_FILES := test-cxx.cc
+LOCAL_CPP_EXTENSION := .cc
+
+include external/gentoo/integration/3rd-party-binary.mk
diff --git a/tests/test-cxx.cc b/tests/test-cxx.cc
new file mode 100644
index 0000000..9060df4
--- /dev/null
+++ b/tests/test-cxx.cc
@@ -0,0 +1,9 @@
+/* Simple test program for C++ code. */
+
+#include <iostream>
+
+int main(int argc, char *argv[])
+{
+ std::cout << "success!" << std::endl;
+ return 0;
+}
diff --git a/toolchain/3rd-party-g++.in b/toolchain/3rd-party-g++.in
new file mode 100644
index 0000000..a60334f
--- /dev/null
+++ b/toolchain/3rd-party-g++.in
@@ -0,0 +1,10 @@
+#!/bin/sh
+exec \
+ "${ANDROID_TOOLCHAIN}/@CXX@" \
+ @CXXFLAGS@ \
+ @LDFLAGS@ \
+ --sysroot "${ANDROID_PRODUCT_OUT}/@ROOT_SUBDIR@" \
+ -Wl,-rpath,/system/usr/lib \
+ -Wl,-lc++ \
+ -frtti \
+ "$@"
diff --git a/toolchain/Android.mk b/toolchain/Android.mk
index e0c46fb..70d3286 100644
--- a/toolchain/Android.mk
+++ b/toolchain/Android.mk
@@ -26,6 +26,31 @@ LOCAL_GENERATED_SOURCES += $(3RD_PARTY_CC)
include $(CLEAR_VARS)
+LOCAL_MODULE := 3rd-party-g++
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_IS_HOST_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+compiler = $(intermediates)/$(LOCAL_MODULE)
+$(compiler): $(LOCAL_PATH)/$(LOCAL_MODULE).in
+ $(hide)mkdir -p $(dir $@)
+ $(hide)sed \
+ -e 's:@CXX@:$(notdir $(TARGET_CXX)):' \
+ -e 's:@CXXFLAGS@:$(foreach p,$(TARGET_C_INCLUDES) external/libcxx/include external/libcxxabi/include,-isystem "$${ANDROID_BUILD_TOP}/$(p)"):' \
+ -e 's:@CFLAGS@:$(foreach p,$(TARGET_C_INCLUDES),-isystem "$${ANDROID_BUILD_TOP}/$(p)"):' \
+ -e 's:@LDFLAGS@:-B"$(patsubst $(PRODUCT_OUT)/%,$${ANDROID_PRODUCT_OUT}/%,$(TARGET_OUT_INTERMEDIATE_LIBRARIES))":' \
+ -e 's:@ROOT_SUBDIR@:$(3RD_PARTY_ROOT_SUBDIR):g' \
+ $< > $@.tmp \
+ && chmod a+rx $@.tmp && mv $@.tmp $@
+
+LOCAL_BUILT_MODULE = $(compiler)
+LOCAL_GENERATED_SOURCES += $(3RD_PARTY_CXX)
+
+3RD_PARTY_WRAPPERS += $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)
+
+include $(CLEAR_VARS)
+
LOCAL_MODULE := 3rd-party-pkg-config
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_IS_HOST_MODULE := true