
1: # Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007 2: # Free Software Foundation, Inc. 3: # This file is part of the GNU C Library. 4: 5: # The GNU C Library is free software; you can redistribute it and/or 6: # modify it under the terms of the GNU Lesser General Public 7: # License as published by the Free Software Foundation; either 8: # version 2.1 of the License, or (at your option) any later version. 9: 10: # The GNU C Library is distributed in the hope that it will be useful, 11: # but WITHOUT ANY WARRANTY; without even the implied warranty of 12: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13: # Lesser General Public License for more details. 14: 15: # You should have received a copy of the GNU Lesser General Public 16: # License along with the GNU C Library; if not, write to the Free 17: # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 18: # 02111-1307 USA. 19: 20: # 21: # Sub-makefile for nscd portion of the library. 22: # 23: subdir := nscd 24: 25: routines := nscd_getpw_r nscd_getgr_r nscd_gethst_r nscd_getai \ 26: nscd_initgroups nscd_getserv_r 27: aux := nscd_helper 28: 29: include ../Makeconfig 30: 31: # To find xmalloc.c 32: vpath %.c ../locale/programs 33: 34: nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \ 35: getgrnam_r getgrgid_r hstcache gethstbyad_r gethstbynm2_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: 40: ifeq ($(have-thread-library),yes) 41: 42: ifneq (yesyes,$(have-fpie)$(build-shared)) 43: others += nscd 44: endif 45: install-sbin := nscd 46: 47: extra-objs := $(nscd-modules:=.o) 48: 49: endif 50: 51: ifeq (yes,$(build-static-nss)) 52: otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \ 53: $(resolvobjdir)/libresolv.a 54: endif 55: 56: all-nscd-modules := $(nscd-modules) selinux 57: ifeq (yes,$(have-selinux)) 58: ifeq (yes,$(have-libaudit)) 59: libaudit = -laudit 60: ifeq (yes,$(have-libcap)) 61: libcap = -lcap 62: endif 63: endif 64: 65: nscd-modules += selinux 66: selinux-LIBS := -lselinux $(libaudit) $(libcap) 67: 68: # The configure.in check for libselinux and its headers did not use 69: # $SYSINCLUDES. The directory specified by --with-headers usually 70: # contains only the basic kernel interface headers, not something like 71: # libselinux. So the simplest thing is to presume that the standard 72: # system headers will be ok for this file. 73: $(objpfx)nscd_stat.o: sysincludes = # nothing 74: $(objpfx)selinux.o: sysincludes = # nothing 75: endif 76: 77: LDLIBS-nscd = $(selinux-LIBS) 78: 79: distribute := nscd.h nscd-client.h dbg_log.h \ 80: $(addsuffix .c, $(filter-out xmalloc,$(all-nscd-modules))) \ 81: nscd.conf nscd.init nscd_proto.h nscd-types.h 82: 83: include ../Rules 84: 85: CFLAGS-nscd_getpw_r.c = -fexceptions 86: CFLAGS-nscd_getgr_r.c = -fexceptions 87: CFLAGS-nscd_gethst_r.c = -fexceptions 88: CFLAGS-nscd_getai.c = -fexceptions 89: CFLAGS-nscd_initgroups.c = -fexceptions 90: 91: nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2 92: ifeq (yesyes,$(have-fpie)$(build-shared)) 93: nscd-cflags += -fpie 94: endif 95: ifeq (yes,$(have-ssp)) 96: nscd-cflags += -fstack-protector 97: endif 98: 99: CFLAGS-nscd.c += $(nscd-cflags) 100: CFLAGS-connections.c += $(nscd-cflags) 101: CFLAGS-pwdcache.c += $(nscd-cflags) 102: CFLAGS-getpwnam_r.c += $(nscd-cflags) 103: CFLAGS-getpwuid_r.c += $(nscd-cflags) 104: CFLAGS-grpcache.c += $(nscd-cflags) 105: CFLAGS-getgrnam_r.c += $(nscd-cflags) 106: CFLAGS-getgrgid_r.c += $(nscd-cflags) 107: CFLAGS-hstcache.c += $(nscd-cflags) 108: CFLAGS-gethstbyad_r.c += $(nscd-cflags) 109: CFLAGS-gethstbynm2_r.c += $(nscd-cflags) 110: CFLAGS-dbg_log.c += $(nscd-cflags) 111: CFLAGS-nscd_conf.c += $(nscd-cflags) 112: CFLAGS-nscd_stat.c += $(nscd-cflags) 113: CFLAGS-cache.c += $(nscd-cflags) 114: CFLAGS-xmalloc.c += $(nscd-cflags) 115: CFLAGS-xstrdup.c += $(nscd-cflags) 116: CFLAGS-mem.c += $(nscd-cflags) 117: CFLAGS-nscd_setup_thread.c += $(nscd-cflags) 118: CFLAGS-aicache.c += $(nscd-cflags) 119: CFLAGS-selinux.c += $(nscd-cflags) 120: CFLAGS-initgrcache.c += $(nscd-cflags) 121: CFLAGS-gai.c += $(nscd-cflags) 122: CFLAGS-servicescache.c += $(nscd-cflags) 123: CFLAGS-getsrvbynm_r.c += $(nscd-cflags) 124: CFLAGS-getsrvbypt_r.c += $(nscd-cflags) 125: CFLAGS-res_hconf.c += $(nscd-cflags) 126: 127: ifeq (yesyes,$(have-fpie)$(build-shared)) 128: relro-LDFLAGS += -Wl,-z,now 129: 130: $(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o)) 131: $(LINK.o) -pie -Wl,-O1 $(nscd-cflags) \ 132: $(sysdep-LDFLAGS) $(config-LDFLAGS) $(relro-LDFLAGS) \ 133: $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \ 134: $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \ 135: $(LDFLAGS) $(LDFLAGS-$(@F)) \ 136: -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \ 137: -o $@ $^ $(LDLIBS-nscd) $(common-objpfx)libc_nonshared.a 138: endif 139: 140: # This makes sure -DNOT_IN_libc is passed for all these modules. 141: cpp-srcs-left := $(nscd-modules:=.c) 142: lib := nonlib 143: include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) 144: 145: $(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o) 146: 147: ifeq ($(build-shared),yes) 148: $(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library) \ 149: $(common-objpfx)nis/libnsl.so 150: else 151: $(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library) \ 152: $(common-objpfx)nis/libnsl.a 153: endif