-# Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public License as
-# published by the Free Software Foundation; either version 2 of the
-# License, or (at your option) any later version.
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
+# Lesser General Public License for more details.
-# You should have received a copy of the GNU Library General Public
-# License along with the GNU C Library; see the file COPYING.LIB. If not,
-# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
#
# Sub-makefile for login portion of the library.
subdir := login
-headers := utmp.h bits/utmp.h utmpx.h bits/utmpx.h lastlog.h pty.h
+include ../Makeconfig
-routines := getutent getutent_r getutid getutline getutid_r getutline_r \
- utmp_file utmp_daemon utmpname updwtmp \
- getpt grantpt unlockpt ptsname
+headers := utmp.h bits/utmp.h lastlog.h pty.h
-CFLAGS-grantpt.c = -DLIBEXECDIR='"$(libexecdir)"'
+routines := getlogin getlogin_r setlogin getlogin_r_chk \
+ getutent getutent_r getutid getutline getutid_r getutline_r \
+ utmp_file utmpname updwtmp getpt grantpt unlockpt ptsname \
+ ptsname_r_chk
-others = utmpd utmpdump pt_chown
-install-sbin = utmpd
-install-others = $(inst_libexecdir)/pt_chown
-utmpd-routines := connection database error request xtmp
-extra-objs := $(utmpd-routines:=.o)
+CFLAGS-grantpt.c += -DLIBEXECDIR='"$(libexecdir)"'
-distribute := utmp-private.h programs/xtmp.h programs/utmpd.h README.utmpd \
- programs/utmpd-private.h $(utmpd-routines:%=programs/%.c) \
- pty-internal.h
+others = utmpdump
+
+ifeq (yes,$(build-pt-chown))
+others += pt_chown
+others-pie = pt_chown
+install-others-programs = $(inst_libexecdir)/pt_chown
+endif
subdir-dirs = programs
vpath %.c programs
+tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin
+
# Build the -lutil library with these extra functions.
extra-libs := libutil
extra-libs-others := $(extra-libs)
libutil-routines:= login login_tty logout logwtmp openpty forkpty
-libutil-map := libutil.map
include ../Rules
-# pt_chown needs to be setuid root.
-$(inst_libexecdir)/pt_chown: $(objpfx)pt_chown
- $(INSTALL) -m 4755 -o root $< $@
+CFLAGS-getpt.c += -fexceptions
-$(objpfx)utmpd: $(utmpd-routines:%=$(objpfx)%.o)
+ifeq (yesyes,$(have-fpie)$(build-shared))
+pt_chown-cflags += $(pie-ccflag)
+endif
+ifeq (yes,$(have-libcap))
+libcap = -lcap
+endif
+CFLAGS-pt_chown.c += $(pt_chown-cflags)
+LDLIBS-pt_chown = $(libcap)
+ifeq (yesyes,$(have-fpie)$(build-shared))
+LDFLAGS-pt_chown = -Wl,-z,now
+endif
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libutil.so: $(common-objpfx)libc.so
+# pt_chown needs to be setuid root.
+$(inst_libexecdir)/pt_chown: $(objpfx)pt_chown $(+force)
+ $(make-target-directory)
+ -$(INSTALL_PROGRAM) -m 4755 -o root $< $@