1
2SRC_CC += \
3  c++98/basic_file.cc \
4  c_locale.cc \
5  codecvt_members.cc \
6  ctype_configure_char.cc \
7  ctype_members.cc \
8  collate_members.cc \
9  c++98/collate_members_cow.cc \
10  messages_members.cc \
11  c++98/messages_members_cow.cc \
12  monetary_members.cc \
13  c++98/monetary_members_cow.cc \
14  numeric_members.cc \
15  c++98/numeric_members_cow.cc \
16  time_members.cc \
17  c++98/allocator-inst.cc \
18  c++98/bitmap_allocator.cc \
19  c++98/codecvt.cc \
20  c++98/compatibility-debug_list-2.cc \
21  c++98/compatibility-debug_list.cc \
22  c++98/compatibility-ldbl.cc \
23  c++98/compatibility.cc \
24  c++98/complex_io.cc \
25  c++98/concept-inst.cc \
26  c++98/cow-istream-string.cc \
27  c++98/ext-inst.cc \
28  c++98/globals_io.cc \
29  c++98/hash_tr1.cc \
30  c++98/hashtable_tr1.cc \
31  c++98/ios_failure.cc \
32  c++98/ios_init.cc \
33  c++98/ios_locale.cc \
34  c++98/istream.cc \
35  c++98/istream-string.cc \
36  c++98/list-aux-2.cc \
37  c++98/list-aux.cc \
38  c++98/list.cc \
39  c++98/list_associated-2.cc \
40  c++98/list_associated.cc \
41  c++98/locale.cc \
42  c++98/locale_facets.cc \
43  c++98/locale_init.cc \
44  c++98/localename.cc \
45  c++98/math_stubs_float.cc \
46  c++98/math_stubs_long_double.cc \
47  c++98/misc-inst.cc \
48  c++98/mt_allocator.cc \
49  c++98/parallel_settings.cc \
50  c++98/pool_allocator.cc \
51  c++98/stdexcept.cc \
52  c++98/streambuf.cc \
53  c++98/strstream.cc \
54  c++98/tree.cc \
55  c++98/valarray.cc \
56  c++11/chrono.cc \
57  c++11/codecvt.cc \
58  c++11/compatibility-atomic-c++0x.cc \
59  c++11/compatibility-c++0x.cc \
60  c++11/compatibility-condvar.cc \
61  c++11/compatibility-thread-c++0x.cc \
62  c++11/condition_variable.cc \
63  c++11/cow-fstream-inst.cc \
64  c++11/cow-locale_init.cc \
65  c++11/cow-shim_facets.cc \
66  c++11/cow-sstream-inst.cc \
67  c++11/cow-stdexcept.cc \
68  c++11/cow-string-inst.cc \
69  c++11/cow-string-io-inst.cc \
70  c++11/cow-wstring-inst.cc \
71  c++11/cow-wstring-io-inst.cc \
72  c++11/ctype.cc \
73  c++11/cxx11-hash_tr1.cc \
74  c++11/cxx11-ios_failure.cc \
75  c++11/cxx11-locale-inst.cc \
76  c++11/cxx11-shim_facets.cc \
77  c++11/cxx11-stdexcept.cc \
78  c++11/cxx11-wlocale-inst.cc \
79  c++11/debug.cc \
80  c++11/ext11-inst.cc \
81  c++11/fstream-inst.cc \
82  c++11/functexcept.cc \
83  c++11/functional.cc \
84  c++11/future.cc \
85  c++11/hash_c++0x.cc \
86  c++11/hashtable_c++0x.cc \
87  c++11/ios.cc \
88  c++11/ios-inst.cc \
89  c++11/iostream-inst.cc \
90  c++11/istream-inst.cc \
91  c++11/limits.cc \
92  c++11/locale-inst.cc \
93  c++11/mutex.cc \
94  c++11/ostream-inst.cc \
95  c++11/placeholders.cc \
96  c++11/random.cc \
97  c++11/regex.cc \
98  c++11/shared_ptr.cc \
99  c++11/snprintf_lite.cc \
100  c++11/sso_string.cc \
101  c++11/sstream-inst.cc \
102  c++11/streambuf-inst.cc \
103  c++11/string-inst.cc \
104  c++11/string-io-inst.cc \
105  c++11/system_error.cc \
106  c++11/thread.cc \
107  c++11/wlocale-inst.cc \
108  c++11/wstring-inst.cc \
109  c++11/wstring-io-inst.cc \
110  filesystem/dir.cc \
111  filesystem/ops.cc \
112  filesystem/path.cc \
113  filesystem/cow-dir.cc \
114  filesystem/cow-ops.cc \
115  filesystem/cow-path.cc
116
117CXXFLAGS_c++98/collate_members_cow.cc  += -D_GLIBCXX_USE_CXX11_ABI=0 -fimplicit-templates
118CXXFLAGS_c++98/messages_members_cow.cc += -D_GLIBCXX_USE_CXX11_ABI=0 -fimplicit-templates
119CXXFLAGS_c++98/monetary_members_cow.cc += -D_GLIBCXX_USE_CXX11_ABI=0 -fimplicit-templates
120CXXFLAGS_c++98/numeric_members_cow.cc  += -D_GLIBCXX_USE_CXX11_ABI=0 -fimplicit-templates
121
122CXXFLAGS_c++98/concept-inst.cc    += -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates
123CXXFLAGS_c++98/locale_init.cc     += -std=gnu++11
124CXXFLAGS_c++98/localename.cc      += -std=gnu++11
125PRIVATE_INCDIR_c++98/strstream.cc += $(STDCXX_CONTRIB_DIR)/include/backward
126CXXFLAGS_c++98/strstream.cc       += -Wno-deprecated
127
128CXXFLAGS_c++11/hashtable_c++0x.cc += -fimplicit-templates
129
130# not all code is C++11
131SRC_CC_IS_CXX11 :=
132CXXFLAGS        += $(if $(filter c++11/%,$@),-std=gnu++11)
133CXXFLAGS        += $(if $(filter c++98/%,$@),-std=gnu++98)
134CXXFLAGS        += $(if $(filter filesystem/%,$@),-std=gnu++14)
135
136# -Wmissing-declarations triggers
137WARNINGS = $(WARNINGS_MINIMAL)
138
139# Use atomicity.cc if the compiler does not support C++11 atomics
140SRC_CC       += $(if $(GCC_HAS_ATOMICS),,atomicity.cc)
141
142vpath %.cc $(STDCXX_CONTRIB_DIR)/config/os/generic
143
144$(OBJ_DIR)/atomicity.cc: $(call CPU_file,atomicity_mutex/atomicity.h)
145	$(VERBOSE)$(LN) -sf $< $@
146
147$(OBJ_DIR)/c++98/basic_file.cc: $(STDCXX_CONTRIB_DIR)/config/io/basic_file_stdio.cc
148	$(VERBOSE)$(MKDIR) $(@D)
149	$(VERBOSE)$(LN) -sf $< $@
150
151$(OBJ_DIR)/c++98/collate_members_cow.cc: $(STDCXX_CONTRIB_DIR)/config/locale/generic/collate_members.cc
152	$(VERBOSE)$(MKDIR) $(@D)
153	$(VERBOSE)$(LN) -sf $< $@
154
155$(OBJ_DIR)/c++98/messages_members_cow.cc: $(STDCXX_CONTRIB_DIR)/config/locale/generic/messages_members.cc
156	$(VERBOSE)$(MKDIR) $(@D)
157	$(VERBOSE)$(LN) -sf $< $@
158
159$(OBJ_DIR)/c++98/monetary_members_cow.cc: $(STDCXX_CONTRIB_DIR)/config/locale/generic/monetary_members.cc
160	$(VERBOSE)$(MKDIR) $(@D)
161	$(VERBOSE)$(LN) -sf $< $@
162
163$(OBJ_DIR)/c++98/numeric_members_cow.cc: $(STDCXX_CONTRIB_DIR)/config/locale/generic/numeric_members.cc
164	$(VERBOSE)$(MKDIR) $(@D)
165	$(VERBOSE)$(LN) -sf $< $@
166