1# Copyright (C) 1996-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# Sub-makefile for login portion of the library. 20# 21 22subdir := login 23 24include ../Makeconfig 25 26headers := utmp.h bits/utmp.h lastlog.h pty.h 27 28routines := getlogin getlogin_r setlogin getlogin_r_chk \ 29 getutent getutent_r getutid getutline getutid_r getutline_r \ 30 utmp_file utmpname updwtmp getpt grantpt unlockpt ptsname \ 31 ptsname_r_chk login login_tty logout logwtmp openpty forkpty 32 33CFLAGS-grantpt.c += -DLIBEXECDIR='"$(libexecdir)"' 34 35others = utmpdump 36 37ifeq (yes,$(build-pt-chown)) 38others += pt_chown 39others-pie = pt_chown 40install-others-programs = $(inst_libexecdir)/pt_chown 41endif 42 43subdir-dirs = programs 44vpath %.c programs 45 46tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \ 47 tst-pututxline-lockfail tst-pututxline-cache 48 49# Empty compatibility library for old binaries. 50extra-libs := libutil 51extra-libs-others := $(extra-libs) 52ifeq ($(have-GLIBC_2.33),yes) 53libutil-routines := libutil-compat 54libutil-shared-only-routines := libutil-compat 55 56# Pretend that libutil.so is a linker script, so that the symbolic 57# link is not installed. 58install-lib-ldscripts = libutil.so 59$(inst_libdir)/libutil.so: 60else # not $(have-GLIBC_2.33) 61libutil-inhibit-o = $(filter-out .o,$(object-suffixes)) 62endif # $(have-GLIBC_2.33) 63 64include ../Rules 65 66CFLAGS-getpt.c += -fexceptions 67 68ifeq (yesyes,$(have-fpie)$(build-shared)) 69pt_chown-cflags += $(pie-ccflag) 70endif 71ifeq (yes,$(have-libcap)) 72libcap = -lcap 73endif 74CFLAGS-pt_chown.c += $(pt_chown-cflags) 75LDLIBS-pt_chown = $(libcap) 76ifeq (yesyes,$(have-fpie)$(build-shared)) 77LDFLAGS-pt_chown = -Wl,-z,now 78endif 79 80# pt_chown needs to be setuid root. 81$(inst_libexecdir)/pt_chown: $(objpfx)pt_chown $(+force) 82 $(make-target-directory) 83 -$(INSTALL_PROGRAM) -m 4755 -o root $< $@ 84 85$(objpfx)tst-pututxline-lockfail: $(shared-thread-library) 86$(objpfx)tst-pututxline-cache: $(shared-thread-library) 87