Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98f7742a authored by Dan Albert's avatar Dan Albert Committed by Gerrit Code Review
Browse files

Merge "Move selection of C++ STL into the build system."

parents ef3148c1 b05f2ca1
Loading
Loading
Loading
Loading
+61 −5
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ my_shared_libraries := $(LOCAL_SHARED_LIBRARIES)
my_cflags := $(LOCAL_CFLAGS)
my_cppflags := $(LOCAL_CPPFLAGS)
my_ldflags := $(LOCAL_LDFLAGS)
my_ldlibs := $(LOCAL_LDLIBS)
my_asflags := $(LOCAL_ASFLAGS)
my_cc := $(LOCAL_CC)
my_cxx := $(LOCAL_CXX)
@@ -164,11 +165,66 @@ my_whole_static_libraries := $(LOCAL_WHOLE_STATIC_LIBRARIES_$($(my_prefix)$(LOCA

my_cflags := $(filter-out $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)GLOBAL_UNSUPPORTED_CFLAGS),$(my_cflags))

# Only around for development purposes. Will be removed soon.
my_libcxx_is_default := false

# Replace libstdc++ with libc++ if it's seen
my_libcxx := $(filter libc++, $(my_shared_libraries))
ifdef my_libcxx
my_system_shared_libraries := $(filter-out libstdc++, $(my_system_shared_libraries))
# 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

# Add static HAL libraries
@@ -947,7 +1003,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEBUG_CFLAGS := $(debug_cflags)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_C_INCLUDES := $(my_c_includes)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_IMPORT_INCLUDES := $(import_includes)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDFLAGS := $(my_ldflags)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDLIBS := $(LOCAL_LDLIBS)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDLIBS := $(my_ldlibs)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_NO_CRT := $(strip $(LOCAL_NO_CRT) $(LOCAL_NO_CRT_$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)))
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LIBCXX := $(my_libcxx)

+1 −0
Original line number Diff line number Diff line
@@ -157,6 +157,7 @@ LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH:=
LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH_WARN:=
LOCAL_MODULE_HOST_ARCH:=
LOCAL_NO_FPIE :=
LOCAL_CXX_STL := default

# arch specific variables
LOCAL_SRC_FILES_$(TARGET_ARCH):=
+1 −3
Original line number Diff line number Diff line
@@ -153,7 +153,6 @@ $(combo_2nd_arch_prefix)TARGET_RELEASE_CFLAGS := \

libc_root := bionic/libc
libm_root := bionic/libm
libstdc++_root := bionic/libstdc++


## on some hosts, the target cross-compiler is not available so do not run this command
@@ -176,7 +175,6 @@ KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
$(combo_2nd_arch_prefix)TARGET_C_INCLUDES := \
	$(libc_root)/arch-arm/include \
	$(libc_root)/include \
	$(libstdc++_root)/include \
	$(KERNEL_HEADERS) \
	$(libm_root)/include \
	$(libm_root)/include/arm \
@@ -190,7 +188,7 @@ $(combo_2nd_arch_prefix)TARGET_CRTEND_SO_O := $($(combo_2nd_arch_prefix)TARGET_O

$(combo_2nd_arch_prefix)TARGET_STRIP_MODULE:=true

$(combo_2nd_arch_prefix)TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm
$(combo_2nd_arch_prefix)TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libm

$(combo_2nd_arch_prefix)TARGET_CUSTOM_LD_COMMAND := true

+1 −3
Original line number Diff line number Diff line
@@ -126,7 +126,6 @@ TARGET_RELEASE_CFLAGS := \

libc_root := bionic/libc
libm_root := bionic/libm
libstdc++_root := bionic/libstdc++

TARGET_LIBGCC := $(shell $(TARGET_CC) $(TARGET_GLOBAL_CFLAGS) \
	-print-libgcc-file-name)
@@ -140,7 +139,6 @@ KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
TARGET_C_INCLUDES := \
	$(libc_root)/arch-arm64/include \
	$(libc_root)/include \
	$(libstdc++_root)/include \
	$(KERNEL_HEADERS) \
	$(libm_root)/include \
	$(libm_root)/include/arm64 \
@@ -154,7 +152,7 @@ TARGET_CRTEND_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o

TARGET_STRIP_MODULE:=true

TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm
TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libm

TARGET_CUSTOM_LD_COMMAND := true

+1 −3
Original line number Diff line number Diff line
@@ -121,7 +121,6 @@ $(combo_2nd_arch_prefix)TARGET_RELEASE_CFLAGS := \

libc_root := bionic/libc
libm_root := bionic/libm
libstdc++_root := bionic/libstdc++


## on some hosts, the target cross-compiler is not available so do not run this command
@@ -148,7 +147,6 @@ KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
$(combo_2nd_arch_prefix)TARGET_C_INCLUDES := \
	$(libc_root)/arch-mips/include \
	$(libc_root)/include \
	$(libstdc++_root)/include \
	$(KERNEL_HEADERS) \
	$(libm_root)/include \
	$(libm_root)/include/mips \
@@ -162,7 +160,7 @@ $(combo_2nd_arch_prefix)TARGET_CRTEND_SO_O := $($(combo_2nd_arch_prefix)TARGET_O

$(combo_2nd_arch_prefix)TARGET_STRIP_MODULE:=true

$(combo_2nd_arch_prefix)TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm
$(combo_2nd_arch_prefix)TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libm

$(combo_2nd_arch_prefix)TARGET_CUSTOM_LD_COMMAND := true

Loading