12ef012e47441428f752c6a29d2927513669dda30Dan Albert#
22ef012e47441428f752c6a29d2927513669dda30Dan Albert# Copyright (C) 2014 The Android Open Source Project
32ef012e47441428f752c6a29d2927513669dda30Dan Albert#
42ef012e47441428f752c6a29d2927513669dda30Dan Albert# Licensed under the Apache License, Version 2.0 (the "License");
52ef012e47441428f752c6a29d2927513669dda30Dan Albert# you may not use this file except in compliance with the License.
62ef012e47441428f752c6a29d2927513669dda30Dan Albert# You may obtain a copy of the License at
72ef012e47441428f752c6a29d2927513669dda30Dan Albert#
82ef012e47441428f752c6a29d2927513669dda30Dan Albert#      http://www.apache.org/licenses/LICENSE-2.0
92ef012e47441428f752c6a29d2927513669dda30Dan Albert#
102ef012e47441428f752c6a29d2927513669dda30Dan Albert# Unless required by applicable law or agreed to in writing, software
112ef012e47441428f752c6a29d2927513669dda30Dan Albert# distributed under the License is distributed on an "AS IS" BASIS,
122ef012e47441428f752c6a29d2927513669dda30Dan Albert# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132ef012e47441428f752c6a29d2927513669dda30Dan Albert# See the License for the specific language governing permissions and
142ef012e47441428f752c6a29d2927513669dda30Dan Albert# limitations under the License.
152ef012e47441428f752c6a29d2927513669dda30Dan Albert#
162ef012e47441428f752c6a29d2927513669dda30Dan Albert
172ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_PATH := $(call my-dir)
182ef012e47441428f752c6a29d2927513669dda30Dan Albert
192ef012e47441428f752c6a29d2927513669dda30Dan AlbertLIBCXX_SRC_FILES := \
204b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/algorithm.cpp \
214b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/any.cpp \
224b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/bind.cpp \
234b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/chrono.cpp \
244b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/condition_variable.cpp \
254b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/debug.cpp \
264b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/exception.cpp \
274b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/future.cpp \
284b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/hash.cpp \
294b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/ios.cpp \
304b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/iostream.cpp \
314b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/locale.cpp \
324b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/memory.cpp \
334b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/mutex.cpp \
344b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/new.cpp \
354b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/optional.cpp \
364b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/random.cpp \
374b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/regex.cpp \
384b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/shared_mutex.cpp \
394b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/stdexcept.cpp \
404b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/string.cpp \
414b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/strstream.cpp \
424b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/system_error.cpp \
434b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/thread.cpp \
444b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/typeinfo.cpp \
454b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/utility.cpp \
464b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    src/valarray.cpp \
472ef012e47441428f752c6a29d2927513669dda30Dan Albert
486c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLIBCXX_C_INCLUDES := \
494b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    $(LOCAL_PATH)/include/ \
506c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert
512ef012e47441428f752c6a29d2927513669dda30Dan AlbertLIBCXX_CPPFLAGS := \
524b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    -std=c++14 \
534b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    -nostdinc++ \
544b1aaf93e296bcba5da602e1fb3976f9eb2e483dDan Albert    -fexceptions \
552ef012e47441428f752c6a29d2927513669dda30Dan Albert
566c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert# target static lib
572ef012e47441428f752c6a29d2927513669dda30Dan Albertinclude $(CLEAR_VARS)
58b82dd133946a06baa55832c389c0fdfadc0261bcDan AlbertLOCAL_MODULE := libc++_static
592ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_CLANG := true
602ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_SRC_FILES := $(LIBCXX_SRC_FILES)
613bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan AlbertLOCAL_C_INCLUDES := $(LIBCXX_C_INCLUDES)
620ad34dfe3079cca0c054801e0d217b0b493e6d3cDan AlbertLOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include external/libcxxabi/include
633bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan AlbertLOCAL_CPPFLAGS := $(LIBCXX_CPPFLAGS)
64f155054361cf84c0f3e5752d93c2f68675d47dcbDan AlbertLOCAL_RTTI_FLAG := -frtti
658d0c51fdca1a571448c1eca58cbed4a520b2d1e2Dan AlbertLOCAL_WHOLE_STATIC_LIBRARIES := libc++abi
66c4ecec13b6921b9d3b4edec8cc02fd96a9c2e53bDan AlbertLOCAL_CXX_STL := none
676c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertinclude $(BUILD_STATIC_LIBRARY)
686c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert
696c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert# target dynamic lib
706c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertinclude $(CLEAR_VARS)
716c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_MODULE := libc++
726c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_CLANG := true
736029517b25b101084e5c808b195f8e0b59cd8ac2Dan AlbertLOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include external/libcxxabi/include
74b82dd133946a06baa55832c389c0fdfadc0261bcDan AlbertLOCAL_WHOLE_STATIC_LIBRARIES := libc++_static
759569f04315c59c4347295946dc01eb046bfb1c47Dan AlbertLOCAL_SHARED_LIBRARIES := libdl
76c4ecec13b6921b9d3b4edec8cc02fd96a9c2e53bDan AlbertLOCAL_CXX_STL := none
772cfc479c0b2d2872bfc7b1257aa79452ae6331ffDan AlbertLOCAL_STATIC_LIBRARIES_arm := libunwind_llvm
782ea633775bea94317c426da71f3782ce322389fdDan AlbertLOCAL_LDFLAGS_arm := -Wl,--exclude-libs,libunwind_llvm.a
792ef012e47441428f752c6a29d2927513669dda30Dan Albertinclude $(BUILD_SHARED_LIBRARY)
802ef012e47441428f752c6a29d2927513669dda30Dan Albert
816c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert# host static lib
822ef012e47441428f752c6a29d2927513669dda30Dan Albertinclude $(CLEAR_VARS)
83b82dd133946a06baa55832c389c0fdfadc0261bcDan AlbertLOCAL_MODULE := libc++_static
842ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_CLANG := true
852ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_SRC_FILES := $(LIBCXX_SRC_FILES)
866c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_C_INCLUDES := $(LIBCXX_C_INCLUDES)
870ad34dfe3079cca0c054801e0d217b0b493e6d3cDan AlbertLOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include external/libcxxabi/include
882ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_CPPFLAGS := $(LIBCXX_CPPFLAGS)
89f155054361cf84c0f3e5752d93c2f68675d47dcbDan AlbertLOCAL_RTTI_FLAG := -frtti
903bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan AlbertLOCAL_WHOLE_STATIC_LIBRARIES := libc++abi
91ada2964799159589b4bffe1e1ba72c664cff094aIan RogersLOCAL_MULTILIB := both
92c4ecec13b6921b9d3b4edec8cc02fd96a9c2e53bDan AlbertLOCAL_CXX_STL := none
936c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertinclude $(BUILD_HOST_STATIC_LIBRARY)
946c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert
956c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert# host dynamic lib
966c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertinclude $(CLEAR_VARS)
976c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_MODULE := libc++
986c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_CLANG := true
996029517b25b101084e5c808b195f8e0b59cd8ac2Dan AlbertLOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include external/libcxxabi/include
1008a6f7b1d423195c8b0f1e734c7f27d24786cc87fDan AlbertLOCAL_LDFLAGS := -nodefaultlibs
101b82dd133946a06baa55832c389c0fdfadc0261bcDan AlbertLOCAL_WHOLE_STATIC_LIBRARIES := libc++_static
102ada2964799159589b4bffe1e1ba72c664cff094aIan RogersLOCAL_MULTILIB := both
103c4ecec13b6921b9d3b4edec8cc02fd96a9c2e53bDan AlbertLOCAL_CXX_STL := none
104d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray
105d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murrayifeq ($(HOST_OS), darwin)
1068a6f7b1d423195c8b0f1e734c7f27d24786cc87fDan AlbertLOCAL_LDFLAGS += \
107d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray            -Wl,-unexported_symbols_list,external/libcxx/lib/libc++unexp.exp  \
108d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray            -Wl,-force_symbols_not_weak_list,external/libcxx/lib/notweak.exp \
109d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray            -Wl,-force_symbols_weak_list,external/libcxx/lib/weak.exp
110d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murrayelse
11194962fba20d5830a18f3ce0350d6cf299c04b8aaDan AlbertLOCAL_LDLIBS += -lrt -lpthread -ldl
112d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murrayendif
113d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray
1142ef012e47441428f752c6a29d2927513669dda30Dan Albertinclude $(BUILD_HOST_SHARED_LIBRARY)
11527ae7cb782821a4f2d3813522ee411cd978bcd85Stephen Hines
116b434402ea2d0544e3b4f4c63d2c9ac61b0d88789Dan Albertifdef LIBCXX_TESTING
117b434402ea2d0544e3b4f4c63d2c9ac61b0d88789Dan Albertinclude $(LOCAL_PATH)/buildcmds/Android.mk
118b434402ea2d0544e3b4f4c63d2c9ac61b0d88789Dan Albertendif
119