Android.mk revision 94962fba20d5830a18f3ce0350d6cf299c04b8aa
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 := \
202ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/algorithm.cpp \
212ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/bind.cpp \
222ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/chrono.cpp \
232ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/condition_variable.cpp \
242ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/debug.cpp \
252ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/exception.cpp \
262ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/future.cpp \
272ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/hash.cpp \
282ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/ios.cpp \
292ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/iostream.cpp \
302ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/locale.cpp \
312ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/memory.cpp \
322ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/mutex.cpp \
332ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/new.cpp \
342ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/optional.cpp \
352ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/random.cpp \
362ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/regex.cpp \
372ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/shared_mutex.cpp \
382ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/stdexcept.cpp \
392ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/string.cpp \
402ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/strstream.cpp \
412ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/system_error.cpp \
422ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/thread.cpp \
432ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/typeinfo.cpp \
442ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/utility.cpp \
452ef012e47441428f752c6a29d2927513669dda30Dan Albert	src/valarray.cpp \
462ef012e47441428f752c6a29d2927513669dda30Dan Albert
476c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLIBCXX_C_INCLUDES := \
486c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert	$(LOCAL_PATH)/include/ \
493bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan Albert	external/libcxxabi/include \
506c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert
512ef012e47441428f752c6a29d2927513669dda30Dan AlbertLIBCXX_CPPFLAGS := \
522ef012e47441428f752c6a29d2927513669dda30Dan Albert	-std=c++11 \
538a6f7b1d423195c8b0f1e734c7f27d24786cc87fDan Albert	-nostdinc++ \
542ef012e47441428f752c6a29d2927513669dda30Dan 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)
623bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan AlbertLOCAL_CPPFLAGS := $(LIBCXX_CPPFLAGS)
63f155054361cf84c0f3e5752d93c2f68675d47dcbDan AlbertLOCAL_RTTI_FLAG := -frtti
643bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan AlbertLOCAL_WHOLE_STATIC_LIBRARIES := libc++abi libcompiler_rt
65c4ecec13b6921b9d3b4edec8cc02fd96a9c2e53bDan AlbertLOCAL_CXX_STL := none
666c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertinclude $(BUILD_STATIC_LIBRARY)
676c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert
686c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert# target dynamic lib
696c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertinclude $(CLEAR_VARS)
706c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_MODULE := libc++
716c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_CLANG := true
72b82dd133946a06baa55832c389c0fdfadc0261bcDan AlbertLOCAL_WHOLE_STATIC_LIBRARIES := libc++_static
739569f04315c59c4347295946dc01eb046bfb1c47Dan AlbertLOCAL_SHARED_LIBRARIES := libdl
74c4ecec13b6921b9d3b4edec8cc02fd96a9c2e53bDan AlbertLOCAL_CXX_STL := none
75226cd95300d2a7efbfa3f62c837d638e92c1f433Dan Albert
76226cd95300d2a7efbfa3f62c837d638e92c1f433Dan Albert
772ef012e47441428f752c6a29d2927513669dda30Dan Albertinclude $(BUILD_SHARED_LIBRARY)
782ef012e47441428f752c6a29d2927513669dda30Dan Albert
796c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert# host static lib
802ef012e47441428f752c6a29d2927513669dda30Dan Albertinclude $(CLEAR_VARS)
81b82dd133946a06baa55832c389c0fdfadc0261bcDan AlbertLOCAL_MODULE := libc++_static
822ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_CLANG := true
832ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_SRC_FILES := $(LIBCXX_SRC_FILES)
846c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_C_INCLUDES := $(LIBCXX_C_INCLUDES)
852ef012e47441428f752c6a29d2927513669dda30Dan AlbertLOCAL_CPPFLAGS := $(LIBCXX_CPPFLAGS)
86f155054361cf84c0f3e5752d93c2f68675d47dcbDan AlbertLOCAL_RTTI_FLAG := -frtti
873bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan AlbertLOCAL_WHOLE_STATIC_LIBRARIES := libc++abi
88ada2964799159589b4bffe1e1ba72c664cff094aIan RogersLOCAL_MULTILIB := both
89c4ecec13b6921b9d3b4edec8cc02fd96a9c2e53bDan AlbertLOCAL_CXX_STL := none
906c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert
913bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan Albertifneq ($(HOST_OS), darwin)
923bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan AlbertLOCAL_WHOLE_STATIC_LIBRARIES += libcompiler_rt
936c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertendif
943bfb9441d653a9f8d3986193a7697a7c5b1411e5Dan Albert
956c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertinclude $(BUILD_HOST_STATIC_LIBRARY)
966c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert
97b1300bde9cc0528ff84b91ed60ac80655218b4b0Ying Wang# Don't build for unbundled branches
98b1300bde9cc0528ff84b91ed60ac80655218b4b0Ying Wangifeq (,$(TARGET_BUILD_APPS))
99b1300bde9cc0528ff84b91ed60ac80655218b4b0Ying Wang
1006c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albert# host dynamic lib
1016c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan Albertinclude $(CLEAR_VARS)
1026c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_MODULE := libc++
1036c2fdb822e4b1feefe5a7f1829b11be927ee57f9Dan AlbertLOCAL_CLANG := true
1048a6f7b1d423195c8b0f1e734c7f27d24786cc87fDan AlbertLOCAL_LDFLAGS := -nodefaultlibs
105b82dd133946a06baa55832c389c0fdfadc0261bcDan AlbertLOCAL_WHOLE_STATIC_LIBRARIES := libc++_static
106ada2964799159589b4bffe1e1ba72c664cff094aIan RogersLOCAL_MULTILIB := both
107c4ecec13b6921b9d3b4edec8cc02fd96a9c2e53bDan AlbertLOCAL_CXX_STL := none
108d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray
109d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murrayifeq ($(HOST_OS), darwin)
1108a6f7b1d423195c8b0f1e734c7f27d24786cc87fDan AlbertLOCAL_LDFLAGS += \
111d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray            -Wl,-unexported_symbols_list,external/libcxx/lib/libc++unexp.exp  \
112d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray            -Wl,-force_symbols_not_weak_list,external/libcxx/lib/notweak.exp \
113d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray            -Wl,-force_symbols_weak_list,external/libcxx/lib/weak.exp
114d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murrayelse
11594962fba20d5830a18f3ce0350d6cf299c04b8aaDan AlbertLOCAL_LDLIBS += -lrt -lpthread -ldl
116d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murrayendif
117d513b7a16f5bb182fbe3cab05bfe68dddff948ffTim Murray
1182ef012e47441428f752c6a29d2927513669dda30Dan Albertinclude $(BUILD_HOST_SHARED_LIBRARY)
11927ae7cb782821a4f2d3813522ee411cd978bcd85Stephen Hines
1200f81d7634f698157ddef3061713caca314f59ca4Dan AlbertLIT := $(ANDROID_BUILD_TOP)/external/llvm/utils/lit/lit.py
12178f8c1981eed69d751b26958ea12262d4c663fe6Dan AlbertLIBCXX_CONFIGTESTS := $(ANDROID_BUILD_TOP)/external/libcxx/buildcmds/configtests.py
12278f8c1981eed69d751b26958ea12262d4c663fe6Dan AlbertLIBCXX_TEST_MK := $(ANDROID_BUILD_TOP)/external/libcxx/test.mk
12378f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert
12478f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-target: test-libcxx-target-clang
12578f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-host: test-libcxx-host-clang
12678f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert
12778f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-target-clang: libc++
12878f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --compiler=clang
12978f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
13078f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-target-gcc: libc++
13178f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --compiler=gcc
13278f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
13378f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-target-clang-32: libc++
13478f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --bitness=32 --compiler=clang
13578f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
13678f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-target-gcc-32: libc++
13778f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --bitness=32 --compiler=gcc
13878f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
13978f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-target-clang-64: libc++
14078f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --bitness=64 --compiler=clang
14178f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
14278f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-target-gcc-64: libc++
14378f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --bitness=64 --compiler=gcc
14478f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
14578f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert
14678f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-host-clang: libc++
14778f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --compiler=clang --host
14878f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
14978f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-host-gcc: libc++
15078f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --compiler=gcc --host
15178f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
15278f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-host-clang-32: libc++
15378f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --bitness=32 --compiler=clang --host
15478f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
15578f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-host-gcc-32: libc++
15678f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --bitness=32 --compiler=gcc --host
15778f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
15878f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-host-clang-64: libc++
15978f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --bitness=64 --compiler=clang --host
16078f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
16178f8c1981eed69d751b26958ea12262d4c663fe6Dan Alberttest-libcxx-host-gcc-64: libc++
16278f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python $(LIBCXX_CONFIGTESTS) --bitness=64 --compiler=gcc --host
16378f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
1640f81d7634f698157ddef3061713caca314f59ca4Dan Albert
1650f81d7634f698157ddef3061713caca314f59ca4Dan Albert# Don't want to just make test-libcxx-(host|target) dependencies of this because
1660f81d7634f698157ddef3061713caca314f59ca4Dan Albert# the two families can't be run concurrently.
1670f81d7634f698157ddef3061713caca314f59ca4Dan Alberttest-libcxx: libc++
16878f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python buildcmds/configtests.py --host
1690f81d7634f698157ddef3061713caca314f59ca4Dan Albert	LIT=$(LIT) LIT_MODE=host make -f $(ANDROID_BUILD_TOP)/external/libcxx/test.mk
17078f8c1981eed69d751b26958ea12262d4c663fe6Dan Albert	python buildcmds/configtests.py
1710f81d7634f698157ddef3061713caca314f59ca4Dan Albert	LIT=$(LIT) LIT_MODE=device make -f $(ANDROID_BUILD_TOP)/external/libcxx/test.mk
1720f81d7634f698157ddef3061713caca314f59ca4Dan Albert
17327ae7cb782821a4f2d3813522ee411cd978bcd85Stephen Hinesendif  # TARGET_BUILD_APPS
174