Smack: add the execute lable to ldconfig
[platform/upstream/glibc.git] / nss / Makefile
index c49f375..d419baf 100644 (file)
@@ -1,5 +1,4 @@
-# Copyright (C) 1996-1998,2000-2002,2007,2009,2010,2011
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2015 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
 # Lesser General Public License for more details.
 
 # You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, write to the Free
-# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-# 02111-1307 USA.
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
 
 #
 #      Makefile for name service switch.
 #
 subdir := nss
 
+include ../Makeconfig
+
 headers                        := nss.h
-distribute             := nsswitch.h XXX-lookup.c getXXbyYY.c getXXbyYY_r.c \
-                          getXXent.c getXXent_r.c databases.def \
-                          nsswitch.conf digits_dots.c function.def
 
 # This is the trivial part which goes into libc itself.
 routines               = nsswitch getnssent getnssent_r digits_dots \
@@ -37,21 +34,16 @@ routines            = nsswitch getnssent getnssent_r digits_dots \
 databases              = proto service hosts network grp pwd rpc ethers \
                          spwd netgrp key alias sgrp
 
-others                  := getent
-install-bin             := getent
+others                  := getent makedb
+install-bin             := getent makedb
+makedb-modules = xmalloc hash-string
+extra-objs             += $(makedb-modules:=.o)
 
-tests                  = test-netdb tst-nss-test1
+tests                  = test-netdb tst-nss-test1 test-digits-dots
 xtests                 = bug-erange
 
-include ../Makeconfig
-
-ifeq (yes,$(build-static-nss))
-otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
-            $(resolvobjdir)/libresolv.a
-endif
-
 # Specify rules for the nss_* modules.  We have some services.
-services               := files
+services               := files db
 
 extra-libs             = $(services:%=libnss_%)
 # These libraries will be built in the `others' pass rather than
@@ -60,40 +52,64 @@ extra-libs-others   = $(extra-libs)
 
 # The sources are found in the appropriate subdir.
 subdir-dirs = $(services:%=nss_%)
-vpath %.c $(subdir-dirs)
+vpath %.c $(subdir-dirs) ../locale/programs ../intl
 
 
 libnss_files-routines  := $(addprefix files-,$(databases)) \
-                          files-initgroups files-have_o_cloexec
-distribute             += files-XXX.c files-parse.c
+                          files-initgroups files-have_o_cloexec files-init
 
+libnss_db-dbs          := $(addprefix db-,\
+                                      $(filter-out hosts network key alias,\
+                                                   $(databases))) \
+                          db-initgroups
+libnss_db-routines     := $(libnss_db-dbs) db-open db-init hash-string
+generated              += $(filter-out db-alias.c db-netgrp.c, \
+                                       $(addsuffix .c,$(libnss_db-dbs)))
 
-# Build static module if requested
-ifneq ($(build-static-nss),yes)
+install-others         += $(inst_vardbdir)/Makefile
+
+# Build static module into libc if requested
 libnss_files-inhibit-o = $(filter-out .os,$(object-suffixes))
+libnss_db-inhibit-o    = $(filter-out .os,$(object-suffixes))
+ifeq ($(build-static-nss),yes)
+routines                += $(libnss_files-routines)
+static-only-routines    += $(libnss_files-routines)
+tests-static           = tst-nss-static
+tests                  += $(tests-static)
 endif
 
 include ../Rules
 
-
-ifeq (yes,$(build-static-nss))
-$(objpfx)getent: $(objpfx)libnss_files.a
+ifeq (yes,$(have-selinux))
+LDLIBS-makedb          := -lselinux
 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.
 libnss-libc = $(common-objpfx)linkobj/libc.so
-$(services:%=$(objpfx)libnss_%.so): $(libnss-libc) \
-                                   $(common-objpfx)libc_nonshared.a
+# Target-specific variable setting to link objects using deprecated
+# RPC interfaces with the version of libc.so that makes them available
+# for new links:
+$(services:%=$(objpfx)libnss_%.so): libc-for-link = $(libnss-libc)
+
+$(objpfx)libnss_db.so: $(objpfx)libnss_files.so
 
+$(libnss_db-dbs:%=$(objpfx)%.c): $(objpfx)db-%.c: nss_files/files-%.c
+       @rm -f $@.new
+       (echo '#define EXTERN_PARSER';\
+        echo '#define GENERIC "../nss_db/db-XXX.c"';\
+        echo '#include "$<"') > $@.new
+       mv -f $@.new $@
 
-distribute             += nss_test1.c
 
-CFLAGS-nss_test1.c = -DNOT_IN_libc=1
-$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(common-objpfx)libc.so \
-                          $(common-objpfx)libc_nonshared.a
+$(objpfx)makedb: $(makedb-modules:%=$(objpfx)%.o)
+
+$(inst_vardbdir)/Makefile: db-Makefile $(+force)
+       $(do-install)
+
+libof-nss_test1 = extramodules
+$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(link-libc-deps)
        $(build-module)
+ifdef libnss_test1.so-version
 $(objpfx)/libnss_test1.so$(libnss_test1.so-version): $(objpfx)/libnss_test1.so
        $(make-link)
+endif
 $(objpfx)tst-nss-test1.out: $(objpfx)/libnss_test1.so$(libnss_test1.so-version)