1# Copyright (C) 1991-2022 Free Software Foundation, Inc.
2# This file is part of the GNU C Library.
3
4# The GNU C Library is free software; you can redistribute it and/or
5# modify it under the terms of the GNU Lesser General Public
6# License as published by the Free Software Foundation; either
7# version 2.1 of the License, or (at your option) any later version.
8
9# The GNU C Library is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12# Lesser General Public License for more details.
13
14# You should have received a copy of the GNU Lesser General Public
15# License along with the GNU C Library; if not, see
16# <https://www.gnu.org/licenses/>.
17
18#
19#	Makefile for time routines
20#
21subdir	:= time
22
23include ../Makeconfig
24
25headers := time.h sys/time.h sys/timeb.h bits/time.h			\
26	   bits/types/clockid_t.h bits/types/clock_t.h			\
27	   bits/types/struct_itimerspec.h				\
28	   bits/types/struct_timespec.h bits/types/struct_timeval.h	\
29	   bits/types/struct_tm.h bits/types/timer_t.h			\
30	   bits/types/time_t.h bits/types/struct_timeb.h
31
32routines := offtime asctime clock ctime ctime_r difftime \
33	    gmtime localtime mktime time		 \
34	    gettimeofday settimeofday settimezone	 \
35	    adjtime tzset tzfile getitimer setitimer	 \
36	    stime dysize timegm ftime			 \
37	    getdate strptime strptime_l			 \
38	    strftime wcsftime strftime_l wcsftime_l	 \
39	    timespec_get timespec_getres		 \
40	    clock_getcpuclockid clock_getres		 \
41	    clock_gettime clock_settime clock_nanosleep
42
43aux :=	    era alt_digit lc-time-cleanup
44
45tests	:= test_time clocktest tst-posixtz tst-strptime tst_wcsftime \
46	   tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \
47	   tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \
48	   tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \
49	   tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 \
50	   tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 \
51	   tst-adjtime tst-ctime tst-difftime tst-mktime4 tst-clock_settime \
52	   tst-settimeofday tst-itimer tst-gmtime tst-timegm \
53	   tst-timespec_get tst-timespec_getres
54
55tests-time64 := \
56  tst-adjtime-time64 \
57  tst-clock-time64 \
58  tst-clock2-time64 \
59  tst-clock_nanosleep-time64 \
60  tst-clock_settime-time64 \
61  tst-cpuclock1-time64 \
62  tst-ctime-time64 \
63  tst-difftime-time64 \
64  tst-gmtime-time64 \
65  tst-itimer-time64 \
66  tst-mktime4-time64 \
67  tst-settimeofday-time64 \
68  tst-timegm-time64 \
69  tst-timespec_get-time64 \
70  tst-timespec_getres-time64 \
71  tst-y2039-time64
72
73include ../Rules
74
75ifeq ($(run-built-tests),yes)
76LOCALES := de_DE.ISO-8859-1 en_US.ISO-8859-1 ja_JP.EUC-JP fr_FR.UTF-8 \
77	   es_ES.UTF-8 pl_PL.UTF-8 ru_RU.UTF-8 \
78	   ja_JP.UTF-8 lo_LA.UTF-8 th_TH.UTF-8 \
79	   zh_TW.UTF-8 cmn_TW.UTF-8 hak_TW.UTF-8 \
80	   nan_TW.UTF-8 lzh_TW.UTF-8
81include ../gen-locales.mk
82
83$(objpfx)tst-ftime_l.out: $(gen-locales)
84$(objpfx)tst-strptime.out: $(gen-locales)
85$(objpfx)tst-strftime2.out: $(gen-locales)
86$(objpfx)tst-strftime3.out: $(gen-locales)
87endif
88
89$(objpfx)tst-clock_nanosleep: $(librt)
90$(objpfx)tst-clock_nanosleep-time64: $(librt)
91
92tz-cflags = -DTZDIR='"$(zonedir)"' \
93	    -DTZDEFAULT='"$(localtime-file)"' \
94	    -DTZDEFRULES='"$(posixrules-file)"'
95
96CFLAGS-tzfile.c += $(tz-cflags)
97CFLAGS-tzset.c += $(tz-cflags)
98CFLAGS-getdate.c += -fexceptions
99CFLAGS-clock_nanosleep.c += -fexceptions -fasynchronous-unwind-tables
100CFLAGS-nanosleep.c += -fexceptions -fasynchronous-unwind-tables
101
102# Don't warn about Y2k problem in strftime format string.
103CFLAGS-test_time.c += -Wno-format
104
105tst-getdate-ENV= DATEMSK=datemsk TZDIR=${common-objpfx}timezone/testdata
106test_time-ARGS= EST5EDT CST
107
108tst-tzname-ENV = TZDIR=${common-objpfx}timezone/testdata
109CPPFLAGS-tst-tzname.c += -DTZDEFRULES='"$(posixrules-file)"'
110
111bug-getdate1-ARGS = ${objpfx}bug-getdate1-fmt
112