# tz/Makefile -- MiNTLib.
# Copyright (C) 1999 Guido Flohr <gufl0000@stud.uni-sb.de>
#
# This file is part of the MiNTLib project, and may only be used
# modified and distributed under the terms of the MiNTLib project
# license, COPYMINT.  By continuing to use, modify, or distribute
# this file you indicate that you have read the license and
# understand and accept it fully.

SHELL = /bin/sh

SUBDIRS = 

srcdir = .
top_srcdir = ..
subdir = tz
binsubdir = tz

dont_install_libs = yes

include $(top_srcdir)/configvars

include $(srcdir)/BINFILES
include $(srcdir)/SRCFILES
include $(srcdir)/MISCFILES

# Since "." may not be in PATH...
YEARISTYPE = $(srcdir)/yearistype

TZDEFS = -DHAVE_ADJTIME=0 -DHAVE_GETTEXT=0 -DHAVE_LONG_DOUBLE=0 \
-DHAVE_SETTIMEOFDAY=2 -DHAVE_STRERROR=1 -DTM_GMTOFF=tm_gmtoff \
-DTM_ZONE=tm_zone -Dunix -DNOID

TZCFLAGS = -nostdinc
TZLDFLAGS = -nostartfiles -nostdlib

zic = $(srcdir)/zic
ZIC = $(zic) $(ZFLAGS)

CSRCS = zic.c scheck.c ialloc.c zdump.c
DEP_FILES = $(addprefix $(srcdir)/deps/, $(patsubst %.c,%.P,$(CSRCS)))
TZCSRCS = zic.c scheck.c ialloc.c stack.c
TZCOBJS = zic.o scheck.o ialloc.o stack.o
TZDSRCS = zdump.c ialloc.c stack.c
TZDOBJS = zdump.o ialloc.o stack.o
TZISRCS = tzinit.c
TZIOBJS = tzinit.o
HEADERS = private.h
SOURCES = $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) tzselect.ksh
MANS = tzfile.5 tzselect.8 zic.8 zdump.8 tzinit.8
DOCS = README README.1st Theory $(MANS) Makefile
PRIMARY_YDATA =	africa antarctica asia australasia \
		europe northamerica southamerica
YDATA =	$(PRIMARY_YDATA) pacificnew etcetera factory backward
NDATA =	systemv
SDATA =	solar87 solar88 solar89
TDATA =	$(YDATA) $(NDATA) $(SDATA)
TABDATA = iso3166.tab zone.tab
DATA = $(YDATA) $(NDATA) $(SDATA) $(TABDATA) leapseconds yearistype.sh
MISC = usno1988 usno1989 usno1989a usno1995 usno1997 \
	Arts.htm WWW.htm gccdiffs checktab.awk

CRT0 = $(top_srcdir)/startup/crt0.o
LIBS = $(top_srcdir)/lib/$(lib_name_prefix)c$(lib_name_extender)

INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/src
COMPILE = $(CC) $(WARN) $(CFLAGS) $(TZCFLAGS) $(INCLUDES) $(DEFS) $(TZDEFS)

default: all

include $(top_srcdir)/bindist
include $(top_srcdir)/rules

all-here: zic zdump tzselect yearistype tzinit zonelist

ifndef CROSS
install: all-here zoneswarning zones
	$(ZIC) -y $(YEARISTYPE) \
		-d $(TZDIR) -l $(LOCALTIME) -p $(POSIXRULES)
	-rm -f $(TZDIR)/iso3166.tab $(TZDIR)/zone.tab
	$(INSTALL) -m 644 iso3166.tab zone.tab $(TZDIR)/.
	$(mkinstalldirs) $(TZETCDIR)
	for file in zic zdump tzselect tzinit; do \
		$(INSTALL) -m 755 $$file $(TZETCDIR); \
		echo "$(INSTALL) -m 755 $$file $(TZETCDIR)"; \
	done

zoneswarning:
	@echo "WARNING: Compiling and installing the time zone database"
	@echo "may take some time.  Have a cup of coffee!"
	
uninstall:
	rm -rf $(TZDIR)
	
uninstall-include:
uninstall-lib:

