1# Copyright (C) 1998-2021 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 nscd portion of the library. 20# 21subdir := nscd 22 23include ../Makeconfig 24 25ifneq ($(use-nscd),no) 26routines := nscd_getpw_r nscd_getgr_r nscd_gethst_r nscd_getai \ 27 nscd_initgroups nscd_getserv_r nscd_netgroup 28aux := nscd_helper 29endif 30 31# To find xmalloc.c 32vpath %.c ../locale/programs 33 34nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \ 35 getgrnam_r getgrgid_r hstcache gethstbyad_r gethstbynm3_r \ 36 getsrvbynm_r getsrvbypt_r servicescache \ 37 dbg_log nscd_conf nscd_stat cache mem nscd_setup_thread \ 38 xmalloc xstrdup aicache initgrcache gai res_hconf \ 39 netgroupcache cachedumper 40 41ifeq ($(build-nscd)$(have-thread-library),yesyes) 42 43others += nscd 44others-pie += nscd 45install-sbin := nscd 46 47extra-objs = $(nscd-modules:=.o) 48 49endif 50 51all-nscd-modules := $(nscd-modules) selinux 52ifeq (yes,$(have-selinux)) 53ifeq (yes,$(have-libaudit)) 54libaudit = -laudit 55ifeq (yes,$(have-libcap)) 56libcap = -lcap 57endif 58endif 59 60nscd-modules += selinux 61selinux-LIBS := -lselinux $(libaudit) $(libcap) 62 63# The configure.ac check for libselinux and its headers did not use 64# $SYSINCLUDES. The directory specified by --with-headers usually 65# contains only the basic kernel interface headers, not something like 66# libselinux. So the simplest thing is to presume that the standard 67# system headers will be ok for this file. 68$(objpfx)nscd_stat.o: sysincludes = # nothing 69$(objpfx)selinux.o: sysincludes = # nothing 70endif 71 72LDLIBS-nscd = $(selinux-LIBS) 73 74include ../Rules 75 76CFLAGS-nscd_getpw_r.c += -fexceptions 77CFLAGS-nscd_getgr_r.c += -fexceptions 78CFLAGS-nscd_gethst_r.c += -fexceptions 79CFLAGS-nscd_getai.c += -fexceptions 80CFLAGS-nscd_initgroups.c += -fexceptions 81 82CPPFLAGS-nscd += -D_FORTIFY_SOURCE=2 83 84ifeq (yesyes,$(have-fpie)$(build-shared)) 85CFLAGS-nscd += $(pie-ccflag) 86endif 87 88ifeq (yesyes,$(have-fpie)$(build-shared)) 89LDFLAGS-nscd = -Wl,-z,now 90endif 91 92# Set libof-nscd. 93cpp-srcs-left := $(nscd-modules) 94lib := nscd 95include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) 96 97$(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o) 98 99ifeq ($(build-shared),yes) 100$(objpfx)nscd: $(shared-thread-library) 101else 102$(objpfx)nscd: $(static-thread-library) 103endif 104