blob: a3a369608f3c64a3918b2cc6976a088121f3592b [file] [log] [blame]
Dan Albert2ef012e2014-04-08 12:03:21 -07001#
2# Copyright (C) 2014 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17LOCAL_PATH := $(call my-dir)
18
19LIBCXX_SRC_FILES := \
20 src/algorithm.cpp \
21 src/bind.cpp \
22 src/chrono.cpp \
23 src/condition_variable.cpp \
24 src/debug.cpp \
25 src/exception.cpp \
26 src/future.cpp \
27 src/hash.cpp \
28 src/ios.cpp \
29 src/iostream.cpp \
30 src/locale.cpp \
31 src/memory.cpp \
32 src/mutex.cpp \
33 src/new.cpp \
34 src/optional.cpp \
35 src/random.cpp \
36 src/regex.cpp \
37 src/shared_mutex.cpp \
38 src/stdexcept.cpp \
39 src/string.cpp \
40 src/strstream.cpp \
41 src/system_error.cpp \
42 src/thread.cpp \
43 src/typeinfo.cpp \
44 src/utility.cpp \
45 src/valarray.cpp \
Dan Albert2ef012e2014-04-08 12:03:21 -070046
Dan Albert6c2fdb82014-05-16 09:55:15 -070047LIBCXX_C_INCLUDES := \
48 $(LOCAL_PATH)/include/ \
Dan Albert3bfb9442014-06-23 16:32:13 -070049 external/libcxxabi/include \
Dan Albert6c2fdb82014-05-16 09:55:15 -070050
Dan Albert2ef012e2014-04-08 12:03:21 -070051LIBCXX_CPPFLAGS := \
Dan Albert2ef012e2014-04-08 12:03:21 -070052 -std=c++11 \
Dan Albert8a6f7b12014-05-01 17:49:58 -070053 -nostdinc++ \
Dan Albert2ef012e2014-04-08 12:03:21 -070054 -fexceptions \
55
Dan Albert6c2fdb82014-05-16 09:55:15 -070056# target static lib
Dan Albert2ef012e2014-04-08 12:03:21 -070057include $(CLEAR_VARS)
Dan Albertb82dd132014-09-26 15:43:43 -070058LOCAL_MODULE := libc++_static
Dan Albert2ef012e2014-04-08 12:03:21 -070059LOCAL_CLANG := true
60LOCAL_SRC_FILES := $(LIBCXX_SRC_FILES)
Dan Albert3bfb9442014-06-23 16:32:13 -070061LOCAL_C_INCLUDES := $(LIBCXX_C_INCLUDES)
62LOCAL_CPPFLAGS := $(LIBCXX_CPPFLAGS)
Dan Albertf1550542014-05-06 14:16:05 -070063LOCAL_RTTI_FLAG := -frtti
Dan Albert3bfb9442014-06-23 16:32:13 -070064LOCAL_WHOLE_STATIC_LIBRARIES := libc++abi libcompiler_rt
Dan Albertc4ecec12014-09-15 12:54:16 -070065LOCAL_CXX_STL := none
Dan Albert6c2fdb82014-05-16 09:55:15 -070066include $(BUILD_STATIC_LIBRARY)
67
68# target dynamic lib
69include $(CLEAR_VARS)
70LOCAL_MODULE := libc++
71LOCAL_CLANG := true
Dan Albertb82dd132014-09-26 15:43:43 -070072LOCAL_WHOLE_STATIC_LIBRARIES := libc++_static
Dan Albert9569f042014-05-01 18:12:37 -070073LOCAL_SHARED_LIBRARIES := libdl
Dan Albertc4ecec12014-09-15 12:54:16 -070074LOCAL_CXX_STL := none
Dan Albert16409502015-02-17 11:31:42 -080075include $(BUILD_SHARED_LIBRARY)
Dan Albert226cd952014-04-16 10:58:40 -070076
Dan Albert16409502015-02-17 11:31:42 -080077# NDK static lib
78include $(CLEAR_VARS)
79LOCAL_MODULE := libc++_ndk
80LOCAL_CLANG := true
81LOCAL_SRC_FILES := $(LIBCXX_SRC_FILES)
82LOCAL_C_INCLUDES := $(LIBCXX_C_INCLUDES)
83LOCAL_CPPFLAGS := $(LIBCXX_CPPFLAGS)
84LOCAL_RTTI_FLAG := -frtti
85LOCAL_WHOLE_STATIC_LIBRARIES := libc++abi libcompiler_rt
86LOCAL_CXX_STL := none
87include $(BUILD_STATIC_LIBRARY)
Dan Albert226cd952014-04-16 10:58:40 -070088
Dan Albert16409502015-02-17 11:31:42 -080089# NDK dynamic lib
90include $(CLEAR_VARS)
91LOCAL_MODULE := libc++_ndk
92LOCAL_CLANG := true
93LOCAL_WHOLE_STATIC_LIBRARIES := libc++_ndk
94LOCAL_STATIC_LIBRARIES := libc_ndk
95LOCAL_SHARED_LIBRARIES := libdl
96LOCAL_SYSTEM_SHARED_LIBRARIES := libc
97LOCAL_LDFLAGS := -Wl,--hash-style=sysv
98LOCAL_CXX_STL := none
99LOCAL_STRIP_MODULE := keep_symbols
Dan Albert2ef012e2014-04-08 12:03:21 -0700100include $(BUILD_SHARED_LIBRARY)
101
Dan Albert6c2fdb82014-05-16 09:55:15 -0700102# host static lib
Dan Albert2ef012e2014-04-08 12:03:21 -0700103include $(CLEAR_VARS)
Dan Albertb82dd132014-09-26 15:43:43 -0700104LOCAL_MODULE := libc++_static
Dan Albert2ef012e2014-04-08 12:03:21 -0700105LOCAL_CLANG := true
106LOCAL_SRC_FILES := $(LIBCXX_SRC_FILES)
Dan Albert6c2fdb82014-05-16 09:55:15 -0700107LOCAL_C_INCLUDES := $(LIBCXX_C_INCLUDES)
Dan Albert2ef012e2014-04-08 12:03:21 -0700108LOCAL_CPPFLAGS := $(LIBCXX_CPPFLAGS)
Dan Albertf1550542014-05-06 14:16:05 -0700109LOCAL_RTTI_FLAG := -frtti
Dan Albert3bfb9442014-06-23 16:32:13 -0700110LOCAL_WHOLE_STATIC_LIBRARIES := libc++abi
Ian Rogersada29642014-06-05 11:09:44 -0700111LOCAL_MULTILIB := both
Dan Albertc4ecec12014-09-15 12:54:16 -0700112LOCAL_CXX_STL := none
Tim Murrayd513b7a2014-04-21 15:06:30 -0700113
Dan Albert3bfb9442014-06-23 16:32:13 -0700114ifneq ($(HOST_OS), darwin)
115LOCAL_WHOLE_STATIC_LIBRARIES += libcompiler_rt
Dan Albert6c2fdb82014-05-16 09:55:15 -0700116endif
Dan Albert3bfb9442014-06-23 16:32:13 -0700117
Dan Albert6c2fdb82014-05-16 09:55:15 -0700118include $(BUILD_HOST_STATIC_LIBRARY)
119
Ying Wangb1300bd2014-08-01 14:17:08 -0700120# Don't build for unbundled branches
121ifeq (,$(TARGET_BUILD_APPS))
122
Dan Albert6c2fdb82014-05-16 09:55:15 -0700123# host dynamic lib
124include $(CLEAR_VARS)
125LOCAL_MODULE := libc++
126LOCAL_CLANG := true
127LOCAL_LDFLAGS := -nodefaultlibs
128LOCAL_LDLIBS := -lc
Dan Albertb82dd132014-09-26 15:43:43 -0700129LOCAL_WHOLE_STATIC_LIBRARIES := libc++_static
Ian Rogersada29642014-06-05 11:09:44 -0700130LOCAL_MULTILIB := both
Dan Albertc4ecec12014-09-15 12:54:16 -0700131LOCAL_CXX_STL := none
Dan Albert6c2fdb82014-05-16 09:55:15 -0700132
133ifeq ($(HOST_OS), darwin)
Dan Albert8a6f7b12014-05-01 17:49:58 -0700134LOCAL_LDFLAGS += \
Tim Murrayd513b7a2014-04-21 15:06:30 -0700135 -Wl,-unexported_symbols_list,external/libcxx/lib/libc++unexp.exp \
Tim Murrayd513b7a2014-04-21 15:06:30 -0700136 -Wl,-force_symbols_not_weak_list,external/libcxx/lib/notweak.exp \
137 -Wl,-force_symbols_weak_list,external/libcxx/lib/weak.exp
138else
Dan Albert7d57f1b2014-05-12 14:54:53 -0700139LOCAL_LDLIBS += -lrt -lpthread -ldl -lm
Tim Murrayd513b7a2014-04-21 15:06:30 -0700140endif
141
Dan Albert2ef012e2014-04-08 12:03:21 -0700142include $(BUILD_HOST_SHARED_LIBRARY)
Stephen Hines27ae7cb2014-04-25 19:13:02 -0700143
Dan Albert0f81d762014-07-18 14:15:56 -0700144LIT := $(ANDROID_BUILD_TOP)/external/llvm/utils/lit/lit.py
Dan Albert78f8c192015-01-07 16:16:05 -0800145LIBCXX_CONFIGTESTS := $(ANDROID_BUILD_TOP)/external/libcxx/buildcmds/configtests.py
146LIBCXX_TEST_MK := $(ANDROID_BUILD_TOP)/external/libcxx/test.mk
147
148test-libcxx-target: test-libcxx-target-clang
149test-libcxx-host: test-libcxx-host-clang
150
151test-libcxx-target-clang: libc++
152 python $(LIBCXX_CONFIGTESTS) --compiler=clang
153 LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
154test-libcxx-target-gcc: libc++
155 python $(LIBCXX_CONFIGTESTS) --compiler=gcc
156 LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
157test-libcxx-target-clang-32: libc++
158 python $(LIBCXX_CONFIGTESTS) --bitness=32 --compiler=clang
159 LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
160test-libcxx-target-gcc-32: libc++
161 python $(LIBCXX_CONFIGTESTS) --bitness=32 --compiler=gcc
162 LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
163test-libcxx-target-clang-64: libc++
164 python $(LIBCXX_CONFIGTESTS) --bitness=64 --compiler=clang
165 LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
166test-libcxx-target-gcc-64: libc++
167 python $(LIBCXX_CONFIGTESTS) --bitness=64 --compiler=gcc
168 LIT=$(LIT) LIT_MODE=device make -f $(LIBCXX_TEST_MK)
169
170test-libcxx-host-clang: libc++
171 python $(LIBCXX_CONFIGTESTS) --compiler=clang --host
172 LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
173test-libcxx-host-gcc: libc++
174 python $(LIBCXX_CONFIGTESTS) --compiler=gcc --host
175 LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
176test-libcxx-host-clang-32: libc++
177 python $(LIBCXX_CONFIGTESTS) --bitness=32 --compiler=clang --host
178 LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
179test-libcxx-host-gcc-32: libc++
180 python $(LIBCXX_CONFIGTESTS) --bitness=32 --compiler=gcc --host
181 LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
182test-libcxx-host-clang-64: libc++
183 python $(LIBCXX_CONFIGTESTS) --bitness=64 --compiler=clang --host
184 LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
185test-libcxx-host-gcc-64: libc++
186 python $(LIBCXX_CONFIGTESTS) --bitness=64 --compiler=gcc --host
187 LIT=$(LIT) LIT_MODE=host make -f $(LIBCXX_TEST_MK)
Dan Albert0f81d762014-07-18 14:15:56 -0700188
189# Don't want to just make test-libcxx-(host|target) dependencies of this because
190# the two families can't be run concurrently.
191test-libcxx: libc++
Dan Albert78f8c192015-01-07 16:16:05 -0800192 python buildcmds/configtests.py --host
Dan Albert0f81d762014-07-18 14:15:56 -0700193 LIT=$(LIT) LIT_MODE=host make -f $(ANDROID_BUILD_TOP)/external/libcxx/test.mk
Dan Albert78f8c192015-01-07 16:16:05 -0800194 python buildcmds/configtests.py
Dan Albert0f81d762014-07-18 14:15:56 -0700195 LIT=$(LIT) LIT_MODE=device make -f $(ANDROID_BUILD_TOP)/external/libcxx/test.mk
196
Stephen Hines27ae7cb2014-04-25 19:13:02 -0700197endif # TARGET_BUILD_APPS