mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
This is the largest missing piece of C++20 support. Only the cxx11 ABI is supported, due to the use of std::string in the API for time zones. For the old gcc4 ABI, utc_clock and leap seconds are supported, but only using a hardcoded list of leap seconds, no up-to-date tzdb::leap_seconds information is available, and no time zones or zoned_time conversions. The implementation currently depends on a tzdata.zi file being provided by the OS or the user. The expected location is /usr/share/zoneinfo but that can be changed using --with-libstdcxx-zoneinfo-dir=PATH. On targets that support it there is also a weak symbol that users can override in their own program (which also helps with testing): extern "C++" const char* __gnu_cxx::zoneinfo_dir_override(); If no file is found, a fallback tzdb object will be created which only contains the "Etc/UTC" and "Etc/GMT" time zones. A leapseconds file is also expected in the same directory, but if that isn't present then a hardcoded list of leapseconds is used, which is correct at least as far as 2023-06-28 (and it currently looks like no leap second will be inserted for a few years). The tzdata.zi and leapseconds files from https://www.iana.org/time-zones are in the public domain, so shipping copies of them with GCC would be an option. However, the tzdata.zi file will rapidly become outdated, so users should really provide it themselves (or convince their OS vendor to do so). It would also be possible to implement an alternative parser for the compiled tzdata files (one per time zone) under /usr/share/zoneinfo. Those files are present on more operating systems, but do not contain all the information present in tzdata.zi. Specifically, the "links" are not present, so that e.g. "UTC" and "Universal" are distinct time zones, rather than both being links to the canonical "Etc/UTC" zone. For some platforms those files are hard links to the same file, but there's no indication which zone is the canonical name and which is a link. Other platforms just store them in different inodes anyway. I do not plan to add such an alternative parser for the compiled files. That would need to be contributed by maintainers or users of targets that require it, if making tzdata.zi available is not an option. The library ABI would not need to change for a new tzdb implementation, because everything in tzdb_list, tzdb and time_zone is implemented as a pimpl (except for the shared_ptr links between nodes, described below). That means the new exported symbols added by this commit should be stable even if the implementation is completely rewritten. The information from tzdata.zi is parsed and stored in data structures that closely model the info in the file. This is a space-efficient representation that uses less memory that storing every transition for every time zone. It also avoids spending time expanding that information into time zone transitions that might never be needed by the program. When a conversion to/from a local time to UTC is requested the information will be processed to determine the time zone transitions close to the time being converted. There is a bug in some time zone transitions. When generating a sys_info object immediately after one that was previously generated, we need to find the previous rule that was in effect and note its offset and letters. This is so that the start time and abbreviation of the new sys_info will be correct. This only affects time zones that use a format like "C%sT" where the LETTERS replacing %s are non-empty for standard time, e.g. "Asia/Shanghai" which uses "CST" for standard time and "CDT" for daylight time. The tzdb_list structure maintains a linked list of tzdb nodes using shared_ptr links. This allows the iterators into the list to share ownership with the list itself. This offers a non-portable solution to a lifetime issue in the API. Because tzdb objects can be erased from the list using tzdb_list::erase_after, separate modules/libraries in a large program cannot guarantee that any const tzdb& or const time_zone* remains valid indefinitely. Holding onto a tzdb_list::const_iterator will extend the tzdb object's lifetime, even if it's erased from the list. An alternative design would be for the list iterator to hold a weak_ptr. This would allow users to test whether the tzdb still exists when the iterator is dereferenced, which is better than just having a dangling raw pointer. That doesn't actually extend the tzdb's lifetime though, and every use of it would need to be preceded by checking the weak_ptr. Using shared_ptr adds a little bit of overhead but allows users to solve the lifetime issue if they rely on the libstdc++-specific iterator property. libstdc++-v3/ChangeLog: * acinclude.m4 (GLIBCXX_ZONEINFO_DIR): New macro. * config.h.in: Regenerate. * config/abi/pre/gnu.ver: Export new symbols. * configure: Regenerate. * configure.ac (GLIBCXX_ZONEINFO_DIR): Use new macro. * include/std/chrono (utc_clock::from_sys): Correct handling of leap seconds. (nonexistent_local_time::_M_make_what_str): Define. (ambiguous_local_time::_M_make_what_str): Define. (__throw_bad_local_time): Define new function. (time_zone, tzdb_list, tzdb): Implement all members. (remote_version, zoned_time, get_leap_second_info): Define. * include/std/version: Add comment for __cpp_lib_chrono. * src/c++20/Makefile.am: Add new file. * src/c++20/Makefile.in: Regenerate. * src/c++20/tzdb.cc: New file. * testsuite/lib/libstdc++.exp: Define effective target tzdb. * testsuite/std/time/clock/file/members.cc: Check file_time alias and file_clock::now() member. * testsuite/std/time/clock/gps/1.cc: Likewise for gps_clock. * testsuite/std/time/clock/tai/1.cc: Likewise for tai_clock. * testsuite/std/time/syn_c++20.cc: Uncomment everything except parse. * testsuite/std/time/clock/utc/leap_second_info.cc: New test. * testsuite/std/time/exceptions.cc: New test. * testsuite/std/time/time_zone/get_info_local.cc: New test. * testsuite/std/time/time_zone/get_info_sys.cc: New test. * testsuite/std/time/time_zone/requirements.cc: New test. * testsuite/std/time/tzdb/1.cc: New test. * testsuite/std/time/tzdb/leap_seconds.cc: New test. * testsuite/std/time/tzdb_list/1.cc: New test. * testsuite/std/time/tzdb_list/requirements.cc: New test. * testsuite/std/time/zoned_time/1.cc: New test. * testsuite/std/time/zoned_time/custom.cc: New test. * testsuite/std/time/zoned_time/deduction.cc: New test. * testsuite/std/time/zoned_time/req_neg.cc: New test. * testsuite/std/time/zoned_time/requirements.cc: New test. * testsuite/std/time/zoned_traits.cc: New test.
748 lines
22 KiB
Makefile
748 lines
22 KiB
Makefile
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
|
# @configure_input@
|
|
|
|
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
|
|
|
# This Makefile.in is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
# PARTICULAR PURPOSE.
|
|
|
|
@SET_MAKE@
|
|
|
|
VPATH = @srcdir@
|
|
am__is_gnu_make = { \
|
|
if test -z '$(MAKELEVEL)'; then \
|
|
false; \
|
|
elif test -n '$(MAKE_HOST)'; then \
|
|
true; \
|
|
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
|
true; \
|
|
else \
|
|
false; \
|
|
fi; \
|
|
}
|
|
am__make_running_with_option = \
|
|
case $${target_option-} in \
|
|
?) ;; \
|
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
|
"target option '$${target_option-}' specified" >&2; \
|
|
exit 1;; \
|
|
esac; \
|
|
has_opt=no; \
|
|
sane_makeflags=$$MAKEFLAGS; \
|
|
if $(am__is_gnu_make); then \
|
|
sane_makeflags=$$MFLAGS; \
|
|
else \
|
|
case $$MAKEFLAGS in \
|
|
*\\[\ \ ]*) \
|
|
bs=\\; \
|
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
|
esac; \
|
|
fi; \
|
|
skip_next=no; \
|
|
strip_trailopt () \
|
|
{ \
|
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
|
}; \
|
|
for flg in $$sane_makeflags; do \
|
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
|
case $$flg in \
|
|
*=*|--*) continue;; \
|
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
|
-*I?*) strip_trailopt 'I';; \
|
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
|
-*O?*) strip_trailopt 'O';; \
|
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
|
-*l?*) strip_trailopt 'l';; \
|
|
-[dEDm]) skip_next=yes;; \
|
|
-[JT]) skip_next=yes;; \
|
|
esac; \
|
|
case $$flg in \
|
|
*$$target_option*) has_opt=yes; break;; \
|
|
esac; \
|
|
done; \
|
|
test $$has_opt = yes
|
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
|
pkgdatadir = $(datadir)/@PACKAGE@
|
|
pkgincludedir = $(includedir)/@PACKAGE@
|
|
pkglibdir = $(libdir)/@PACKAGE@
|
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
install_sh_DATA = $(install_sh) -c -m 644
|
|
install_sh_PROGRAM = $(install_sh) -c
|
|
install_sh_SCRIPT = $(install_sh) -c
|
|
INSTALL_HEADER = $(INSTALL_DATA)
|
|
transform = $(program_transform_name)
|
|
NORMAL_INSTALL = :
|
|
PRE_INSTALL = :
|
|
POST_INSTALL = :
|
|
NORMAL_UNINSTALL = :
|
|
PRE_UNINSTALL = :
|
|
POST_UNINSTALL = :
|
|
build_triplet = @build@
|
|
host_triplet = @host@
|
|
target_triplet = @target@
|
|
subdir = src/c++20
|
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
|
|
$(top_srcdir)/../config/enable.m4 \
|
|
$(top_srcdir)/../config/futex.m4 \
|
|
$(top_srcdir)/../config/hwcaps.m4 \
|
|
$(top_srcdir)/../config/iconv.m4 \
|
|
$(top_srcdir)/../config/lead-dot.m4 \
|
|
$(top_srcdir)/../config/lib-ld.m4 \
|
|
$(top_srcdir)/../config/lib-link.m4 \
|
|
$(top_srcdir)/../config/lib-prefix.m4 \
|
|
$(top_srcdir)/../config/lthostflags.m4 \
|
|
$(top_srcdir)/../config/multi.m4 \
|
|
$(top_srcdir)/../config/no-executables.m4 \
|
|
$(top_srcdir)/../config/override.m4 \
|
|
$(top_srcdir)/../config/toolexeclibdir.m4 \
|
|
$(top_srcdir)/../config/unwind_ipinfo.m4 \
|
|
$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
|
|
$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
|
|
$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
|
|
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
|
|
$(top_srcdir)/../config/gc++filt.m4 \
|
|
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
|
|
$(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
|
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
$(ACLOCAL_M4)
|
|
DIST_COMMON = $(srcdir)/Makefile.am
|
|
CONFIG_HEADER = $(top_builddir)/config.h
|
|
CONFIG_CLEAN_FILES =
|
|
CONFIG_CLEAN_VPATH_FILES =
|
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
|
libc__20convenience_la_LIBADD =
|
|
am__objects_1 = tzdb.lo
|
|
@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = sstream-inst.lo
|
|
am_libc__20convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2)
|
|
libc__20convenience_la_OBJECTS = $(am_libc__20convenience_la_OBJECTS)
|
|
AM_V_lt = $(am__v_lt_@AM_V@)
|
|
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
|
am__v_lt_0 = --silent
|
|
am__v_lt_1 =
|
|
AM_V_P = $(am__v_P_@AM_V@)
|
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
|
am__v_P_0 = false
|
|
am__v_P_1 = :
|
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
|
am__v_GEN_0 = @echo " GEN " $@;
|
|
am__v_GEN_1 =
|
|
AM_V_at = $(am__v_at_@AM_V@)
|
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
|
am__v_at_0 = @
|
|
am__v_at_1 =
|
|
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
|
depcomp =
|
|
am__depfiles_maybe =
|
|
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
|
AM_V_CXX = $(am__v_CXX_@AM_V@)
|
|
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
|
|
am__v_CXX_0 = @echo " CXX " $@;
|
|
am__v_CXX_1 =
|
|
CXXLD = $(CXX)
|
|
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
|
|
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
|
|
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
|
am__v_CXXLD_1 =
|
|
SOURCES = $(libc__20convenience_la_SOURCES)
|
|
am__can_run_installinfo = \
|
|
case $$AM_UPDATE_INFO_DIR in \
|
|
n|no|NO) false;; \
|
|
*) (install-info --version) >/dev/null 2>&1;; \
|
|
esac
|
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
|
# Read a list of newline-separated strings from the standard input,
|
|
# and print each of them once, without duplicates. Input order is
|
|
# *not* preserved.
|
|
am__uniquify_input = $(AWK) '\
|
|
BEGIN { nonempty = 0; } \
|
|
{ items[$$0] = 1; nonempty = 1; } \
|
|
END { if (nonempty) { for (i in items) print i; }; } \
|
|
'
|
|
# Make sure the list of sources is unique. This is necessary because,
|
|
# e.g., the same source file might be shared among _SOURCES variables
|
|
# for different programs/libraries.
|
|
am__define_uniq_tagged_files = \
|
|
list='$(am__tagged_files)'; \
|
|
unique=`for i in $$list; do \
|
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
done | $(am__uniquify_input)`
|
|
ETAGS = etags
|
|
CTAGS = ctags
|
|
ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
|
|
ACLOCAL = @ACLOCAL@
|
|
ALLOCATOR_H = @ALLOCATOR_H@
|
|
ALLOCATOR_NAME = @ALLOCATOR_NAME@
|
|
ALLOC_FILE = @ALLOC_FILE@
|
|
AMTAR = @AMTAR@
|
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
|
AR = @AR@
|
|
AS = @AS@
|
|
ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
|
|
ATOMIC_FLAGS = @ATOMIC_FLAGS@
|
|
ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
|
|
AUTOCONF = @AUTOCONF@
|
|
AUTOHEADER = @AUTOHEADER@
|
|
AUTOMAKE = @AUTOMAKE@
|
|
AWK = @AWK@
|
|
BACKTRACE_CPPFLAGS = @BACKTRACE_CPPFLAGS@
|
|
BACKTRACE_SUPPORTED = @BACKTRACE_SUPPORTED@
|
|
BACKTRACE_SUPPORTS_THREADS = @BACKTRACE_SUPPORTS_THREADS@
|
|
BACKTRACE_USES_MALLOC = @BACKTRACE_USES_MALLOC@
|
|
BASIC_FILE_CC = @BASIC_FILE_CC@
|
|
BASIC_FILE_H = @BASIC_FILE_H@
|
|
CC = @CC@
|
|
CCODECVT_CC = @CCODECVT_CC@
|
|
CCOLLATE_CC = @CCOLLATE_CC@
|
|
CCTYPE_CC = @CCTYPE_CC@
|
|
CFLAGS = @CFLAGS@
|
|
CLOCALE_CC = @CLOCALE_CC@
|
|
CLOCALE_H = @CLOCALE_H@
|
|
CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
|
|
CMESSAGES_CC = @CMESSAGES_CC@
|
|
CMESSAGES_H = @CMESSAGES_H@
|
|
CMONEY_CC = @CMONEY_CC@
|
|
CNUMERIC_CC = @CNUMERIC_CC@
|
|
CPP = @CPP@
|
|
CPPFLAGS = @CPPFLAGS@
|
|
CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
|
|
CPU_OPT_BITS_RANDOM = @CPU_OPT_BITS_RANDOM@
|
|
CPU_OPT_EXT_RANDOM = @CPU_OPT_EXT_RANDOM@
|
|
CSTDIO_H = @CSTDIO_H@
|
|
CTIME_CC = @CTIME_CC@
|
|
CTIME_H = @CTIME_H@
|
|
CXX = @CXX@
|
|
CXXCPP = @CXXCPP@
|
|
CXXFILT = @CXXFILT@
|
|
CXXFLAGS = @CXXFLAGS@
|
|
CYGPATH_W = @CYGPATH_W@
|
|
C_INCLUDE_DIR = @C_INCLUDE_DIR@
|
|
DBLATEX = @DBLATEX@
|
|
DEBUG_FLAGS = @DEBUG_FLAGS@
|
|
DEFS = @DEFS@
|
|
DOT = @DOT@
|
|
DOXYGEN = @DOXYGEN@
|
|
DSYMUTIL = @DSYMUTIL@
|
|
DUMPBIN = @DUMPBIN@
|
|
ECHO_C = @ECHO_C@
|
|
ECHO_N = @ECHO_N@
|
|
ECHO_T = @ECHO_T@
|
|
EGREP = @EGREP@
|
|
EH_POOL_FLAGS = @EH_POOL_FLAGS@
|
|
ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
|
|
EXEEXT = @EXEEXT@
|
|
EXTRA_CFLAGS = @EXTRA_CFLAGS@
|
|
EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
|
|
FGREP = @FGREP@
|
|
FORMAT_FILE = @FORMAT_FILE@
|
|
FREESTANDING_FLAGS = @FREESTANDING_FLAGS@
|
|
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
|
|
GLIBCXX_LIBS = @GLIBCXX_LIBS@
|
|
GREP = @GREP@
|
|
HWCAP_CFLAGS = @HWCAP_CFLAGS@
|
|
INSTALL = @INSTALL@
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
LD = @LD@
|
|
LDFLAGS = @LDFLAGS@
|
|
LIBICONV = @LIBICONV@
|
|
LIBOBJS = @LIBOBJS@
|
|
LIBS = @LIBS@
|
|
LIBTOOL = @LIBTOOL@
|
|
LIPO = @LIPO@
|
|
LN_S = @LN_S@
|
|
LONG_DOUBLE_128_FLAGS = @LONG_DOUBLE_128_FLAGS@
|
|
LONG_DOUBLE_ALT128_COMPAT_FLAGS = @LONG_DOUBLE_ALT128_COMPAT_FLAGS@
|
|
LONG_DOUBLE_COMPAT_FLAGS = @LONG_DOUBLE_COMPAT_FLAGS@
|
|
LTLIBICONV = @LTLIBICONV@
|
|
LTLIBOBJS = @LTLIBOBJS@
|
|
MAINT = @MAINT@
|
|
MAKEINFO = @MAKEINFO@
|
|
MKDIR_P = @MKDIR_P@
|
|
NM = @NM@
|
|
NMEDIT = @NMEDIT@
|
|
OBJDUMP = @OBJDUMP@
|
|
OBJEXT = @OBJEXT@
|
|
OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
|
|
OPT_LDFLAGS = @OPT_LDFLAGS@
|
|
OS_INC_SRCDIR = @OS_INC_SRCDIR@
|
|
OTOOL = @OTOOL@
|
|
OTOOL64 = @OTOOL64@
|
|
PACKAGE = @PACKAGE@
|
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
PACKAGE_NAME = @PACKAGE_NAME@
|
|
PACKAGE_STRING = @PACKAGE_STRING@
|
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
PACKAGE_URL = @PACKAGE_URL@
|
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
PDFLATEX = @PDFLATEX@
|
|
RANLIB = @RANLIB@
|
|
SECTION_FLAGS = @SECTION_FLAGS@
|
|
SECTION_LDFLAGS = @SECTION_LDFLAGS@
|
|
SED = @SED@
|
|
SET_MAKE = @SET_MAKE@
|
|
SHELL = @SHELL@
|
|
STRIP = @STRIP@
|
|
SYMVER_FILE = @SYMVER_FILE@
|
|
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
|
|
USE_NLS = @USE_NLS@
|
|
VERSION = @VERSION@
|
|
VIEW_FILE = @VIEW_FILE@
|
|
VTV_CXXFLAGS = @VTV_CXXFLAGS@
|
|
VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
|
|
VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
|
|
WARN_FLAGS = @WARN_FLAGS@
|
|
XMLCATALOG = @XMLCATALOG@
|
|
XMLLINT = @XMLLINT@
|
|
XSLTPROC = @XSLTPROC@
|
|
XSL_STYLE_DIR = @XSL_STYLE_DIR@
|
|
abs_builddir = @abs_builddir@
|
|
abs_srcdir = @abs_srcdir@
|
|
abs_top_builddir = @abs_top_builddir@
|
|
abs_top_srcdir = @abs_top_srcdir@
|
|
ac_ct_CC = @ac_ct_CC@
|
|
ac_ct_CXX = @ac_ct_CXX@
|
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
|
am__leading_dot = @am__leading_dot@
|
|
am__tar = @am__tar@
|
|
am__untar = @am__untar@
|
|
baseline_dir = @baseline_dir@
|
|
baseline_subdir_switch = @baseline_subdir_switch@
|
|
bindir = @bindir@
|
|
build = @build@
|
|
build_alias = @build_alias@
|
|
build_cpu = @build_cpu@
|
|
build_os = @build_os@
|
|
build_vendor = @build_vendor@
|
|
builddir = @builddir@
|
|
check_msgfmt = @check_msgfmt@
|
|
datadir = @datadir@
|
|
datarootdir = @datarootdir@
|
|
docdir = @docdir@
|
|
dvidir = @dvidir@
|
|
enable_shared = @enable_shared@
|
|
enable_static = @enable_static@
|
|
exec_prefix = @exec_prefix@
|
|
get_gcc_base_ver = @get_gcc_base_ver@
|
|
glibcxx_MOFILES = @glibcxx_MOFILES@
|
|
glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
|
|
glibcxx_POFILES = @glibcxx_POFILES@
|
|
glibcxx_builddir = @glibcxx_builddir@
|
|
glibcxx_compiler_pic_flag = @glibcxx_compiler_pic_flag@
|
|
glibcxx_compiler_shared_flag = @glibcxx_compiler_shared_flag@
|
|
glibcxx_cxx98_abi = @glibcxx_cxx98_abi@
|
|
glibcxx_localedir = @glibcxx_localedir@
|
|
glibcxx_lt_pic_flag = @glibcxx_lt_pic_flag@
|
|
glibcxx_prefixdir = @glibcxx_prefixdir@
|
|
glibcxx_srcdir = @glibcxx_srcdir@
|
|
glibcxx_toolexecdir = @glibcxx_toolexecdir@
|
|
glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
|
|
gxx_include_dir = @gxx_include_dir@
|
|
host = @host@
|
|
host_alias = @host_alias@
|
|
host_cpu = @host_cpu@
|
|
host_os = @host_os@
|
|
host_vendor = @host_vendor@
|
|
htmldir = @htmldir@
|
|
includedir = @includedir@
|
|
infodir = @infodir@
|
|
install_sh = @install_sh@
|
|
libdir = @libdir@
|
|
libexecdir = @libexecdir@
|
|
libtool_VERSION = @libtool_VERSION@
|
|
localedir = @localedir@
|
|
localstatedir = @localstatedir@
|
|
lt_host_flags = @lt_host_flags@
|
|
mandir = @mandir@
|
|
mkdir_p = @mkdir_p@
|
|
multi_basedir = @multi_basedir@
|
|
oldincludedir = @oldincludedir@
|
|
pdfdir = @pdfdir@
|
|
port_specific_symbol_files = @port_specific_symbol_files@
|
|
prefix = @prefix@
|
|
program_transform_name = @program_transform_name@
|
|
psdir = @psdir@
|
|
python_mod_dir = @python_mod_dir@
|
|
sbindir = @sbindir@
|
|
sharedstatedir = @sharedstatedir@
|
|
srcdir = @srcdir@
|
|
sysconfdir = @sysconfdir@
|
|
target = @target@
|
|
target_alias = @target_alias@
|
|
target_cpu = @target_cpu@
|
|
target_os = @target_os@
|
|
target_vendor = @target_vendor@
|
|
thread_header = @thread_header@
|
|
tmake_file = @tmake_file@
|
|
top_build_prefix = @top_build_prefix@
|
|
top_builddir = @top_builddir@
|
|
top_srcdir = @top_srcdir@
|
|
toplevel_builddir = @toplevel_builddir@
|
|
toplevel_srcdir = @toplevel_srcdir@
|
|
|
|
# May be used by various substitution variables.
|
|
gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
|
|
MAINT_CHARSET = latin1
|
|
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
|
|
PWD_COMMAND = $${PWDCMD-pwd}
|
|
STAMP = echo timestamp >
|
|
toolexecdir = $(glibcxx_toolexecdir)
|
|
toolexeclibdir = $(glibcxx_toolexeclibdir)
|
|
@ENABLE_WERROR_FALSE@WERROR_FLAG =
|
|
@ENABLE_WERROR_TRUE@WERROR_FLAG = -Werror
|
|
@ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS =
|
|
@ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates
|
|
@GLIBCXX_LDBL_ALT128_COMPAT_FALSE@LDBL_128_FLAGS =
|
|
@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@LDBL_128_FLAGS = $(LONG_DOUBLE_128_FLAGS)
|
|
|
|
# These bits are all figured out from configure. Look in acinclude.m4
|
|
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
|
|
CONFIG_CXXFLAGS = \
|
|
$(SECTION_FLAGS) $(HWCAP_CFLAGS) -frandom-seed=$@ $(LDBL_128_FLAGS)
|
|
|
|
WARN_CXXFLAGS = \
|
|
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
|
|
|
|
|
|
# -I/-D flags to pass when compiling.
|
|
AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
|
|
|
|
# Convenience library for C++17 runtime.
|
|
noinst_LTLIBRARIES = libc++20convenience.la
|
|
headers =
|
|
# XTEMPLATE_FLAGS =
|
|
@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources =
|
|
|
|
# XTEMPLATE_FLAGS = -fno-implicit-templates
|
|
@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
|
|
@ENABLE_EXTERN_TEMPLATE_TRUE@ sstream-inst.cc
|
|
|
|
sources = tzdb.cc
|
|
libc__20convenience_la_SOURCES = $(sources) $(inst_sources)
|
|
|
|
# AM_CXXFLAGS needs to be in each subdirectory so that it can be
|
|
# modified in a per-library or per-sub-library way. Need to manually
|
|
# set this option because CONFIG_CXXFLAGS has to be after
|
|
# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
|
|
# as the occasion calls for it.
|
|
AM_CXXFLAGS = \
|
|
-std=gnu++20 \
|
|
$(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
|
|
$(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
|
|
$(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) \
|
|
-fimplicit-templates
|
|
|
|
AM_MAKEFLAGS = \
|
|
"gxx_include_dir=$(gxx_include_dir)"
|
|
|
|
|
|
# Libtool notes
|
|
|
|
# 1) In general, libtool expects an argument such as `--tag=CXX' when
|
|
# using the C++ compiler, because that will enable the settings
|
|
# detected when C++ support was being configured. However, when no
|
|
# such flag is given in the command line, libtool attempts to figure
|
|
# it out by matching the compiler name in each configuration section
|
|
# against a prefix of the command line. The problem is that, if the
|
|
# compiler name and its initial flags stored in the libtool
|
|
# configuration file don't match those in the command line, libtool
|
|
# can't decide which configuration to use, and it gives up. The
|
|
# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
|
|
# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
|
|
# attempt to infer which configuration to use.
|
|
#
|
|
# The second tag argument, `--tag disable-shared` means that libtool
|
|
# only compiles each source once, for static objects. In actuality,
|
|
# glibcxx_lt_pic_flag and glibcxx_compiler_shared_flag are added to
|
|
# the libtool command that is used create the object, which is
|
|
# suitable for shared libraries. The `--tag disable-shared` must be
|
|
# placed after --tag CXX lest things CXX undo the affect of
|
|
# disable-shared.
|
|
|
|
# 2) Need to explicitly set LTCXXCOMPILE so that EXTRA_CXX_FLAGS is
|
|
# last. (That way, things like -O2 passed down from the toplevel can
|
|
# be overridden by --enable-debug.)
|
|
LTCXXCOMPILE = \
|
|
$(LIBTOOL) --tag CXX --tag disable-shared \
|
|
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
|
--mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \
|
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(EXTRA_CXX_FLAGS)
|
|
|
|
LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
|
|
|
|
# 3) We'd have a problem when building the shared libstdc++ object if
|
|
# the rules automake generates would be used. We cannot allow g++ to
|
|
# be used since this would add -lstdc++ to the link line which of
|
|
# course is problematic at this point. So, we get the top-level
|
|
# directory to configure libstdc++-v3 to use gcc as the C++
|
|
# compilation driver.
|
|
CXXLINK = \
|
|
$(LIBTOOL) --tag CXX --tag disable-shared \
|
|
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
|
--mode=link $(CXX) \
|
|
$(VTV_CXXLINKFLAGS) \
|
|
$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
|
|
|
|
all: all-am
|
|
|
|
.SUFFIXES:
|
|
.SUFFIXES: .cc .lo .o .obj
|
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
|
|
@for dep in $?; do \
|
|
case '$(am__configure_deps)' in \
|
|
*$$dep*) \
|
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
|
exit 1;; \
|
|
esac; \
|
|
done; \
|
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/c++20/Makefile'; \
|
|
$(am__cd) $(top_srcdir) && \
|
|
$(AUTOMAKE) --foreign --ignore-deps src/c++20/Makefile
|
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
@case '$?' in \
|
|
*config.status*) \
|
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
|
*) \
|
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
|
esac;
|
|
$(top_srcdir)/fragment.am $(am__empty):
|
|
|
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
|
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
$(am__aclocal_m4_deps):
|
|
|
|
clean-noinstLTLIBRARIES:
|
|
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
|
@list='$(noinst_LTLIBRARIES)'; \
|
|
locs=`for p in $$list; do echo $$p; done | \
|
|
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
|
sort -u`; \
|
|
test -z "$$locs" || { \
|
|
echo rm -f $${locs}; \
|
|
rm -f $${locs}; \
|
|
}
|
|
|
|
libc++20convenience.la: $(libc__20convenience_la_OBJECTS) $(libc__20convenience_la_DEPENDENCIES) $(EXTRA_libc__20convenience_la_DEPENDENCIES)
|
|
$(AM_V_CXXLD)$(CXXLINK) $(libc__20convenience_la_OBJECTS) $(libc__20convenience_la_LIBADD) $(LIBS)
|
|
|
|
mostlyclean-compile:
|
|
-rm -f *.$(OBJEXT)
|
|
|
|
distclean-compile:
|
|
-rm -f *.tab.c
|
|
|
|
.cc.o:
|
|
$(AM_V_CXX)$(CXXCOMPILE) -c -o $@ $<
|
|
|
|
.cc.obj:
|
|
$(AM_V_CXX)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
|
|
|
.cc.lo:
|
|
$(AM_V_CXX)$(LTCXXCOMPILE) -c -o $@ $<
|
|
|
|
mostlyclean-libtool:
|
|
-rm -f *.lo
|
|
|
|
clean-libtool:
|
|
-rm -rf .libs _libs
|
|
|
|
ID: $(am__tagged_files)
|
|
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
|
tags: tags-am
|
|
TAGS: tags
|
|
|
|
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
|
set x; \
|
|
here=`pwd`; \
|
|
$(am__define_uniq_tagged_files); \
|
|
shift; \
|
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
|
test -n "$$unique" || unique=$$empty_fix; \
|
|
if test $$# -gt 0; then \
|
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
"$$@" $$unique; \
|
|
else \
|
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
$$unique; \
|
|
fi; \
|
|
fi
|
|
ctags: ctags-am
|
|
|
|
CTAGS: ctags
|
|
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
|
$(am__define_uniq_tagged_files); \
|
|
test -z "$(CTAGS_ARGS)$$unique" \
|
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|
$$unique
|
|
|
|
GTAGS:
|
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
|
&& $(am__cd) $(top_srcdir) \
|
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
|
cscopelist: cscopelist-am
|
|
|
|
cscopelist-am: $(am__tagged_files)
|
|
list='$(am__tagged_files)'; \
|
|
case "$(srcdir)" in \
|
|
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
|
*) sdir=$(subdir)/$(srcdir) ;; \
|
|
esac; \
|
|
for i in $$list; do \
|
|
if test -f "$$i"; then \
|
|
echo "$(subdir)/$$i"; \
|
|
else \
|
|
echo "$$sdir/$$i"; \
|
|
fi; \
|
|
done >> $(top_builddir)/cscope.files
|
|
|
|
distclean-tags:
|
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
|
check-am: all-am
|
|
check: check-am
|
|
all-am: Makefile $(LTLIBRARIES)
|
|
installdirs:
|
|
install: install-am
|
|
install-exec: install-exec-am
|
|
install-data: install-data-am
|
|
uninstall: uninstall-am
|
|
|
|
install-am: all-am
|
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
|
|
installcheck: installcheck-am
|
|
install-strip:
|
|
if test -z '$(STRIP)'; then \
|
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
install; \
|
|
else \
|
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
|
fi
|
|
mostlyclean-generic:
|
|
|
|
clean-generic:
|
|
|
|
distclean-generic:
|
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
|
|
|
maintainer-clean-generic:
|
|
@echo "This command is intended for maintainers to use"
|
|
@echo "it deletes files that may require special tools to rebuild."
|
|
clean: clean-am
|
|
|
|
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
|
mostlyclean-am
|
|
|
|
distclean: distclean-am
|
|
-rm -f Makefile
|
|
distclean-am: clean-am distclean-compile distclean-generic \
|
|
distclean-tags
|
|
|
|
dvi: dvi-am
|
|
|
|
dvi-am:
|
|
|
|
html: html-am
|
|
|
|
html-am:
|
|
|
|
info: info-am
|
|
|
|
info-am:
|
|
|
|
install-data-am:
|
|
|
|
install-dvi: install-dvi-am
|
|
|
|
install-dvi-am:
|
|
|
|
install-exec-am:
|
|
|
|
install-html: install-html-am
|
|
|
|
install-html-am:
|
|
|
|
install-info: install-info-am
|
|
|
|
install-info-am:
|
|
|
|
install-man:
|
|
|
|
install-pdf: install-pdf-am
|
|
|
|
install-pdf-am:
|
|
|
|
install-ps: install-ps-am
|
|
|
|
install-ps-am:
|
|
|
|
installcheck-am:
|
|
|
|
maintainer-clean: maintainer-clean-am
|
|
-rm -f Makefile
|
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
|
|
mostlyclean: mostlyclean-am
|
|
|
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
|
mostlyclean-libtool
|
|
|
|
pdf: pdf-am
|
|
|
|
pdf-am:
|
|
|
|
ps: ps-am
|
|
|
|
ps-am:
|
|
|
|
uninstall-am:
|
|
|
|
.MAKE: install-am install-strip
|
|
|
|
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
|
clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
|
|
ctags-am distclean distclean-compile distclean-generic \
|
|
distclean-libtool distclean-tags dvi dvi-am html html-am info \
|
|
info-am install install-am install-data install-data-am \
|
|
install-dvi install-dvi-am install-exec install-exec-am \
|
|
install-html install-html-am install-info install-info-am \
|
|
install-man install-pdf install-pdf-am install-ps \
|
|
install-ps-am install-strip installcheck installcheck-am \
|
|
installdirs maintainer-clean maintainer-clean-generic \
|
|
mostlyclean mostlyclean-compile mostlyclean-generic \
|
|
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
|
uninstall-am
|
|
|
|
.PRECIOUS: Makefile
|
|
|
|
|
|
vpath % $(top_srcdir)/src/c++20
|
|
|
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
.NOEXPORT:
|