Makefile.am revision 146897
1## Makefile for the include subdirectory of the GNU C++ Standard library. 2## 3## Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 4## 5## This file is part of the libstdc++ version 3 distribution. 6## Process this file with automake to produce Makefile.in. 7 8## This file is part of the GNU ISO C++ Library. This library is free 9## software; you can redistribute it and/or modify it under the 10## terms of the GNU General Public License as published by the 11## Free Software Foundation; either version 2, or (at your option) 12## any later version. 13 14## This library is distributed in the hope that it will be useful, 15## but WITHOUT ANY WARRANTY; without even the implied warranty of 16## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17## GNU General Public License for more details. 18 19## You should have received a copy of the GNU General Public License along 20## with this library; see the file COPYING. If not, write to the Free 21## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 22## USA. 23 24include $(top_srcdir)/fragment.am 25 26# Standard C++ includes. 27std_srcdir = ${glibcxx_srcdir}/include/std 28std_builddir = . 29std_headers = \ 30 ${std_srcdir}/std_algorithm.h \ 31 ${std_srcdir}/std_bitset.h \ 32 ${std_srcdir}/std_complex.h \ 33 ${std_srcdir}/std_deque.h \ 34 ${std_srcdir}/std_fstream.h \ 35 ${std_srcdir}/std_functional.h \ 36 ${std_srcdir}/std_iomanip.h \ 37 ${std_srcdir}/std_ios.h \ 38 ${std_srcdir}/std_iosfwd.h \ 39 ${std_srcdir}/std_iostream.h \ 40 ${std_srcdir}/std_istream.h \ 41 ${std_srcdir}/std_iterator.h \ 42 ${std_srcdir}/std_limits.h \ 43 ${std_srcdir}/std_list.h \ 44 ${std_srcdir}/std_locale.h \ 45 ${std_srcdir}/std_map.h \ 46 ${std_srcdir}/std_memory.h \ 47 ${std_srcdir}/std_numeric.h \ 48 ${std_srcdir}/std_ostream.h \ 49 ${std_srcdir}/std_queue.h \ 50 ${std_srcdir}/std_set.h \ 51 ${std_srcdir}/std_sstream.h \ 52 ${std_srcdir}/std_stack.h \ 53 ${std_srcdir}/std_stdexcept.h \ 54 ${std_srcdir}/std_streambuf.h \ 55 ${std_srcdir}/std_string.h \ 56 ${std_srcdir}/std_utility.h \ 57 ${std_srcdir}/std_valarray.h \ 58 ${std_srcdir}/std_vector.h 59# Renamed at build time. 60std_headers_rename = \ 61 algorithm \ 62 bitset \ 63 complex \ 64 deque \ 65 fstream \ 66 functional \ 67 iomanip \ 68 ios \ 69 iosfwd \ 70 iostream \ 71 istream \ 72 iterator \ 73 limits \ 74 list \ 75 locale \ 76 map \ 77 memory \ 78 numeric \ 79 ostream \ 80 queue \ 81 set \ 82 sstream \ 83 stack \ 84 stdexcept \ 85 streambuf \ 86 string \ 87 utility \ 88 valarray \ 89 vector 90 91bits_srcdir = ${glibcxx_srcdir}/include/bits 92bits_builddir = ./bits 93bits_headers = \ 94 ${bits_srcdir}/allocator.h \ 95 ${bits_srcdir}/atomicity.h \ 96 ${bits_srcdir}/basic_ios.h \ 97 ${bits_srcdir}/basic_ios.tcc \ 98 ${bits_srcdir}/basic_string.h \ 99 ${bits_srcdir}/basic_string.tcc \ 100 ${bits_srcdir}/boost_concept_check.h \ 101 ${bits_srcdir}/char_traits.h \ 102 ${bits_srcdir}/codecvt.h \ 103 ${bits_srcdir}/concept_check.h \ 104 ${bits_srcdir}/concurrence.h \ 105 ${bits_srcdir}/cpp_type_traits.h \ 106 ${bits_srcdir}/deque.tcc \ 107 ${bits_srcdir}/fstream.tcc \ 108 ${bits_srcdir}/functexcept.h \ 109 ${bits_srcdir}/gslice.h \ 110 ${bits_srcdir}/gslice_array.h \ 111 ${bits_srcdir}/indirect_array.h \ 112 ${bits_srcdir}/ios_base.h \ 113 ${bits_srcdir}/istream.tcc \ 114 ${bits_srcdir}/list.tcc \ 115 ${bits_srcdir}/locale_classes.h \ 116 ${bits_srcdir}/locale_facets.h \ 117 ${bits_srcdir}/locale_facets.tcc \ 118 ${bits_srcdir}/localefwd.h \ 119 ${bits_srcdir}/mask_array.h \ 120 ${bits_srcdir}/ostream.tcc \ 121 ${bits_srcdir}/postypes.h \ 122 ${bits_srcdir}/stream_iterator.h \ 123 ${bits_srcdir}/streambuf_iterator.h \ 124 ${bits_srcdir}/slice_array.h \ 125 ${bits_srcdir}/sstream.tcc \ 126 ${bits_srcdir}/stl_algo.h \ 127 ${bits_srcdir}/stl_algobase.h \ 128 ${bits_srcdir}/stl_bvector.h \ 129 ${bits_srcdir}/stl_construct.h \ 130 ${bits_srcdir}/stl_deque.h \ 131 ${bits_srcdir}/stl_function.h \ 132 ${bits_srcdir}/stl_heap.h \ 133 ${bits_srcdir}/stl_iterator.h \ 134 ${bits_srcdir}/stl_iterator_base_funcs.h \ 135 ${bits_srcdir}/stl_iterator_base_types.h \ 136 ${bits_srcdir}/stl_list.h \ 137 ${bits_srcdir}/stl_map.h \ 138 ${bits_srcdir}/stl_multimap.h \ 139 ${bits_srcdir}/stl_multiset.h \ 140 ${bits_srcdir}/stl_numeric.h \ 141 ${bits_srcdir}/stl_pair.h \ 142 ${bits_srcdir}/stl_queue.h \ 143 ${bits_srcdir}/stl_raw_storage_iter.h \ 144 ${bits_srcdir}/stl_relops.h \ 145 ${bits_srcdir}/stl_set.h \ 146 ${bits_srcdir}/stl_stack.h \ 147 ${bits_srcdir}/stl_tempbuf.h \ 148 ${bits_srcdir}/stl_threads.h \ 149 ${bits_srcdir}/stl_tree.h \ 150 ${bits_srcdir}/stl_uninitialized.h \ 151 ${bits_srcdir}/stl_vector.h \ 152 ${bits_srcdir}/streambuf.tcc \ 153 ${bits_srcdir}/stringfwd.h \ 154 ${bits_srcdir}/type_traits.h \ 155 ${bits_srcdir}/valarray_array.h \ 156 ${bits_srcdir}/valarray_array.tcc \ 157 ${bits_srcdir}/valarray_before.h \ 158 ${bits_srcdir}/valarray_after.h \ 159 ${bits_srcdir}/vector.tcc 160 161backward_srcdir = ${glibcxx_srcdir}/include/backward 162backward_builddir = ./backward 163backward_headers = \ 164 ${backward_srcdir}/complex.h \ 165 ${backward_srcdir}/iomanip.h \ 166 ${backward_srcdir}/istream.h \ 167 ${backward_srcdir}/ostream.h \ 168 ${backward_srcdir}/stream.h \ 169 ${backward_srcdir}/streambuf.h \ 170 ${backward_srcdir}/algo.h \ 171 ${backward_srcdir}/algobase.h \ 172 ${backward_srcdir}/alloc.h \ 173 ${backward_srcdir}/bvector.h \ 174 ${backward_srcdir}/defalloc.h \ 175 ${backward_srcdir}/deque.h \ 176 ${backward_srcdir}/function.h \ 177 ${backward_srcdir}/hash_map.h \ 178 ${backward_srcdir}/hash_set.h \ 179 ${backward_srcdir}/hashtable.h \ 180 ${backward_srcdir}/heap.h \ 181 ${backward_srcdir}/iostream.h \ 182 ${backward_srcdir}/iterator.h \ 183 ${backward_srcdir}/list.h \ 184 ${backward_srcdir}/map.h \ 185 ${backward_srcdir}/multimap.h \ 186 ${backward_srcdir}/new.h \ 187 ${backward_srcdir}/multiset.h \ 188 ${backward_srcdir}/pair.h \ 189 ${backward_srcdir}/queue.h \ 190 ${backward_srcdir}/rope.h \ 191 ${backward_srcdir}/set.h \ 192 ${backward_srcdir}/slist.h \ 193 ${backward_srcdir}/stack.h \ 194 ${backward_srcdir}/tempbuf.h \ 195 ${backward_srcdir}/tree.h \ 196 ${backward_srcdir}/vector.h \ 197 ${backward_srcdir}/fstream.h \ 198 ${backward_srcdir}/strstream \ 199 ${backward_srcdir}/backward_warning.h 200 201ext_srcdir = ${glibcxx_srcdir}/include/ext 202ext_builddir = ./ext 203ext_headers = \ 204 ${ext_srcdir}/algorithm \ 205 ${ext_srcdir}/bitmap_allocator.h \ 206 ${ext_srcdir}/debug_allocator.h \ 207 ${ext_srcdir}/enc_filebuf.h \ 208 ${ext_srcdir}/stdio_filebuf.h \ 209 ${ext_srcdir}/stdio_sync_filebuf.h \ 210 ${ext_srcdir}/functional \ 211 ${ext_srcdir}/hash_map \ 212 ${ext_srcdir}/hash_set \ 213 ${ext_srcdir}/iterator \ 214 ${ext_srcdir}/malloc_allocator.h \ 215 ${ext_srcdir}/memory \ 216 ${ext_srcdir}/mt_allocator.h \ 217 ${ext_srcdir}/new_allocator.h \ 218 ${ext_srcdir}/numeric \ 219 ${ext_srcdir}/pod_char_traits.h \ 220 ${ext_srcdir}/pool_allocator.h \ 221 ${ext_srcdir}/rb_tree \ 222 ${ext_srcdir}/rope \ 223 ${ext_srcdir}/ropeimpl.h \ 224 ${ext_srcdir}/slist \ 225 ${ext_srcdir}/hash_fun.h \ 226 ${ext_srcdir}/hashtable.h 227 228# This is the common subset of files that all three "C" header models use. 229c_base_srcdir = $(C_INCLUDE_DIR) 230c_base_builddir = . 231c_base_headers = \ 232 ${c_base_srcdir}/std_cassert.h \ 233 ${c_base_srcdir}/std_cctype.h \ 234 ${c_base_srcdir}/std_cerrno.h \ 235 ${c_base_srcdir}/std_cfloat.h \ 236 ${c_base_srcdir}/std_ciso646.h \ 237 ${c_base_srcdir}/std_climits.h \ 238 ${c_base_srcdir}/std_clocale.h \ 239 ${c_base_srcdir}/std_cmath.h \ 240 ${c_base_srcdir}/std_csetjmp.h \ 241 ${c_base_srcdir}/std_csignal.h \ 242 ${c_base_srcdir}/std_cstdarg.h \ 243 ${c_base_srcdir}/std_cstddef.h \ 244 ${c_base_srcdir}/std_cstdio.h \ 245 ${c_base_srcdir}/std_cstdlib.h \ 246 ${c_base_srcdir}/std_cstring.h \ 247 ${c_base_srcdir}/std_ctime.h \ 248 ${c_base_srcdir}/std_cwchar.h \ 249 ${c_base_srcdir}/std_cwctype.h 250c_base_headers_rename = \ 251 cassert \ 252 cctype \ 253 cerrno \ 254 cfloat \ 255 ciso646 \ 256 climits \ 257 clocale \ 258 cmath \ 259 csetjmp \ 260 csignal \ 261 cstdarg \ 262 cstddef \ 263 cstdio \ 264 cstdlib \ 265 cstring \ 266 ctime \ 267 cwchar \ 268 cwctype 269 270# "C" compatibility headers. 271c_compatibility_srcdir = ${glibcxx_srcdir}/include/c_compatibility 272c_compatibility_builddir = . 273c_compatibility_headers = \ 274 ${c_compatibility_srcdir}/assert.h \ 275 ${c_compatibility_srcdir}/ctype.h \ 276 ${c_compatibility_srcdir}/errno.h \ 277 ${c_compatibility_srcdir}/float.h \ 278 ${c_compatibility_srcdir}/iso646.h \ 279 ${c_compatibility_srcdir}/limits.h \ 280 ${c_compatibility_srcdir}/locale.h \ 281 ${c_compatibility_srcdir}/math.h \ 282 ${c_compatibility_srcdir}/setjmp.h \ 283 ${c_compatibility_srcdir}/signal.h \ 284 ${c_compatibility_srcdir}/stdarg.h \ 285 ${c_compatibility_srcdir}/stddef.h \ 286 ${c_compatibility_srcdir}/stdio.h \ 287 ${c_compatibility_srcdir}/stdlib.h \ 288 ${c_compatibility_srcdir}/string.h \ 289 ${c_compatibility_srcdir}/time.h \ 290 ${c_compatibility_srcdir}/wchar.h \ 291 ${c_compatibility_srcdir}/wctype.h 292 293# Debug mode headers 294debug_srcdir = ${glibcxx_srcdir}/include/debug 295debug_builddir = ./debug 296debug_headers = \ 297 ${debug_srcdir}/bitset \ 298 ${debug_srcdir}/debug.h \ 299 ${debug_srcdir}/deque \ 300 ${debug_srcdir}/formatter.h \ 301 ${debug_srcdir}/hash_map \ 302 ${debug_srcdir}/hash_map.h \ 303 ${debug_srcdir}/hash_multimap.h \ 304 ${debug_srcdir}/hash_multiset.h \ 305 ${debug_srcdir}/hash_set \ 306 ${debug_srcdir}/hash_set.h \ 307 ${debug_srcdir}/list \ 308 ${debug_srcdir}/map \ 309 ${debug_srcdir}/map.h \ 310 ${debug_srcdir}/multimap.h \ 311 ${debug_srcdir}/multiset.h \ 312 ${debug_srcdir}/safe_base.h \ 313 ${debug_srcdir}/safe_iterator.h \ 314 ${debug_srcdir}/safe_iterator.tcc \ 315 ${debug_srcdir}/safe_sequence.h \ 316 ${debug_srcdir}/set \ 317 ${debug_srcdir}/set.h \ 318 ${debug_srcdir}/string \ 319 ${debug_srcdir}/vector 320 321# Some of the different "C" header models need extra files. 322# Some "C" header schemes require the "C" compatibility headers. 323# For --enable-cheaders=c_std 324if GLIBCXX_C_HEADERS_C_STD 325c_base_headers_extra = ${c_base_srcdir}/cmath.tcc 326else 327c_base_headers_extra = 328endif 329 330if GLIBCXX_C_HEADERS_COMPATIBILITY 331c_compatibility_headers_extra = ${c_compatibility_headers} 332else 333c_compatibility_headers_extra = 334endif 335 336host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) 337host_builddir = ./${host_alias}/bits 338host_headers = \ 339 ${host_srcdir}/ctype_base.h \ 340 ${host_srcdir}/ctype_inline.h \ 341 ${host_srcdir}/ctype_noninline.h \ 342 ${host_srcdir}/os_defines.h \ 343 ${glibcxx_srcdir}/$(ATOMIC_WORD_SRCDIR)/atomic_word.h 344 345# Non-installed host_header files. 346host_headers_noinst = \ 347 ${glibcxx_srcdir}/$(CLOCALE_INTERNAL_H) 348 349# These host_headers_extra files are all built with ad hoc naming rules. 350host_headers_extra = \ 351 ${host_builddir}/basic_file.h \ 352 ${host_builddir}/c++config.h \ 353 ${host_builddir}/c++allocator.h \ 354 ${host_builddir}/c++io.h \ 355 ${host_builddir}/c++locale.h \ 356 ${host_builddir}/messages_members.h \ 357 ${host_builddir}/time_members.h \ 358 ${host_builddir}/codecvt_specializations.h 359 360thread_host_headers = \ 361 ${host_builddir}/gthr.h \ 362 ${host_builddir}/gthr-single.h \ 363 ${host_builddir}/gthr-posix.h \ 364 ${host_builddir}/gthr-default.h 365 366pch_input = ${host_builddir}/stdc++.h 367pch_output_builddir = ${host_builddir}/stdc++.h.gch 368pch_source = ${glibcxx_srcdir}/include/stdc++.h 369PCHFLAGS=-Winvalid-pch -Wno-deprecated -x c++-header $(CXXFLAGS) 370if GLIBCXX_BUILD_PCH 371pch_build = ${pch_input} 372pch_install = install-pch 373else 374pch_build = 375pch_install = 376endif 377 378# List of all timestamp files. By keeping only one copy of this list, both 379# CLEANFILES and all-local are kept up-to-date. 380allstamped = \ 381 stamp-std stamp-bits stamp-c_base stamp-c_compatibility \ 382 stamp-backward stamp-ext stamp-debug stamp-host 383 384# List of all files that are created by explicit building, editing, or 385# catenation. 386allcreated = \ 387 ${host_builddir}/c++config.h \ 388 ${thread_host_headers} \ 389 ${pch_build} 390 391# Here are the rules for building the headers 392all-local: ${allstamped} ${allcreated} 393 394# This rule is slightly different, in that we must change the name of the 395# local file from std_foo.h to foo. 396stamp-std: ${std_headers} 397 @if [ ! -d "${std_builddir}" ]; then \ 398 mkdir -p ${std_builddir} ;\ 399 fi ;\ 400 if [ ! -f stamp-std ]; then \ 401 (cd ${std_builddir} && for h in $?; do \ 402 official_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\ 403 $(LN_S) $$h ./$${official_name} || true ;\ 404 done) ;\ 405 fi ;\ 406 $(STAMP) stamp-std 407 408stamp-bits: ${bits_headers} 409 @if [ ! -d "${bits_builddir}" ]; then \ 410 mkdir -p ${bits_builddir} ;\ 411 fi ;\ 412 if [ ! -f stamp-bits ]; then \ 413 (cd ${bits_builddir} && $(LN_S) $? . || true) ;\ 414 fi ;\ 415 $(STAMP) stamp-bits 416 417stamp-c_base: stamp-bits ${c_base_headers} ${c_base_headers_extra} 418 @if [ ! -d "${c_base_builddir}" ]; then \ 419 mkdir -p ${c_base_builddir} ;\ 420 fi ;\ 421 if [ ! -f stamp-c_base ]; then \ 422 (cd ${c_base_builddir} && for h in ${c_base_headers}; do \ 423 official_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\ 424 $(LN_S) $$h ./$${official_name} || true ;\ 425 done) ;\ 426 if [ ! -z "${c_base_headers_extra}" ]; then \ 427 (cd ${bits_builddir} && $(LN_S) ${c_base_headers_extra} . || true) ;\ 428 fi ;\ 429 fi ;\ 430 $(STAMP) stamp-c_base 431 432stamp-c_compatibility: ${c_compatibility_headers_extra} 433 @if [ ! -d "${c_compatibility_builddir}" ]; then \ 434 mkdir -p ${c_compatibility_builddir} ;\ 435 fi ;\ 436 if [ ! -f stamp-c_compatibility ]; then \ 437 if [ ! -z "${c_compatibility_headers_extra}" ]; then \ 438 (cd ${c_compatibility_builddir} && $(LN_S) $? . || true) ;\ 439 fi ;\ 440 fi ;\ 441 $(STAMP) stamp-c_compatibility 442 443stamp-backward: ${backward_headers} 444 @if [ ! -d "${backward_builddir}" ]; then \ 445 mkdir -p ${backward_builddir} ;\ 446 fi ;\ 447 if [ ! -f stamp-backward ]; then \ 448 (cd ${backward_builddir} && $(LN_S) $? . || true) ;\ 449 fi ;\ 450 $(STAMP) stamp-backward 451 452stamp-ext: ${ext_headers} 453 @if [ ! -d "${ext_builddir}" ]; then \ 454 mkdir -p ${ext_builddir} ;\ 455 fi ;\ 456 if [ ! -f stamp-ext ]; then \ 457 (cd ${ext_builddir} && $(LN_S) $? . || true) ;\ 458 fi ;\ 459 $(STAMP) stamp-ext 460 461stamp-debug: ${debug_headers} 462 @if [ ! -d "${debug_builddir}" ]; then \ 463 mkdir -p ${debug_builddir} ;\ 464 fi ;\ 465 if [ ! -f stamp-debug ]; then \ 466 (cd ${debug_builddir} && @LN_S@ $? . || true) ;\ 467 fi ;\ 468 $(STAMP) stamp-debug 469 470stamp-${host_alias}: 471 @if [ ! -d ${host_builddir} ]; then \ 472 mkdir -p ${host_builddir} ;\ 473 fi ;\ 474 $(STAMP) stamp-${host_alias} 475 476# Host includes static. 477# XXX Missing dependency info for {host_headers_extra} 478stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias} 479 @if [ ! -f stamp-host ]; then \ 480 (cd ${host_builddir} ;\ 481 $(LN_S) ${host_headers} . || true ;\ 482 $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\ 483 $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\ 484 $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\ 485 $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_H) c++locale.h || true ;\ 486 $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_INTERNAL_H) . || true ;\ 487 $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\ 488 $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true ;\ 489 $(LN_S) ${glibcxx_srcdir}/$(CCODECVT_H) codecvt_specializations.h || true);\ 490 fi ;\ 491 $(STAMP) stamp-host 492 493# Host includes dynamic. 494${host_builddir}/c++config.h: ${top_builddir}/config.h \ 495 ${glibcxx_srcdir}/include/bits/c++config \ 496 stamp-${host_alias} 497 @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ 498 sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ 499 -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \ 500 -e 's/VERSION/_GLIBCXX_VERSION/g' \ 501 -e 's/WORDS_/_GLIBCXX_WORDS_/g' \ 502 < ${CONFIG_HEADER} >> $@ ;\ 503 echo "#endif // _CXXCONFIG_" >>$@ 504 505# Host includes for threads 506uppercase = [ABCDEFGHIJKLMNOPQRSTUVWXYZ_] 507 508${host_builddir}/gthr.h: ${toplevel_srcdir}/gcc/gthr.h stamp-${host_alias} 509 sed -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \ 510 -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \ 511 -e 's,^#include "\(.*\)",#include <bits/\1>,g' \ 512 < ${toplevel_srcdir}/gcc/gthr.h > $@ 513 514${host_builddir}/gthr-single.h: ${toplevel_srcdir}/gcc/gthr-single.h \ 515 stamp-${host_alias} 516 sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ 517 -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ 518 < ${toplevel_srcdir}/gcc/gthr-single.h > $@ 519 520${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/gcc/gthr-posix.h \ 521 stamp-${host_alias} 522 sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ 523 -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ 524 -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \ 525 -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \ 526 < ${toplevel_srcdir}/gcc/gthr-posix.h > $@ 527 528${host_builddir}/gthr-default.h: ${toplevel_srcdir}/gcc/${glibcxx_thread_h} \ 529 stamp-${host_alias} 530 sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ 531 -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ 532 -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \ 533 -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \ 534 -e 's,^#include "\(.*\)",#include <bits/\1>,g' \ 535 < ${toplevel_srcdir}/gcc/${glibcxx_thread_h} > $@ 536 537# Build a precompiled C++ include, stdc++.h.gch. 538${pch_input}: ${allstamped} ${host_builddir}/c++config.h ${pch_source} 539 touch ${pch_input}; \ 540 if [ ! -d "${pch_output_builddir}" ]; then \ 541 mkdir -p ${pch_output_builddir}; \ 542 fi; \ 543 $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g; \ 544 $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g; 545 546# For robustness sake (in light of junk files or in-source 547# configuration), copy from the build or source tree to the install 548# tree using only the human-maintained file lists and directory 549# components. Yes, with minor differences, this is sheer duplication 550# of the staging rules above using $(INSTALL_DATA) instead of LN_S and 551# `$(mkinstalldirs)' instead of `mkdir -p'. In particular, 552# host_headers_extra are taken out of the build tree staging area; 553# the rest are taken from the original source tree. 554 555if GLIBCXX_HOSTED 556install-data-local: install-headers ${pch_install} 557else 558install-data-local: install-freestanding-headers 559endif 560 561# This is a subset of the full install-headers rule. We only need <cstddef>, 562# <limits>, <cstdlib>, <cstdarg>, <new>, <typeinfo>, <exception>, and any 563# files which they include (and which we provide). The last three headers 564# are installed by libsupc++, so only the first four and the sub-includes 565# are copied here. 566install-freestanding-headers: 567 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir} 568 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${host_builddir} 569 for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h; do \ 570 $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_builddir}; done 571 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir} 572 $(INSTALL_DATA) ${std_builddir}/limits $(DESTDIR)${gxx_include_dir}/${std_builddir} 573 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir} 574 for file in cstddef cstdlib cstdarg; do \ 575 $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done 576 577# The real deal. 578install-headers: 579 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir} 580 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${bits_builddir} 581 for file in ${bits_headers}; do \ 582 $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done 583 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${backward_builddir} 584 for file in ${backward_headers}; do \ 585 $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${backward_builddir}; done 586 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${ext_builddir} 587 for file in ${ext_headers}; do \ 588 $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${ext_builddir}; done 589 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir} 590 for file in ${c_base_headers_rename}; do \ 591 $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done 592 c_base_headers_extra_install='$(c_base_headers_extra)';\ 593 for file in $$c_base_headers_extra_install; do \ 594 $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done 595 c_compatibility_headers_install='$(c_compatibility_headers_extra)';\ 596 for file in $$c_compatibility_headers_install; do \ 597 $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done 598 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir} 599 for file in ${std_headers_rename}; do \ 600 $(INSTALL_DATA) ${std_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done 601 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir} 602 for file in ${debug_headers}; do \ 603 $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done 604 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${host_builddir} 605 for file in ${host_headers} ${host_headers_extra} \ 606 ${thread_host_headers}; do \ 607 $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_builddir}; done 608 609install-pch: 610 $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pch_output_builddir} 611 for file in ${pch_output_builddir}/*; do \ 612 $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${pch_output_builddir}; done 613 614# By adding these files here, automake will remove them for 'make clean' 615CLEANFILES = ${pch_input} ${pch_output_builddir}/* 616 617# Stop implicit '.o' make rules from ever stomping on extensionless 618# headers, in the improbable case where some foolish, crack-addled 619# developer tries to create them via make in the include build 620# directory. (This is more of an example of how this kind of rule can 621# be made.) 622.PRECIOUS: $(std_headers_rename) $(c_base_headers_rename) 623$(std_headers_rename): ; @: 624$(c_base_headers_rename): ; @: 625