install-man:
	sections=""; \
	for manpage in $(MANS); do \
	  sections="$$sections $(TZMANDIR)/man`echo $$manpage | sed 's,^.*\\.,,'`"; \
	done; \
	mandirs=`echo $$sections | sort | uniq`; \
	for mandir in $$mandirs; do \
	  $(mkinstalldirs) $$mandir; \
	done; \
	for manpage in $(MANS); do \
	  section=`echo $$manpage | sed 's,^.*\\.,,'`; \
	  $(INSTALL) -m 644 $$manpage $(TZMANDIR)/man$$section; \
	  echo "$(INSTALL) -m 644 $$manpage $(TZMANDIR)/man$$section"; \
	done; \

uninstall-man:
	@for manpage in $(MANS); do \
	  section=`echo $$manpage | sed 's,^.*\\.,,'`; \
	  echo "rm -f $(TZMANDIR)/man$$section/$$manpage"; \
	  echo "rm -f $(TZMANDIR)/man$$section/$$manpage.gz"; \
	  echo "rm -f $(TZMANDIR)/man$$section/$$manpage.Z"; \
	  rm -f $(TZMANDIR)/man$$section/$$manpage; \
	  rm -f $(TZMANDIR)/man$$section/$$manpage.gz; \
	  rm -f $(TZMANDIR)/man$$section/$$manpage.Z; \
	done
	
else
install zones-warning uninstall uninstall-lib: cross-warning

install-man:

cross-warning:
	@echo "Not installing time zone database when cross-compiling."

.PHONY: install uninstall

endif

zdump: $(TZDOBJS) $(CRT0) $(LIBS)
	$(CC) $(LDFLAGS) $(TZLDFLAGS) $(CRT0) $(TZDOBJS) -o $@ $(LIBS)

zic: $(TZCOBJS) $(CRT0) $(LIBS) yearistype
	$(CC) $(LDFLAGS) $(TZLDFLAGS) $(CRT0) $(TZCOBJS) -o $@ $(LIBS)

tzinit: $(TZIOBJS) $(CRT0) $(LIBS)
	$(CC) $(LDFLAGS) $(TZLDFLAGS) $(CRT0) $(TZIOBJS) -o $@ $(LIBS)

ifndef CROSS
yearistype: yearistype.sh
	cp yearistype.sh yearistype
	chmod +x yearistype

posix_only: zic $(TDATA)
	$(ZIC) -y $(YEARISTYPE) -d $(TZDIR) -L /dev/null $(TDATA)

right_only: zic leapseconds $(TDATA)
	$(ZIC) -y $(YEARISTYPE) -d $(TZDIR) -L leapseconds $(TDATA)

other_two: zic leapseconds $(TDATA)
	$(ZIC) -y $(YEARISTYPE) -d $(TZDIR)/posix -L /dev/null $(TDATA)
	$(ZIC) -y $(YEARISTYPE) \
		-d $(TZDIR)/right -L leapseconds $(TDATA)

posix_right: posix_only other_two

right_posix: right_only other_two

zones: cleandb $(REDO)

cleandb:
	$(mkinstalldirs) $(TZDIR)
	
tzselect: tzselect.ksh
	sed \
		-e 's|AWK=[^}]*|AWK=$(AWK)|g' \
		-e 's|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \
		<$? >$@
	chmod +x $@

else
zones:
	@echo "Not installing time zone database when cross-compiling."

tzselect yearistype:
	touch $@
endif

install-include: # Do nothing here.

check_tables: checktab.awk $(PRIMARY_YDATA)
	$(AWK) -f checktab.awk $(PRIMARY_YDATA)

zonenames: $(TDATA)
	@awk '/^Zone/ { print $$2 } /^Link/ { print $$3 }' $(TDATA)

zonelist: $(TDATA)
	$(MAKE) zonenames >$@

.SUFFIXES:
.SUFFIXES: .o .c

.c.o:
	@echo '$(COMPILE) -c $< -o $@'; \
	$(COMPILE) -Wp,-MD,deps/$(@:.o=.P) -c $< -o $@

DEPS_MAGIC := $(shell mkdir $(srcdir)/deps > /dev/null 2>&1 || :)

-include $(DEP_FILES)

-include $(top_srcdir)/phony

